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 ` ### 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 #include #include #include #include #include #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 #include "typedefs.h" #include #include #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, 121, 57, 131, 122, 54, 131, 124, 59}, {135, 121, 57, 137, 121, 63, 139, 120, 57}, {131, 122, 54, 135, 121, 57, 137, 119, 52}, {139, 120, 57, 137, 119, 52, 135, 121, 57}, {136, 123, 73, 135, 123, 68, 130, 127, 72}, {135, 123, 68, 131, 125, 65, 130, 127, 72}, {135, 123, 68, 136, 123, 73, 139, 121, 69}, {139, 121, 69, 137, 121, 63, 135, 123, 68}, {131, 125, 65, 135, 123, 68, 137, 121, 63}, {117, 134, 59, 116, 134, 60, 122, 133, 63}, {127, 129, 69, 122, 133, 63, 119, 135, 78}, {121, 132, 81, 123, 130, 93, 132, 126, 82}, {134, 125, 88, 134, 125, 84, 132, 126, 82}, {132, 126, 82, 123, 130, 93, 134, 125, 88}, {138, 125, 89, 138, 125, 87, 136, 125, 86}, {136, 125, 86, 134, 125, 88, 138, 125, 89}, {138, 125, 89, 145, 126, 86, 143, 125, 85}, {138, 125, 87, 138, 125, 89, 143, 125, 85}, {145, 126, 86, 146, 126, 86, 145, 125, 85}, {152, 125, 80, 157, 129, 78, 154, 124, 78}, {152, 125, 79, 152, 125, 80, 154, 124, 78}, {157, 124, 76, 155, 124, 77, 154, 124, 78}, {154, 124, 78, 157, 129, 78, 157, 124, 76}, {157, 124, 76, 158, 124, 75, 157, 123, 75}, {156, 123, 76, 157, 124, 76, 157, 123, 75}, {158, 124, 75, 160, 124, 73, 157, 123, 74}, {157, 123, 75, 158, 124, 75, 157, 123, 74}, {160, 124, 73, 160, 122, 72, 157, 122, 74}, {157, 123, 74, 160, 124, 73, 157, 122, 74}, {159, 118, 68, 158, 118, 68, 157, 120, 71}, {157, 120, 71, 160, 122, 72, 159, 118, 68}, {159, 118, 68, 159, 117, 62, 158, 117, 63}, {158, 118, 67, 159, 118, 68, 158, 117, 63}, {159, 117, 62, 159, 115, 58, 157, 116, 59}, {158, 117, 62, 159, 117, 62, 157, 116, 59}, {156, 113, 54, 154, 115, 55, 156, 115, 57}, {156, 115, 57, 159, 115, 58, 156, 113, 54}, {156, 113, 54, 153, 113, 51, 153, 113, 52}, {154, 115, 55, 156, 113, 54, 153, 113, 52}, {150, 110, 48, 149, 111, 49, 152, 113, 51}, {152, 113, 51, 153, 113, 51, 150, 110, 48}, {146, 109, 47, 146, 110, 47, 146, 111, 47}, {145, 109, 46, 144, 110, 47, 145, 110, 47}, {145, 110, 47, 146, 110, 47, 145, 109, 46}, {143, 109, 45, 142, 110, 46, 144, 110, 47}, {144, 110, 47, 145, 109, 46, 143, 109, 45}, {141, 110, 45, 141, 110, 45, 142, 110, 46}, {142, 110, 46, 143, 109, 45, 141, 110, 45}, {139, 111, 45, 141, 110, 45, 141, 102, 41}, {128, 112, 40, 131, 113, 42, 134, 111, 42}, {134, 111, 42, 130, 107, 37, 128, 112, 40}, {122, 111, 39, 98, 119, 39, 121, 120, 46}, {125, 115, 42, 122, 111, 39, 121, 120, 46}, {114, 131, 57, 98, 119, 39, 92, 133, 59}, {92, 133, 59, 116, 134, 60, 115, 134, 59}, {114, 133, 58, 114, 131, 57, 92, 133, 59}, {115, 134, 59, 114, 133, 58, 92, 133, 59}, {115, 134, 59, 117, 134, 59, 114, 131, 57}, {115, 134, 59, 116, 134, 60, 117, 134, 59}, {117, 134, 59, 117, 131, 57, 114, 131, 57}, {122, 133, 63, 122, 132, 63, 117, 134, 59}, {122, 132, 63, 121, 130, 60, 117, 134, 59}, {122, 132, 63, 125, 128, 62, 122, 132, 63}, {122, 132, 63, 122, 133, 63, 122, 132, 63}, {127, 129, 69, 129, 129, 73, 130, 127, 72}, {119, 135, 78, 129, 129, 73, 127, 129, 69}, {132, 126, 82, 133, 125, 82, 132, 126, 81}, {132, 126, 81, 129, 128, 78, 132, 126, 82}, {129, 128, 78, 121, 132, 81, 132, 126, 82}, {143, 125, 85, 145, 125, 85, 140, 124, 81}, {143, 125, 85, 145, 126, 86, 145, 125, 85}, {149, 123, 79, 147, 125, 83, 152, 125, 80}, {147, 125, 83, 146, 126, 86, 152, 125, 80}, {146, 126, 86, 152, 125, 80, 152, 125, 80}, {152, 125, 80, 152, 125, 80, 152, 125, 80}, {148, 114, 50, 149, 111, 49, 146, 111, 47}, {149, 111, 49, 150, 110, 48, 146, 111, 47}, {150, 110, 48, 146, 109, 47, 146, 111, 47}, {148, 114, 50, 146, 111, 47, 143, 112, 47}, {136, 114, 45, 139, 111, 45, 134, 111, 42}, {141, 102, 41, 134, 111, 42, 139, 111, 45}, {134, 111, 42, 141, 102, 41, 130, 107, 37}, {125, 115, 42, 129, 114, 42, 129, 113, 42}, {129, 113, 42, 128, 112, 40, 125, 115, 42}, {128, 112, 40, 122, 111, 39, 125, 115, 42}, {129, 114, 42, 125, 115, 42, 130, 115, 44}, {126, 117, 45, 130, 115, 44, 125, 115, 42}, {120, 124, 49, 121, 120, 46, 118, 126, 51}, {121, 120, 46, 98, 119, 39, 118, 126, 51}, {118, 126, 51, 114, 131, 57, 117, 128, 54}, {98, 119, 39, 114, 131, 57, 118, 126, 51}, {114, 41, 36, 90, 39, 35, 115, 45, 34}, {118, 52, 31, 116, 53, 31, 118, 53, 31}, {119, 57, 29, 117, 58, 29, 120, 58, 29}, {120, 61, 29, 118, 62, 29, 123, 64, 29}, {128, 67, 29, 129, 68, 29, 129, 68, 29}, {129, 68, 29, 129, 68, 29, 131, 66, 30}, {160, 55, 55, 163, 59, 61, 162, 54, 60}, {163, 35, 86, 164, 35, 90, 162, 33, 88}, {162, 32, 88, 163, 33, 90, 161, 31, 89}, {148, 21, 89, 146, 19, 91, 147, 20, 89}, {147, 20, 89, 146, 19, 91, 145, 19, 87}, {139, 18, 85, 139, 18, 86, 139, 18, 85}, {135, 17, 82, 130, 16, 83, 133, 16, 80}, {117, 17, 65, 116, 17, 65, 116, 17, 65}, {116, 17, 65, 116, 17, 65, 116, 18, 64}, {111, 21, 57, 105, 18, 61, 110, 25, 52}, {107, 29, 47, 103, 30, 46, 107, 30, 46}, {110, 25, 52, 108, 27, 49, 110, 29, 47}, {108, 27, 49, 107, 28, 48, 110, 29, 47}, {107, 28, 48, 107, 29, 47, 110, 29, 47}, {107, 29, 47, 107, 30, 46, 110, 29, 47}, {116, 18, 64, 111, 21, 57, 120, 23, 54}, {110, 29, 47, 120, 23, 54, 110, 25, 52}, {111, 21, 57, 110, 25, 52, 120, 23, 54}, {111, 37, 39, 112, 34, 42, 110, 35, 41}, {110, 35, 41, 112, 34, 42, 108, 34, 42}, {154, 58, 47, 153, 52, 46, 147, 60, 41}, {131, 66, 30, 127, 61, 30, 129, 68, 29}, {129, 68, 29, 127, 61, 30, 128, 67, 29}, {123, 64, 29, 128, 67, 29, 127, 61, 30}, {123, 64, 29, 127, 61, 30, 120, 61, 29}, {120, 61, 29, 127, 61, 30, 120, 60, 29}, {120, 60, 29, 127, 61, 30, 120, 58, 29}, {136, 50, 35, 124, 51, 32, 127, 61, 30}, {118, 52, 31, 118, 53, 31, 124, 51, 32}, {118, 53, 31, 119, 57, 29, 124, 51, 32}, {127, 61, 30, 124, 51, 32, 120, 58, 29}, {119, 57, 29, 120, 58, 29, 124, 51, 32}, {118, 52, 31, 124, 51, 32, 117, 49, 32}, {139, 59, 35, 136, 50, 35, 127, 61, 30}, {140, 67, 35, 139, 59, 35, 131, 66, 30}, {127, 61, 30, 131, 66, 30, 139, 59, 35}, {139, 59, 35, 140, 67, 35, 147, 60, 41}, {148, 21, 89, 147, 20, 89, 151, 23, 81}, {145, 19, 87, 151, 23, 81, 147, 20, 89}, {148, 21, 89, 151, 23, 81, 153, 24, 90}, {160, 30, 87, 160, 30, 90, 158, 29, 91}, {158, 30, 75, 160, 30, 87, 151, 23, 81}, {158, 29, 91, 156, 27, 92, 160, 30, 87}, {151, 23, 81, 160, 30, 87, 153, 24, 90}, {156, 27, 92, 153, 24, 90, 160, 30, 87}, {160, 30, 90, 160, 30, 87, 161, 31, 89}, {161, 31, 89, 160, 30, 87, 162, 32, 88}, {162, 32, 88, 160, 30, 87, 162, 33, 88}, {162, 33, 88, 160, 30, 87, 163, 35, 86}, {158, 30, 75, 163, 36, 80, 160, 30, 87}, {160, 30, 87, 163, 36, 80, 163, 35, 86}, {116, 17, 65, 120, 18, 64, 117, 17, 65}, {116, 17, 65, 116, 18, 64, 120, 18, 64}, {120, 23, 54, 120, 18, 64, 116, 18, 64}, {145, 49, 40, 136, 50, 35, 139, 59, 35}, {139, 59, 35, 147, 60, 41, 145, 49, 40}, {153, 52, 46, 145, 49, 40, 147, 60, 41}, {160, 55, 55, 157, 55, 50, 157, 59, 51}, {153, 52, 46, 154, 58, 47, 157, 55, 50}, {157, 59, 51, 157, 55, 50, 154, 58, 47}, {122, 29, 46, 120, 23, 54, 110, 29, 47}, {110, 29, 47, 112, 34, 42, 122, 29, 46}, {115, 45, 34, 123, 43, 35, 114, 41, 36}, {124, 51, 32, 123, 43, 35, 117, 49, 32}, {129, 38, 39, 120, 36, 40, 123, 43, 35}, {123, 43, 35, 120, 36, 40, 114, 41, 36}, {112, 34, 42, 111, 37, 39, 120, 36, 40}, {112, 34, 42, 120, 36, 40, 122, 29, 46}, {136, 50, 35, 133, 43, 37, 124, 51, 32}, {124, 51, 32, 133, 43, 37, 123, 43, 35}, {129, 38, 39, 123, 43, 35, 133, 43, 37}, {133, 16, 80, 141, 18, 82, 135, 17, 82}, {135, 17, 82, 141, 18, 82, 137, 17, 84}, {137, 17, 84, 141, 18, 82, 139, 18, 85}, {139, 18, 85, 141, 18, 82, 139, 18, 85}, {139, 18, 85, 141, 18, 82, 142, 18, 86}, {151, 23, 81, 145, 19, 87, 141, 18, 82}, {142, 18, 86, 141, 18, 82, 145, 19, 87}, {166, 48, 79, 164, 42, 72, 165, 49, 69}, {158, 30, 75, 160, 35, 68, 163, 36, 80}, {163, 36, 80, 160, 35, 68, 164, 42, 72}, {162, 40, 65, 164, 42, 72, 160, 35, 68}, {163, 45, 63, 162, 54, 60, 165, 49, 69}, {162, 40, 65, 163, 45, 63, 164, 42, 72}, {165, 49, 69, 164, 42, 72, 163, 45, 63}, {154, 33, 61, 148, 32, 56, 153, 38, 54}, {145, 49, 40, 139, 44, 39, 136, 50, 35}, {139, 44, 39, 133, 43, 37, 136, 50, 35}, {160, 55, 55, 162, 54, 60, 158, 47, 53}, {163, 45, 63, 158, 47, 53, 162, 54, 60}, {160, 55, 55, 158, 47, 53, 157, 55, 50}, {157, 55, 50, 158, 47, 53, 153, 52, 46}, {150, 43, 47, 145, 49, 40, 153, 52, 46}, {153, 38, 54, 150, 43, 47, 158, 47, 53}, {153, 52, 46, 158, 47, 53, 150, 43, 47}, {151, 23, 81, 153, 27, 69, 158, 30, 75}, {158, 30, 75, 153, 27, 69, 160, 35, 68}, {154, 33, 61, 160, 35, 68, 153, 27, 69}, {159, 39, 60, 163, 45, 63, 162, 40, 65}, {154, 33, 61, 159, 39, 60, 160, 35, 68}, {162, 40, 65, 160, 35, 68, 159, 39, 60}, {163, 45, 63, 159, 39, 60, 158, 47, 53}, {158, 47, 53, 159, 39, 60, 153, 38, 54}, {154, 33, 61, 153, 38, 54, 159, 39, 60}, {120, 23, 54, 131, 22, 58, 120, 18, 64}, {130, 18, 69, 125, 16, 73, 120, 18, 64}, {138, 21, 62, 130, 18, 69, 131, 22, 58}, {120, 18, 64, 131, 22, 58, 130, 18, 69}, {138, 21, 62, 139, 19, 70, 130, 18, 69}, {141, 18, 82, 133, 16, 80, 139, 19, 70}, {130, 18, 69, 139, 19, 70, 129, 16, 76}, {133, 16, 80, 129, 16, 76, 139, 19, 70}, {146, 36, 50, 153, 38, 54, 148, 32, 56}, {153, 38, 54, 146, 36, 50, 150, 43, 47}, {136, 38, 42, 133, 43, 37, 139, 44, 39}, {133, 43, 37, 136, 38, 42, 129, 38, 39}, {139, 34, 47, 130, 32, 45, 136, 38, 42}, {129, 38, 39, 136, 38, 42, 130, 32, 45}, {129, 38, 39, 130, 32, 45, 120, 36, 40}, {122, 29, 46, 120, 36, 40, 130, 32, 45}, {148, 32, 56, 149, 28, 62, 143, 26, 60}, {153, 27, 69, 149, 28, 62, 154, 33, 61}, {149, 28, 62, 148, 32, 56, 154, 33, 61}, {127, 26, 51, 122, 29, 46, 130, 32, 45}, {122, 29, 46, 127, 26, 51, 120, 23, 54}, {127, 26, 51, 131, 22, 58, 120, 23, 54}, {151, 23, 81, 148, 22, 72, 153, 27, 69}, {139, 19, 70, 148, 22, 72, 141, 18, 82}, {148, 22, 72, 151, 23, 81, 141, 18, 82}, {131, 22, 58, 137, 25, 57, 138, 21, 62}, {137, 25, 57, 143, 26, 60, 138, 21, 62}, {143, 26, 60, 141, 30, 53, 148, 32, 56}, {148, 32, 56, 141, 30, 53, 146, 36, 50}, {139, 34, 47, 146, 36, 50, 141, 30, 53}, {141, 30, 53, 143, 26, 60, 137, 25, 57}, {143, 26, 60, 142, 22, 64, 138, 21, 62}, {142, 22, 64, 139, 19, 70, 138, 21, 62}, {139, 44, 39, 143, 40, 44, 136, 38, 42}, {146, 36, 50, 139, 34, 47, 143, 40, 44}, {136, 38, 42, 143, 40, 44, 139, 34, 47}, {146, 36, 50, 143, 40, 44, 150, 43, 47}, {150, 43, 47, 143, 40, 44, 145, 49, 40}, {139, 44, 39, 145, 49, 40, 143, 40, 44}, {134, 27, 52, 141, 30, 53, 137, 25, 57}, {137, 25, 57, 131, 22, 58, 134, 27, 52}, {127, 26, 51, 134, 27, 52, 131, 22, 58}, {134, 27, 52, 127, 26, 51, 130, 32, 45}, {141, 30, 53, 134, 27, 52, 139, 34, 47}, {130, 32, 45, 139, 34, 47, 134, 27, 52}, {153, 27, 69, 146, 24, 66, 149, 28, 62}, {142, 22, 64, 143, 26, 60, 146, 24, 66}, {149, 28, 62, 146, 24, 66, 143, 26, 60}, {146, 24, 66, 153, 27, 69, 148, 22, 72}, {148, 22, 72, 139, 19, 70, 146, 24, 66}, {142, 22, 64, 146, 24, 66, 139, 19, 70}, {115, 45, 34, 90, 39, 35, 111, 48, 33}, {116, 53, 31, 118, 52, 31, 117, 49, 32}, {117, 49, 32, 112, 49, 32, 116, 53, 31}, {116, 53, 31, 117, 58, 29, 119, 57, 29}, {118, 53, 31, 116, 53, 31, 119, 57, 29}, {117, 60, 29, 120, 60, 29, 120, 58, 29}, {120, 58, 29, 117, 58, 29, 117, 60, 29}, {118, 62, 29, 120, 61, 29, 120, 60, 29}, {120, 60, 29, 117, 60, 29, 118, 62, 29}, {123, 64, 29, 118, 62, 29, 117, 68, 29}, {140, 76, 36, 140, 67, 35, 131, 66, 30}, {131, 66, 30, 129, 68, 29, 140, 76, 36}, {140, 76, 36, 157, 66, 52, 147, 60, 41}, {140, 67, 35, 140, 76, 36, 147, 60, 41}, {157, 66, 52, 157, 59, 51, 154, 58, 47}, {147, 60, 41, 157, 66, 52, 154, 58, 47}, {163, 59, 61, 160, 55, 55, 157, 59, 51}, {157, 59, 51, 157, 66, 52, 163, 59, 61}, {162, 54, 60, 163, 59, 61, 165, 49, 69}, {166, 48, 79, 165, 49, 69, 163, 59, 61}, {163, 59, 61, 167, 53, 93, 166, 48, 79}, {163, 33, 90, 162, 32, 88, 162, 33, 88}, {162, 33, 88, 164, 35, 90, 163, 33, 90}, {163, 33, 90, 163, 34, 92, 160, 30, 90}, {161, 31, 89, 163, 33, 90, 160, 30, 90}, {163, 34, 92, 162, 35, 99, 158, 29, 91}, {160, 30, 90, 163, 34, 92, 158, 29, 91}, {155, 28, 101, 156, 27, 92, 158, 29, 91}, {158, 29, 91, 162, 35, 99, 155, 28, 101}, {148, 21, 96, 153, 24, 90, 156, 27, 92}, {156, 27, 92, 155, 28, 101, 148, 21, 96}, {148, 21, 96, 146, 19, 91, 148, 21, 89}, {153, 24, 90, 148, 21, 96, 148, 21, 89}, {140, 18, 90, 142, 18, 86, 145, 19, 87}, {145, 19, 87, 146, 19, 91, 140, 18, 90}, {139, 18, 86, 139, 18, 85, 142, 18, 86}, {142, 18, 86, 140, 18, 90, 139, 18, 86}, {139, 18, 86, 135, 17, 88, 137, 17, 84}, {139, 18, 85, 139, 18, 86, 137, 17, 84}, {135, 17, 88, 130, 16, 83, 135, 17, 82}, {137, 17, 84, 135, 17, 88, 135, 17, 82}, {130, 16, 83, 123, 15, 77, 129, 16, 76}, {133, 16, 80, 130, 16, 83, 129, 16, 76}, {123, 15, 77, 119, 14, 76, 125, 16, 73}, {105, 18, 61, 111, 21, 57, 116, 18, 64}, {116, 18, 64, 116, 17, 65, 105, 18, 61}, {95, 22, 54, 108, 27, 49, 110, 25, 52}, {110, 25, 52, 105, 18, 61, 95, 22, 54}, {101, 27, 48, 107, 28, 48, 108, 27, 49}, {108, 27, 49, 95, 22, 54, 101, 27, 48}, {103, 30, 46, 107, 29, 47, 107, 28, 48}, {107, 28, 48, 101, 27, 48, 103, 30, 46}, {111, 37, 39, 110, 35, 41, 108, 34, 42}, {108, 34, 42, 93, 36, 38, 111, 37, 39}, {129, 129, 73, 121, 132, 81, 129, 128, 78}, {119, 135, 78, 121, 132, 81, 129, 129, 73}, {129, 129, 73, 129, 128, 78, 130, 127, 78}, {130, 127, 78, 133, 126, 77, 129, 129, 73}, {133, 126, 77, 130, 127, 72, 129, 129, 73}, {114, 41, 36, 120, 36, 40, 111, 37, 39}, {111, 37, 39, 93, 36, 38, 114, 41, 36}, {114, 41, 36, 93, 36, 38, 90, 39, 35}, {117, 49, 32, 123, 43, 35, 115, 45, 34}, {111, 48, 33, 117, 49, 32, 115, 45, 34}, {117, 49, 32, 111, 48, 33, 112, 49, 32}, {128, 67, 29, 123, 64, 29, 117, 68, 29}, {117, 68, 29, 129, 68, 29, 128, 67, 29}, {166, 48, 79, 166, 41, 84, 164, 42, 72}, {166, 48, 79, 167, 53, 93, 166, 41, 84}, {167, 53, 93, 167, 41, 91, 166, 41, 84}, {163, 36, 80, 164, 42, 72, 166, 41, 84}, {166, 41, 84, 163, 35, 86, 163, 36, 80}, {166, 41, 84, 167, 41, 91, 163, 35, 86}, {167, 41, 91, 164, 35, 90, 163, 35, 86}, {129, 16, 76, 123, 15, 77, 125, 16, 73}, {125, 16, 73, 130, 18, 69, 129, 16, 76}, {119, 14, 76, 116, 17, 65, 117, 17, 65}, {120, 18, 64, 125, 16, 73, 117, 17, 65}, {125, 16, 73, 119, 14, 76, 117, 17, 65}, {108, 34, 42, 110, 29, 47, 107, 30, 46}, {107, 30, 46, 103, 30, 46, 108, 34, 42}, {103, 30, 46, 93, 36, 38, 108, 34, 42}, {110, 29, 47, 108, 34, 42, 112, 34, 42} }; ================================================ FILE: 3d-rendering/src/host/typedefs.h ================================================ /*===============================================================*/ /* */ /* typedefs.h */ /* */ /* Typedefs for the host */ /* */ /*===============================================================*/ #ifndef __TYPEDEFS_H__ #define __TYPEDEFS_H__ // resolution 256x256 const int MAX_X = 256; const int MAX_Y = 256; // number of values in frame buffer: 32 bits const int NUM_FB = MAX_X * MAX_Y / 4; // dataset information const int NUM_3D_TRI = 3192; #ifdef OCL #include // target device // change here to map to a different device const std::string TARGET_DEVICE = "xilinx_aws-vu9p-f1-04261818_dynamic_5_0"; #endif #ifndef SW // hls header #include "ap_int.h" // specialized datatypes typedef ap_uint<1> bit1; typedef ap_uint<2> bit2; typedef ap_uint<8> bit8; typedef ap_uint<16> bit16; typedef ap_uint<32> bit32; #else typedef unsigned char bit8; typedef unsigned int bit32; #endif // struct: 3D triangle typedef struct { bit8 x0; bit8 y0; bit8 z0; bit8 x1; bit8 y1; bit8 z1; bit8 x2; bit8 y2; bit8 z2; } Triangle_3D; // struct: 2D triangle typedef struct { bit8 x0; bit8 y0; bit8 x1; bit8 y1; bit8 x2; bit8 y2; bit8 z; } Triangle_2D; // struct: candidate pixels typedef struct { bit8 x; bit8 y; bit8 z; bit8 color; } CandidatePixel; // struct: colored pixel typedef struct { bit8 x; bit8 y; bit8 color; } Pixel; // dataflow switch #define ENABLE_DATAFLOW #endif ================================================ FILE: 3d-rendering/src/host/utils.cpp ================================================ /*===============================================================*/ /* */ /* utils.cpp */ /* */ /* Utility functions */ /* */ /*===============================================================*/ #include #include #include #include #include "utils.h" void print_usage(char* filename) { printf("usage: %s \n", filename); printf(" -f [kernel file]\n"); } void parse_sdaccel_command_line_args( int argc, char** argv, std::string& kernelFile) { int c = 0; while ((c = getopt(argc, argv, "f:")) != -1) { switch (c) { case 'f': kernelFile = optarg; break; default: { print_usage(argv[0]); exit(-1); } } // matching on arguments } // while args present } ================================================ FILE: 3d-rendering/src/host/utils.h ================================================ /*===============================================================*/ /* */ /* utils.h */ /* */ /* Utility functions */ /* */ /*===============================================================*/ void print_usage(char* filename); void parse_sdaccel_command_line_args( int argc, char** argv, std::string& kernelFile); ================================================ FILE: 3d-rendering/src/ocl/rendering.cpp ================================================ /*===============================================================*/ /* */ /* rendering.cpp */ /* */ /* C++ kernel for 3D Rendering */ /* */ /*===============================================================*/ #include "host/typedefs.h" /*======================UTILITY FUNCTIONS========================*/ // Determine whether three vertices of a trianlgLe // (x0,y0) (x1,y1) (x2,y2) are in clockwise order by Pineda algorithm // if so, return a number > 0 // else if three points are in line, return a number == 0 // else in counterclockwise order, return a number < 0 int check_clockwise( Triangle_2D triangle_2d ) { int cw; cw = (triangle_2d.x2 - triangle_2d.x0) * (triangle_2d.y1 - triangle_2d.y0) - (triangle_2d.y2 - triangle_2d.y0) * (triangle_2d.x1 - triangle_2d.x0); return cw; } // swap (x0, y0) (x1, y1) of a Triangle_2D void clockwise_vertices( Triangle_2D *triangle_2d ) { bit8 tmp_x, tmp_y; tmp_x = triangle_2d->x0; tmp_y = triangle_2d->y0; triangle_2d->x0 = triangle_2d->x1; triangle_2d->y0 = triangle_2d->y1; triangle_2d->x1 = tmp_x; triangle_2d->y1 = tmp_y; } // Given a pixel, determine whether it is inside the triangle // by Pineda algorithm // if so, return true // else, return false bit1 pixel_in_triangle( bit8 x, bit8 y, Triangle_2D triangle_2d ) { int pi0, pi1, pi2; pi0 = (x - triangle_2d.x0) * (triangle_2d.y1 - triangle_2d.y0) - (y - triangle_2d.y0) * (triangle_2d.x1 - triangle_2d.x0); pi1 = (x - triangle_2d.x1) * (triangle_2d.y2 - triangle_2d.y1) - (y - triangle_2d.y1) * (triangle_2d.x2 - triangle_2d.x1); pi2 = (x - triangle_2d.x2) * (triangle_2d.y0 - triangle_2d.y2) - (y - triangle_2d.y2) * (triangle_2d.x0 - triangle_2d.x2); return (pi0 >= 0 && pi1 >= 0 && pi2 >= 0); } // find the min from 3 integers bit8 find_min( bit8 in0, bit8 in1, bit8 in2 ) { if (in0 < in1) { if (in0 < in2) return in0; else return in2; } else { if (in1 < in2) return in1; else return in2; } } // find the max from 3 integers bit8 find_max( bit8 in0, bit8 in1, bit8 in2 ) { if (in0 > in1) { if (in0 > in2) return in0; else return in2; } else { if (in1 > in2) return in1; else return in2; } } /*======================PROCESSING STAGES========================*/ // project a 3D triangle to a 2D triangle void projection ( Triangle_3D triangle_3d, Triangle_2D *triangle_2d, bit2 angle ) { #pragma HLS INLINE off // Setting camera to (0,0,-1), the canvas at z=0 plane // The 3D model lies in z>0 space // The coordinate on canvas is proportional to the corresponding coordinate // on space if(angle == 0) { triangle_2d->x0 = triangle_3d.x0; triangle_2d->y0 = triangle_3d.y0; triangle_2d->x1 = triangle_3d.x1; triangle_2d->y1 = triangle_3d.y1; triangle_2d->x2 = triangle_3d.x2; triangle_2d->y2 = triangle_3d.y2; triangle_2d->z = triangle_3d.z0 / 3 + triangle_3d.z1 / 3 + triangle_3d.z2 / 3; } else if(angle == 1) { triangle_2d->x0 = triangle_3d.x0; triangle_2d->y0 = triangle_3d.z0; triangle_2d->x1 = triangle_3d.x1; triangle_2d->y1 = triangle_3d.z1; triangle_2d->x2 = triangle_3d.x2; triangle_2d->y2 = triangle_3d.z2; triangle_2d->z = triangle_3d.y0 / 3 + triangle_3d.y1 / 3 + triangle_3d.y2 / 3; } else if(angle == 2) { triangle_2d->x0 = triangle_3d.z0; triangle_2d->y0 = triangle_3d.y0; triangle_2d->x1 = triangle_3d.z1; triangle_2d->y1 = triangle_3d.y1; triangle_2d->x2 = triangle_3d.z2; triangle_2d->y2 = triangle_3d.y2; triangle_2d->z = triangle_3d.x0 / 3 + triangle_3d.x1 / 3 + triangle_3d.x2 / 3; } } // calculate bounding box for a 2D triangle bit2 rasterization1 ( Triangle_2D triangle_2d, bit8 max_min[], Triangle_2D *triangle_2d_same, bit16 max_index[]) { #pragma HLS INLINE off // clockwise the vertices of input 2d triangle if ( check_clockwise( triangle_2d ) == 0 ) return 1; if ( check_clockwise( triangle_2d ) < 0 ) clockwise_vertices( &triangle_2d ); // copy the same 2D triangle triangle_2d_same->x0 = triangle_2d.x0; triangle_2d_same->y0 = triangle_2d.y0; triangle_2d_same->x1 = triangle_2d.x1; triangle_2d_same->y1 = triangle_2d.y1; triangle_2d_same->x2 = triangle_2d.x2; triangle_2d_same->y2 = triangle_2d.y2; triangle_2d_same->z = triangle_2d.z ; // find the rectangle bounds of 2D triangles max_min[0] = find_min( triangle_2d.x0, triangle_2d.x1, triangle_2d.x2 ); max_min[1] = find_max( triangle_2d.x0, triangle_2d.x1, triangle_2d.x2 ); max_min[2] = find_min( triangle_2d.y0, triangle_2d.y1, triangle_2d.y2 ); max_min[3] = find_max( triangle_2d.y0, triangle_2d.y1, triangle_2d.y2 ); max_min[4] = max_min[1] - max_min[0]; // calculate index for searching pixels max_index[0] = (max_min[1] - max_min[0]) * (max_min[3] - max_min[2]); return 0; } // find pixels in the triangles from the bounding box bit16 rasterization2 ( bit2 flag, bit8 max_min[], bit16 max_index[], Triangle_2D triangle_2d_same, CandidatePixel fragment2[] ) { #pragma HLS INLINE off // clockwise the vertices of input 2d triangle if ( flag ) { return 0; } bit8 color = 100; bit16 i = 0; RAST2: for ( bit16 k = 0; k < max_index[0]; k++ ) { #pragma HLS PIPELINE II=1 bit8 x = max_min[0] + k%max_min[4]; bit8 y = max_min[2] + k/max_min[4]; if( pixel_in_triangle( x, y, triangle_2d_same ) ) { fragment2[i].x = x; fragment2[i].y = y; fragment2[i].z = triangle_2d_same.z; fragment2[i].color = color; i++; } } return i; } // filter hidden pixels bit16 zculling ( bit16 counter, CandidatePixel fragments[], bit16 size, Pixel pixels[]) { #pragma HLS INLINE off // initilize the z-buffer in rendering first triangle for an image static bit8 z_buffer[MAX_X][MAX_Y]; if (counter == 0) { ZCULLING_INIT_ROW: for ( bit16 i = 0; i < MAX_X; i++) { #pragma HLS PIPELINE II=1 ZCULLING_INIT_COL: for ( bit16 j = 0; j < MAX_Y; j++) { z_buffer[i][j] = 255; } } } // pixel counter bit16 pixel_cntr = 0; // update z-buffer and pixels ZCULLING: for ( bit16 n = 0; n < size; n++ ) { #pragma HLS PIPELINE II=1 if( fragments[n].z < z_buffer[fragments[n].y][fragments[n].x] ) { pixels[pixel_cntr].x = fragments[n].x; pixels[pixel_cntr].y = fragments[n].y; pixels[pixel_cntr].color = fragments[n].color; pixel_cntr++; z_buffer[fragments[n].y][fragments[n].x] = fragments[n].z; } } return pixel_cntr; } // color the frame buffer void coloringFB(bit16 counter, bit16 size_pixels, Pixel pixels[], bit8 frame_buffer[MAX_X][MAX_Y]) { #pragma HLS INLINE off if ( counter == 0 ) { // initilize the framebuffer for a new image COLORING_FB_INIT_ROW: for ( bit16 i = 0; i < MAX_X; i++) { #pragma HLS PIPELINE II=1 COLORING_FB_INIT_COL: for ( bit16 j = 0; j < MAX_Y; j++) frame_buffer[i][j] = 0; } } // update the framebuffer COLORING_FB: for ( bit16 i = 0; i < size_pixels; i++) { #pragma HLS PIPELINE II=1 frame_buffer[ pixels[i].x ][ pixels[i].y ] = pixels[i].color; } } // stream out the frame buffer void output_FB(bit8 frame_buffer[MAX_X][MAX_Y], bit32 output[NUM_FB]) { #pragma HLS INLINE bit32 out_FB = 0; OUTPUT_FB_ROW: for ( bit16 i = 0; i < MAX_X; i++) { #pragma HLS PIPELINE II=1 OUTPUT_FB_COL: for ( bit16 j = 0; j < MAX_Y; j = j + 4) { out_FB( 7, 0) = frame_buffer[i][j + 0]; out_FB(15, 8) = frame_buffer[i][j + 1]; out_FB(23, 16) = frame_buffer[i][j + 2]; out_FB(31, 24) = frame_buffer[i][j + 3]; output[i * MAX_Y / 4 + j / 4] = out_FB; } } } /*========================TOP FUNCTION===========================*/ extern "C" { void rendering( bit32 input[3*NUM_3D_TRI], bit32 output[NUM_FB]) { #pragma HLS INTERFACE m_axi port=input offset=slave bundle=gmem #pragma HLS INTERFACE m_axi port=output offset=slave bundle=gmem #pragma HLS INTERFACE s_axilite port=input bundle=control #pragma HLS INTERFACE s_axilite port=output bundle=control #pragma HLS INTERFACE s_axilite port=return bundle=control // local variables Triangle_3D triangle_3ds; Triangle_2D triangle_2ds; Triangle_2D triangle_2ds_same; bit16 size_fragment; CandidatePixel fragment[500]; bit16 size_pixels; Pixel pixels[500]; bit8 frame_buffer[MAX_X][MAX_Y]; bit2 angle = 0; bit8 max_min[5]; bit16 max_index[1]; bit2 flag; // processing NUM_3D_TRI 3D triangles TRIANGLES: for (bit16 i = 0; i < NUM_3D_TRI; i++) { bit32 input_lo = input[3*i]; bit32 input_mi = input[3*i+1]; bit32 input_hi = input[3*i+2]; triangle_3ds.x0 = input_lo( 7, 0); triangle_3ds.y0 = input_lo(15, 8); triangle_3ds.z0 = input_lo(23, 16); triangle_3ds.x1 = input_lo(31, 24); triangle_3ds.y1 = input_mi( 7, 0); triangle_3ds.z1 = input_mi(15, 8); triangle_3ds.x2 = input_mi(23, 16); triangle_3ds.y2 = input_mi(31, 24); triangle_3ds.z2 = input_hi( 7, 0); // turn on dataflow if it is enabled #ifdef ENABLE_DATAFLOW #pragma HLS dataflow #endif // five stages for processing each 3D triangle projection( triangle_3ds, &triangle_2ds, angle ); flag = rasterization1( triangle_2ds, max_min, &triangle_2ds_same, max_index); size_fragment = rasterization2( flag, max_min, max_index, triangle_2ds_same, fragment ); size_pixels = zculling( i, fragment, size_fragment, pixels); coloringFB ( i, size_pixels, pixels, frame_buffer); } // output values: frame buffer output_FB(frame_buffer,output); } } ================================================ FILE: 3d-rendering/src/sdsoc/rendering.cpp ================================================ /*===============================================================*/ /* */ /* rendering.cpp */ /* */ /* C++ kernel for 3D Rendering */ /* */ /*===============================================================*/ #include "../host/typedefs.h" /*======================UTILITY FUNCTIONS========================*/ // Determine whether three vertices of a trianlgLe // (x0,y0) (x1,y1) (x2,y2) are in clockwise order by Pineda algorithm // if so, return a number > 0 // else if three points are in line, return a number == 0 // else in counterclockwise order, return a number < 0 int check_clockwise( Triangle_2D triangle_2d ) { int cw; cw = (triangle_2d.x2 - triangle_2d.x0) * (triangle_2d.y1 - triangle_2d.y0) - (triangle_2d.y2 - triangle_2d.y0) * (triangle_2d.x1 - triangle_2d.x0); return cw; } // swap (x0, y0) (x1, y1) of a Triangle_2D void clockwise_vertices( Triangle_2D *triangle_2d ) { bit8 tmp_x, tmp_y; tmp_x = triangle_2d->x0; tmp_y = triangle_2d->y0; triangle_2d->x0 = triangle_2d->x1; triangle_2d->y0 = triangle_2d->y1; triangle_2d->x1 = tmp_x; triangle_2d->y1 = tmp_y; } // Given a pixel, determine whether it is inside the triangle // by Pineda algorithm // if so, return true // else, return false bit1 pixel_in_triangle( bit8 x, bit8 y, Triangle_2D triangle_2d ) { int pi0, pi1, pi2; pi0 = (x - triangle_2d.x0) * (triangle_2d.y1 - triangle_2d.y0) - (y - triangle_2d.y0) * (triangle_2d.x1 - triangle_2d.x0); pi1 = (x - triangle_2d.x1) * (triangle_2d.y2 - triangle_2d.y1) - (y - triangle_2d.y1) * (triangle_2d.x2 - triangle_2d.x1); pi2 = (x - triangle_2d.x2) * (triangle_2d.y0 - triangle_2d.y2) - (y - triangle_2d.y2) * (triangle_2d.x0 - triangle_2d.x2); return (pi0 >= 0 && pi1 >= 0 && pi2 >= 0); } // find the min from 3 integers bit8 find_min( bit8 in0, bit8 in1, bit8 in2 ) { if (in0 < in1) { if (in0 < in2) return in0; else return in2; } else { if (in1 < in2) return in1; else return in2; } } // find the max from 3 integers bit8 find_max( bit8 in0, bit8 in1, bit8 in2 ) { if (in0 > in1) { if (in0 > in2) return in0; else return in2; } else { if (in1 > in2) return in1; else return in2; } } /*======================PROCESSING STAGES========================*/ // project a 3D triangle to a 2D triangle void projection ( Triangle_3D triangle_3d, Triangle_2D *triangle_2d, bit2 angle ) { #pragma HLS INLINE off // Setting camera to (0,0,-1), the canvas at z=0 plane // The 3D model lies in z>0 space // The coordinate on canvas is proportional to the corresponding coordinate // on space if(angle == 0) { triangle_2d->x0 = triangle_3d.x0; triangle_2d->y0 = triangle_3d.y0; triangle_2d->x1 = triangle_3d.x1; triangle_2d->y1 = triangle_3d.y1; triangle_2d->x2 = triangle_3d.x2; triangle_2d->y2 = triangle_3d.y2; triangle_2d->z = triangle_3d.z0 / 3 + triangle_3d.z1 / 3 + triangle_3d.z2 / 3; } else if(angle == 1) { triangle_2d->x0 = triangle_3d.x0; triangle_2d->y0 = triangle_3d.z0; triangle_2d->x1 = triangle_3d.x1; triangle_2d->y1 = triangle_3d.z1; triangle_2d->x2 = triangle_3d.x2; triangle_2d->y2 = triangle_3d.z2; triangle_2d->z = triangle_3d.y0 / 3 + triangle_3d.y1 / 3 + triangle_3d.y2 / 3; } else if(angle == 2) { triangle_2d->x0 = triangle_3d.z0; triangle_2d->y0 = triangle_3d.y0; triangle_2d->x1 = triangle_3d.z1; triangle_2d->y1 = triangle_3d.y1; triangle_2d->x2 = triangle_3d.z2; triangle_2d->y2 = triangle_3d.y2; triangle_2d->z = triangle_3d.x0 / 3 + triangle_3d.x1 / 3 + triangle_3d.x2 / 3; } } // calculate bounding box for a 2D triangle bit2 rasterization1 ( Triangle_2D triangle_2d, bit8 max_min[], Triangle_2D *triangle_2d_same, bit16 max_index[]) { #pragma HLS INLINE off // clockwise the vertices of input 2d triangle if ( check_clockwise( triangle_2d ) == 0 ) return 1; if ( check_clockwise( triangle_2d ) < 0 ) clockwise_vertices( &triangle_2d ); // copy the same 2D triangle triangle_2d_same->x0 = triangle_2d.x0; triangle_2d_same->y0 = triangle_2d.y0; triangle_2d_same->x1 = triangle_2d.x1; triangle_2d_same->y1 = triangle_2d.y1; triangle_2d_same->x2 = triangle_2d.x2; triangle_2d_same->y2 = triangle_2d.y2; triangle_2d_same->z = triangle_2d.z ; // find the rectangle bounds of 2D triangles max_min[0] = find_min( triangle_2d.x0, triangle_2d.x1, triangle_2d.x2 ); max_min[1] = find_max( triangle_2d.x0, triangle_2d.x1, triangle_2d.x2 ); max_min[2] = find_min( triangle_2d.y0, triangle_2d.y1, triangle_2d.y2 ); max_min[3] = find_max( triangle_2d.y0, triangle_2d.y1, triangle_2d.y2 ); max_min[4] = max_min[1] - max_min[0]; // calculate index for searching pixels max_index[0] = (max_min[1] - max_min[0]) * (max_min[3] - max_min[2]); return 0; } // find pixels in the triangles from the bounding box bit16 rasterization2 ( bit2 flag, bit8 max_min[], bit16 max_index[], Triangle_2D triangle_2d_same, CandidatePixel fragment2[] ) { #pragma HLS INLINE off // clockwise the vertices of input 2d triangle if ( flag ) { return 0; } bit8 color = 100; bit16 i = 0; RAST2: for ( bit16 k = 0; k < max_index[0]; k++ ) { #pragma HLS PIPELINE II=1 bit8 x = max_min[0] + k%max_min[4]; bit8 y = max_min[2] + k/max_min[4]; if( pixel_in_triangle( x, y, triangle_2d_same ) ) { fragment2[i].x = x; fragment2[i].y = y; fragment2[i].z = triangle_2d_same.z; fragment2[i].color = color; i++; } } return i; } // filter hidden pixels bit16 zculling ( bit16 counter, CandidatePixel fragments[], bit16 size, Pixel pixels[]) { #pragma HLS INLINE off // initilize the z-buffer in rendering first triangle for an image static bit8 z_buffer[MAX_X][MAX_Y]; if (counter == 0) { ZCULLING_INIT_ROW: for ( bit16 i = 0; i < MAX_X; i++) { #pragma HLS PIPELINE II=1 ZCULLING_INIT_COL: for ( bit16 j = 0; j < MAX_Y; j++) { z_buffer[i][j] = 255; } } } // pixel counter bit16 pixel_cntr = 0; // update z-buffer and pixels ZCULLING: for ( bit16 n = 0; n < size; n++ ) { #pragma HLS PIPELINE II=1 if( fragments[n].z < z_buffer[fragments[n].y][fragments[n].x] ) { pixels[pixel_cntr].x = fragments[n].x; pixels[pixel_cntr].y = fragments[n].y; pixels[pixel_cntr].color = fragments[n].color; pixel_cntr++; z_buffer[fragments[n].y][fragments[n].x] = fragments[n].z; } } return pixel_cntr; } // color the frame buffer void coloringFB(bit16 counter, bit16 size_pixels, Pixel pixels[], bit8 frame_buffer[MAX_X][MAX_Y]) { #pragma HLS INLINE off if ( counter == 0 ) { // initilize the framebuffer for a new image COLORING_FB_INIT_ROW: for ( bit16 i = 0; i < MAX_X; i++) { #pragma HLS PIPELINE II=1 COLORING_FB_INIT_COL: for ( bit16 j = 0; j < MAX_Y; j++) frame_buffer[i][j] = 0; } } // update the framebuffer COLORING_FB: for ( bit16 i = 0; i < size_pixels; i++) { #pragma HLS PIPELINE II=1 frame_buffer[ pixels[i].x ][ pixels[i].y ] = pixels[i].color; } } // stream out the frame buffer void output_FB(bit8 frame_buffer[MAX_X][MAX_Y], bit32 output[NUM_FB]) { #pragma HLS INLINE bit32 out_FB = 0; OUTPUT_FB_ROW: for ( bit16 i = 0; i < MAX_X; i++) { #pragma HLS PIPELINE II=1 OUTPUT_FB_COL: for ( bit16 j = 0; j < MAX_Y; j = j + 4) { out_FB( 7, 0) = frame_buffer[i][j + 0]; out_FB(15, 8) = frame_buffer[i][j + 1]; out_FB(23, 16) = frame_buffer[i][j + 2]; out_FB(31, 24) = frame_buffer[i][j + 3]; output[i * MAX_Y / 4 + j / 4] = out_FB; } } } /*========================TOP FUNCTION===========================*/ void rendering( bit32 input[3*NUM_3D_TRI], bit32 output[NUM_FB]) { // local variables Triangle_3D triangle_3ds; Triangle_2D triangle_2ds; Triangle_2D triangle_2ds_same; bit16 size_fragment; CandidatePixel fragment[500]; bit16 size_pixels; Pixel pixels[500]; bit8 frame_buffer[MAX_X][MAX_Y]; bit2 angle = 0; bit8 max_min[5]; bit16 max_index[1]; bit2 flag; // processing NUM_3D_TRI 3D triangles TRIANGLES: for (bit16 i = 0; i < NUM_3D_TRI; i++) { bit32 input_lo = input[3*i]; bit32 input_mi = input[3*i+1]; bit32 input_hi = input[3*i+2]; triangle_3ds.x0 = input_lo( 7, 0); triangle_3ds.y0 = input_lo(15, 8); triangle_3ds.z0 = input_lo(23, 16); triangle_3ds.x1 = input_lo(31, 24); triangle_3ds.y1 = input_mi( 7, 0); triangle_3ds.z1 = input_mi(15, 8); triangle_3ds.x2 = input_mi(23, 16); triangle_3ds.y2 = input_mi(31, 24); triangle_3ds.z2 = input_hi( 7, 0); #ifdef USE_DATAFLOW #pragma HLS dataflow #endif // five stages for processing each 3D triangle projection( triangle_3ds, &triangle_2ds, angle ); flag = rasterization1( triangle_2ds, max_min, &triangle_2ds_same, max_index); size_fragment = rasterization2( flag, max_min, max_index, triangle_2ds_same, fragment ); size_pixels = zculling( i, fragment, size_fragment, pixels); coloringFB ( i, size_pixels, pixels, frame_buffer); } // output values: frame buffer output_FB(frame_buffer,output); } ================================================ FILE: 3d-rendering/src/sdsoc/rendering.h ================================================ /*===============================================================*/ /* */ /* rendering.h */ /* */ /* C++ kernel for 3D Rendering */ /* */ /*===============================================================*/ #ifndef __RENDERING_H__ #define __RENDERING_H__ #include "../host/typedefs.h" #pragma SDS data access_pattern(input:SEQUENTIAL, output:SEQUENTIAL) void rendering(bit32 input[3*NUM_3D_TRI], bit32 output[NUM_FB]); #endif ================================================ FILE: 3d-rendering/src/sw/rendering_sw.cpp ================================================ /*===============================================================*/ /* */ /* rendering_sw.cpp */ /* */ /* Software version for 3D Rendering */ /* */ /*===============================================================*/ #include "rendering_sw.h" /*======================UTILITY FUNCTIONS========================*/ // Determine whether three vertices of a trianlgLe // (x0,y0) (x1,y1) (x2,y2) are in clockwise order by Pineda algorithm // if so, return a number > 0 // else if three points are in line, return a number == 0 // else in counterclockwise order, return a number < 0 int check_clockwise( Triangle_2D triangle_2d ) { int cw; cw = (triangle_2d.x2 - triangle_2d.x0) * (triangle_2d.y1 - triangle_2d.y0) - (triangle_2d.y2 - triangle_2d.y0) * (triangle_2d.x1 - triangle_2d.x0); return cw; } // swap (x0, y0) (x1, y1) of a Triangle_2D void clockwise_vertices( Triangle_2D *triangle_2d ) { bit8 tmp_x, tmp_y; tmp_x = triangle_2d->x0; tmp_y = triangle_2d->y0; triangle_2d->x0 = triangle_2d->x1; triangle_2d->y0 = triangle_2d->y1; triangle_2d->x1 = tmp_x; triangle_2d->y1 = tmp_y; } // Given a pixel, determine whether it is inside the triangle // by Pineda algorithm // if so, return true // else, return false bool pixel_in_triangle( bit8 x, bit8 y, Triangle_2D triangle_2d ) { int pi0, pi1, pi2; pi0 = (x - triangle_2d.x0) * (triangle_2d.y1 - triangle_2d.y0) - (y - triangle_2d.y0) * (triangle_2d.x1 - triangle_2d.x0); pi1 = (x - triangle_2d.x1) * (triangle_2d.y2 - triangle_2d.y1) - (y - triangle_2d.y1) * (triangle_2d.x2 - triangle_2d.x1); pi2 = (x - triangle_2d.x2) * (triangle_2d.y0 - triangle_2d.y2) - (y - triangle_2d.y2) * (triangle_2d.x0 - triangle_2d.x2); return (pi0 >= 0 && pi1 >= 0 && pi2 >= 0); } // find the min from 3 integers bit8 find_min( bit8 in0, bit8 in1, bit8 in2 ) { if (in0 < in1) { if (in0 < in2) return in0; else return in2; } else { if (in1 < in2) return in1; else return in2; } } // find the max from 3 integers bit8 find_max( bit8 in0, bit8 in1, bit8 in2 ) { if (in0 > in1) { if (in0 > in2) return in0; else return in2; } else { if (in1 > in2) return in1; else return in2; } } /*======================PROCESSING STAGES========================*/ // project a 3D triangle to a 2D triangle void projection ( Triangle_3D triangle_3d, Triangle_2D *triangle_2d, int angle ) { // Setting camera to (0,0,-1), the canvas at z=0 plane // The 3D model lies in z>0 space // The coordinate on canvas is proportional to the corresponding coordinate // on space if(angle == 0) { triangle_2d->x0 = triangle_3d.x0; triangle_2d->y0 = triangle_3d.y0; triangle_2d->x1 = triangle_3d.x1; triangle_2d->y1 = triangle_3d.y1; triangle_2d->x2 = triangle_3d.x2; triangle_2d->y2 = triangle_3d.y2; triangle_2d->z = triangle_3d.z0 / 3 + triangle_3d.z1 / 3 + triangle_3d.z2 / 3; } else if(angle == 1) { triangle_2d->x0 = triangle_3d.x0; triangle_2d->y0 = triangle_3d.z0; triangle_2d->x1 = triangle_3d.x1; triangle_2d->y1 = triangle_3d.z1; triangle_2d->x2 = triangle_3d.x2; triangle_2d->y2 = triangle_3d.z2; triangle_2d->z = triangle_3d.y0 / 3 + triangle_3d.y1 / 3 + triangle_3d.y2 / 3; } else if(angle == 2) { triangle_2d->x0 = triangle_3d.z0; triangle_2d->y0 = triangle_3d.y0; triangle_2d->x1 = triangle_3d.z1; triangle_2d->y1 = triangle_3d.y1; triangle_2d->x2 = triangle_3d.z2; triangle_2d->y2 = triangle_3d.y2; triangle_2d->z = triangle_3d.x0 / 3 + triangle_3d.x1 / 3 + triangle_3d.x2 / 3; } } // calculate bounding box for a 2D triangle bool rasterization1 ( Triangle_2D triangle_2d, bit8 max_min[], int max_index[]) { // clockwise the vertices of input 2d triangle if ( check_clockwise( triangle_2d ) == 0 ) return 1; if ( check_clockwise( triangle_2d ) < 0 ) clockwise_vertices( &triangle_2d ); // find the rectangle bounds of 2D triangles max_min[0] = find_min( triangle_2d.x0, triangle_2d.x1, triangle_2d.x2 ); max_min[1] = find_max( triangle_2d.x0, triangle_2d.x1, triangle_2d.x2 ); max_min[2] = find_min( triangle_2d.y0, triangle_2d.y1, triangle_2d.y2 ); max_min[3] = find_max( triangle_2d.y0, triangle_2d.y1, triangle_2d.y2 ); max_min[4] = max_min[1] - max_min[0]; // calculate index for searching pixels max_index[0] = (max_min[1] - max_min[0]) * (max_min[3] - max_min[2]); return 0; } // find pixels in the triangles from the bounding box int rasterization2 ( bool flag, bit8 max_min[], int max_index[], Triangle_2D triangle_2d, CandidatePixel fragment[] ) { // clockwise the vertices of input 2d triangle if ( flag ) { return 0; } bit8 color = 100; int i = 0; RAST2: for ( int k = 0; k < max_index[0]; k ++ ) { bit8 x = max_min[0] + k % max_min[4]; bit8 y = max_min[2] + k / max_min[4]; if( pixel_in_triangle( x, y, triangle_2d ) ) { fragment[i].x = x; fragment[i].y = y; fragment[i].z = triangle_2d.z; fragment[i].color = color; i++; } } return i; } // filter hidden pixels int zculling ( int counter, CandidatePixel fragments[], int size, Pixel pixels[]) { // initilize the z-buffer in rendering first triangle for an image static bit8 z_buffer[MAX_X][MAX_Y]; if (counter == 0) { ZCULLING_INIT_ROW: for ( int i = 0; i < MAX_X; i ++ ) { ZCULLING_INIT_COL: for ( int j = 0; j < MAX_Y; j ++ ) { z_buffer[i][j] = 255; } } } // pixel counter int pixel_cntr = 0; // update z-buffer and pixels ZCULLING: for ( int n = 0; n < size; n ++ ) { if( fragments[n].z < z_buffer[fragments[n].y][fragments[n].x] ) { pixels[pixel_cntr].x = fragments[n].x; pixels[pixel_cntr].y = fragments[n].y; pixels[pixel_cntr].color = fragments[n].color; pixel_cntr++; z_buffer[fragments[n].y][fragments[n].x] = fragments[n].z; } } return pixel_cntr; } // color the frame buffer void coloringFB(int counter, int size_pixels, Pixel pixels[], bit8 frame_buffer[MAX_X][MAX_Y]) { if ( counter == 0 ) { // initilize the framebuffer for a new image COLORING_FB_INIT_ROW: for ( int i = 0; i < MAX_X; i ++ ) { COLORING_FB_INIT_COL: for ( int j = 0; j < MAX_Y; j ++ ) frame_buffer[i][j] = 0; } } // update the framebuffer COLORING_FB: for ( int i = 0; i < size_pixels; i ++ ) frame_buffer[ pixels[i].x ][ pixels[i].y ] = pixels[i].color; } /*========================TOP FUNCTION===========================*/ void rendering_sw( Triangle_3D triangle_3ds[NUM_3D_TRI], bit8 output[MAX_X][MAX_Y]) { // local variables // 2D triangle Triangle_2D triangle_2ds; // projection angle int angle = 0; // max-min index arrays bit8 max_min[5]; int max_index[1]; // fragments CandidatePixel fragment[500]; // pixel buffer Pixel pixels[500]; // processing NUM_3D_TRI 3D triangles TRIANGLES: for (int i = 0; i < NUM_3D_TRI; i ++ ) { // five stages for processing each 3D triangle projection( triangle_3ds[i], &triangle_2ds, angle ); bool flag = rasterization1(triangle_2ds, max_min, max_index); int size_fragment = rasterization2( flag, max_min, max_index, triangle_2ds, fragment ); int size_pixels = zculling( i, fragment, size_fragment, pixels); coloringFB ( i, size_pixels, pixels, output); } } ================================================ FILE: 3d-rendering/src/sw/rendering_sw.h ================================================ /*===============================================================*/ /* */ /* rendering_sw.h */ /* */ /* Software version for 3D Rendering */ /* */ /*===============================================================*/ #ifndef __RENDERING_SW_H__ #define __RENDERING_SW_H__ #include "../host/typedefs.h" void rendering_sw(Triangle_3D triangle_3ds[NUM_3D_TRI], bit8 output[MAX_X][MAX_Y]); #endif ================================================ FILE: BNN/LICENSE ================================================ Copyright (c) 2016-2017, Cornell University All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================ FILE: BNN/README.md ================================================ Introduction ------------------------------------------------------------------------ bnn-fpga is an open-source implementation of a binarized neural network (BNN) accelerator for CIFAR-10 on FPGA. The architecture and training of the BNN is proposed by [Courbarieaux et al.][2] and open-source Python code is available at https://github.com/MatthieuCourbariaux/BinaryNet. Our accelerator targets low-power embedded field-programmable SoCs and was tested on a Zedboard. At time of writing the error rate on the 10000 images in the CIFAR-10 test set is **11.19%**. [2]: https://arxiv.org/abs/1602.02830 Build Setup ------------------------------------------------------------------------ You will need Xilinx SDSoC on your PATH and the Vivado HLS header include files on your CPATH. Verified SDSoC versions: 2016.4, 2017.1 With these tools in place do the following from the repository root: ``` % source setup.sh % cd data; ./get_data.sh; cd .. % cd params; ./get_params.sh; cd .. ``` This will set environment variables and download data and parameter zip files. To build the software model: ``` % cd cpp % make -j4 ``` To build the FPGA bitstream do (with the software build complete): ``` % cd cpp/accel/sdsoc_build % make -j4 ``` Post-route timing and area information is available in **sdsoc_build/\_sds/reports/sds.rpt**. Branches ------------------------------------------------------------------------ The master branch contains a debug build including a random testbench, a per-layer testbench, and a full bnn testbench. The optimized branch contains only the full testbench. FPGA Evaluation ------------------------------------------------------------------------ 1. After the FPGA bitstream is finished building, copy the **sd_card** directory onto an SD card. 2. Copy both **data** and **params** directories onto the same SD card. 3. Insert the card into the Zedboard and power on the Zedboard. 4. Connect to the Zedboard via USB and wait for the boot sequence to finish. 5. At the terminal prompt do the following: ``` % cd mnt % export CRAFT_BNN_ROOT=. % ./accel_test_bnn.exe ``` Where N is the number of images you want to test. Up to 10000 images from the CIFAR-10 test set are available. The program will print out the prediction accuracy and accelerator runtime at the end. Note that the program performs weight binarization and reordering before invoking the accelerator so there will be a pause at the very beginning. Varying the Number of Convolvers ------------------------------------------------------------------------ Go to **cpp/accel/Accel.h** and change CONVOLVERS to the desired number (must be a power of 2). You must do a make clean and rebuild everything from scratch. Known Issues and Bugs ------------------------------------------------------------------------ 1. SDSoC compilation error due to glibc include file This occurs if SDSoC sees the native version of glibc on CPATH, overriding the ARM version for cross-compilation. The fix is to remove /usr/include from CPATH. In some cases this prevents SDSoC from seeing zlib; currently the suggested fix is to build zlib in a different (non-system) directory and add that to CPATH. ================================================ FILE: BNN/cpp/Makefile ================================================ .PHONY: all clean all: $(MAKE) -C minizip $(MAKE) -C utils $(MAKE) -C accel clean: $(MAKE) -C minizip clean $(MAKE) -C utils clean $(MAKE) -C accel clean ================================================ FILE: BNN/cpp/Makefile.inc ================================================ CXX=g++ CFLAGS=-O3 -std=gnu++11 -g MINIZIP_LDFLAGS=-lminizip -laes -lz LDFLAGS=$(MINIZIP_LDFLAGS) AR=ar rcs ================================================ FILE: BNN/cpp/accel/Accel.cpp ================================================ #include #include #include #include "Accel.h" #include "AccelPrint.h" const static Word m1("0x5555555555555555", 16); const static Word m2("0x3333333333333333", 16); const static Word m4("0x0f0f0f0f0f0f0f0f", 16); const static Word h01("0x0101010101010101", 16); // ----------------------------------------------------------------------- // Hardware-specific print helpers // ----------------------------------------------------------------------- template void print_ap_bits(const T& in, const unsigned W) { printf (" "); for (unsigned i = 0; i < W; ++i) printf ("%3d", in[i] ? -1 : 0); printf ("\n"); } template void print_params(T params[CONVOLVERS][K][K]) { for (unsigned m = 0; m < CONVOLVERS; ++m) { for (unsigned wr = 0; wr < K; ++wr) { for (unsigned wc = 0; wc < K; ++wc) { printf ("%3d", (params[m][wr][wc]==0) ? 0 : 1); } printf("\n"); } printf("--\n"); } } template void print_line_buffer_m(T lbuf[CONV_BANKS]) { for (unsigned wr = 0; wr < CONV_ROWS; ++wr) { for (unsigned bank = 0; bank < CONV_BANKS; ++bank) { for (unsigned wc = 0; wc < CONV_COLS; ++wc) { printf ("%3d", lbuf[bank][wr][wc].to_int()); } printf (" |"); } printf ("\n"); } } TwoBit encode_bit(const Bit& b) { return (b == 0) ? TwoBit(1) : TwoBit(-1); } // ----------------------------------------------------------------------- // Conv // ----------------------------------------------------------------------- ConvOut conv3x3b( const TwoBit line_buffer_m[CONV_BANKS][CONV_ROWS][CONV_COLS], const Bit conv_params_m[K][K], const ap_uint<4> bank, const IdxType cc ) { ConvOut sum = 0; for (ap_uint<2> kr = 0; kr < K; ++kr) { for (ap_uint<2> kc = 0; kc < K; ++kc) { TwoBit data = line_buffer_m[bank][kr][cc+kc]; const Bit& wt = conv_params_m[2-kr][2-kc]; data[1] = (wt & data[0]) ^ data[1]; sum += data; } } return sum; } // ----------------------------------------------------------------------- // Produce 32 elements of conv results // ----------------------------------------------------------------------- void conv_word( const TwoBit line_buffer_m[CONV_BANKS][CONV_ROWS][CONV_COLS], const Bit conv_params_m[K][K], ConvOut conv_out_buffer_m[WORD_SIZE] ) { for (ap_uint<4> bank = 0; bank < CONV_BANKS; ++bank) { for (ap_uint<4> cc = 0; cc < BANK_WIDTH; ++cc) { conv_out_buffer_m[bank*BANK_WIDTH+cc] = conv3x3b( line_buffer_m, conv_params_m, bank, cc ); } } } // ----------------------------------------------------------------------- // Process each line in a word, we need to outline this loop to // avoid false control dependencies in Vivado HLS // ----------------------------------------------------------------------- void process_word( const TwoBit word_buffer_m[CONV_BANKS][CONV_COLS], const TwoBit old_word_buffer_m[CONV_BANKS][CONV_COLS], const bool lb[CONV_BANKS], const bool rb[CONV_BANKS], TwoBit line_buffer_m[CONV_BANKS][CONV_ROWS][CONV_COLS], const Bit conv_params_m[K][K], ConvOut conv_out_buffer_m[WORD_SIZE], const ap_uint<3> log_width, const ap_uint<6> words_per_image, const IdxType wrd ) { // slices_per_line = width / BANK_WIDTH const ap_uint<5> slices_per_line = 1 << (log_width - LOG_BANK_WIDTH); const bool first_wrd = (wrd == 0); const bool last_wrd = (wrd == words_per_image); DB_PRINT(4, "process word %d, spl=%d\n", wrd.to_int(), slices_per_line.to_int()); // Prologue // Update bottom row, slices are shifted left. Some slices copied from previous word (middle row) for (ap_uint<4> bank = 0; bank < CONV_BANKS; ++bank) { ap_int<6> s_idx = bank + slices_per_line - CONV_BANKS; if (s_idx < 0) { // set to zero or copy from old word (middle row) for (ap_uint<4> cc = 1; cc < CONV_COLS-1; ++cc) { line_buffer_m[bank][CONV_ROWS-1][cc] = old_word_buffer_m[CONV_BANKS+s_idx][cc]; } line_buffer_m[bank][CONV_ROWS-1][0 ] = lb[bank] ? TwoBit(0) : old_word_buffer_m[CONV_BANKS+s_idx][0]; line_buffer_m[bank][CONV_ROWS-1][CONV_COLS-1] = rb[bank] ? TwoBit(0) : old_word_buffer_m[CONV_BANKS+s_idx][CONV_COLS-1]; } else { // fill from new word for (ap_uint<4> cc = 1; cc < CONV_COLS-1; ++cc) { line_buffer_m[bank][CONV_ROWS-1][cc] = (last_wrd) ? TwoBit(0) : word_buffer_m[s_idx][cc]; } line_buffer_m[bank][CONV_ROWS-1][0 ] = (last_wrd || lb[bank]) ? TwoBit(0) : word_buffer_m[s_idx][0]; line_buffer_m[bank][CONV_ROWS-1][CONV_COLS-1] = (last_wrd || rb[bank]) ? TwoBit(0) : word_buffer_m[s_idx][CONV_COLS-1]; } } DB(4, printf("Accel lbuf wrd%d before conv:\n", wrd.to_int()); print_line_buffer_m(line_buffer_m); ); // Convolution conv_word( line_buffer_m, conv_params_m, conv_out_buffer_m ); // Update // Fill line buffer with lines from the new word for (ap_uint<4> bank = 0; bank < CONV_BANKS; ++bank) { // -------------------------------------------------------------- // Top row, slices are shifted right by slices_per_line ap_int<6> s_idx0 = bank - slices_per_line; if (s_idx0 >= 0) { // slice from input word for (ap_uint<4> cc = 1; cc < CONV_COLS-1; ++cc) { line_buffer_m[bank][0][cc] = word_buffer_m[s_idx0][cc]; } line_buffer_m[bank][0][0 ] = lb[bank] ? TwoBit(0) : word_buffer_m[s_idx0][0]; line_buffer_m[bank][0][CONV_COLS-1] = rb[bank] ? TwoBit(0) : word_buffer_m[s_idx0][CONV_COLS-1]; } else { // set to zero or copy from old word (middle row) for (ap_uint<4> cc = 1; cc < CONV_COLS-1; ++cc) { line_buffer_m[bank][0][cc] = (first_wrd) ? TwoBit(0) : old_word_buffer_m[CONV_BANKS+s_idx0][cc]; } line_buffer_m[bank][0][0 ] = (first_wrd || lb[bank]) ? TwoBit(0) : old_word_buffer_m[CONV_BANKS+s_idx0][0]; line_buffer_m[bank][0][CONV_COLS-1] = (first_wrd || rb[bank]) ? TwoBit(0) : old_word_buffer_m[CONV_BANKS+s_idx0][CONV_COLS-1]; } // -------------------------------------------------------------- // Middle row, simply copy the word into the line buffer for (ap_uint<4> cc = 1; cc < CONV_COLS-1; ++cc) { line_buffer_m[bank][1][cc] = word_buffer_m[bank][cc]; } // Fill end buffer bits line_buffer_m[bank][1][0 ] = lb[bank] ? TwoBit(0) : word_buffer_m[bank][0]; line_buffer_m[bank][1][CONV_COLS-1] = rb[bank] ? TwoBit(0) : word_buffer_m[bank][CONV_COLS-1]; } DB(4, printf("Accel lbuf wrd%d after conv:\n", wrd.to_int()); print_line_buffer_m(line_buffer_m); ); } // ----------------------------------------------------------------------- // A single PE reads from all inputs and weights to generate a single // output feature map. // * Make sure this function gets inlined by VHLS, or cosim may fail! // ----------------------------------------------------------------------- void bin_conv( Word wt_mem[CONVOLVERS][C_WT_WORDS], NormComp nc, Word dmem[2][CONVOLVERS][C_DMEM_WORDS], ap_uint<1> d_i_idx, ap_uint<1> d_o_idx, const unsigned n_inputs, const Address o_index, const ap_uint<1> new_batch, const ap_uint<2> width_mode, // 0=8'b, 1=16'b, 2=32'b const ap_uint<2> norm_mode // 0='do nothing', 1='do norm', 2='do pool' ) { const ap_uint<3> log_width = width_mode + LOG_BANK_WIDTH; const ap_uint<5> words_per_image = 1 << (2*width_mode); const unsigned n_phases = n_inputs / CONVOLVERS; const unsigned images_per_phase = PIX_PER_PHASE >> (2*log_width); const unsigned WORDS_PER_PHASE = PIX_PER_PHASE / WORD_SIZE; assert(n_phases % images_per_phase == 0); assert(n_inputs % images_per_phase == 0); assert(images_per_phase*words_per_image == WORDS_PER_PHASE); // --------------------------------------------------------------------- // buffers // --------------------------------------------------------------------- TwoBit line_buffer[CONVOLVERS][CONV_BANKS][CONV_ROWS][CONV_COLS]; Bit conv_params[CONVOLVERS][K][K]; ConvSum fixed_buffer[WORDS_PER_PHASE][WORD_SIZE]; ConvSum fixed_temp[WORD_SIZE]; // per-convolver buffers TwoBit word_buffer[CONVOLVERS][CONV_BANKS][CONV_COLS]; TwoBit old_word_buffer[CONVOLVERS][CONV_BANKS][CONV_COLS]; ConvOut conv_out_buffer[CONVOLVERS][WORD_SIZE]; // edge padding flag bits bool lb[CONV_BANKS]; bool rb[CONV_BANKS]; static Address wt_addr = 0; // address of weight word static ap_uint<3> wt_offset = 0; // offset 0..6 of param if (new_batch != 0) { wt_addr = 0; wt_offset = 0; } // --------------------------------------------------------------------- // Calculate edge padding flag bits const ap_uint<4> log_slice = log_width - LOG_BANK_WIDTH; const ap_uint<4> w_div_8 = (1 << log_width) >> 3; assert (w_div_8 > 0); ap_uint<4> mask = ~ap_uint<4>(0); // set mask to all 1s mask = mask >> (4-log_slice); for (ap_uint<4> bank = 0; bank < CONV_BANKS; ++bank) { #pragma HLS unroll const ap_uint<4> x = bank & mask; lb[bank] = (x == 0); // (bank % w_div_8) == 0 rb[bank] = (x+1 == w_div_8); // (bank % w_div_8) == w_div_8-1 } // --------------------------------------------------------------------- // Reset conv buffer for (IdxType i = 0; i < WORDS_PER_PHASE; ++i) { for (IdxType j = 0; j < WORD_SIZE; ++j) { #pragma HLS UNROLL fixed_buffer[i][j] = 0; } } // --------------------------------------------------------------------- // Compute in phases // Each phase processes CONVOLVERS * WORDS_PER_PHASE input words // --------------------------------------------------------------------- LOOP_PHASES: for (ap_uint<10> p = 0; p < n_phases; p += images_per_phase) { DB(3, printf ("=== PHASE %d ===\n", p.to_int()) ); // wrd = which word in the current image // wrd_phase = which wrd in the current phase ap_uint<8> wrd = 0; ap_uint<8> wrd_phase = 0; // Load a word each iteration, and then process it // We load WORDS_PER_PHASE words per phase, however we also need 1 extra "empty" // iteration per image in the phase to do the loop epilogue, so the loop bound // is WORDS_PER_PHASE + images_per_phase LOOP_WORDS_IN_PHASE: for (ap_uint<8> count = 0; count < WORDS_PER_PHASE+images_per_phase; ++count) { // First word of an image if (wrd == 0) { Word wt_word_buffer[CONVOLVERS]; // ------------------------------------------------------------------- // Load param word // Each word contains CONV_W_PER_WORD weight filters, after we use // them all we should load the next word // ------------------------------------------------------------------- LOOP_WT_WORDS: for (IdxType m = 0; m < CONVOLVERS; ++m) { /*if (wt_offset == 0) wt_word_buffer[m] = wt_mem[m][wt_addr]; else wt_word_buffer[m] = wt_word_buffer[m] >> WT_SIZE; */ wt_word_buffer[m] = wt_mem[m][wt_addr] >> ap_uint<6>(WT_SIZE*wt_offset); } if (wt_offset == CONV_W_PER_WORD-1) { ++wt_addr; wt_offset = 0; } else { ++wt_offset; } //print_wt_word(wt_word_buffer[0]); // ------------------------------------------------------------------- // Load params // Each word contains CONV_W_PER_WORD weight filters packed into the first // 63 bits, the last bit is unused. Wts are stored in output-major order. // ------------------------------------------------------------------- LOOP_LOAD_WTS: for (IdxType m = 0; m < CONVOLVERS; ++m) { for (ap_uint<2> kr = 0; kr < K; ++kr) { for (ap_uint<2> kc = 0; kc < K; ++kc) conv_params[m][kr][kc] = wt_word_buffer[m][kr*K+kc]; } } DB(3, print_params(conv_params) ); } // ------------------------------------------------------------------- // Every word in an image // ------------------------------------------------------------------- // Load word // (wrd_phase-wrd) is which wrd in the current phase, aligned to img boundary if (wrd != words_per_image) { LOOP_CONVOLVER_LOAD: for (IdxType m = 0; m < CONVOLVERS; ++m) { Word word = dmem[d_i_idx][m][p*words_per_image + wrd_phase]; for (IdxType bank = 0; bank < CONV_BANKS; ++bank) { for (IdxType cc = 0; cc < CONV_COLS-2; ++cc) { word_buffer[m][bank][cc+1] = encode_bit(word[ap_uint<6>(bank*BANK_WIDTH+cc)]); } word_buffer[m][bank][0 ] = (bank==0) ? TwoBit(0) : encode_bit(word[ap_uint<6>(bank*BANK_WIDTH-1)]); word_buffer[m][bank][CONV_COLS-1] = (bank==CONV_BANKS-1) ? TwoBit(0) : encode_bit(word[ap_uint<6>(bank*BANK_WIDTH+BANK_WIDTH)]); } } } // Compute LOOP_CONVOLVERS: for (IdxType m = 0; m < CONVOLVERS; ++m) { // Do the following for each word in an image process_word( word_buffer[m], old_word_buffer[m], lb, rb, line_buffer[m], conv_params[m], conv_out_buffer[m], log_width, words_per_image, wrd ); } // CONVOLVERS for (IdxType m = 0; m < CONVOLVERS; ++m) { for (IdxType bank = 0; bank < CONV_BANKS; ++bank) { for (IdxType cc = 0; cc < CONV_COLS; ++cc) { old_word_buffer[m][bank][cc] = word_buffer[m][bank][cc]; } } } // ------------------------------------------------------------------- // Sum results across convolvers // ------------------------------------------------------------------- for (IdxType i = 0; i < WORD_SIZE; ++i) { // Ignore conv results after processing the first word if (wrd > 0) { ConvSum s = 0; for (IdxType m = 0; m < CONVOLVERS; ++m) s += conv_out_buffer[m][i]; fixed_buffer[wrd_phase-1][i] += s; } } // ------------------------------------------------------------------- // Increment counters // ------------------------------------------------------------------- if (wrd != words_per_image) { wrd++; wrd_phase++; } else { wrd = 0; } } // wrd_phase = 0 .. WORDS_PER_PHASE } // n_phases LOOP_ACC_PHASES: for (ap_uint<5> w = 0; w < words_per_image; ++w) { for (IdxType b = 0; b < WORD_SIZE; ++b) { #pragma HLS unroll fixed_temp[b] = fixed_buffer[w][b]; } LOOP_ACC_PHASES_I: for (ap_uint<8> i = words_per_image; i < WORDS_PER_PHASE; i += words_per_image) { for (IdxType b = 0; b < WORD_SIZE; ++b) { fixed_temp[b] += fixed_buffer[w+i][b]; } } for (IdxType b = 0; b < WORD_SIZE; ++b) { #pragma HLS unroll fixed_buffer[w][b] = fixed_temp[b]; } } const Address bank_idx = o_index % CONVOLVERS; const Address bank_off = o_index / CONVOLVERS; const ap_uint<5> pool_width = 1 << (log_width-1); DB(4, unsigned width = 1 << log_width; printf ("=== conv result ===\n"); print_mat(fixed_buffer[0], width, 8, width); ); DB_PRINT(2, " o_idx=%3d: nc=%6d\n", o_index.to_int(), nc.to_int()); static Word outword; Word poolword; LOOP_BATCH_NORM: for (ap_uint<6> w = 0; w < words_per_image; ++w) { Word binword; Address o_bank_idx = bank_idx; Address o_bank_offset = bank_off*words_per_image + w; const ap_uint<6> out_offset = (w % 4) << 4; for (ap_uint<7> i = 0; i < WORD_SIZE; ++i) { binword[i] = (fixed_buffer[w][i] >= nc) ? 0 : 1; } if (norm_mode == 1) { outword = binword; } else if (norm_mode == 2) { // horizontal pooling first ap_int poolword_h; for (ap_uint<6> i = 0; i < WORD_SIZE/2; ++i) { poolword_h[i] = binword[2*i] & binword[2*i+1]; } // vertical pooling for (ap_uint<6> i = 0; i < WORD_SIZE/4; ++i) { // source indices ap_uint<5> i0 = i >> (log_width-1); i0 = (i0 << log_width) + i(log_width-2,0); ap_uint<5> i1 = i0 + pool_width; // dest index ap_uint<6> d0 = out_offset + i; poolword[d0] = poolword_h[i0] & poolword_h[i1]; } // For log_width > 3 we can just assign the word, but log_width = 3 means width = 8, // which means pooled width = 4, which is only 16 bits, which is less than 1 Word. // So each time we get here we only have 16 bits, meaning we have to accumulate four // of these 16-bit batches before writing a word out. if (log_width != LOG_BANK_WIDTH) { o_bank_offset /= 4; outword = poolword; } else { outword = outword >> WORD_SIZE/4; outword(63,48) = poolword(15,0); o_bank_idx = (o_index/4)%CONVOLVERS; o_bank_offset = (o_index/4)/CONVOLVERS; } } dmem[d_o_idx][o_bank_idx][o_bank_offset] = outword; } } // ----------------------------------------------------------------------- // Module to do the first conv layer // ----------------------------------------------------------------------- void fp_conv( Word wt_mem[CONVOLVERS][C_WT_WORDS], Word kh_mem[KH_WORDS], Word dmem[2][CONVOLVERS][C_DMEM_WORDS], ap_uint<1> d_i_idx, ap_uint<1> d_o_idx, const Address kh_index, const Address o_index, const unsigned N ) { const unsigned M = 3; const unsigned S = 32; const unsigned OUTWORDS = 16; // words per output image C1InputType win[M][K][K]; C1InputType lbuf[M][K-1][S]; Word outwords[OUTWORDS]; WtType wtbuf[M]; Address wt_offset = 0; ap_uint<3> wt_addr = 0; // Parallelized across m, better for HLS LOOP_FP_CONV_O: for (IdxType n = 0; n < N; ++n) { // clear linebuffers for each new output map LOOP_RESET_LINEBUFFERS: for (IdxType m = 0; m < M; ++m) { PROLOG_COLS: for (IdxType c = 0; c < S; ++c) { PROLOG_ROWS: for (IdxType r = 0; r < K/2; ++r) { for (IdxType lr = 0; lr < K-2; ++lr) { lbuf[m][lr][c] = lbuf[m][lr+1][c]; } lbuf[m][K-2][c] = 0; } } } // The weights for the 1st conv layer are just laid out // linearly across wt_mem, 3 weights per 64-bit word DB_PRINT(3, "n = %u\n", n.to_int()); Word wt_word = wt_mem[n % CONVOLVERS][n / CONVOLVERS]; LOOP_LOAD_WTS: for (ap_uint<2> m = 0; m < M; ++m) { wtbuf[m] = wt_word((m+1)*WT_SIZE-1, m*WT_SIZE); DB(3, print_wt(wtbuf[m])); DB(3, printf("--\n")); } // load batch norm params C1Comp nc; load_kh(nc, kh_mem, (kh_index+n)); //printf (" n=%3d, nc=%6.3f\n", n.to_int(), nc.to_float()); // begin convolution LOOP_CONV_ROWS: for (IdxType r = 0; r < S+1; ++r) { LOOP_CONV_COLS: for (IdxType c = 0; c < S+1; ++c) { // load input word Word inword = 0; if (r < S && c < S) { const Address addr = r*S + c; inword = dmem[d_i_idx][addr/C_DMEM_WORDS][addr%C_DMEM_WORDS]; } for (ap_uint<2> m = 0; m < M; ++m) { // load data: the value of pix is either the pixel at [r,c] // 0 -> +1, -1 -> -1 // or -> 0 for padding around the boundaries C1InputType pix; const unsigned W = pix.length(); pix(W-1,0) = inword(W-1+m*W, m*W); // window: shift left, leaving rightmost col for new data for (IdxType wr = 0; wr < K; ++wr) { for (IdxType wc = 0; wc < K-1; ++wc) { win[m][wr][wc] = win[m][wr][wc+1]; } } // window: fill top K-1 pixels of rightmost column from lbuf for (IdxType wr = 0; wr < K-1; ++wr) { C1InputType val = (c != S) ? lbuf[m][wr][c] : C1InputType(0); win[m][wr][K-1] = val; } // window: fill bottom right with new input pixel win[m][K-1][K-1] = pix; // lbuf: shift up column c if (c != S) { for (IdxType lr = 0; lr < K-2; ++lr) { lbuf[m][lr][c] = lbuf[m][lr+1][c]; } lbuf[m][K-2][c] = pix; } } // m // only perform the conv and store if legal position if (r > 0 && c > 0) { C1ConvType res = 0; for (ap_uint<2> m = 0; m < M; ++m) { for (ap_uint<2> wr = 0; wr < K; ++wr) { for (ap_uint<2> wc = 0; wc < K; ++wc) { const C1InputType& pix = win[m][wr][wc]; const Bit& b = wtbuf[m][8-(wr*K+wc)]; res += (b==0) ? pix : (C1InputType)(-pix); } } } // perform normalization right here outwords[(r-1)/2][((r-1)%2)*S + (c-1)] = (res >= nc) ? Bit(0) : Bit(-1); } } // CONV_COLS } // CONV_ROWS // Here i is the word offset within the outwords buffer LOOP_OUTPUT: for (IdxType i = 0; i < OUTWORDS; ++i) { Address img_idx = o_index+n; Address bank_idx = img_idx % CONVOLVERS; Address bank_off = img_idx / CONVOLVERS; dmem[d_o_idx][bank_idx][bank_off*OUTWORDS + i] = outwords[i]; } } // n } void bin_dense( const Word wt_mem[CONVOLVERS][C_WT_WORDS], const Word kh_mem[KH_WORDS], Word dmem[2][CONVOLVERS][C_DMEM_WORDS], ap_uint<2> layer_type, ap_uint<1> d_i_idx, ap_uint<1> d_o_idx, const Address o_index, const unsigned n_inputs, const unsigned n_outputs ) { //assert(n_outputs % WORD_SIZE == 0); assert(layer_type == LAYER_DENSE || n_outputs == 10); assert(n_inputs/WORD_SIZE % CONVOLVERS == 0); DenseSum sum_m[CONVOLVERS]; // for last layer DenseNorm best_out = -1024; ap_int<8> prediction = -1; // read words from dmem and the wt store, dot them // o is the output bit, i is the input bit LOOP_DENSE_O: for (Address o = 0; o < n_outputs; ++o) { const Address o_addr = (o_index+o)/WORD_SIZE; const ap_uint<6> o_offset = (o_index+o) % WORD_SIZE; Word o_word = dmem[d_o_idx][o_addr%CONVOLVERS][o_addr/CONVOLVERS]; DenseSum sum = 0; LOOP_DENSE_I: for (Address i = 0; i < n_inputs; i+=CONVOLVERS*WORD_SIZE) { const Address wt_addr = (o*n_inputs+i) / WORD_SIZE; for (IdxType j = 0; j < CONVOLVERS; ++j) { // in_wrd addr = [(i/WORD_SIZE+j) % CONVOLVERS][(i/WORD_SIZE+j) / CONVOLVERS] // wt_wrd addr = [wt_addr % CONVOLVERS][wt_addr / CONVOLVERS] const Word in_wrd = dmem[d_i_idx][j][i/WORD_SIZE/CONVOLVERS]; const Word wt_wrd = wt_mem[j][wt_addr / CONVOLVERS]; Word x = wt_wrd ^ in_wrd; // count_set bit for 64 bits, returns 2*cnt x -= (x >> 1) & m1; x = (x & m2) + ((x >> 2) & m2); x = (x + (x >> 4)) & m4; x += x >> 8; x += x >> 16; x += x >> 32; x = x & 0x7f; sum_m[j] = WORD_SIZE - (DenseSum)(x<<1); } for (IdxType j = 0; j < CONVOLVERS; ++j) sum += sum_m[j]; } // n_inputs // not last layer -> biniarize, // otherwise just store the value as a 64bit word if (layer_type == LAYER_DENSE) { Address kh_addr = o / KH_PER_WORD; Word kh_word = kh_mem[kh_addr]; NormComp nc; IdxType kh_off = o % KH_PER_WORD; if (kh_off == 0) nc(15,0) = kh_word(15, 0); else if (kh_off == 1) nc(15,0) = kh_word(31,16); else if (kh_off == 2) nc(15,0) = kh_word(47,32); else nc(15,0) = kh_word(63,48); o_word[o_offset] = (sum >= nc) ? 0 : 1; } else { Address kh_addr = o / (const unsigned)2; Word kh_word = kh_mem[kh_addr]; KType ki; HType hi; IdxType kh_off = o % 2; if (kh_off == 0) { ki(15,0) = kh_word(15, 0); hi(15,0) = kh_word(31,16); } else { ki(15,0) = kh_word(47,32); hi(15,0) = kh_word(63,48); } //printf (" >> %d * %f + %f\n", sum.to_int(), ki.to_float(), hi.to_float()); ap_fixed<20,10> out = ap_fixed<20,10>(sum)*ki + hi; if (o == 0 || out > best_out) { prediction = o; best_out = out; } } dmem[d_o_idx][o_addr%CONVOLVERS][o_addr/CONVOLVERS] = o_word; } // n_outputs // Here we are using o_index as a bit index, not a word index! if (layer_type == LAYER_LAST) { Word o_word; o_word(7,0) = prediction(7,0); o_word(WORD_SIZE-1, 8) = 0; dmem[d_o_idx][0][0] = o_word; } } // ----------------------------------------------------------------------- // Accelerator top module // ----------------------------------------------------------------------- void top( Word wt_i[WT_WORDS], Word kh_i[KH_WORDS], Word dmem_i[DMEM_WORDS], Word dmem_o[DMEM_O_WORDS], const Address n_inputs, const Address n_outputs, const Address input_words, const Address output_words, const ap_uint<3> layer_mode, // [0]='new layer', [2:1]='conv1,conv,dense,last' const ap_uint<1> dmem_mode, // 0 means dmem[0] is input const ap_uint<2> width_mode, // 0=8'b, 1=16'b, 2=32'b const ap_uint<2> norm_mode // 0='do nothing', 1='do norm', 2='do pool' ) { DB_PRINT(2, "==== Entering Accel ====\n"); const ap_uint<2> layer_type = layer_mode(2,1); const unsigned width = 8 << width_mode; DB_PRINT(1, " Inputs = %d\n", n_inputs.to_int()); DB_PRINT(1, " Outputs = %d\n", n_outputs.to_int()); DB_PRINT(1, " i_words = %d\n", input_words.to_int()); DB_PRINT(1, " o_words = %d\n", output_words.to_int()); DB_PRINT(1, " Width = %d\n", width); DB_PRINT(1, " layer_mode = %d %d\n", layer_mode[0]==0 ? 0 : 1, layer_type.to_int()); DB_PRINT(1, " dmem_mode = %d\n", dmem_mode.to_int()); assert(width <= MAX_WIDTH); assert(n_inputs != 0); if (layer_type <= LAYER_CONV) { assert(input_words % CONVOLVERS == 0); assert(n_inputs*width*width <= DMEM_WORDS*WORD_SIZE); assert(n_inputs*WT_SIZE <= WT_WORDS*WORD_SIZE); } static Word dmem[2][CONVOLVERS][C_DMEM_WORDS]; static Word kh_mem[KH_WORDS]; static Word wt_mem[CONVOLVERS][C_WT_WORDS]; static Address kh_index = 0; static Address o_index = 0; if (layer_mode[0]) { kh_index = 0; o_index = 0; } else { kh_index = kh_index[0]; } ap_uint<1> d_i_idx = dmem_mode; ap_uint<1> d_o_idx = ~dmem_mode; // Data input const ap_uint<5> words_per_image = 1 << (2*width_mode); Address img_idx = 0; // i / words_per_image; IdxType img_off = 0; // i % words_per_image; LOOP_DMEM_I: for (Address i = 0; i < input_words; ++i) { if (layer_type == LAYER_CONV) { Address bank_idx = img_idx % CONVOLVERS; Address bank_off = img_idx / CONVOLVERS; dmem[d_i_idx][bank_idx][(bank_off<<(2*width_mode)) + img_off] = dmem_i[i]; } else if (layer_type == LAYER_CONV1) dmem[d_i_idx][i/C_DMEM_WORDS][i%C_DMEM_WORDS] = dmem_i[i]; else dmem[d_i_idx][i%CONVOLVERS][i/CONVOLVERS] = dmem_i[i]; if (++img_off == words_per_image) { img_off = 0; ++img_idx; } } // Weight input, we must copy every 64-bit Word from the interface // into the accelerator LOOP_WT_I: for (Address i = 0; i < C_WT_WORDS*CONVOLVERS; ++i) { wt_mem[i%CONVOLVERS][i/CONVOLVERS] = wt_i[i]; } //printf ("\nAccel Weights:\n"); //print_params3d(wt_mem[0], 0, n_inputs*n_outputs); LOOP_KH_I: for (ap_uint<16> i = 0; i < KH_WORDS; ++i) kh_mem[i] = kh_i[i]; if (layer_type == LAYER_CONV1) { assert(n_inputs == 3); fp_conv( wt_mem, kh_mem, dmem, d_i_idx, d_o_idx, kh_index, o_index, n_outputs ); kh_index += n_outputs; o_index += n_outputs; } else if (layer_type == LAYER_CONV) { assert(norm_mode != 2 || n_outputs % 4 == 0); // needed for pooling of 8x8 image assert(n_inputs % CONVOLVERS == 0); LOOP_IMG_BATCH: for (IdxType i = 0; i < n_outputs; ++i) { // Load the batch-norm parameters for this output NormComp nc; load_kh(nc, kh_mem, kh_index); bin_conv( wt_mem, nc, dmem, d_i_idx, d_o_idx, n_inputs, o_index, i == 0 ? 1 : 0, // new_batch width_mode, norm_mode ); kh_index++; o_index++; } } else { bin_dense( wt_mem, kh_mem, dmem, layer_type, d_i_idx, d_o_idx, o_index, n_inputs, n_outputs ); o_index += n_outputs; } // layer_type // Data output ap_uint<5> words_per_out = words_per_image / ((norm_mode!=2) ? 1 : 4); img_idx = 0; img_off = 0; LOOP_DMEM_O: for (Address i = 0; i < output_words; ++i) { // exclude conv6 (width==8, norm_mode==2) here because it writes // the output fmaps linearly if (layer_type <= LAYER_CONV && !(width_mode == 0 && norm_mode == 2)) { Address bank_idx = img_idx % CONVOLVERS; Address bank_off = img_idx / CONVOLVERS; dmem_o[i] = dmem[d_o_idx][bank_idx][bank_off*words_per_out + img_off]; } else dmem_o[i] = dmem[d_o_idx][i%CONVOLVERS][i/CONVOLVERS]; if (++img_off == words_per_out) { img_off = 0; ++img_idx; } } } ================================================ FILE: BNN/cpp/accel/Accel.h ================================================ #ifndef ACCEL_ACCEL_H #define ACCEL_ACCEL_H #include #include #include #include // include this before sds_lib.h for size_t #include "Typedefs.h" #include "Debug.h" #include "Common.h" #ifdef __SDSCC__ #include "sds_lib.h" #define MEM_ALLOC(size) sds_alloc(size) #define MEM_FREE(ptr) sds_free(ptr) #else #define MEM_ALLOC(size) malloc(size) #define MEM_FREE(ptr) free(ptr) #endif //------------------------------------------------------------------- // Constants //------------------------------------------------------------------- const unsigned CONVOLVERS = 2; const unsigned WORD_SIZE = 64; const unsigned WT_SIZE = 9; const unsigned CONV_W_PER_WORD = 7; const unsigned CONV1_W_PER_WORD = 4; const unsigned KH_PER_WORD = 4; const unsigned BYTE_SIZE = 8; const unsigned K = 3; const unsigned WT_L = 16*4*512; // parameter to control wt mem size const unsigned C_WT_WORDS = ((WT_L+CONV_W_PER_WORD-1)/CONV_W_PER_WORD + CONVOLVERS-1) / CONVOLVERS; // wt words per convolver const unsigned WT_WORDS = C_WT_WORDS*CONVOLVERS; const unsigned KH_WORDS = WT_L/128*16 / WORD_SIZE; const unsigned DMEM_WORDS = 128*32*32 / WORD_SIZE; const unsigned C_DMEM_WORDS = DMEM_WORDS / CONVOLVERS; const unsigned DMEM_O_WORDS = 512*4*4 / WORD_SIZE; const unsigned DB_MEM_WORDS = 32*32; const unsigned PIX_PER_PHASE = 2*32*32; const unsigned MAX_WIDTH = WORD_SIZE; const unsigned BANK_WIDTH = 8; const unsigned LOG_BANK_WIDTH = 3; const unsigned CONV_ROWS = 3; const unsigned CONV_COLS = BANK_WIDTH+2; const unsigned CONV_BANKS = WORD_SIZE / BANK_WIDTH; //------------------------------------------------------------------- // Typedefs //------------------------------------------------------------------- enum LayerTypeEnum {LAYER_CONV1, LAYER_CONV, LAYER_DENSE, LAYER_LAST}; typedef ap_int Word; typedef ap_int WtType; typedef ap_uint<16> Address; typedef ap_int<12> ConvSum; typedef ap_int<5> ConvOut; typedef ap_uint<10> IdxType; typedef ap_fixed<16,4> C1Comp; typedef ap_int<16> NormComp; typedef ap_int<16> DenseSum; typedef ap_fixed<16,12> DenseNorm; typedef ap_fixed<20,2, AP_RND> C1InputType; typedef ap_fixed<24,6, AP_RND> C1ConvType; //------------------------------------------------------------------- // Template functions //------------------------------------------------------------------- template void load_kh(T& comp, const Word kh_mem[KH_WORDS], Address idx) { Word kh_word = kh_mem[idx/KH_PER_WORD]; IdxType off = idx % KH_PER_WORD; if (off == 0) comp(15,0) = kh_word(15, 0); else if (off == 1) comp(15,0) = kh_word(31,16); else if (off == 2) comp(15,0) = kh_word(47,32); else comp(15,0) = kh_word(63,48); } //------------------------------------------------------------------- // Accelerator synthesizable top-level function //------------------------------------------------------------------- #pragma SDS data copy(dmem_i[0:input_words], dmem_o[0:output_words]) #pragma SDS data access_pattern(dmem_i:SEQUENTIAL, dmem_o:SEQUENTIAL) #pragma SDS data access_pattern(wt_i:SEQUENTIAL, kh_i:SEQUENTIAL) #pragma SDS data mem_attribute(dmem_i:PHYSICAL_CONTIGUOUS, dmem_o:PHYSICAL_CONTIGUOUS) #pragma SDS data mem_attribute(wt_i:PHYSICAL_CONTIGUOUS, kh_i:PHYSICAL_CONTIGUOUS) #pragma SDS data data_mover(dmem_i:AXIDMA_SIMPLE, dmem_o:AXIDMA_SIMPLE) #pragma SDS data data_mover(wt_i:AXIDMA_SIMPLE, kh_i:AXIDMA_SIMPLE) void top( Word wt_i[WT_WORDS], Word kh_i[KH_WORDS], Word dmem_i[DMEM_WORDS], Word dmem_o[DMEM_O_WORDS], const Address n_inputs, const Address n_outputs, const Address input_words, const Address output_words, const ap_uint<3> layer_mode, // [0]='new layer', [2:1]='conv1,conv,dense' const ap_uint<1> dmem_mode, // 0 means dmem[0] is input const ap_uint<2> width_mode, // 0=8'b, 1=16'b, 2=32'b const ap_uint<2> norm_mode // 0='do nothing', 1='do norm', 2='do pool' ); #endif ================================================ FILE: BNN/cpp/accel/AccelPrint.cpp ================================================ #include "AccelPrint.h" void print_params3d(Word in[], unsigned M, unsigned num) { unsigned addr = M / CONV_W_PER_WORD; unsigned off = M % CONV_W_PER_WORD; for (unsigned n = M; n < M+num; ++n) { print_bits(in, addr*WORD_SIZE+off*WT_SIZE, 3, 3, 3); printf ("--%u--\n", n+1); if (++off == CONV_W_PER_WORD) { off = 0; addr++; } } } void print_wt_word(const Word& in) { assert(K*K == WT_SIZE); for (unsigned i = 0; i < CONV_W_PER_WORD; ++i) { for (unsigned r = 0; r < K; ++r) { for (unsigned c = 0; c < K; ++c) { printf ("%3d", in[i*WT_SIZE + r*K + c] == 0 ? 0 : 1); } printf ("\n"); } printf ("--%u/%u--\n", i+1, CONV_W_PER_WORD); } } void print_wt(const WtType& in) { for (unsigned r = 0; r < K; ++r) { for (unsigned c = 0; c < K; ++c) { printf ("%3d", in[r*K + c] == 0 ? 0 : 1); } printf ("\n"); } } ================================================ FILE: BNN/cpp/accel/AccelPrint.h ================================================ #ifndef ACCEL_PRINT_H #define ACCEL_PRINT_H #include "Accel.h" #include //------------------------------------------------------------------------ // For an array of ap_int's, sets/gets the bit at bit_idx // calculated from the start of the array to val //------------------------------------------------------------------------ template inline void set_bit(T array[], unsigned bit_idx, Bit val) { unsigned W = array[0].length(); Address idx = bit_idx / W; Address offset = bit_idx % W; array[idx][offset] = val; } template inline Bit get_bit(T array[], unsigned bit_idx) { unsigned W = array[0].length(); Address idx = bit_idx / W; Address offset = bit_idx % W; Bit result = array[idx][offset]; return result; } //------------------------------------------------------------------------ // Printing matrices and bit arrays //------------------------------------------------------------------------ template void print_mat(T in[], unsigned S, unsigned R, unsigned C) { R = (R >= S) ? S : R; C = (C >= S) ? S : C; for (unsigned r = 0; r < R; ++r) { for (unsigned c = 0; c < C; ++c) std::cout << std::setw(4) << in[r*S+c] << " "; printf ("\n"); } } template void print_mat3d(T in[], unsigned M, unsigned num, unsigned S, unsigned R, unsigned C) { for (unsigned m = M; m < M+num; ++m) { print_mat(in+m*S*S, S, R, C); printf ("--%u--\n", m+1); } } template void print_bits(T in[], unsigned bit_offset, unsigned S, unsigned R, unsigned C) { R = (R >= S) ? S : R; C = (C >= S) ? S : C; for (unsigned r = 0; r < R; ++r) { for (unsigned c = 0; c < C; ++c) std::cout << std::setw(2) << get_bit(in, bit_offset+r*S+c) << " "; printf ("\n"); } } template void print_bits3d(T in[], unsigned M, unsigned num, unsigned S, unsigned R, unsigned C) { for (unsigned m = M; m < M+num; ++m) { print_bits(in, m*S*S, S, R, C); printf ("--%u--\n", m+1); } } void print_params3d(Word in[], unsigned M, unsigned num); void print_wt_word(const Word& in); void print_wt(const WtType& in); #endif ================================================ FILE: BNN/cpp/accel/AccelSchedule.cpp ================================================ #include "AccelSchedule.h" #include "AccelTest.h" #include "Timer.h" static Timer timers[N_LAYERS] = { "xl-FC3", "xl-FC2", "xl-FC1", "xl-Conv6", "xl-Conv5", "xl-Conv4", "xl-Conv3", "xl-Conv2", "xl-Conv1" }; // ----------------------------------------------------------------------- // Each layer may need multiple invocations of the accelerator due to // limited on-chip storage of weights. // // This function computes the number of invocations needed and splits // the weights for each invocation. // // We make the following assumptions now: // 1. Only 1 output image per invocation // 2. wt_mem is large enough to hold the weights for at least 1 image // ----------------------------------------------------------------------- void compute_accel_schedule( Word* wt, Word* kh, unsigned n_inputs, unsigned n_outputs, unsigned width, const ap_uint<2> layer_type, // 0=conv1, 1=conv, 2=dense const ap_uint<1> max_pool, AccelSchedule &schedule ) { assert (wt != NULL); assert (kh != NULL); const ap_uint<2> width_mode = width >> 4; ap_uint<3> layer_mode = 0; layer_mode(2,1) = layer_type(1,0); // for conv layers unsigned width_o = (max_pool==0) ? width : width / 2; // imgs_per_batch is the number of output images to compute per batch unsigned imgs_per_batch = 0; if (layer_type == LAYER_CONV1 || layer_type == LAYER_CONV) imgs_per_batch = find_conv_batch_size(width, width_o, n_inputs, n_outputs); // recalculate some values if dense layer if (layer_type == LAYER_DENSE || layer_type == LAYER_LAST) { width_o = 1; imgs_per_batch = find_dense_batch_size(n_inputs, n_outputs); } assert (imgs_per_batch != 0); unsigned n_batches = n_outputs / imgs_per_batch; schedule.resize(n_batches); // divide up the weights according to the value of imgs_per_batch unsigned idx = 0; for (unsigned o = 0; o < n_outputs; o+=imgs_per_batch, idx++) { layer_mode[0] = (o==0) ? 1 : 0; // add a new invocation to the schedule schedule[idx].n_inputs = n_inputs; schedule[idx].n_outputs = imgs_per_batch; schedule[idx].layer_mode = layer_mode; schedule[idx].width_mode = width_mode; schedule[idx].norm_mode = max_pool + 1; // now we divide up the weights Word* wt_i = schedule[idx].wt; if (layer_type == LAYER_CONV1) load_conv1_weights(wt, wt_i, o, imgs_per_batch); else if (layer_type == LAYER_CONV) load_conv_weights(wt, wt_i, o, n_inputs, imgs_per_batch); else load_dense_weights(wt, wt_i, o, n_inputs, imgs_per_batch); // divide up the kh params Word* kh_i = schedule[idx].kh; if (layer_type != LAYER_LAST) load_kh (kh, kh_i, o, imgs_per_batch); else load_kh (kh, kh_i, o, 2*imgs_per_batch); } } // ----------------------------------------------------------------------- // Invoke accel multiple times based on an AccelSchedule (vec of AccelInfo) // ----------------------------------------------------------------------- void run_accel_schedule( Word* data_i, Word* data_o, unsigned layer_idx, unsigned input_words, unsigned output_words, ap_uint<1> dmem_mode, AccelSchedule& s ) { // weight mems static Word* wt_i = (Word*) MEM_ALLOC( WT_WORDS*sizeof(Word) ); static Word* kh_i = (Word*) MEM_ALLOC( KH_WORDS*sizeof(Word) ); if (!wt_i || !kh_i) { fprintf(stderr, "**** ERROR: Alloc wt_i or kh_i failed in %s\n", __FILE__); exit(-2); } const unsigned N = s.size(); const unsigned LAYERS = 9; // Invoke accelerator once for each element in the schedule for (unsigned i = 0; i < N; ++i) { for (unsigned j = 0; j < WT_WORDS; ++j) wt_i[j] = s[i].wt[j]; for (unsigned j = 0; j < KH_WORDS; ++j) kh_i[j] = s[i].kh[j]; timers[LAYERS-1-layer_idx].start(); top( wt_i, kh_i, data_i, data_o, s[i].n_inputs, s[i].n_outputs, (i==0) ? input_words : 0, (i==N-1) ? output_words : 0, s[i].layer_mode, dmem_mode, s[i].width_mode, s[i].norm_mode ); timers[LAYERS-1-layer_idx].stop(); } //MEM_FREE( wt_i ); //MEM_FREE( kh_i ); } // ----------------------------------------------------------------------- // determine the appropriate output batch size which allows the params // and data to fit within their respective memory sizes // ----------------------------------------------------------------------- unsigned find_conv_batch_size(unsigned width, unsigned width_o, unsigned n_inputs, unsigned n_outputs) { const unsigned input_bsize = DMEM_WORDS*WORD_SIZE / (width*width); const unsigned wt_bsize = WT_WORDS*CONV_W_PER_WORD / n_inputs; const unsigned kh_bsize = KH_WORDS*KH_PER_WORD; unsigned imgs_per_batch = DMEM_WORDS*WORD_SIZE / (width_o*width_o); // adjust output batch size to fit into memories cleanly if (imgs_per_batch > n_outputs) imgs_per_batch = n_outputs; if (imgs_per_batch > wt_bsize) imgs_per_batch = wt_bsize; if (imgs_per_batch > kh_bsize) imgs_per_batch = kh_bsize; while (n_outputs % imgs_per_batch != 0) { imgs_per_batch--; } assert(imgs_per_batch != 0); DB_PRINT(0, ">> (Wt, KH) batch: (%u %u)\n", wt_bsize, kh_bsize); DB_PRINT(0, ">> Final batch: %u\n", imgs_per_batch); // We are going to assume the following: // 1. We have space for all the input feature maps in dmem // 2. We have space for at least n_inputs parameters in wt_i assert(n_inputs <= input_bsize); assert(wt_bsize != 0); return imgs_per_batch; } // returns the number of output WORDS per batch unsigned find_dense_batch_size(unsigned n_inputs, unsigned n_outputs) { assert(WT_WORDS*WORD_SIZE >= n_inputs); const unsigned wt_bsize = WT_WORDS*WORD_SIZE / n_inputs; const unsigned kh_bsize = KH_WORDS*KH_PER_WORD; unsigned bits_per_batch = DMEM_WORDS*WORD_SIZE; // adjust output batch size to fit into memories cleanly if (bits_per_batch > n_outputs) bits_per_batch = n_outputs; if (bits_per_batch > wt_bsize) bits_per_batch = wt_bsize; if (bits_per_batch > kh_bsize) bits_per_batch = kh_bsize; while (n_outputs % bits_per_batch != 0) { bits_per_batch--; } assert(bits_per_batch != 0); DB_PRINT(0, ">> (Wt, KH) bits batch: (%u %u)\n", wt_bsize, kh_bsize); DB_PRINT(0, ">> Final bits batch: %u\n", bits_per_batch); return bits_per_batch; } // ----------------------------------------------------------------------- // load weights for 1st conv layer, the weights are arranged linearly // within the CONVOLVERS banks of the wt_mem such that the first bank // contains filters 0,1,2,...,C_WT_WORDS-1, etc // We also pack 3 weights per word // ----------------------------------------------------------------------- void load_conv1_weights(Word* wt, Word* wt_o, unsigned o, unsigned n_out) { // curr is the index of the starting weight in [wt] const unsigned M = 3; unsigned curr = o*M; unsigned addr_i = curr / CONV_W_PER_WORD; unsigned off_i = curr % CONV_W_PER_WORD; Word w = wt[addr_i] >> off_i*WT_SIZE; Word w_o; for (unsigned n = 0; n < n_out; ++n) { for (unsigned i = 0; i < M; ++i) { if (off_i == 0) w = wt[addr_i]; w_o = w_o >> WT_SIZE; w_o(M*WT_SIZE-1, (M-1)*WT_SIZE) = w(WT_SIZE-1, 0); w = w >> WT_SIZE; if (++off_i == CONV_W_PER_WORD) { off_i = 0; addr_i++; } } wt_o[n] = w_o; } //printf ("\nLoaded Weights:\n"); //print_params3d(wt_o, 0, 15); } // ----------------------------------------------------------------------- // load weights for the bin conv layers, the weights are arranged within // the CONVOLVERS banks of the wt_mem such that the first bank contains // filters 0, CONVOLVERS, 2*CONVOLVERS, ... // ----------------------------------------------------------------------- void load_conv_weights(Word* wt, Word* wt_o, unsigned o, unsigned n_in, unsigned n_out ) { // curr is the index of the starting weight in [wt] unsigned curr = o*n_in; unsigned addr_i = curr / CONV_W_PER_WORD; unsigned off_i = curr % CONV_W_PER_WORD; unsigned wt_words = WTS_TO_WORDS(n_in*n_out); assert (wt_words <= WT_WORDS); Word w = wt[addr_i] >> off_i*WT_SIZE; Word w_o[CONVOLVERS]; for (unsigned i = 0; i < CONVOLVERS; ++i) w_o[i] = 0; for (unsigned n = 0; n < (wt_words+CONVOLVERS-1)/CONVOLVERS; ++n) { for (unsigned i = 0; i < CONV_W_PER_WORD*CONVOLVERS; ++i) { if (off_i == 0) w = wt[addr_i]; // for each 3x3 filter, write it to the right partition w_o[i % CONVOLVERS] = w_o[i % CONVOLVERS] >> WT_SIZE; w_o[i % CONVOLVERS](CONV_W_PER_WORD*WT_SIZE-1, (CONV_W_PER_WORD-1)*WT_SIZE) = w(WT_SIZE-1, 0); w = w >> WT_SIZE; if (++off_i == CONV_W_PER_WORD) { //print_wt_word(w); off_i = 0; addr_i++; } } for (unsigned m = 0; m < CONVOLVERS; ++m) wt_o[n*CONVOLVERS+m] = w_o[m]; } //printf ("\nLoaded Weights:\n"); //print_params3d(wt_o, 0, n_in*n_out); } // ----------------------------------------------------------------------- // load n_in*n_out single bit weights into accelerator // o is which output bit we are starting from // ----------------------------------------------------------------------- void load_dense_weights(Word* wt, Word* wt_o, unsigned o, unsigned n_in, unsigned n_out ) { assert(n_in % WORD_SIZE == 0); // load in Word-sized chunks for (unsigned i = 0; i < n_in*n_out/WORD_SIZE; ++i) { wt_o[i] = wt[o*n_in/WORD_SIZE + i]; } } // ----------------------------------------------------------------------- // load n_out sets of kh params into accelerator // ----------------------------------------------------------------------- void load_kh(Word* kh, Word kh_i[], unsigned o, unsigned n_out) { unsigned kh_addr = o / KH_PER_WORD; for (unsigned i = 0; i*KH_PER_WORD < n_out; ++i) { kh_i[i] = kh[kh_addr + i]; } } float total_time() { float t = 0; for (unsigned n = 0; n < N_LAYERS; ++n) { t += timers[n].get_time(); } return t; } ================================================ FILE: BNN/cpp/accel/AccelSchedule.h ================================================ #ifndef ACCEL_ACCEL_SCHEDULE_H #define ACCEL_ACCEL_SCHEDULE_H #include #include "Accel.h" // Contains all info needed to invoke the accelerator once except // input/output data and its size which is handled separately struct AccelInfo { Word* wt; Word* kh; unsigned n_inputs; unsigned n_outputs; ap_uint<3> layer_mode; // [0]='new layer', [2:1]='conv1,conv,dense' ap_uint<2> width_mode; // 0=8'b, 1=16'b, 2=32'b ap_uint<2> norm_mode; // 0='do nothing', 1='do norm', 2='do pool' AccelInfo() { wt = new Word[WT_WORDS]; kh = new Word[KH_WORDS]; } ~AccelInfo() { delete[] wt; delete[] kh; } }; typedef std::vector AccelSchedule; void compute_accel_schedule( Word* wt, Word* kh, unsigned n_inputs, unsigned n_outputs, unsigned width, const ap_uint<2> layer_type, // 0=conv1, 1=conv, 2=dense const ap_uint<1> max_pool, AccelSchedule &schedule ); void run_accel_schedule( Word* data_i, Word* data_o, unsigned layer_idx, unsigned input_words, unsigned output_words, ap_uint<1> dmem_mode, AccelSchedule& s ); void load_conv1_weights(Word* wt, Word* wt_o, unsigned o, unsigned n_out); void load_conv_weights(Word* wt, Word* wt_o, unsigned o, unsigned n_in, unsigned n_out); void load_dense_weights(Word* wt, Word* wt_o, unsigned o, unsigned n_in, unsigned n_out); void load_kh(Word* kh, Word* kh_mem, unsigned o, unsigned n_imgs); unsigned find_conv_batch_size(unsigned width, unsigned width_o, unsigned n_inputs, unsigned n_outputs); unsigned find_dense_batch_size(unsigned n_inputs, unsigned n_outputs); float total_time(); #endif ================================================ FILE: BNN/cpp/accel/AccelTest.cpp ================================================ #include "AccelTest.h" #include "AccelSchedule.h" #include #include //------------------------------------------------------------------------ // Helper functions //------------------------------------------------------------------------ bool layer_is_conv(unsigned layer_idx) { return layer_is_binconv(layer_idx) || layer_is_fpconv(layer_idx); } bool layer_is_binconv(unsigned layer_idx) { assert(layer_idx != 0 && layer_idx <= N_LAYERS); return T_tab[layer_idx-1] == LAYER_CONV; } bool layer_is_fpconv(unsigned layer_idx) { assert(layer_idx != 0 && layer_idx <= N_LAYERS); return T_tab[layer_idx-1] == LAYER_CONV1; } bool layer_is_last(unsigned layer_idx) { assert(layer_idx != 0 && layer_idx <= N_LAYERS); return T_tab[layer_idx-1] == LAYER_LAST; } bool layer_wt_size(unsigned layer_idx); bool layer_kh_size(unsigned layer_idx); // Simple log function, only works for powers of 2 unsigned log2(unsigned x) { unsigned res = 0; while (x != 1) { x = x >> 1; res += 1; } return res; } // number of Words allocated to store n conv weights unsigned WTS_TO_WORDS(const unsigned n) { // divide n weights by W_PER_WORD const unsigned words = (n + CONV_W_PER_WORD-1) / CONV_W_PER_WORD; // round up to nearest convolvers return ((words+CONVOLVERS-1) / CONVOLVERS) * CONVOLVERS; } //------------------------------------------------------------------------ // Binarize weights and pack them into Words //------------------------------------------------------------------------ void set_weight_array(Word* w, const float* wts, unsigned layer_idx) { const unsigned M = M_tab[layer_idx-1]; const unsigned N = N_tab[layer_idx-1]; if (layer_is_conv(layer_idx)) { set_conv_weight_array(w, wts, M*N); } else { set_dense_weight_array(w, wts, M, N); } } void set_conv_weight_array(Word* w, const float* wts, unsigned size) { unsigned wrd = 0, off = 0; for (unsigned m = 0; m < size; ++m) { for (unsigned i = 0; i < WT_SIZE; ++i) { set_bit(w, wrd*WORD_SIZE+off*WT_SIZE+i, wts[m*WT_SIZE+i]>=0 ? Bit(0) : Bit(-1)); } if (++off == CONV_W_PER_WORD) { off = 0; wrd++; } } } void set_dense_weight_array(Word* w, const float* wts, unsigned M, unsigned N) { unsigned w_idx = 0; for (unsigned n = 0; n < N; ++n) { for (unsigned m = 0; m < M; m+=WORD_SIZE) { Word wrd = 0; for (unsigned b = 0; b < WORD_SIZE; ++b) { wrd[b] = ((wts[(m+b)*N+n] < 0) ? 1 : 0); } w[w_idx] = wrd; ++w_idx; } } } //------------------------------------------------------------------------ // Binarize and pack the batch norm parameters //------------------------------------------------------------------------ const int M_INT = 32767; int round_away_from_zero(float f) { return f < 0 ? floor(f) : ceil(f); } // compute -(h/k) without floating-point exception float compute_thresh(const float k, const float h) { if (k == 0) return (h >= 0) ? -M_INT : M_INT; else return -(h/k); } void set_bnorm_array(Word* kh, const float* k, const float* h, unsigned layer_idx) { const unsigned N = N_tab[layer_idx-1]; if (!layer_is_last(layer_idx)) { set_bnorm_array1(kh, k, h, layer_idx, N); } else { set_bnorm_array2(kh, k, h, N); } } void set_bnorm_array1(Word* kh, const float* k, const float* h, unsigned layer_idx, unsigned N) { for (unsigned n = 0; n < N; ++n) { NormComp comp; if (layer_is_fpconv(layer_idx)) { // fixed point number for first conv layer C1Comp fi = compute_thresh(k[n], h[n]); comp(15,0) = fi(15,0); } else { // integer number for all other layer, round away from 0 comp = round_away_from_zero( compute_thresh(k[n], h[n]) ); } int off = n % KH_PER_WORD; Word w = kh[n/KH_PER_WORD]; w((off+1)*16-1, off*16) = comp(15,0); kh[n/KH_PER_WORD] = w; } } void set_bnorm_array2(Word* kh, const float* k, const float* h, unsigned N) { for (unsigned n = 0; n < N; ++n) { KType ki = k[n]; HType hi = h[n]; //printf ("** ki=%f, hi=%f\n", ki.to_float(), hi.to_float()); Word w = kh[n/2]; if (n % 2 == 0) { w(15, 0) = ki(15,0); w(31,16) = hi(15,0); } else { w(47,32) = ki(15,0); w(63,48) = hi(15,0); } kh[n/2] = w; } } //------------------------------------------------------------------------ // Binarize the input image //------------------------------------------------------------------------ void binarize_input_images(Word* dmem_i, const float* inputs, unsigned S) { // N is the number of images, S is the image width in pixels // Assume [in[ut] is a 3 channel non-interleaved image // We pack 3 interleaved pixels into each word const unsigned C = 3; const unsigned W = C1InputType(0).length(); assert(W <= WORD_SIZE/C); for (unsigned s = 0; s < S*S; ++s) { Word wrd = 0; for (unsigned c = 0; c < C; ++c) { C1InputType t1 = inputs[c*S*S+s]; unsigned offset = W*c; wrd(W-1+offset, offset) = t1(W-1, 0); } dmem_i[s] = wrd; } } //------------------------------------------------------------------------ // Padded convolution //------------------------------------------------------------------------ void padded_conv(Word in[], Word w[], Word out[], unsigned M, unsigned S) { for (int r = 0; r < S; ++r) { for (int c = 0; c < S; ++c) { out[r*S + c] = 0; }} for (int m = 0; m < M; ++m) { for (int r = 0; r < S; ++r) { for (int c = 0; c < S; ++c) { Word res = 0; for (int kr = 0; kr < K; ++kr) { for (int kc = 0; kc < K; ++kc) { TwoBit pix = 0; int _r = r+kr-K/2; int _c = c+kc-K/2; if (_r >= 0 && _c >= 0 && _r < S && _c < S) pix = get_bit(in, m*S*S+_r*S+_c) == 0 ? 1 : -1; Address kaddr = m/CONV_W_PER_WORD; IdxType koff = m%CONV_W_PER_WORD; Bit k = w[kaddr][koff*K*K + (2-kr)*K + (2-kc)]; res += (k!=0) ? (TwoBit)(-pix) : pix; } } out[r*S + c] += res; } } } } //------------------------------------------------------------------------ // Helper test function for the accelerator conv layers //------------------------------------------------------------------------ void test_conv_layer( Word* weights, Word* kh, Word* data_i, Word* data_o, Word* conv_ref, Word* bin_ref, const unsigned M, const unsigned N, const unsigned Si, const ap_uint<1> conv_mode, // 0=conv1, 1=conv const ap_uint<1> max_pool ) { printf ("#### Testing convolution with %u inputs, width %u ####\n", M, Si); unsigned So = max_pool ? Si/2 : Si; unsigned input_words = conv_mode==0 ? Si*Si : M*Si*Si/WORD_SIZE; unsigned output_words = N*So*So/WORD_SIZE; if (output_words < 1) output_words = 1; assert (input_words <= DMEM_WORDS); //assert (output_words <= DMEM_O_WORDS); DB(3, printf ("*data*:\n"); print_bits3d(data_i, 0, 1, Si, 6,Si); printf ("*params*:\n"); print_params3d(weights, 0, 15); ) AccelSchedule sched; compute_accel_schedule( weights, kh, M, N, Si, conv_mode.to_int(), max_pool, sched ); run_accel_schedule( data_i, data_o, 0, // layer_idx input_words, output_words, 0, // dmem_mode sched ); // print results printf ("*bin out*:\n"); print_bits3d(data_o, 0, 1, So, 8,So); printf ("*bin ref*:\n"); print_bits3d(bin_ref, 0, 1, So, 8,So); // Compare bin results printf ("## Checking results ##\n"); unsigned n_err = 0; for (unsigned n = 0; n < N; ++n) { for (unsigned r = 0; r < So; ++r) { for (unsigned c = 0; c < So; ++c) { if (get_bit(data_o, n*So*So+r*So+c) != get_bit(bin_ref, n*So*So+r*So+c)) { n_err++; //printf ("bin out != ref at n=%d, (%d,%d)\n", n, r,c); //if (n_err > 64) exit(-1); } } } } float err_rate = float(n_err) / (N*So*So)*100; printf ("Error rate: %7.4f%%\n", err_rate); assert(err_rate < 1.0); } //------------------------------------------------------------------------ // Helper test function for the accelerator dense layers //------------------------------------------------------------------------ void test_dense_layer( Word* weights, Word* kh, Word* data_i, Word* data_o, Word* bin_ref, const unsigned M, // pixels const unsigned N // pixels ) { printf ("#### Testing dense layer with %u inputs, %u outputs ####\n", M, N); DB(3, printf ("*data*:\n"); print_bits(data_i, 0, 16, 8, 16); printf ("*params*:\n"); print_bits(weights, 0, 16, 8, 16); ) AccelSchedule sched; compute_accel_schedule( weights, kh, M, N, 1, 2, // layer_mode 0, // norm_mode sched ); run_accel_schedule( data_i, data_o, 0, // layer_idx M/WORD_SIZE, N/WORD_SIZE, 0, // dmem_mode sched ); // print results printf ("*bin out*:\n"); print_bits(data_o, 0, 16, 8, 16); printf ("*bin ref*:\n"); print_bits(bin_ref, 0, 16, 8, 16); // Compare bin results printf ("## Checking results ##\n"); unsigned n_err = 0; for (unsigned n = 0; n < N; ++n) { if (get_bit(data_o, n) != get_bit(bin_ref, n)) { n_err++; } } float err_rate = float(n_err)/N * 100; printf ("Error rate: %7.4f%%\n", err_rate); assert(err_rate < 1.0); } ================================================ FILE: BNN/cpp/accel/AccelTest.h ================================================ #ifndef ACCEL_ACCEL_TEST_H #define ACCEL_ACCEL_TEST_H #include "Typedefs.h" #include "Accel.h" #include "AccelPrint.h" #include const unsigned N_LAYERS = 9; const unsigned L_CONV = 6; const unsigned S_tab[] = { 32, 32, 16, 16, 8, 8, 4, 1, 1, 1}; const unsigned M_tab[] = { 3, 128, 128, 256, 256, 512, 8192, 1024, 1024}; const unsigned N_tab[] = {128, 128, 256, 256, 512, 512, 1024, 1024, 10}; const unsigned T_tab[] = { 0, 1, 1, 1, 1, 1, 2, 2, 3}; const unsigned widx_tab[] = {0, 3, 6, 9, 12, 15, 18, 21, 24}; const unsigned kidx_tab[] = {1, 4, 7, 10, 13, 16, 19, 22, 25}; const unsigned hidx_tab[] = {2, 5, 8, 11, 14, 17, 20, 23, 26}; const unsigned pool_tab[] = {0, 1, 0, 1, 0, 1, 0, 0, 0}; // layer_idx goes from 1 to 9 bool layer_is_conv(unsigned layer_idx); bool layer_is_binconv(unsigned layer_idx); bool layer_is_fpconv(unsigned layer_idx); bool layer_is_last(unsigned layer_idx); bool layer_wt_size(unsigned layer_idx); bool layer_kh_size(unsigned layer_idx); // number of Words allocated to store n weights unsigned WTS_TO_WORDS(const unsigned n); // Simple log function, only works for powers of 2 unsigned log2(unsigned x); //------------------------------------------------------------------------ // Set an array of ap_int's using some data, used to binarize test // inputs and outputs //------------------------------------------------------------------------ template void set_bit_array(T1 array[], const T2* data, unsigned size) { for (unsigned i = 0; i < size; ++i) { set_bit(array, i, (data[i]>=0) ? Bit(0) : Bit(-1)); } } //------------------------------------------------------------------------ // Functions used to preprocess params and inputs //------------------------------------------------------------------------ void set_weight_array(Word* w, const float* wts, unsigned layer_idx); void set_conv_weight_array(Word* w, const float* wts, unsigned size); void set_dense_weight_array(Word* w, const float* wts, unsigned M, unsigned N); void set_bnorm_array(Word* kh, const float* k, const float* h, unsigned layer_idx); void set_bnorm_array1(Word* kh, const float* k, const float* h, unsigned layer_idx, unsigned N); void set_bnorm_array2(Word* kh, const float* k, const float* h, unsigned N); void binarize_input_images(Word* dmem_i, const float* inputs, unsigned S); //------------------------------------------------------------------------ // Padded convolution (used for golden reference) //------------------------------------------------------------------------ void padded_conv(Word in[], Word w[], Word out[], unsigned M, unsigned S); //------------------------------------------------------------------------ // Helper test function for the accelerator // This function calls the accelerator, then runs a check of the results // against conv_ref (if not NULL) and bin_ref. //------------------------------------------------------------------------ void test_conv_layer( Word* weights, Word* kh, Word* data_i, Word* data_o, Word* conv_ref, Word* bin_ref, const unsigned M, const unsigned N, const unsigned S, const ap_uint<1> conv_mode=1, const ap_uint<1> max_pool=0 ); void test_dense_layer( Word* weights, Word* kh, Word* data_i, Word* data_o, Word* bin_ref, const unsigned M, // pixels const unsigned N // pixels ); #endif ================================================ FILE: BNN/cpp/accel/Dense.cpp ================================================ #include "Dense.h" #include "Timer.h" const static Word m1("0x5555555555555555", 16); const static Word m2("0x3333333333333333", 16); const static Word m4("0x0f0f0f0f0f0f0f0f", 16); const static Word h01("0x0101010101010101", 16); static Timer t_dense("dense"); static Timer t_last ("last"); // ----------------------------------------------------------------------- // Performs dense dot product on M input bits, n*M is the weight offset // ----------------------------------------------------------------------- int dotproduct_m( const Word* in, const Word* w, const unsigned M, const unsigned n ) { assert (M % WORD_SIZE == 0); int sum = 0; // Loop across in the inputs in batches of WORD_SIZE for (unsigned m = 0; m < M; m+=WORD_SIZE) { const Word in_wrd = in[m/WORD_SIZE]; const Word wt_wrd = w[(n*M+m)/WORD_SIZE]; Word x = wt_wrd ^ in_wrd; // count_set bit for 64 bits, returns 2*cnt x -= (x >> 1) & m1; x = (x & m2) + ((x >> 2) & m2); x = (x + (x >> 4)) & m4; x += x >> 8; x += x >> 16; x += x >> 32; x = x & 0x7f; sum += WORD_SIZE - (x<<1).to_int(); } return sum; } // ----------------------------------------------------------------------- // Internal dense layer // ----------------------------------------------------------------------- void dense_layer_cpu( const Word* wt, const float* k_data, const float* h_data, const Word* in, Word* out, const unsigned M, const unsigned N ) { t_dense.start(); for (unsigned n = 0; n < N; n+=WORD_SIZE) { Word out_wrd = 0; for (unsigned nb = 0; nb < WORD_SIZE; ++nb) { int sum = dotproduct_m(in, wt, M, n+nb); float res = static_cast(sum) * k_data[n+nb] + h_data[n+nb]; if (res < 0) out_wrd[nb] = 1; } out[n/WORD_SIZE] = out_wrd; } t_dense.stop(); } // ----------------------------------------------------------------------- // Final dense layer // ----------------------------------------------------------------------- int last_layer_cpu( const Word* wt, const float* k_data, const float* h_data, const Word* in, const unsigned M, const unsigned N ) { t_last.start(); int pred = -1; float maxval = 0; for (unsigned n = 0; n < N; ++n) { int sum = dotproduct_m(in, wt, M, n); float val = static_cast(sum) * k_data[n] + h_data[n]; if (pred == -1 || val > maxval) { pred = n; maxval = val; } } t_last.stop(); return pred; } ================================================ FILE: BNN/cpp/accel/Dense.h ================================================ #ifndef ACCEL_DENSE_H #define ACCEL_DENSE_H #include "Debug.h" #include "Typedefs.h" #include "Accel.h" void dense_layer_cpu( const Word* w, const float* k_data, const float* h_data, const Word* data_i, Word* data_o, const unsigned M, const unsigned N ); int last_layer_cpu( const Word* w, const float* k_data, const float* h_data, const Word* in, const unsigned M, const unsigned N ); #endif ================================================ FILE: BNN/cpp/accel/InputConv.cpp ================================================ #include "InputConv.h" #include "AccelTest.h" #include "Timer.h" void run_input_conv_layer( const float* w_data, const float* k_data, const float* h_data, const float* data_i, Word* data_o, const unsigned M, const unsigned N ) { const unsigned S = 32; std::vector w; w.reserve(M*N*K*K); for (unsigned i = 0; i < M*N*K*K; ++i) { w[i] = (w_data[i] >= 0) ? false : true; } float conv_buffer[S*S]; float in_buffer[(S+2)*(S+2)]; // ------------------------------------------ // assign 0 to the boundaries // ------------------------------------------ for (unsigned c = 0; c < S+2; ++c) in_buffer[c] = 0; for (unsigned r = 1; r < S+1; ++r) { in_buffer[r*(S+2) + 0] = 0; in_buffer[r*(S+2) + S+1] = 0; } for (unsigned c = 0; c < S+2; ++c) in_buffer[(S+1)*(S+2) + c] = 0; static Timer t_conv1("conv1"); t_conv1.start(); // ------------------------------------------ // Main conv loop // ------------------------------------------ for (unsigned n = 0; n < N; ++n) { // clear conv_buffer for (unsigned i = 0; i < S*S; ++i) { conv_buffer[i] = 0; } // Loop over all input images for (unsigned m = 0; m < M; ++m) { const unsigned w_n = n*M + m; // copy input for (unsigned r = 1; r < S+1; ++r) { for (unsigned c = 1; c < S+1; ++c) { in_buffer[r*(S+2) + c] = data_i[m*S*S + (r-1)*S + (c-1)]; } } // operate on 1 input image for (int r = 0; r < S; ++r) { for (int c = 0; c < S; ++c) { float res = 0; // perform convolution for (int kr = 0; kr < K; ++kr) { for (int kc = 0; kc < K; ++kc) { float pix = in_buffer[(r+kr)*(S+2) + (c+kc)]; const bool b = w[w_n*K*K + (8-(kr*K+kc))]; res += (b==0) ? pix : -pix; } } // kr,kc conv_buffer[r*S + c] += res; } } // r,c of input img } // m // perform batch-norm for (unsigned i = 0; i < S*S; i+=WORD_SIZE) { Word out_wrd = 0; for (unsigned b = 0; b < WORD_SIZE; ++b) { float x = static_cast(conv_buffer[i+b]); x = x * k_data[n] + h_data[n]; out_wrd[b] = (x >= 0) ? 0 : 1; } data_o[(n*S*S + i)/WORD_SIZE] = out_wrd; } } // n t_conv1.stop(); } ================================================ FILE: BNN/cpp/accel/InputConv.h ================================================ #ifndef ACCEL_INPUT_CONV_H #define ACCEL_INPUT_CONV_H #include "Typedefs.h" #include "Accel.h" void run_input_conv_layer( const float* w_data, const float* k_data, const float* h_data, const float* data_i, Word* data_o, const unsigned M, const unsigned N ); #endif ================================================ FILE: BNN/cpp/accel/Makefile ================================================ include ../Makefile.inc CFLAGS:=-I../utils $(CFLAGS) LDFLAGS:=-L../utils -L../minizip -lCraftUtils $(LDFLAGS) # HDR are pure headers HDR= # OBJ must include a .cpp and .h with same name OBJ=Accel.o AccelSchedule.o AccelTest.o AccelPrint.o Dense.o InputConv.o EXE=accel_test_bnn.exe accel_test_layer.exe accel_test_random.exe all: $(EXE) # Rule for object files, each object must have a header $(OBJ): %.o: %.cpp %.h $(CXX) -c $< -o $@ $(CFLAGS) %.o: %.cpp $(CXX) -c $< -o $@ $(CFLAGS) # Rule for executables $(EXE): %.exe: %.o $(OBJ) g++ $^ -o $@ $(CFLAGS) $(LDFLAGS) .PHONY: hls clean hlsclean hls: vivado_hls hls.tcl hlsclean: rm -rf hls.prj vivado_hls.log clean: hlsclean rm -f *.o *.exe ================================================ FILE: BNN/cpp/accel/README.md ================================================ * Accel.h: the synthesizable accelerator code * AccelSchedule.h: driver functions for calling the accel to execute BNN layers * AccelTest.h: functions and helpers for writing test programs for the accel * AccelPrint.h: printing functions for weights and etc ================================================ FILE: BNN/cpp/accel/accel_test_bnn.cpp ================================================ #include #include #include #include "Accel.h" #include "AccelSchedule.h" #include "AccelTest.h" #include "Dense.h" #include "ZipIO.h" #include "ParamIO.h" #include "DataIO.h" #include "Timer.h" int main(int argc, char** argv) { if (argc < 2) { printf ("Give number of images to test as 1st arg\n"); return 0; } const unsigned n_imgs = std::stoi(argv[1]); const unsigned lconv = 6; // last conv const unsigned ldense = 8; // last dense const bool DENSE_LAYER_CPU = getenv("BNN_DENSE_LAYER_CPU") != NULL; const bool LAST_LAYER_CPU = getenv("BNN_LAST_LAYER_CPU") != NULL; if (DENSE_LAYER_CPU) printf ("## Dense layer CPU is turned on ##\n"); if (LAST_LAYER_CPU) printf ("## Last layer CPU is turned on ##\n"); // print some config numbers printf ("* WT_WORDS = %u\n", WT_WORDS); printf ("* KH_WORDS = %u\n", KH_WORDS); // Load input data printf ("## Loading input data ##\n"); Cifar10TestInputs X(n_imgs); Cifar10TestLabels y(n_imgs); // Load parameters printf ("## Loading parameters ##\n"); Params params(get_root_dir() + "/params/cifar10_parameters_nb.zip"); // --------------------------------------------------------------------- // allocate and binarize all weights // --------------------------------------------------------------------- Word* wt[N_LAYERS]; Word* kh[N_LAYERS]; for (unsigned l = 0; l < N_LAYERS; ++l) { const unsigned M = M_tab[l]; const unsigned N = N_tab[l]; if (layer_is_conv(l+1)) wt[l] = new Word[WTS_TO_WORDS(M*N)]; else wt[l] = new Word[M*N / WORD_SIZE]; const float* weights = params.float_data(widx_tab[l]); set_weight_array(wt[l], weights, l+1); kh[l] = new Word[N/KH_PER_WORD * sizeof(Word)]; const float* k = params.float_data(kidx_tab[l]); const float* h = params.float_data(hidx_tab[l]); set_bnorm_array(kh[l], k, h, l+1); } // --------------------------------------------------------------------- // // compute accelerator schedule (divides up weights) // --------------------------------------------------------------------- AccelSchedule layer_sched[N_LAYERS]; for (unsigned l = 0; l < N_LAYERS; ++l) { compute_accel_schedule( wt[l], kh[l], M_tab[l], N_tab[l], S_tab[l], T_tab[l], pool_tab[l], layer_sched[l] ); } // allocate memories for data i/o for the accelerator Word* data_i = (Word*) MEM_ALLOC( DMEM_WORDS * sizeof(Word) ); Word* data_o = (Word*) MEM_ALLOC( DMEM_O_WORDS * sizeof(Word) ); if (!data_i || !data_o) { fprintf (stderr, "**** ERROR: Alloc failed in %s\n", __FILE__); return (-2); } unsigned n_errors = 0; printf ("## Running BNN for %d images\n", n_imgs); //-------------------------------------------------------------- // Run BNN //-------------------------------------------------------------- for (unsigned n = 0; n < n_imgs; ++n) { float* data = X.data + n*3*32*32; binarize_input_images(data_i, data, 32); //------------------------------------------------------------ // Execute conv layers //------------------------------------------------------------ for (unsigned l = 1; l <= lconv; ++l) { const unsigned M = M_tab[l-1]; const unsigned N = N_tab[l-1]; const unsigned S = S_tab[l-1]; unsigned input_words = (l==1) ? S*S : M*S*S/WORD_SIZE; unsigned output_words = (pool_tab[l-1]) ? N*S*S/WORD_SIZE/4 : N*S*S/WORD_SIZE; run_accel_schedule( data_i, data_o, l-1, // layer_idx (l==1) ? input_words : 0, (l==lconv && DENSE_LAYER_CPU) ? output_words : 0, l % 2, // mem_mode layer_sched[l-1] ); } //------------------------------------------------------------ // Execute dense layers //------------------------------------------------------------ for (unsigned l = lconv+1; l <= ldense; ++l) { const unsigned M = M_tab[l-1]; const unsigned N = N_tab[l-1]; if (DENSE_LAYER_CPU) { for (unsigned i = 0; i < M/WORD_SIZE; ++i) data_i[i] = data_o[i]; dense_layer_cpu( wt[l-1], params.float_data(3*l-2), params.float_data(3*l-1), data_i, data_o, M, N ); } else { run_accel_schedule( data_i, data_o, l-1, 0, // input_words (l==ldense && LAST_LAYER_CPU) ? 1024/WORD_SIZE : 0, l % 2, layer_sched[l-1] ); } } //------------------------------------------------------------ // Execute last layer //------------------------------------------------------------ int prediction = -1; if (DENSE_LAYER_CPU || LAST_LAYER_CPU) { prediction = last_layer_cpu( wt[ldense], params.float_data(kidx_tab[ldense]), params.float_data(hidx_tab[ldense]), data_o, M_tab[ldense], N_tab[ldense] ); } else { run_accel_schedule( data_i, data_o, ldense, 0, 1, 1, layer_sched[ldense] ); ap_int<8> p = 0; p(7,0) = data_o[0](7,0); prediction = p.to_int(); } //assert(prediction >= 0 && prediction <= 9); int label = y.data[n]; printf (" Pred/Label:\t%2u/%2d\t[%s]\n", prediction, label, ((prediction==label)?" OK ":"FAIL")); n_errors += (prediction!=label); } printf ("\n"); printf ("Errors: %u (%4.2f%%)\n", n_errors, float(n_errors)*100/n_imgs); printf ("\n"); printf ("Total accel runtime = %10.4f seconds\n", total_time()); printf ("\n"); MEM_FREE( data_o ); MEM_FREE( data_i ); for (unsigned n = 0; n < N_LAYERS; ++n) { delete[] wt[n]; delete[] kh[n]; } return 0; } ================================================ FILE: BNN/cpp/accel/accel_test_layer.cpp ================================================ #include #include #include "Accel.h" #include "AccelSchedule.h" #include "AccelTest.h" #include "Dense.h" #include "ZipIO.h" #include "ParamIO.h" #include "DataIO.h" int main(int argc, char** argv) { #ifdef HLS_COMPILE const unsigned l = 2; #else if (argc < 2) { printf ("Requires layer number as the first argument\n"); exit(-1); } const unsigned l = atoi(argv[1]); #endif assert (l < N_LAYERS); const unsigned lconv = 6; // last conv const unsigned Si = S_tab[l-1]; const unsigned So = S_tab[l]; const unsigned M = M_tab[l-1]; const unsigned N = N_tab[l-1]; const unsigned wt_size = (layer_is_conv(l)) ? WTS_TO_WORDS(M*N) : M*N/WORD_SIZE; const unsigned kh_size = N/KH_PER_WORD; Word* wt = new Word[wt_size]; Word* kh = new Word[kh_size]; Word* data_i = (Word*) MEM_ALLOC( DMEM_WORDS * sizeof(Word) ); Word* data_o = (Word*) MEM_ALLOC( N*So*So/WORD_SIZE * sizeof(Word) ); if (!wt || !kh || !data_i || !data_o) { fprintf (stderr, "**** ERROR: Alloc failed in %s\n", __FILE__); return (-2); } for (unsigned i = 0; i < wt_size; ++i) wt[i] = 0; for (unsigned i = 0; i < kh_size; ++i) kh[i] = 0; printf ("## Testing Layer %u with %u outputs ##\n", l, N); // Load reference output from zip and set data_i printf ("## Loading test data ##\n"); if (l == 1) { Cifar10TestInputs X(1); binarize_input_images(data_i, X.data, Si); } else { const float* input_maps = new float[M*Si*Si]; std::string l_type = layer_is_conv(l) ? "/data/cpp_conv" : "/data/cpp_dense"; unsigned l_num = layer_is_conv(l) ? l-1 : l-L_CONV-1; std::string input_file = get_root_dir() + l_type + std::to_string(l_num) + "_maps.zip"; unzip_to_array(input_file, input_maps); set_bit_array(data_i, input_maps, M*Si*Si); delete[] input_maps; } // Binarize weights printf ("## Loading parameters ##\n"); Params params(get_root_dir() + "/params/cifar10_parameters_nb.zip"); const float* weights = params.float_data(widx_tab[l-1]); set_weight_array(wt, weights, l); // Binarize batch-norm parameters const float* k = params.float_data(kidx_tab[l-1]); const float* h = params.float_data(hidx_tab[l-1]); set_bnorm_array(kh, k, h, l); // Load binary ref Word* bin_ref = new Word[N*So*So/WORD_SIZE]; if (layer_is_last(l)) { bin_ref[0] = 3; } else { const float* output_maps = new float[N*So*So]; std::string l_type = layer_is_conv(l) ? "/data/cpp_conv" : "/data/cpp_dense"; unsigned l_num = layer_is_conv(l) ? l : l-L_CONV; std::string output_file = get_root_dir() + l_type + std::to_string(l_num) + "_maps.zip"; unzip_to_array(output_file, output_maps); set_bit_array(bin_ref, output_maps, N*So*So); delete[] output_maps; } // Perform test if (layer_is_conv(l)) { test_conv_layer( wt, kh, data_i, data_o, NULL, bin_ref, M, N, Si, (l==1) ? 0 : 1, // conv_mode pool_tab[l-1] // max_pool ); } else { test_dense_layer( wt, kh, data_i, data_o, bin_ref, M, N ); } printf ("Tests passed!\n"); delete[] bin_ref; MEM_FREE( data_o ); MEM_FREE( data_i ); delete[] kh; delete[] wt; return 0; } ================================================ FILE: BNN/cpp/accel/accel_test_random.cpp ================================================ #include #include #include "Accel.h" #include "AccelSchedule.h" #include "AccelTest.h" // used to generate test data unsigned simple_hash(unsigned x) { unsigned temp = (((x)*(x+3)*(x+11)) % 47); return temp ^ (temp >> 2) ^ (temp >> 4) ^ (temp >> 6) & 1; } //------------------------------------------------------------------------ // Helper test function for the accelerator, random data //------------------------------------------------------------------------ void test_conv_layer_random( const unsigned S, Word* wt, Word* kh ) { const unsigned M = CONVOLVERS*PIX_PER_PHASE / (S*S); // Generate the input data assert (M*S*S <= DMEM_WORDS*WORD_SIZE); Word* data_i = (Word*) MEM_ALLOC( DMEM_WORDS * sizeof(Word) ); for (unsigned m = 0; m < M; ++m) { for (unsigned r = 0; r < S; ++r) { for (unsigned c = 0; c < S; ++c) { set_bit(data_i, m*S*S+r*S+c, simple_hash(m*S*S+r*S+c)); } } } assert (S*S <= DMEM_O_WORDS*WORD_SIZE); Word* data_o = (Word*) MEM_ALLOC( DMEM_O_WORDS * sizeof(Word) ); DB(2, printf ("*data*:\n"); print_bits3d(data_i, 0, 2, S, 8,S); printf ("*params*:\n"); print_bits3d(wt, 0, 2, K, K,K); ); // Compute conv reference Word conv_ref[S*S]; padded_conv(data_i, wt, conv_ref, M, S); // Compute bin reference Word khword = kh[0]; NormComp nc; nc(15,0) = khword(15,0); Word bin_ref[S*S]; for (unsigned i = 0; i < S*S; ++i) { Bit b = (conv_ref[i] < nc) ? -1 : 0; set_bit(bin_ref, i, b); } test_conv_layer( wt, kh, data_i, data_o, conv_ref, bin_ref, M, 1, S ); MEM_FREE( data_i ); MEM_FREE( data_o ); } //------------------------------------------------------------------------ // Main //------------------------------------------------------------------------ int main() { const unsigned N = 1; Word* wt = new Word[WT_WORDS]; Word* kh = new Word[KH_WORDS]; // initialize the kernel weights for (unsigned m = 0; m < WT_WORDS; ++m) { for (unsigned i = 0; i < WORD_SIZE; ++i) set_bit(wt, m*WORD_SIZE+i, simple_hash(m*WORD_SIZE+i)); } // initialize the batch-norm params for (unsigned n = 0; n < N; ++n) { NormComp nc = 10 + 10*n; int off = n % KH_PER_WORD; Word w = kh[n/KH_PER_WORD]; w((off+1)*16-1, off*16) = nc(15,0); kh[n/KH_PER_WORD] = w; } test_conv_layer_random( 8, wt, kh); test_conv_layer_random(16, wt, kh); test_conv_layer_random(32, wt, kh); delete[] wt; delete[] kh; printf ("Tests passed!\n"); return 0; } ================================================ FILE: BNN/cpp/accel/hls.tcl ================================================ #========================================================================= # hls.tcl #========================================================================= set top "top" set cflags "-DHLS_COMPILE -O3 -std=c++0x -I../utils" set tbflags "-DHLS_COMPILE -O3 -std=c++0x -I../utils -lminizip -laes -lz" set utils "../utils/Common.cpp ../utils/DataIO.cpp ../utils/ParamIO.cpp ../utils/ZipIO.cpp" open_project hls.prj set_top $top add_files Accel.cpp -cflags $cflags add_files -tb accel_test_random.cpp -cflags $tbflags add_files -tb AccelSchedule.cpp -cflags $cflags add_files -tb AccelTest.cpp -cflags $cflags add_files -tb AccelPrint.cpp -cflags $cflags add_files -tb InputConv.cpp -cflags $tbflags add_files -tb Dense.cpp -cflags $tbflags add_files -tb $utils -cflags $tbflags open_solution "solution1" -reset set_part {xc7z020clg484-1} create_clock -period 5 config_rtl -reset state # Apply optimizations source opt.tcl csim_design csynth_design cosim_design -rtl verilog -trace_level all #export_design -evaluate verilog exit ================================================ FILE: BNN/cpp/accel/opt.tcl ================================================ #========================================================================= # opt.tcl #========================================================================= set_directive_inline conv3x3b set_directive_inline encode_bit #set_directive_inline conv_word set_directive_inline process_word #set_directive_inline bin_conv #set_directive_inline fp_conv #set_directive_inline bin_dense set_directive_pipeline conv_word set_directive_pipeline top/LOOP_DMEM_I set_directive_pipeline top/LOOP_DMEM_O set_directive_pipeline top/LOOP_WT_I set_directive_pipeline top/LOOP_KH_I set_directive_loop_tripcount -min 1 -max 512 top/LOOP_DMEM_I set_directive_loop_tripcount -min 1 -max 1 top/LOOP_DMEM_O set_directive_loop_tripcount -min 1 -max 1 top/LOOP_IMG_BATCH set_directive_loop_tripcount -min 1 -max 512 bin_conv/LOOP_PHASES # bin_conv/LOOP_WORDS_IN_PHASE set_directive_pipeline bin_conv/LOOP_WORDS_IN_PHASE set_directive_loop_tripcount -min 17 -max 32 bin_conv/LOOP_WORDS_IN_PHASE set_directive_dependence -variable fixed_buffer -type inter -dependent false bin_conv/LOOP_WORDS_IN_PHASE # bin_conv/LOOP_ACC_PHASES set_directive_loop_tripcount -min 1 -max 1 bin_conv/LOOP_ACC_PHASES set_directive_pipeline bin_conv/LOOP_ACC_PHASES_I set_directive_loop_tripcount -min 1 -max 16 bin_conv/LOOP_ACC_PHASES_I # bin_conv/LOOP_BATCH_NORM set_directive_pipeline bin_conv/LOOP_BATCH_NORM set_directive_loop_tripcount -min 1 -max 16 bin_conv/LOOP_BATCH_NORM # bin_conv/LOOP_POOL_NORM set_directive_pipeline bin_conv/LOOP_POOL_NORM set_directive_loop_tripcount -min 1 -max 16 bin_conv/LOOP_POOL_NORM # fp_conv/LOOP_FP_CONV_O set_directive_loop_tripcount -min 1 -max 32 fp_conv/LOOP_FP_CONV_O # fp_conv/LOOP_RESET_LINEBUFFERS set_directive_unroll fp_conv/LOOP_RESET_LINEBUFFERS set_directive_unroll -region fp_conv/LOOP_RESET_LINEBUFFERS # fp_conv/LOOP_LOAD_WTS set_directive_unroll fp_conv/LOOP_LOAD_WTS # fp_conv/LOOP_CONV_COLS set_directive_pipeline fp_conv/LOOP_CONV_COLS # fp_conv/LOOP_OUTPUT set_directive_pipeline fp_conv/LOOP_OUTPUT # bin_dense/LOOP_DENSE_I set_directive_pipeline bin_dense/LOOP_DENSE_I set_directive_loop_tripcount -min 1 -max 1 bin_dense/LOOP_DENSE_O set_directive_loop_tripcount -min 1 -max 64 bin_dense/LOOP_DENSE_I # Each ping-poing buffer in the dmem has 2048 words # For input layer we need 3*32*32/2 = 1536 words total, divided into blocks of 512 set_directive_array_partition top dmem -dim 1 -type complete set_directive_array_partition top dmem -dim 2 -type complete set_directive_array_partition top wt_mem -dim 1 -type complete set_directive_array_partition bin_conv line_buffer -dim 0 -type complete set_directive_array_partition bin_conv conv_params -dim 0 -type complete set_directive_array_partition bin_conv fixed_buffer -dim 2 -type complete set_directive_array_partition bin_conv fixed_temp -dim 0 -type complete set_directive_array_partition bin_conv word_buffer -dim 0 -type complete set_directive_array_partition bin_conv old_word_buffer -dim 0 -type complete set_directive_array_partition bin_conv lb -dim 0 -type complete set_directive_array_partition bin_conv rb -dim 0 -type complete set_directive_array_partition bin_conv wt_word_buffer -dim 0 -type complete set_directive_array_partition bin_conv conv_out_buffer -dim 0 -type complete set_directive_array_partition fp_conv win -dim 0 -type complete set_directive_array_partition fp_conv lbuf -dim 0 -type complete set_directive_array_partition fp_conv outwords -dim 0 -type complete set_directive_array_partition fp_conv wtbuf -dim 0 -type complete set_directive_array_partition bin_fc sum_m -dim 0 -type complete #========================================================================= ================================================ FILE: BNN/cpp/accel/parse_vivado.py ================================================ #!/usr/bin/env python import os, re, glob, sys import xml.etree.ElementTree as ET #------------------------------------------------------------------------- # Helper functions #------------------------------------------------------------------------- # get all the immediate directories def get_immediate_subdirs(dir): return filter(os.path.isdir, [os.path.join(dir,f) for f in os.listdir(dir)]) # Safely change directories. Uncommet prints for debugging def changedir(dir): #print >>sys.stderr, "Entering", dir if not os.path.exists(dir): #print >>sys.stderr, "Path", dir, "does not exist" return 0 os.chdir(dir) return 1 # Find text on an xml node def find_text(node, string): newnode = node.find(string) if not newnode is None: return newnode.text else: #print >>sys.stderr, "Could not find", string return "-not found-" #------------------------------------------------------------------------- # Parse resource #------------------------------------------------------------------------- def parse_impl_xml(file): tree = ET.parse(file) root = tree.getroot() # area report area_report = root.find("AreaReport") resources = area_report.find("Resources") slice = resources.find("SLICE").text lut = resources.find("LUT").text ff = resources.find("FF").text srl = resources.find("SRL").text bram = resources.find("BRAM").text dsp = resources.find("DSP").text # timing report timing_report = root.find("TimingReport") target_cp = timing_report.find("TargetClockPeriod").text actual_cp = timing_report.find("AchievedClockPeriod").text return dict([("Slice",slice), ("LUT",lut), ("FF",ff), \ ("SRL",srl), ("BRAM",bram), ("DSP",dsp), \ ("Target-CP",target_cp), ("Actual-CP",actual_cp)]) def parse_impl(): TopLevel = os.getcwd() res_dir = "impl/report/verilog/" if not changedir(res_dir): print >>sys.stderr, "**** Cannot find", res_dir, "in", TopLevel return 0 files = glob.glob("*.xml") if len(files) != 1: files.sort(key=len) #print >>sys.stderr, "Found", len(files), "xml files in" #print >>sys.stderr, "\t", TopLevel++"/"+res_dir #print >>sys.stderr, "expected 1" #return 0 print "Parsing", files[0] results = parse_impl_xml(files[0]) os.chdir(TopLevel) return results #------------------------------------------------------------------------- # Parse resource #------------------------------------------------------------------------- def parse_syn_xml(file): tree = ET.parse(file) root = tree.getroot() name = root.find("UserAssignments").find("TopModelName").text ver = root.find("ReportVersion").find("Version").text device = root.find("UserAssignments").find("Part").text summary = root.find("PerformanceEstimates").find("SummaryOfOverallLatency") # these may not exist if design is not pipelined avg_lat = find_text(summary,"Average-caseLatency") worst_lat = find_text(summary,"Worst-caseLatency") actual_II = find_text(summary,"PipelineInitiationInterval") depth = find_text(summary,"PipelineDepth") timing = root.find("PerformanceEstimates").find("SummaryOfTimingAnalysis") period = timing.find("EstimatedClockPeriod").text res = root.find("AreaEstimates").find("Resources") lut = res.find("LUT").text ff = res.find("FF").text bram = res.find("BRAM_18K").text return dict([("Name",name), ("Version",ver), ("Device",device), \ ("Avg-Lat",avg_lat), ("Worst-Lat",worst_lat), ("Actual-II",actual_II), ("Depth",depth), \ ("Est-CLK",period), ("Est-LUT",lut), ("Est-FF",ff), ("Est-BRAM",bram)]) def parse_syn(): TopLevel = os.getcwd() dir = "syn/report/" if not changedir(dir): print >>sys.stderr, "**** Cannot find", dir, "in", TopLevel return 0 files = glob.glob("*.xml") if len(files) != 1: if re.match(".*\/rs", TopLevel): files = ["rs_decode_csynth.xml"] else: files.sort(key=len) #print >>sys.stderr, "Found", len(files), "xml files in" #print >>sys.stderr, "\t", TopLevel+"/"+dir #print >>sys.stderr, "expected 1" #return 0 print "Parsing", files[0] results = parse_syn_xml(files[0]) os.chdir(TopLevel) return results #------------------------------------------------------------------------- # Parse sim #------------------------------------------------------------------------- def parse_sim(soln_dir): TopLevel = os.getcwd() dir = "sim/report/" if not changedir(soln_dir+"/"+dir): print >>sys.stderr, "**** Cannot find", dir, "in", TopLevel+"/"+soln_dir return 0 files = glob.glob("*cosim.rpt") if len(files) != 1: files.sort(key=len) print "Parsing", files[0] f = open(files[0], 'r') data = [] for line in f: if re.match("\|\W+Verilog\|\W+Pass\|", line): m = re.search("\|\W+(\d+)\|\W+(\d+)\|\W+(\d+)\|", line) if m: data = [m.group(1), m.group(2), m.group(3)] f.close() if len(data) == 0: print "Cannot find Verilog sim results" os.chdir(TopLevel) return data #------------------------------------------------------------------------- # Parse both the impl report and the syn report #------------------------------------------------------------------------- def parse_impl_and_syn(soln_dir): SolnLevel = os.getcwd() data = dict([]) success = False if changedir(soln_dir): # parse the syn xml file syn = parse_syn() if syn: data = dict(data.items()+syn.items()) success = True # parse the impl xml file impl = parse_impl() if impl: data = dict(data.items()+impl.items()) success = True cosim = parse_sim else: print >>sys.stderr, "Cannot find solution", soln_dir return 0 os.chdir(SolnLevel) if not success: return 0 return data; #------------------------------------------------------------------------- # Function to process a single HLS project directory #------------------------------------------------------------------------- def process_project(prj_dir): TopLevel = os.getcwd() # enter the project directory if not changedir(prj_dir): print >>sys.stderr, "Cannot find project", prj_dir exit(-1) # search for solution subdirs solutions = get_immediate_subdirs('.') # for each solution, parse the data for sol in solutions: data = parse_impl_and_syn(sol) sdata = parse_sim(sol) if data: print "\nSolution: ", sol print_data(data) if sdata: print "\n** Sim. Report **" print "Min:", sdata[0] print "Avg:", sdata[1] print "Max:", sdata[2] os.chdir(TopLevel) #------------------------------------------------------------------------- # Print dictionary data #------------------------------------------------------------------------- def print_dict(d, key): if key in d: print "%-12s: %-30s" % (key, d[key]) else: print "%-12s: %-30s" % (key, "-not found-") def print_data(d): print "** Syn. Report **" print_dict(d, "Name") print_dict(d, "Version") print_dict(d, "Device") print_dict(d, "Avg-Lat") print_dict(d, "Worst-Lat") print_dict(d, "Actual-II") print_dict(d, "Depth") print_dict(d, "Est-CLK") print_dict(d, "Est-LUT") print_dict(d, "Est-FF") print_dict(d, "Est-BRAM") print "" print "** Impl. Report **" print_dict(d, "Target-CP") print_dict(d, "Actual-CP") print_dict(d, "Slice") print_dict(d, "LUT") print_dict(d, "FF") print_dict(d, "SRL") print_dict(d, "BRAM") print_dict(d, "DSP") #------------------------------------------------------------------------- # Main function #------------------------------------------------------------------------- def main(): if len(sys.argv) == 1: print >>sys.stderr, "Usage: parse_vivado.py " else: dir = sys.argv[1] process_project(dir) print "" if __name__ == "__main__": main() #print >>sys.stderr, "Current directory: ", os.getcwd(), "\n" #print "name,", "version,", "device," #print "target_cp\t", "actual_cp\t", "latency\t", \ # "slice\t", "lut\t", "ff\t", "srl\t" \ # "binvars\t", "intvars\t", "constraints\t", "runtime(s)\t" #Dirs = get_immediate_subdirs(".") ================================================ FILE: BNN/cpp/accel/sdsoc_build/Makefile ================================================ include ../../Makefile.inc CFLAGS:=-DHLS_COMPILE -I../../utils $(CFLAGS) SLDFLAGS:=-DHLS_COMPILE -L. -lSdsCraftUtils -L./libhf_minizip -lminizip -laes -lz SDSFLAGS=-sds-pf zed -dmclkid 1 -sds-hw top Accel.cpp -clkid 1 -hls-tcl sds.tcl -sds-end CXX=sds++ $(SDSFLAGS) # HDR are pure headers HDR= # OBJ must include a .cpp and .h with same name UTILS=Common.o Timer.o DataIO.o ParamIO.o ZipIO.o LIBUTILS=libSdsCraftUtils.a OBJ=Accel.o AccelSchedule.o AccelTest.o AccelPrint.o Dense.o InputConv.o EXE=accel_test_bnn.exe all: $(EXE) # Rule for object files, each object must have a header $(OBJ): %.o: ../%.cpp ../%.h $(CXX) -c $< -o $@ $(CFLAGS) $(UTILS): %.o: ../../utils/%.cpp ../../utils/%.h $(CXX) -c $< -o $@ $(CFLAGS) %.o: ../%.cpp $(CXX) -c $< -o $@ $(CFLAGS) # Rule for utils library built by SDSoc $(LIBUTILS): $(UTILS) $(AR) $@ $^ # Rule for executables $(EXE): %.exe: %.o $(OBJ) $(LIBUTILS) $(CXX) $^ -o $@ $(CFLAGS) $(SLDFLAGS) .PHONY: clean clean: rm -f *.o *.exe *.bit rm -rf _sds sd_card ================================================ FILE: BNN/cpp/accel/sdsoc_build/sds.tcl ================================================ set rootdir $::env(CRAFT_BNN_ROOT) source $rootdir/cpp/accel/opt.tcl set_directive_interface -mode ap_fifo "top" wt_i set_directive_interface -mode ap_fifo "top" kh_i set_directive_interface -mode ap_fifo "top" dmem_i set_directive_interface -mode ap_fifo "top" dmem_o #set_directive_interface -mode bram "top" wt_i #set_directive_interface -mode bram "top" kh_i #set_directive_resource -core RAM_1P "top" wt_i #set_directive_resource -core RAM_1P "top" kh_i ================================================ FILE: BNN/cpp/minizip/CMakeLists.txt ================================================ #*************************************************************************** # Copyright: Matthias Schmieder, # E-Mail: schmieder.matthias@gmail.com # Year: 2016 #*************************************************************************** cmake_minimum_required(VERSION 2.8) # Set a consistent MACOSX_RPATH default across all CMake versions. # When CMake 2.8.12 is required, change this default to 1. # When CMake 3.0.0 is required, remove this block (see CMP0042). if(NOT DEFINED CMAKE_MACOSX_RPATH) set(CMAKE_MACOSX_RPATH 0) endif() project("minizip") # set cmake debug postfix to d set(CMAKE_DEBUG_POSTFIX "d") # Ensure correct version of zlib is referenced set(ZLIB_ROOT ${DEF_ZLIB_ROOT} CACHE PATH "Parent directory of zlib installation") find_package(ZLIB REQUIRED) if(ZLIB_FOUND) include_directories(${ZLIB_INCLUDE_DIRS}) endif() set(MINIZIP_SRC "ioapi.c" "ioapi_buf.c" "ioapi_mem.c" "unzip.c" "zip.c") set(MINIZIP_PUBLIC_HEADERS "crypt.h" "ioapi.h" "ioapi_buf.h" "ioapi_mem.h" "unzip.h" "zip.h") if(WIN32) list(APPEND MINIZIP_SRC "iowin32.c") list(APPEND MINIZIP_PUBLIC_HEADERS "iowin32.h") endif() # create minizip library add_library(minizip ${MINIZIP_SRC} ${MINIZIP_PUBLIC_HEADERS}) option(USE_AES "enables building of aes library" ON) if(USE_AES) set(AES_SRC aes/aescrypt.c aes/aeskey.c aes/aestab.c aes/entropy.c aes/fileenc.c aes/hmac.c aes/prng.c aes/pwd2key.c aes/sha1.c) set(AES_PUBLIC_HEADERS aes/aes.h aes/aes_via_ace.h aes/aesopt.h aes/aestab.h aes/brg_endian.h aes/brg_types.h aes/entropy.h aes/fileenc.h aes/hmac.h aes/prng.h aes/pwd2key.h aes/sha1.h) add_library(aes ${AES_SRC} ${AES_PUBLIC_HEADERS}) set_target_properties(aes minizip PROPERTIES COMPILE_DEFINITIONS "O -DHAVE_AES") target_link_libraries(minizip aes) install(TARGETS aes EXPORT zlib-exports INCLUDES DESTINATION "include" RUNTIME DESTINATION "bin" LIBRARY DESTINATION "lib" ARCHIVE DESTINATION "lib") install(FILES ${AES_PUBLIC_HEADERS} DESTINATION "include/minizip/aes") endif() install(TARGETS minizip EXPORT zlib-exports INCLUDES DESTINATION "include" RUNTIME DESTINATION "bin" LIBRARY DESTINATION "lib" ARCHIVE DESTINATION "lib") install(EXPORT zlib-exports DESTINATION "cmake" NAMESPACE "MINIZIP::") install(FILES ${MINIZIP_PUBLIC_HEADERS} DESTINATION "include/minizip") option (BUILD_TEST "enabled building of executables minizip and miniunz. Requires ZLIB!" OFF) if(BUILD_TEST) add_executable(miniunz_exec miniunz.c) target_link_libraries(miniunz_exec minizip ZLIB::ZLIB) add_executable(minizip_exec minizip.c) target_link_libraries(minizip_exec minizip ZLIB::ZLIB) install(TARGETS miniunz_exec minizip_exec RUNTIME DESTINATION "bin") endif() ================================================ FILE: BNN/cpp/minizip/ChangeLog ================================================ More changes since 1.1 - Added support for AE-2 zip files - Fixed error in AE-1 not testing CRC32 Credits Steven Christy Changes since 1.1 - Added PKZIP spanning support - Added AES encryption support - Added I/O buffering - Clean up & changed unzLocateFile to support custom comparison function - Clean up, removed zipRemoveExtraInfoBlock Credits Nathan Moinvaziri Change in 1.1 - Added ZIP64 support for unzip ( by Even Rouault ) - Added ZIP64 support for zip ( by Mathias Svensson ) - Reverted some changed that Even Rouault did. - Bunch of patches received from Gulles Vollant that he received for MiniZip from various users. - Added unzip patch for BZIP Compression method (patch create by Daniel Borca) - Added BZIP Compress method for zip - Did some refactoring and code cleanup Credits Gilles Vollant - Original MiniZip author Even Rouault - ZIP64 unzip Support 2007-2008 - Addition of cpl_unzGetCurrentFileZStreamPos - Decoration of symbol names unz* -> cpl_unz* - Remove old C style function prototypes - Add unzip support for ZIP64 Daniel Borca - BZip Compression method support in unzip Mathias Svensson - ZIP64 zip support ( http://result42.com ) Oct-2009 unzip.c - Removed cpl_* from symbol names - Fixed problem if uncompressed size was > 4G and compressed size was <4G should only read the compressed/uncompressed size from the Zip64 format if the size from normal header was 0xffffffff - Applied some bug fixes from patches received from Gilles Vollant - Applied support to unzip files with compression method BZIP2 (bzip2 lib is required) Patch created by Daniel Borca Oct-2009 zip.c - Remove old C style function prototypes - Added Zip64 Support when creating new file archives - Did some code cleanup and refactoring to get better overview of some functions. - Added zipRemoveExtraInfoBlock to strip extra field data from its ZIP64 data It is used when recreting zip archive with RAW when deleting items from a zip. ZIP64 data is automaticly added to items that needs it, and existing ZIP64 data need to be removed. - Added support for BZIP2 as compression mode (bzip2 lib is required) Oct-2009 ioapi.x - Defined ZPOS64_T to fpos_t on windows and u_int64_t on linux. - Change to fseeko64, ftello64 and fopen64 so large files would work on linux. More if/def section may be needed to support other platforms - Defined fxxxx64 calls to normal fopen/ftell/fseek so they would compile on windows. (but you should use iowin32.c for windows instead) Change in 1.01e (12 feb 05) - Fix in zipOpen2 for globalcomment (Rolf Kalbermatter) - Fix possible memory leak in unzip.c (Zoran Stevanovic) Change in 1.01b (20 may 04) - Integrate patch from Debian package (Mark Brown) - Add tools mztools from Xavier Roche Change in 1.01 (8 may 04) - Fix buffer overrun risk in unzip.c (Xavier Roche) - Fix a minor buffer insecurity in minizip.c (Mike Whittaker) Change in 1.00: (10 sept 03) - Rename to 1.00 - Cosmetic code change Change in 0.22: (19 May 03) - Crypting support (unless you define NOCRYPT) - Append file in existing zipfile Change in 0.21: (10 Mar 03) - Bug fixes Change in 0.17: (27 Jan 02) - Bug fixes Change in 0.16: (19 Jan 02) - Support of ioapi for virtualize zip file access Change in 0.15: (19 Mar 98) - Fix memory leak in minizip.c Change in 0.14: (10 Mar 98) - Fix bugs in minizip.c sample for zipping big file - Fix problem in month in date handling - Fix bug in unzlocal_GetCurrentFileInfoInternal in unzip.c for comment handling Change in 0.13: (6 Mar 98) - Fix bugs in zip.c - Add real minizip sample Change in 0.12: (4 Mar 98) - Add zip.c and zip.h for creates .zip file - Fix change_file_date in miniunz.c for Unix (Jean-loup Gailly) - Fix miniunz.c for file without specific record for directory Change in 0.11: (3 Mar 98) - Fix bug in unzGetCurrentFileInfo for get extra field and comment - Enhance miniunz sample, remove the bad unztst.c sample Change in 0.10: (2 Mar 98) - Fix bug in unzReadCurrentFile - Rename unzip* to unz* function and structure - Remove Windows-like hungary notation variable name - Modify some structure in unzip.h - Add somes comment in source - Remove unzipGetcCurrentFile function - Replace ZUNZEXPORT by ZEXPORT - Add unzGetLocalExtrafield for get the local extrafield info - Add a new sample, miniunz.c Change in 0.4: (25 Feb 98) - Suppress the type unzipFileInZip. Only on file in the zipfile can be open at the same time - Fix somes typo in code - Added tm_unz structure in unzip_file_info (date/time in readable format) Change unknown? - Added unzGetOffset (RX '2004) - Added unzGetFilePos & unzGoToFilePos (Ryan Haksi) - Added unzGetCurrentFileZStreamPos64 (GDAL) ================================================ FILE: BNN/cpp/minizip/LICENSE ================================================ Condition of use and distribution are the same as zlib: This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgement in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. ================================================ FILE: BNN/cpp/minizip/Makefile ================================================ CC=cc CFLAGS=-O -I../.. -DHAVE_AES ARFLAGS=rv UNZ_OBJS = miniunz.o unzip.o ioapi.o libaes.a ZIP_OBJS = minizip.o zip.o ioapi.o libaes.a TEST_FILES = test.zip readme.old readme.txt .c.o: $(CC) -c $(CFLAGS) $*.c all: miniunz minizip libminizip.a libaes.a libaes.a: cd aes; $(MAKE) $(MFLAGS) libminizip.a: miniunz.o unzip.o minizip.o zip.o ioapi.o $(ECHO) $(AR) $(ARFLAGS) ./libminizip.a $? $(AR) $(ARFLAGS) ./libminizip.a $? ranlib ./libminizip.a miniunz: $(UNZ_OBJS) libaes.a $(CC) $(CFLAGS) -o $@ $(UNZ_OBJS) -lz minizip: $(ZIP_OBJS) libaes.a $(CC) $(CFLAGS) -o $@ $(ZIP_OBJS) -lz .PHONY: test clean test: miniunz minizip @rm -f $(TEST_FILES) @cp README.md readme.txt @touch -t 200712301223.44 readme.txt ./minizip test.zip readme.txt ./miniunz -l test.zip mv readme.txt readme.old ./miniunz test.zip @diff -q README.md readme.txt || echo "Test failed: files differ" @[[ "$$(stat -c %Y readme.txt)" = "$$(stat -c %Y readme.old)" ]] || echo "Test failed: timestamp not preserved" @rm -f $(TEST_FILES) clean: /bin/rm -f *.o *~ minizip miniunz $(TEST_FILES) $(MAKE) -C aes clean ================================================ FILE: BNN/cpp/minizip/Makefile.am ================================================ lib_LTLIBRARIES = libminizip.la if COND_DEMOS bin_PROGRAMS = miniunzip minizip endif zlib_top_srcdir = $(top_srcdir)/../.. zlib_top_builddir = $(top_builddir)/../.. AM_CPPFLAGS = -I$(zlib_top_srcdir) AM_LDFLAGS = -L$(zlib_top_builddir) if WIN32 iowin32_src = iowin32.c iowin32_h = iowin32.h endif libminizip_la_SOURCES = \ ioapi.c \ unzip.c \ zip.c \ ${iowin32_src} libminizip_la_LDFLAGS = $(AM_LDFLAGS) -version-info 1:0:0 -lz minizip_includedir = $(includedir)/minizip minizip_include_HEADERS = \ crypt.h \ ioapi.h \ unzip.h \ zip.h \ ${iowin32_h} pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = minizip.pc EXTRA_PROGRAMS = miniunzip minizip miniunzip_SOURCES = miniunz.c miniunzip_LDADD = libminizip.la minizip_SOURCES = minizip.c minizip_LDADD = libminizip.la -lz ================================================ FILE: BNN/cpp/minizip/README.md ================================================ Minizip zlib contribution that includes: - AES encryption - I/O buffering - PKWARE disk spanning - Visual Studio 2008 project files It also has the latest bug fixes that having been found all over the internet including the minizip forum and zlib developer's mailing list. *AES Encryption* + Requires #define HAVE_AES + Requires AES library files When zipping with a password it will always use AES 256-bit encryption. When unzipping it will use AES decryption only if necessary. *I/O Buffering* Improves I/O performance by buffering read and write operations. ``` zlib_filefunc64_def filefunc64 = {0}; ourbuffer_t buffered = {0}; fill_win32_filefunc64(&buffered->filefunc64); fill_buffer_filefunc64(&filefunc64, buffered); unzOpen2_64(filename, &filefunc64) ``` *PKWARE disk spanning* To create an archive with multiple disks use zipOpen3_64 supplying a disk_size value in bytes. ``` extern zipFile ZEXPORT zipOpen3_64 OF((const void *pathname, int append, ZPOS64_T disk_size, zipcharpc* globalcomment, zlib_filefunc64_def* pzlib_filefunc_def)); ``` The central directory is the only data stored in the .zip and doesn't follow disk_size restrictions. When unzipping it will automatically determine when in needs to span disks. *I/O Memory* To unzip from a zip file in memory use fill_memory_filefunc and supply a proper ourmemory_t structure. ``` zlib_filefunc_def filefunc32 = {0}; ourmemory_t unzmem = {0}; unzmem.size = bufsize; unzmem.base = (char *)malloc(unzmem.size); memcpy(unzmem.base, buffer, unzmem.size); fill_memory_filefunc(&filefunc32, &unzmem); unzOpen2("__notused__", &filefunc32); ``` To create a zip file in memory use fill_memory_filefunc and supply a proper ourmemory_t structure. It is important not to forget to free zipmem->base when finished. If grow is set, zipmem->base will expand to fit the size of the zip. If grow is not set be sure to fill out zipmem.base and zipmem.size. ``` zlib_filefunc_def filefunc32 = {0}; ourmemory_t zipmem = {0}; zipmem.grow = 1; fill_memory_filefunc(&filefunc32, &zipmem); zipOpen3("__notused__", APPEND_STATUS_CREATE, 0, 0, &filefunc32); ``` *BZIP2* + Requires #define HAVE_BZIP2 + Requires BZIP2 library *Windows RT* + Requires #define IOWIN32_USING_WINRT_API ================================================ FILE: BNN/cpp/minizip/aes/Makefile ================================================ CC=cc CFLAGS=-O -DHAVE_AES OBJS=aescrypt.o aeskey.o aestab.o entropy.o fileenc.o hmac.o prng.o pwd2key.o sha1.o ARFLAGS=rv RANLIB=ranlib .c.o: $(CC) -c $(CFLAGS) $*.c libaes.a: $(OBJS) $(ECHO) $(AR) $(ARFLAGS) ../libaes.a $? $(AR) $(ARFLAGS) ../libaes.a $? $(RANLIB) ../libaes.a all: libaes.a .PHONY: clean clean: rm -f *.o *.a ================================================ FILE: BNN/cpp/minizip/aes/aes.h ================================================ /* --------------------------------------------------------------------------- Copyright (c) 1998-2010, Brian Gladman, Worcester, UK. All rights reserved. The redistribution and use of this software (with or without changes) is allowed without the payment of fees or royalties provided that: source code distributions include the above copyright notice, this list of conditions and the following disclaimer; binary distributions include the above copyright notice, this list of conditions and the following disclaimer in their documentation. This software is provided 'as is' with no explicit or implied warranties in respect of its operation, including, but not limited to, correctness and fitness for purpose. --------------------------------------------------------------------------- Issue Date: 20/12/2007 This file contains the definitions required to use AES in C. See aesopt.h for optimisation details. */ #ifndef _AES_H #define _AES_H #include /* This include is used to find 8 & 32 bit unsigned integer types */ #include "brg_types.h" #if defined(__cplusplus) extern "C" { #endif #define AES_128 /* if a fast 128 bit key scheduler is needed */ #define AES_192 /* if a fast 192 bit key scheduler is needed */ #define AES_256 /* if a fast 256 bit key scheduler is needed */ #define AES_VAR /* if variable key size scheduler is needed */ #define AES_MODES /* if support is needed for modes */ /* The following must also be set in assembler files if being used */ #define AES_ENCRYPT /* if support for encryption is needed */ #define AES_DECRYPT /* if support for decryption is needed */ #define AES_REV_DKS /* define to reverse decryption key schedule */ #define AES_BLOCK_SIZE 16 /* the AES block size in bytes */ #define N_COLS 4 /* the number of columns in the state */ /* The key schedule length is 11, 13 or 15 16-byte blocks for 128, */ /* 192 or 256-bit keys respectively. That is 176, 208 or 240 bytes */ /* or 44, 52 or 60 32-bit words. */ #if defined( AES_VAR ) || defined( AES_256 ) #define KS_LENGTH 60 #elif defined( AES_192 ) #define KS_LENGTH 52 #else #define KS_LENGTH 44 #endif #define AES_RETURN INT_RETURN /* the character array 'inf' in the following structures is used */ /* to hold AES context information. This AES code uses cx->inf.b[0] */ /* to hold the number of rounds multiplied by 16. The other three */ /* elements can be used by code that implements additional modes */ typedef union { uint_32t l; uint_8t b[4]; } aes_inf; typedef struct { uint_32t ks[KS_LENGTH]; aes_inf inf; } aes_encrypt_ctx; typedef struct { uint_32t ks[KS_LENGTH]; aes_inf inf; } aes_decrypt_ctx; /* This routine must be called before first use if non-static */ /* tables are being used */ AES_RETURN aes_init(void); /* Key lengths in the range 16 <= key_len <= 32 are given in bytes, */ /* those in the range 128 <= key_len <= 256 are given in bits */ #if defined( AES_ENCRYPT ) #if defined( AES_128 ) || defined( AES_VAR) AES_RETURN aes_encrypt_key128(const unsigned char *key, aes_encrypt_ctx cx[1]); #endif #if defined( AES_192 ) || defined( AES_VAR) AES_RETURN aes_encrypt_key192(const unsigned char *key, aes_encrypt_ctx cx[1]); #endif #if defined( AES_256 ) || defined( AES_VAR) AES_RETURN aes_encrypt_key256(const unsigned char *key, aes_encrypt_ctx cx[1]); #endif #if defined( AES_VAR ) AES_RETURN aes_encrypt_key(const unsigned char *key, int key_len, aes_encrypt_ctx cx[1]); #endif AES_RETURN aes_encrypt(const unsigned char *in, unsigned char *out, const aes_encrypt_ctx cx[1]); #endif #if defined( AES_DECRYPT ) #if defined( AES_128 ) || defined( AES_VAR) AES_RETURN aes_decrypt_key128(const unsigned char *key, aes_decrypt_ctx cx[1]); #endif #if defined( AES_192 ) || defined( AES_VAR) AES_RETURN aes_decrypt_key192(const unsigned char *key, aes_decrypt_ctx cx[1]); #endif #if defined( AES_256 ) || defined( AES_VAR) AES_RETURN aes_decrypt_key256(const unsigned char *key, aes_decrypt_ctx cx[1]); #endif #if defined( AES_VAR ) AES_RETURN aes_decrypt_key(const unsigned char *key, int key_len, aes_decrypt_ctx cx[1]); #endif AES_RETURN aes_decrypt(const unsigned char *in, unsigned char *out, const aes_decrypt_ctx cx[1]); #endif #if defined( AES_MODES ) /* Multiple calls to the following subroutines for multiple block */ /* ECB, CBC, CFB, OFB and CTR mode encryption can be used to handle */ /* long messages incremantally provided that the context AND the iv */ /* are preserved between all such calls. For the ECB and CBC modes */ /* each individual call within a series of incremental calls must */ /* process only full blocks (i.e. len must be a multiple of 16) but */ /* the CFB, OFB and CTR mode calls can handle multiple incremental */ /* calls of any length. Each mode is reset when a new AES key is */ /* set but ECB and CBC operations can be reset without setting a */ /* new key by setting a new IV value. To reset CFB, OFB and CTR */ /* without setting the key, aes_mode_reset() must be called and the */ /* IV must be set. NOTE: All these calls update the IV on exit so */ /* this has to be reset if a new operation with the same IV as the */ /* previous one is required (or decryption follows encryption with */ /* the same IV array). */ AES_RETURN aes_test_alignment_detection(unsigned int n); AES_RETURN aes_ecb_encrypt(const unsigned char *ibuf, unsigned char *obuf, int len, const aes_encrypt_ctx cx[1]); AES_RETURN aes_ecb_decrypt(const unsigned char *ibuf, unsigned char *obuf, int len, const aes_decrypt_ctx cx[1]); AES_RETURN aes_cbc_encrypt(const unsigned char *ibuf, unsigned char *obuf, int len, unsigned char *iv, const aes_encrypt_ctx cx[1]); AES_RETURN aes_cbc_decrypt(const unsigned char *ibuf, unsigned char *obuf, int len, unsigned char *iv, const aes_decrypt_ctx cx[1]); AES_RETURN aes_mode_reset(aes_encrypt_ctx cx[1]); AES_RETURN aes_cfb_encrypt(const unsigned char *ibuf, unsigned char *obuf, int len, unsigned char *iv, aes_encrypt_ctx cx[1]); AES_RETURN aes_cfb_decrypt(const unsigned char *ibuf, unsigned char *obuf, int len, unsigned char *iv, aes_encrypt_ctx cx[1]); #define aes_ofb_encrypt aes_ofb_crypt #define aes_ofb_decrypt aes_ofb_crypt AES_RETURN aes_ofb_crypt(const unsigned char *ibuf, unsigned char *obuf, int len, unsigned char *iv, aes_encrypt_ctx cx[1]); typedef void cbuf_inc(unsigned char *cbuf); #define aes_ctr_encrypt aes_ctr_crypt #define aes_ctr_decrypt aes_ctr_crypt AES_RETURN aes_ctr_crypt(const unsigned char *ibuf, unsigned char *obuf, int len, unsigned char *cbuf, cbuf_inc ctr_inc, aes_encrypt_ctx cx[1]); #endif #if defined(__cplusplus) } #endif #endif ================================================ FILE: BNN/cpp/minizip/aes/aes_via_ace.h ================================================ /* Copyright (c) 1998-2010, Brian Gladman, Worcester, UK. All rights reserved. The redistribution and use of this software (with or without changes) is allowed without the payment of fees or royalties provided that: source code distributions include the above copyright notice, this list of conditions and the following disclaimer; binary distributions include the above copyright notice, this list of conditions and the following disclaimer in their documentation. This software is provided 'as is' with no explicit or implied warranties in respect of its operation, including, but not limited to, correctness and fitness for purpose. --------------------------------------------------------------------------- Issue Date: 20/12/2007 */ #ifndef AES_VIA_ACE_H #define AES_VIA_ACE_H #if defined( _MSC_VER ) # define INLINE __inline #elif defined( __GNUC__ ) # define INLINE static inline #else # error VIA ACE requires Microsoft or GNU C #endif #define NEH_GENERATE 1 #define NEH_LOAD 2 #define NEH_HYBRID 3 #define MAX_READ_ATTEMPTS 1000 /* VIA Nehemiah RNG and ACE Feature Mask Values */ #define NEH_CPU_IS_VIA 0x00000001 #define NEH_CPU_READ 0x00000010 #define NEH_CPU_MASK 0x00000011 #define NEH_RNG_PRESENT 0x00000004 #define NEH_RNG_ENABLED 0x00000008 #define NEH_ACE_PRESENT 0x00000040 #define NEH_ACE_ENABLED 0x00000080 #define NEH_RNG_FLAGS (NEH_RNG_PRESENT | NEH_RNG_ENABLED) #define NEH_ACE_FLAGS (NEH_ACE_PRESENT | NEH_ACE_ENABLED) #define NEH_FLAGS_MASK (NEH_RNG_FLAGS | NEH_ACE_FLAGS) /* VIA Nehemiah Advanced Cryptography Engine (ACE) Control Word Values */ #define NEH_GEN_KEY 0x00000000 /* generate key schedule */ #define NEH_LOAD_KEY 0x00000080 /* load schedule from memory */ #define NEH_ENCRYPT 0x00000000 /* encryption */ #define NEH_DECRYPT 0x00000200 /* decryption */ #define NEH_KEY128 0x00000000+0x0a /* 128 bit key */ #define NEH_KEY192 0x00000400+0x0c /* 192 bit key */ #define NEH_KEY256 0x00000800+0x0e /* 256 bit key */ #define NEH_ENC_GEN (NEH_ENCRYPT | NEH_GEN_KEY) #define NEH_DEC_GEN (NEH_DECRYPT | NEH_GEN_KEY) #define NEH_ENC_LOAD (NEH_ENCRYPT | NEH_LOAD_KEY) #define NEH_DEC_LOAD (NEH_DECRYPT | NEH_LOAD_KEY) #define NEH_ENC_GEN_DATA {\ NEH_ENC_GEN | NEH_KEY128, 0, 0, 0,\ NEH_ENC_GEN | NEH_KEY192, 0, 0, 0,\ NEH_ENC_GEN | NEH_KEY256, 0, 0, 0 } #define NEH_ENC_LOAD_DATA {\ NEH_ENC_LOAD | NEH_KEY128, 0, 0, 0,\ NEH_ENC_LOAD | NEH_KEY192, 0, 0, 0,\ NEH_ENC_LOAD | NEH_KEY256, 0, 0, 0 } #define NEH_ENC_HYBRID_DATA {\ NEH_ENC_GEN | NEH_KEY128, 0, 0, 0,\ NEH_ENC_LOAD | NEH_KEY192, 0, 0, 0,\ NEH_ENC_LOAD | NEH_KEY256, 0, 0, 0 } #define NEH_DEC_GEN_DATA {\ NEH_DEC_GEN | NEH_KEY128, 0, 0, 0,\ NEH_DEC_GEN | NEH_KEY192, 0, 0, 0,\ NEH_DEC_GEN | NEH_KEY256, 0, 0, 0 } #define NEH_DEC_LOAD_DATA {\ NEH_DEC_LOAD | NEH_KEY128, 0, 0, 0,\ NEH_DEC_LOAD | NEH_KEY192, 0, 0, 0,\ NEH_DEC_LOAD | NEH_KEY256, 0, 0, 0 } #define NEH_DEC_HYBRID_DATA {\ NEH_DEC_GEN | NEH_KEY128, 0, 0, 0,\ NEH_DEC_LOAD | NEH_KEY192, 0, 0, 0,\ NEH_DEC_LOAD | NEH_KEY256, 0, 0, 0 } #define neh_enc_gen_key(x) ((x) == 128 ? (NEH_ENC_GEN | NEH_KEY128) : \ (x) == 192 ? (NEH_ENC_GEN | NEH_KEY192) : (NEH_ENC_GEN | NEH_KEY256)) #define neh_enc_load_key(x) ((x) == 128 ? (NEH_ENC_LOAD | NEH_KEY128) : \ (x) == 192 ? (NEH_ENC_LOAD | NEH_KEY192) : (NEH_ENC_LOAD | NEH_KEY256)) #define neh_enc_hybrid_key(x) ((x) == 128 ? (NEH_ENC_GEN | NEH_KEY128) : \ (x) == 192 ? (NEH_ENC_LOAD | NEH_KEY192) : (NEH_ENC_LOAD | NEH_KEY256)) #define neh_dec_gen_key(x) ((x) == 128 ? (NEH_DEC_GEN | NEH_KEY128) : \ (x) == 192 ? (NEH_DEC_GEN | NEH_KEY192) : (NEH_DEC_GEN | NEH_KEY256)) #define neh_dec_load_key(x) ((x) == 128 ? (NEH_DEC_LOAD | NEH_KEY128) : \ (x) == 192 ? (NEH_DEC_LOAD | NEH_KEY192) : (NEH_DEC_LOAD | NEH_KEY256)) #define neh_dec_hybrid_key(x) ((x) == 128 ? (NEH_DEC_GEN | NEH_KEY128) : \ (x) == 192 ? (NEH_DEC_LOAD | NEH_KEY192) : (NEH_DEC_LOAD | NEH_KEY256)) #if defined( _MSC_VER ) && ( _MSC_VER > 1200 ) #define aligned_auto(type, name, no, stride) __declspec(align(stride)) type name[no] #else #define aligned_auto(type, name, no, stride) \ unsigned char _##name[no * sizeof(type) + stride]; \ type *name = (type*)(16 * ((((unsigned long)(_##name)) + stride - 1) / stride)) #endif #if defined( _MSC_VER ) && ( _MSC_VER > 1200 ) #define aligned_array(type, name, no, stride) __declspec(align(stride)) type name[no] #elif defined( __GNUC__ ) #define aligned_array(type, name, no, stride) type name[no] __attribute__ ((aligned(stride))) #else #define aligned_array(type, name, no, stride) type name[no] #endif /* VIA ACE codeword */ static unsigned char via_flags = 0; #if defined ( _MSC_VER ) && ( _MSC_VER > 800 ) #define NEH_REKEY __asm pushfd __asm popfd #define NEH_AES __asm _emit 0xf3 __asm _emit 0x0f __asm _emit 0xa7 #define NEH_ECB NEH_AES __asm _emit 0xc8 #define NEH_CBC NEH_AES __asm _emit 0xd0 #define NEH_CFB NEH_AES __asm _emit 0xe0 #define NEH_OFB NEH_AES __asm _emit 0xe8 #define NEH_RNG __asm _emit 0x0f __asm _emit 0xa7 __asm _emit 0xc0 INLINE int has_cpuid(void) { char ret_value; __asm { pushfd /* save EFLAGS register */ mov eax,[esp] /* copy it to eax */ mov edx,0x00200000 /* CPUID bit position */ xor eax,edx /* toggle the CPUID bit */ push eax /* attempt to set EFLAGS to */ popfd /* the new value */ pushfd /* get the new EFLAGS value */ pop eax /* into eax */ xor eax,[esp] /* xor with original value */ and eax,edx /* has CPUID bit changed? */ setne al /* set to 1 if we have been */ mov ret_value,al /* able to change it */ popfd /* restore original EFLAGS */ } return (int)ret_value; } INLINE int is_via_cpu(void) { char ret_value; __asm { push ebx xor eax,eax /* use CPUID to get vendor */ cpuid /* identity string */ xor eax,eax /* is it "CentaurHauls" ? */ sub ebx,0x746e6543 /* 'Cent' */ or eax,ebx sub edx,0x48727561 /* 'aurH' */ or eax,edx sub ecx,0x736c7561 /* 'auls' */ or eax,ecx sete al /* set to 1 if it is VIA ID */ mov dl,NEH_CPU_READ /* mark CPU type as read */ or dl,al /* & store result in flags */ mov [via_flags],dl /* set VIA detected flag */ mov ret_value,al /* able to change it */ pop ebx } return (int)ret_value; } INLINE int read_via_flags(void) { char ret_value = 0; __asm { mov eax,0xC0000000 /* Centaur extended CPUID */ cpuid mov edx,0xc0000001 /* >= 0xc0000001 if support */ cmp eax,edx /* for VIA extended feature */ jnae no_rng /* flags is available */ mov eax,edx /* read Centaur extended */ cpuid /* feature flags */ mov eax,NEH_FLAGS_MASK /* mask out and save */ and eax,edx /* the RNG and ACE flags */ or [via_flags],al /* present & enabled flags */ mov ret_value,al /* able to change it */ no_rng: } return (int)ret_value; } INLINE unsigned int via_rng_in(void *buf) { char ret_value = 0x1f; __asm { push edi mov edi,buf /* input buffer address */ xor edx,edx /* try to fetch 8 bytes */ NEH_RNG /* do RNG read operation */ and ret_value,al /* count of bytes returned */ pop edi } return (int)ret_value; } INLINE void via_ecb_op5( const void *k, const void *c, const void *s, void *d, int l) { __asm { push ebx NEH_REKEY mov ebx, (k) mov edx, (c) mov esi, (s) mov edi, (d) mov ecx, (l) NEH_ECB pop ebx } } INLINE void via_cbc_op6( const void *k, const void *c, const void *s, void *d, int l, void *v) { __asm { push ebx NEH_REKEY mov ebx, (k) mov edx, (c) mov esi, (s) mov edi, (d) mov ecx, (l) mov eax, (v) NEH_CBC pop ebx } } INLINE void via_cbc_op7( const void *k, const void *c, const void *s, void *d, int l, void *v, void *w) { __asm { push ebx NEH_REKEY mov ebx, (k) mov edx, (c) mov esi, (s) mov edi, (d) mov ecx, (l) mov eax, (v) NEH_CBC mov esi, eax mov edi, (w) movsd movsd movsd movsd pop ebx } } INLINE void via_cfb_op6( const void *k, const void *c, const void *s, void *d, int l, void *v) { __asm { push ebx NEH_REKEY mov ebx, (k) mov edx, (c) mov esi, (s) mov edi, (d) mov ecx, (l) mov eax, (v) NEH_CFB pop ebx } } INLINE void via_cfb_op7( const void *k, const void *c, const void *s, void *d, int l, void *v, void *w) { __asm { push ebx NEH_REKEY mov ebx, (k) mov edx, (c) mov esi, (s) mov edi, (d) mov ecx, (l) mov eax, (v) NEH_CFB mov esi, eax mov edi, (w) movsd movsd movsd movsd pop ebx } } INLINE void via_ofb_op6( const void *k, const void *c, const void *s, void *d, int l, void *v) { __asm { push ebx NEH_REKEY mov ebx, (k) mov edx, (c) mov esi, (s) mov edi, (d) mov ecx, (l) mov eax, (v) NEH_OFB pop ebx } } #elif defined( __GNUC__ ) #define NEH_REKEY asm("pushfl\n popfl\n\t") #define NEH_ECB asm(".byte 0xf3, 0x0f, 0xa7, 0xc8\n\t") #define NEH_CBC asm(".byte 0xf3, 0x0f, 0xa7, 0xd0\n\t") #define NEH_CFB asm(".byte 0xf3, 0x0f, 0xa7, 0xe0\n\t") #define NEH_OFB asm(".byte 0xf3, 0x0f, 0xa7, 0xe8\n\t") #define NEH_RNG asm(".byte 0x0f, 0xa7, 0xc0\n\t"); INLINE int has_cpuid(void) { int val; asm("pushfl\n\t"); asm("movl 0(%esp),%eax\n\t"); asm("xor $0x00200000,%eax\n\t"); asm("pushl %eax\n\t"); asm("popfl\n\t"); asm("pushfl\n\t"); asm("popl %eax\n\t"); asm("xorl 0(%esp),%edx\n\t"); asm("andl $0x00200000,%eax\n\t"); asm("movl %%eax,%0\n\t" : "=m" (val)); asm("popfl\n\t"); return val ? 1 : 0; } INLINE int is_via_cpu(void) { int val; asm("pushl %ebx\n\t"); asm("xorl %eax,%eax\n\t"); asm("cpuid\n\t"); asm("xorl %eax,%eax\n\t"); asm("subl $0x746e6543,%ebx\n\t"); asm("orl %ebx,%eax\n\t"); asm("subl $0x48727561,%edx\n\t"); asm("orl %edx,%eax\n\t"); asm("subl $0x736c7561,%ecx\n\t"); asm("orl %ecx,%eax\n\t"); asm("movl %%eax,%0\n\t" : "=m" (val)); asm("popl %ebx\n\t"); val = (val ? 0 : 1); via_flags = (val | NEH_CPU_READ); return val; } INLINE int read_via_flags(void) { unsigned char val; asm("movl $0xc0000000,%eax\n\t"); asm("cpuid\n\t"); asm("movl $0xc0000001,%edx\n\t"); asm("cmpl %edx,%eax\n\t"); asm("setae %al\n\t"); asm("movb %%al,%0\n\t" : "=m" (val)); if(!val) return 0; asm("movl $0xc0000001,%eax\n\t"); asm("cpuid\n\t"); asm("movb %%dl,%0\n\t" : "=m" (val)); val &= NEH_FLAGS_MASK; via_flags |= val; return (int) val; } INLINE int via_rng_in(void *buf) { int val; asm("pushl %edi\n\t"); asm("movl %0,%%edi\n\t" : : "m" (buf)); asm("xorl %edx,%edx\n\t"); NEH_RNG asm("andl $0x0000001f,%eax\n\t"); asm("movl %%eax,%0\n\t" : "=m" (val)); asm("popl %edi\n\t"); return val; } INLINE volatile void via_ecb_op5( const void *k, const void *c, const void *s, void *d, int l) { asm("pushl %ebx\n\t"); NEH_REKEY; asm("movl %0, %%ebx\n\t" : : "m" (k)); asm("movl %0, %%edx\n\t" : : "m" (c)); asm("movl %0, %%esi\n\t" : : "m" (s)); asm("movl %0, %%edi\n\t" : : "m" (d)); asm("movl %0, %%ecx\n\t" : : "m" (l)); NEH_ECB; asm("popl %ebx\n\t"); } INLINE volatile void via_cbc_op6( const void *k, const void *c, const void *s, void *d, int l, void *v) { asm("pushl %ebx\n\t"); NEH_REKEY; asm("movl %0, %%ebx\n\t" : : "m" (k)); asm("movl %0, %%edx\n\t" : : "m" (c)); asm("movl %0, %%esi\n\t" : : "m" (s)); asm("movl %0, %%edi\n\t" : : "m" (d)); asm("movl %0, %%ecx\n\t" : : "m" (l)); asm("movl %0, %%eax\n\t" : : "m" (v)); NEH_CBC; asm("popl %ebx\n\t"); } INLINE volatile void via_cbc_op7( const void *k, const void *c, const void *s, void *d, int l, void *v, void *w) { asm("pushl %ebx\n\t"); NEH_REKEY; asm("movl %0, %%ebx\n\t" : : "m" (k)); asm("movl %0, %%edx\n\t" : : "m" (c)); asm("movl %0, %%esi\n\t" : : "m" (s)); asm("movl %0, %%edi\n\t" : : "m" (d)); asm("movl %0, %%ecx\n\t" : : "m" (l)); asm("movl %0, %%eax\n\t" : : "m" (v)); NEH_CBC; asm("movl %eax,%esi\n\t"); asm("movl %0, %%edi\n\t" : : "m" (w)); asm("movsl; movsl; movsl; movsl\n\t"); asm("popl %ebx\n\t"); } INLINE volatile void via_cfb_op6( const void *k, const void *c, const void *s, void *d, int l, void *v) { asm("pushl %ebx\n\t"); NEH_REKEY; asm("movl %0, %%ebx\n\t" : : "m" (k)); asm("movl %0, %%edx\n\t" : : "m" (c)); asm("movl %0, %%esi\n\t" : : "m" (s)); asm("movl %0, %%edi\n\t" : : "m" (d)); asm("movl %0, %%ecx\n\t" : : "m" (l)); asm("movl %0, %%eax\n\t" : : "m" (v)); NEH_CFB; asm("popl %ebx\n\t"); } INLINE volatile void via_cfb_op7( const void *k, const void *c, const void *s, void *d, int l, void *v, void *w) { asm("pushl %ebx\n\t"); NEH_REKEY; asm("movl %0, %%ebx\n\t" : : "m" (k)); asm("movl %0, %%edx\n\t" : : "m" (c)); asm("movl %0, %%esi\n\t" : : "m" (s)); asm("movl %0, %%edi\n\t" : : "m" (d)); asm("movl %0, %%ecx\n\t" : : "m" (l)); asm("movl %0, %%eax\n\t" : : "m" (v)); NEH_CFB; asm("movl %eax,%esi\n\t"); asm("movl %0, %%edi\n\t" : : "m" (w)); asm("movsl; movsl; movsl; movsl\n\t"); asm("popl %ebx\n\t"); } INLINE volatile void via_ofb_op6( const void *k, const void *c, const void *s, void *d, int l, void *v) { asm("pushl %ebx\n\t"); NEH_REKEY; asm("movl %0, %%ebx\n\t" : : "m" (k)); asm("movl %0, %%edx\n\t" : : "m" (c)); asm("movl %0, %%esi\n\t" : : "m" (s)); asm("movl %0, %%edi\n\t" : : "m" (d)); asm("movl %0, %%ecx\n\t" : : "m" (l)); asm("movl %0, %%eax\n\t" : : "m" (v)); NEH_OFB; asm("popl %ebx\n\t"); } #else #error VIA ACE is not available with this compiler #endif INLINE int via_ace_test(void) { return has_cpuid() && is_via_cpu() && ((read_via_flags() & NEH_ACE_FLAGS) == NEH_ACE_FLAGS); } #define VIA_ACE_AVAILABLE (((via_flags & NEH_ACE_FLAGS) == NEH_ACE_FLAGS) \ || (via_flags & NEH_CPU_READ) && (via_flags & NEH_CPU_IS_VIA) || via_ace_test()) INLINE int via_rng_test(void) { return has_cpuid() && is_via_cpu() && ((read_via_flags() & NEH_RNG_FLAGS) == NEH_RNG_FLAGS); } #define VIA_RNG_AVAILABLE (((via_flags & NEH_RNG_FLAGS) == NEH_RNG_FLAGS) \ || (via_flags & NEH_CPU_READ) && (via_flags & NEH_CPU_IS_VIA) || via_rng_test()) INLINE int read_via_rng(void *buf, int count) { int nbr, max_reads, lcnt = count; unsigned char *p, *q; aligned_auto(unsigned char, bp, 64, 16); if(!VIA_RNG_AVAILABLE) return 0; do { max_reads = MAX_READ_ATTEMPTS; do nbr = via_rng_in(bp); while (nbr == 0 && --max_reads); lcnt -= nbr; p = (unsigned char*)buf; q = bp; while(nbr--) *p++ = *q++; } while (lcnt && max_reads); return count - lcnt; } #endif ================================================ FILE: BNN/cpp/minizip/aes/aescrypt.c ================================================ /* --------------------------------------------------------------------------- Copyright (c) 1998-2010, Brian Gladman, Worcester, UK. All rights reserved. The redistribution and use of this software (with or without changes) is allowed without the payment of fees or royalties provided that: source code distributions include the above copyright notice, this list of conditions and the following disclaimer; binary distributions include the above copyright notice, this list of conditions and the following disclaimer in their documentation. This software is provided 'as is' with no explicit or implied warranties in respect of its operation, including, but not limited to, correctness and fitness for purpose. --------------------------------------------------------------------------- Issue Date: 20/12/2007 */ #include "aesopt.h" #include "aestab.h" #if defined(__cplusplus) extern "C" { #endif #define si(y,x,k,c) (s(y,c) = word_in(x, c) ^ (k)[c]) #define so(y,x,c) word_out(y, c, s(x,c)) #if defined(ARRAYS) #define locals(y,x) x[4],y[4] #else #define locals(y,x) x##0,x##1,x##2,x##3,y##0,y##1,y##2,y##3 #endif #define l_copy(y, x) s(y,0) = s(x,0); s(y,1) = s(x,1); \ s(y,2) = s(x,2); s(y,3) = s(x,3); #define state_in(y,x,k) si(y,x,k,0); si(y,x,k,1); si(y,x,k,2); si(y,x,k,3) #define state_out(y,x) so(y,x,0); so(y,x,1); so(y,x,2); so(y,x,3) #define round(rm,y,x,k) rm(y,x,k,0); rm(y,x,k,1); rm(y,x,k,2); rm(y,x,k,3) #if ( FUNCS_IN_C & ENCRYPTION_IN_C ) /* Visual C++ .Net v7.1 provides the fastest encryption code when using Pentium optimiation with small code but this is poor for decryption so we need to control this with the following VC++ pragmas */ #if defined( _MSC_VER ) && !defined( _WIN64 ) #pragma optimize( "s", on ) #endif /* Given the column (c) of the output state variable, the following macros give the input state variables which are needed in its computation for each row (r) of the state. All the alternative macros give the same end values but expand into different ways of calculating these values. In particular the complex macro used for dynamically variable block sizes is designed to expand to a compile time constant whenever possible but will expand to conditional clauses on some branches (I am grateful to Frank Yellin for this construction) */ #define fwd_var(x,r,c)\ ( r == 0 ? ( c == 0 ? s(x,0) : c == 1 ? s(x,1) : c == 2 ? s(x,2) : s(x,3))\ : r == 1 ? ( c == 0 ? s(x,1) : c == 1 ? s(x,2) : c == 2 ? s(x,3) : s(x,0))\ : r == 2 ? ( c == 0 ? s(x,2) : c == 1 ? s(x,3) : c == 2 ? s(x,0) : s(x,1))\ : ( c == 0 ? s(x,3) : c == 1 ? s(x,0) : c == 2 ? s(x,1) : s(x,2))) #if defined(FT4_SET) #undef dec_fmvars #define fwd_rnd(y,x,k,c) (s(y,c) = (k)[c] ^ four_tables(x,t_use(f,n),fwd_var,rf1,c)) #elif defined(FT1_SET) #undef dec_fmvars #define fwd_rnd(y,x,k,c) (s(y,c) = (k)[c] ^ one_table(x,upr,t_use(f,n),fwd_var,rf1,c)) #else #define fwd_rnd(y,x,k,c) (s(y,c) = (k)[c] ^ fwd_mcol(no_table(x,t_use(s,box),fwd_var,rf1,c))) #endif #if defined(FL4_SET) #define fwd_lrnd(y,x,k,c) (s(y,c) = (k)[c] ^ four_tables(x,t_use(f,l),fwd_var,rf1,c)) #elif defined(FL1_SET) #define fwd_lrnd(y,x,k,c) (s(y,c) = (k)[c] ^ one_table(x,ups,t_use(f,l),fwd_var,rf1,c)) #else #define fwd_lrnd(y,x,k,c) (s(y,c) = (k)[c] ^ no_table(x,t_use(s,box),fwd_var,rf1,c)) #endif AES_RETURN aes_encrypt(const unsigned char *in, unsigned char *out, const aes_encrypt_ctx cx[1]) { uint_32t locals(b0, b1); const uint_32t *kp; #if defined( dec_fmvars ) dec_fmvars; /* declare variables for fwd_mcol() if needed */ #endif if( cx->inf.b[0] != 10 * 16 && cx->inf.b[0] != 12 * 16 && cx->inf.b[0] != 14 * 16 ) return EXIT_FAILURE; kp = cx->ks; state_in(b0, in, kp); #if (ENC_UNROLL == FULL) switch(cx->inf.b[0]) { case 14 * 16: round(fwd_rnd, b1, b0, kp + 1 * N_COLS); round(fwd_rnd, b0, b1, kp + 2 * N_COLS); kp += 2 * N_COLS; case 12 * 16: round(fwd_rnd, b1, b0, kp + 1 * N_COLS); round(fwd_rnd, b0, b1, kp + 2 * N_COLS); kp += 2 * N_COLS; case 10 * 16: round(fwd_rnd, b1, b0, kp + 1 * N_COLS); round(fwd_rnd, b0, b1, kp + 2 * N_COLS); round(fwd_rnd, b1, b0, kp + 3 * N_COLS); round(fwd_rnd, b0, b1, kp + 4 * N_COLS); round(fwd_rnd, b1, b0, kp + 5 * N_COLS); round(fwd_rnd, b0, b1, kp + 6 * N_COLS); round(fwd_rnd, b1, b0, kp + 7 * N_COLS); round(fwd_rnd, b0, b1, kp + 8 * N_COLS); round(fwd_rnd, b1, b0, kp + 9 * N_COLS); round(fwd_lrnd, b0, b1, kp +10 * N_COLS); } #else #if (ENC_UNROLL == PARTIAL) { uint_32t rnd; for(rnd = 0; rnd < (cx->inf.b[0] >> 5) - 1; ++rnd) { kp += N_COLS; round(fwd_rnd, b1, b0, kp); kp += N_COLS; round(fwd_rnd, b0, b1, kp); } kp += N_COLS; round(fwd_rnd, b1, b0, kp); #else { uint_32t rnd; for(rnd = 0; rnd < (cx->inf.b[0] >> 4) - 1; ++rnd) { kp += N_COLS; round(fwd_rnd, b1, b0, kp); l_copy(b0, b1); } #endif kp += N_COLS; round(fwd_lrnd, b0, b1, kp); } #endif state_out(out, b0); return EXIT_SUCCESS; } #endif #if ( FUNCS_IN_C & DECRYPTION_IN_C) /* Visual C++ .Net v7.1 provides the fastest encryption code when using Pentium optimiation with small code but this is poor for decryption so we need to control this with the following VC++ pragmas */ #if defined( _MSC_VER ) && !defined( _WIN64 ) #pragma optimize( "t", on ) #endif /* Given the column (c) of the output state variable, the following macros give the input state variables which are needed in its computation for each row (r) of the state. All the alternative macros give the same end values but expand into different ways of calculating these values. In particular the complex macro used for dynamically variable block sizes is designed to expand to a compile time constant whenever possible but will expand to conditional clauses on some branches (I am grateful to Frank Yellin for this construction) */ #define inv_var(x,r,c)\ ( r == 0 ? ( c == 0 ? s(x,0) : c == 1 ? s(x,1) : c == 2 ? s(x,2) : s(x,3))\ : r == 1 ? ( c == 0 ? s(x,3) : c == 1 ? s(x,0) : c == 2 ? s(x,1) : s(x,2))\ : r == 2 ? ( c == 0 ? s(x,2) : c == 1 ? s(x,3) : c == 2 ? s(x,0) : s(x,1))\ : ( c == 0 ? s(x,1) : c == 1 ? s(x,2) : c == 2 ? s(x,3) : s(x,0))) #if defined(IT4_SET) #undef dec_imvars #define inv_rnd(y,x,k,c) (s(y,c) = (k)[c] ^ four_tables(x,t_use(i,n),inv_var,rf1,c)) #elif defined(IT1_SET) #undef dec_imvars #define inv_rnd(y,x,k,c) (s(y,c) = (k)[c] ^ one_table(x,upr,t_use(i,n),inv_var,rf1,c)) #else #define inv_rnd(y,x,k,c) (s(y,c) = inv_mcol((k)[c] ^ no_table(x,t_use(i,box),inv_var,rf1,c))) #endif #if defined(IL4_SET) #define inv_lrnd(y,x,k,c) (s(y,c) = (k)[c] ^ four_tables(x,t_use(i,l),inv_var,rf1,c)) #elif defined(IL1_SET) #define inv_lrnd(y,x,k,c) (s(y,c) = (k)[c] ^ one_table(x,ups,t_use(i,l),inv_var,rf1,c)) #else #define inv_lrnd(y,x,k,c) (s(y,c) = (k)[c] ^ no_table(x,t_use(i,box),inv_var,rf1,c)) #endif /* This code can work with the decryption key schedule in the */ /* order that is used for encrytpion (where the 1st decryption */ /* round key is at the high end ot the schedule) or with a key */ /* schedule that has been reversed to put the 1st decryption */ /* round key at the low end of the schedule in memory (when */ /* AES_REV_DKS is defined) */ #ifdef AES_REV_DKS #define key_ofs 0 #define rnd_key(n) (kp + n * N_COLS) #else #define key_ofs 1 #define rnd_key(n) (kp - n * N_COLS) #endif AES_RETURN aes_decrypt(const unsigned char *in, unsigned char *out, const aes_decrypt_ctx cx[1]) { uint_32t locals(b0, b1); #if defined( dec_imvars ) dec_imvars; /* declare variables for inv_mcol() if needed */ #endif const uint_32t *kp; if( cx->inf.b[0] != 10 * 16 && cx->inf.b[0] != 12 * 16 && cx->inf.b[0] != 14 * 16 ) return EXIT_FAILURE; kp = cx->ks + (key_ofs ? (cx->inf.b[0] >> 2) : 0); state_in(b0, in, kp); #if (DEC_UNROLL == FULL) kp = cx->ks + (key_ofs ? 0 : (cx->inf.b[0] >> 2)); switch(cx->inf.b[0]) { case 14 * 16: round(inv_rnd, b1, b0, rnd_key(-13)); round(inv_rnd, b0, b1, rnd_key(-12)); case 12 * 16: round(inv_rnd, b1, b0, rnd_key(-11)); round(inv_rnd, b0, b1, rnd_key(-10)); case 10 * 16: round(inv_rnd, b1, b0, rnd_key(-9)); round(inv_rnd, b0, b1, rnd_key(-8)); round(inv_rnd, b1, b0, rnd_key(-7)); round(inv_rnd, b0, b1, rnd_key(-6)); round(inv_rnd, b1, b0, rnd_key(-5)); round(inv_rnd, b0, b1, rnd_key(-4)); round(inv_rnd, b1, b0, rnd_key(-3)); round(inv_rnd, b0, b1, rnd_key(-2)); round(inv_rnd, b1, b0, rnd_key(-1)); round(inv_lrnd, b0, b1, rnd_key( 0)); } #else #if (DEC_UNROLL == PARTIAL) { uint_32t rnd; for(rnd = 0; rnd < (cx->inf.b[0] >> 5) - 1; ++rnd) { kp = rnd_key(1); round(inv_rnd, b1, b0, kp); kp = rnd_key(1); round(inv_rnd, b0, b1, kp); } kp = rnd_key(1); round(inv_rnd, b1, b0, kp); #else { uint_32t rnd; for(rnd = 0; rnd < (cx->inf.b[0] >> 4) - 1; ++rnd) { kp = rnd_key(1); round(inv_rnd, b1, b0, kp); l_copy(b0, b1); } #endif kp = rnd_key(1); round(inv_lrnd, b0, b1, kp); } #endif state_out(out, b0); return EXIT_SUCCESS; } #endif #if defined(__cplusplus) } #endif ================================================ FILE: BNN/cpp/minizip/aes/aeskey.c ================================================ /* --------------------------------------------------------------------------- Copyright (c) 1998-2010, Brian Gladman, Worcester, UK. All rights reserved. The redistribution and use of this software (with or without changes) is allowed without the payment of fees or royalties provided that: source code distributions include the above copyright notice, this list of conditions and the following disclaimer; binary distributions include the above copyright notice, this list of conditions and the following disclaimer in their documentation. This software is provided 'as is' with no explicit or implied warranties in respect of its operation, including, but not limited to, correctness and fitness for purpose. --------------------------------------------------------------------------- Issue Date: 20/12/2007 */ #include "aesopt.h" #include "aestab.h" #ifdef USE_VIA_ACE_IF_PRESENT # include "aes_via_ace.h" #endif #if defined(__cplusplus) extern "C" { #endif /* Initialise the key schedule from the user supplied key. The key length can be specified in bytes, with legal values of 16, 24 and 32, or in bits, with legal values of 128, 192 and 256. These values correspond with Nk values of 4, 6 and 8 respectively. The following macros implement a single cycle in the key schedule generation process. The number of cycles needed for each cx->n_col and nk value is: nk = 4 5 6 7 8 ------------------------------ cx->n_col = 4 10 9 8 7 7 cx->n_col = 5 14 11 10 9 9 cx->n_col = 6 19 15 12 11 11 cx->n_col = 7 21 19 16 13 14 cx->n_col = 8 29 23 19 17 14 */ #if defined( REDUCE_CODE_SIZE ) # define ls_box ls_sub uint_32t ls_sub(const uint_32t t, const uint_32t n); # define inv_mcol im_sub uint_32t im_sub(const uint_32t x); # ifdef ENC_KS_UNROLL # undef ENC_KS_UNROLL # endif # ifdef DEC_KS_UNROLL # undef DEC_KS_UNROLL # endif #endif #if (FUNCS_IN_C & ENC_KEYING_IN_C) #if defined(AES_128) || defined( AES_VAR ) #define ke4(k,i) \ { k[4*(i)+4] = ss[0] ^= ls_box(ss[3],3) ^ t_use(r,c)[i]; \ k[4*(i)+5] = ss[1] ^= ss[0]; \ k[4*(i)+6] = ss[2] ^= ss[1]; \ k[4*(i)+7] = ss[3] ^= ss[2]; \ } AES_RETURN aes_encrypt_key128(const unsigned char *key, aes_encrypt_ctx cx[1]) { uint_32t ss[4]; cx->ks[0] = ss[0] = word_in(key, 0); cx->ks[1] = ss[1] = word_in(key, 1); cx->ks[2] = ss[2] = word_in(key, 2); cx->ks[3] = ss[3] = word_in(key, 3); #ifdef ENC_KS_UNROLL ke4(cx->ks, 0); ke4(cx->ks, 1); ke4(cx->ks, 2); ke4(cx->ks, 3); ke4(cx->ks, 4); ke4(cx->ks, 5); ke4(cx->ks, 6); ke4(cx->ks, 7); ke4(cx->ks, 8); #else { uint_32t i; for(i = 0; i < 9; ++i) ke4(cx->ks, i); } #endif ke4(cx->ks, 9); cx->inf.l = 0; cx->inf.b[0] = 10 * 16; #ifdef USE_VIA_ACE_IF_PRESENT if(VIA_ACE_AVAILABLE) cx->inf.b[1] = 0xff; #endif return EXIT_SUCCESS; } #endif #if defined(AES_192) || defined( AES_VAR ) #define kef6(k,i) \ { k[6*(i)+ 6] = ss[0] ^= ls_box(ss[5],3) ^ t_use(r,c)[i]; \ k[6*(i)+ 7] = ss[1] ^= ss[0]; \ k[6*(i)+ 8] = ss[2] ^= ss[1]; \ k[6*(i)+ 9] = ss[3] ^= ss[2]; \ } #define ke6(k,i) \ { kef6(k,i); \ k[6*(i)+10] = ss[4] ^= ss[3]; \ k[6*(i)+11] = ss[5] ^= ss[4]; \ } AES_RETURN aes_encrypt_key192(const unsigned char *key, aes_encrypt_ctx cx[1]) { uint_32t ss[6]; cx->ks[0] = ss[0] = word_in(key, 0); cx->ks[1] = ss[1] = word_in(key, 1); cx->ks[2] = ss[2] = word_in(key, 2); cx->ks[3] = ss[3] = word_in(key, 3); cx->ks[4] = ss[4] = word_in(key, 4); cx->ks[5] = ss[5] = word_in(key, 5); #ifdef ENC_KS_UNROLL ke6(cx->ks, 0); ke6(cx->ks, 1); ke6(cx->ks, 2); ke6(cx->ks, 3); ke6(cx->ks, 4); ke6(cx->ks, 5); ke6(cx->ks, 6); #else { uint_32t i; for(i = 0; i < 7; ++i) ke6(cx->ks, i); } #endif kef6(cx->ks, 7); cx->inf.l = 0; cx->inf.b[0] = 12 * 16; #ifdef USE_VIA_ACE_IF_PRESENT if(VIA_ACE_AVAILABLE) cx->inf.b[1] = 0xff; #endif return EXIT_SUCCESS; } #endif #if defined(AES_256) || defined( AES_VAR ) #define kef8(k,i) \ { k[8*(i)+ 8] = ss[0] ^= ls_box(ss[7],3) ^ t_use(r,c)[i]; \ k[8*(i)+ 9] = ss[1] ^= ss[0]; \ k[8*(i)+10] = ss[2] ^= ss[1]; \ k[8*(i)+11] = ss[3] ^= ss[2]; \ } #define ke8(k,i) \ { kef8(k,i); \ k[8*(i)+12] = ss[4] ^= ls_box(ss[3],0); \ k[8*(i)+13] = ss[5] ^= ss[4]; \ k[8*(i)+14] = ss[6] ^= ss[5]; \ k[8*(i)+15] = ss[7] ^= ss[6]; \ } AES_RETURN aes_encrypt_key256(const unsigned char *key, aes_encrypt_ctx cx[1]) { uint_32t ss[8]; cx->ks[0] = ss[0] = word_in(key, 0); cx->ks[1] = ss[1] = word_in(key, 1); cx->ks[2] = ss[2] = word_in(key, 2); cx->ks[3] = ss[3] = word_in(key, 3); cx->ks[4] = ss[4] = word_in(key, 4); cx->ks[5] = ss[5] = word_in(key, 5); cx->ks[6] = ss[6] = word_in(key, 6); cx->ks[7] = ss[7] = word_in(key, 7); #ifdef ENC_KS_UNROLL ke8(cx->ks, 0); ke8(cx->ks, 1); ke8(cx->ks, 2); ke8(cx->ks, 3); ke8(cx->ks, 4); ke8(cx->ks, 5); #else { uint_32t i; for(i = 0; i < 6; ++i) ke8(cx->ks, i); } #endif kef8(cx->ks, 6); cx->inf.l = 0; cx->inf.b[0] = 14 * 16; #ifdef USE_VIA_ACE_IF_PRESENT if(VIA_ACE_AVAILABLE) cx->inf.b[1] = 0xff; #endif return EXIT_SUCCESS; } #endif #if defined( AES_VAR ) AES_RETURN aes_encrypt_key(const unsigned char *key, int key_len, aes_encrypt_ctx cx[1]) { switch(key_len) { case 16: case 128: return aes_encrypt_key128(key, cx); case 24: case 192: return aes_encrypt_key192(key, cx); case 32: case 256: return aes_encrypt_key256(key, cx); default: return EXIT_FAILURE; } } #endif #endif #if (FUNCS_IN_C & DEC_KEYING_IN_C) /* this is used to store the decryption round keys */ /* in forward or reverse order */ #ifdef AES_REV_DKS #define v(n,i) ((n) - (i) + 2 * ((i) & 3)) #else #define v(n,i) (i) #endif #if DEC_ROUND == NO_TABLES #define ff(x) (x) #else #define ff(x) inv_mcol(x) #if defined( dec_imvars ) #define d_vars dec_imvars #endif #endif #if defined(AES_128) || defined( AES_VAR ) #define k4e(k,i) \ { k[v(40,(4*(i))+4)] = ss[0] ^= ls_box(ss[3],3) ^ t_use(r,c)[i]; \ k[v(40,(4*(i))+5)] = ss[1] ^= ss[0]; \ k[v(40,(4*(i))+6)] = ss[2] ^= ss[1]; \ k[v(40,(4*(i))+7)] = ss[3] ^= ss[2]; \ } #if 1 #define kdf4(k,i) \ { ss[0] = ss[0] ^ ss[2] ^ ss[1] ^ ss[3]; \ ss[1] = ss[1] ^ ss[3]; \ ss[2] = ss[2] ^ ss[3]; \ ss[4] = ls_box(ss[(i+3) % 4], 3) ^ t_use(r,c)[i]; \ ss[i % 4] ^= ss[4]; \ ss[4] ^= k[v(40,(4*(i)))]; k[v(40,(4*(i))+4)] = ff(ss[4]); \ ss[4] ^= k[v(40,(4*(i))+1)]; k[v(40,(4*(i))+5)] = ff(ss[4]); \ ss[4] ^= k[v(40,(4*(i))+2)]; k[v(40,(4*(i))+6)] = ff(ss[4]); \ ss[4] ^= k[v(40,(4*(i))+3)]; k[v(40,(4*(i))+7)] = ff(ss[4]); \ } #define kd4(k,i) \ { ss[4] = ls_box(ss[(i+3) % 4], 3) ^ t_use(r,c)[i]; \ ss[i % 4] ^= ss[4]; ss[4] = ff(ss[4]); \ k[v(40,(4*(i))+4)] = ss[4] ^= k[v(40,(4*(i)))]; \ k[v(40,(4*(i))+5)] = ss[4] ^= k[v(40,(4*(i))+1)]; \ k[v(40,(4*(i))+6)] = ss[4] ^= k[v(40,(4*(i))+2)]; \ k[v(40,(4*(i))+7)] = ss[4] ^= k[v(40,(4*(i))+3)]; \ } #define kdl4(k,i) \ { ss[4] = ls_box(ss[(i+3) % 4], 3) ^ t_use(r,c)[i]; ss[i % 4] ^= ss[4]; \ k[v(40,(4*(i))+4)] = (ss[0] ^= ss[1]) ^ ss[2] ^ ss[3]; \ k[v(40,(4*(i))+5)] = ss[1] ^ ss[3]; \ k[v(40,(4*(i))+6)] = ss[0]; \ k[v(40,(4*(i))+7)] = ss[1]; \ } #else #define kdf4(k,i) \ { ss[0] ^= ls_box(ss[3],3) ^ t_use(r,c)[i]; k[v(40,(4*(i))+ 4)] = ff(ss[0]); \ ss[1] ^= ss[0]; k[v(40,(4*(i))+ 5)] = ff(ss[1]); \ ss[2] ^= ss[1]; k[v(40,(4*(i))+ 6)] = ff(ss[2]); \ ss[3] ^= ss[2]; k[v(40,(4*(i))+ 7)] = ff(ss[3]); \ } #define kd4(k,i) \ { ss[4] = ls_box(ss[3],3) ^ t_use(r,c)[i]; \ ss[0] ^= ss[4]; ss[4] = ff(ss[4]); k[v(40,(4*(i))+ 4)] = ss[4] ^= k[v(40,(4*(i)))]; \ ss[1] ^= ss[0]; k[v(40,(4*(i))+ 5)] = ss[4] ^= k[v(40,(4*(i))+ 1)]; \ ss[2] ^= ss[1]; k[v(40,(4*(i))+ 6)] = ss[4] ^= k[v(40,(4*(i))+ 2)]; \ ss[3] ^= ss[2]; k[v(40,(4*(i))+ 7)] = ss[4] ^= k[v(40,(4*(i))+ 3)]; \ } #define kdl4(k,i) \ { ss[0] ^= ls_box(ss[3],3) ^ t_use(r,c)[i]; k[v(40,(4*(i))+ 4)] = ss[0]; \ ss[1] ^= ss[0]; k[v(40,(4*(i))+ 5)] = ss[1]; \ ss[2] ^= ss[1]; k[v(40,(4*(i))+ 6)] = ss[2]; \ ss[3] ^= ss[2]; k[v(40,(4*(i))+ 7)] = ss[3]; \ } #endif AES_RETURN aes_decrypt_key128(const unsigned char *key, aes_decrypt_ctx cx[1]) { uint_32t ss[5]; #if defined( d_vars ) d_vars; #endif cx->ks[v(40,(0))] = ss[0] = word_in(key, 0); cx->ks[v(40,(1))] = ss[1] = word_in(key, 1); cx->ks[v(40,(2))] = ss[2] = word_in(key, 2); cx->ks[v(40,(3))] = ss[3] = word_in(key, 3); #ifdef DEC_KS_UNROLL kdf4(cx->ks, 0); kd4(cx->ks, 1); kd4(cx->ks, 2); kd4(cx->ks, 3); kd4(cx->ks, 4); kd4(cx->ks, 5); kd4(cx->ks, 6); kd4(cx->ks, 7); kd4(cx->ks, 8); kdl4(cx->ks, 9); #else { uint_32t i; for(i = 0; i < 10; ++i) k4e(cx->ks, i); #if !(DEC_ROUND == NO_TABLES) for(i = N_COLS; i < 10 * N_COLS; ++i) cx->ks[i] = inv_mcol(cx->ks[i]); #endif } #endif cx->inf.l = 0; cx->inf.b[0] = 10 * 16; #ifdef USE_VIA_ACE_IF_PRESENT if(VIA_ACE_AVAILABLE) cx->inf.b[1] = 0xff; #endif return EXIT_SUCCESS; } #endif #if defined(AES_192) || defined( AES_VAR ) #define k6ef(k,i) \ { k[v(48,(6*(i))+ 6)] = ss[0] ^= ls_box(ss[5],3) ^ t_use(r,c)[i]; \ k[v(48,(6*(i))+ 7)] = ss[1] ^= ss[0]; \ k[v(48,(6*(i))+ 8)] = ss[2] ^= ss[1]; \ k[v(48,(6*(i))+ 9)] = ss[3] ^= ss[2]; \ } #define k6e(k,i) \ { k6ef(k,i); \ k[v(48,(6*(i))+10)] = ss[4] ^= ss[3]; \ k[v(48,(6*(i))+11)] = ss[5] ^= ss[4]; \ } #define kdf6(k,i) \ { ss[0] ^= ls_box(ss[5],3) ^ t_use(r,c)[i]; k[v(48,(6*(i))+ 6)] = ff(ss[0]); \ ss[1] ^= ss[0]; k[v(48,(6*(i))+ 7)] = ff(ss[1]); \ ss[2] ^= ss[1]; k[v(48,(6*(i))+ 8)] = ff(ss[2]); \ ss[3] ^= ss[2]; k[v(48,(6*(i))+ 9)] = ff(ss[3]); \ ss[4] ^= ss[3]; k[v(48,(6*(i))+10)] = ff(ss[4]); \ ss[5] ^= ss[4]; k[v(48,(6*(i))+11)] = ff(ss[5]); \ } #define kd6(k,i) \ { ss[6] = ls_box(ss[5],3) ^ t_use(r,c)[i]; \ ss[0] ^= ss[6]; ss[6] = ff(ss[6]); k[v(48,(6*(i))+ 6)] = ss[6] ^= k[v(48,(6*(i)))]; \ ss[1] ^= ss[0]; k[v(48,(6*(i))+ 7)] = ss[6] ^= k[v(48,(6*(i))+ 1)]; \ ss[2] ^= ss[1]; k[v(48,(6*(i))+ 8)] = ss[6] ^= k[v(48,(6*(i))+ 2)]; \ ss[3] ^= ss[2]; k[v(48,(6*(i))+ 9)] = ss[6] ^= k[v(48,(6*(i))+ 3)]; \ ss[4] ^= ss[3]; k[v(48,(6*(i))+10)] = ss[6] ^= k[v(48,(6*(i))+ 4)]; \ ss[5] ^= ss[4]; k[v(48,(6*(i))+11)] = ss[6] ^= k[v(48,(6*(i))+ 5)]; \ } #define kdl6(k,i) \ { ss[0] ^= ls_box(ss[5],3) ^ t_use(r,c)[i]; k[v(48,(6*(i))+ 6)] = ss[0]; \ ss[1] ^= ss[0]; k[v(48,(6*(i))+ 7)] = ss[1]; \ ss[2] ^= ss[1]; k[v(48,(6*(i))+ 8)] = ss[2]; \ ss[3] ^= ss[2]; k[v(48,(6*(i))+ 9)] = ss[3]; \ } AES_RETURN aes_decrypt_key192(const unsigned char *key, aes_decrypt_ctx cx[1]) { uint_32t ss[7]; #if defined( d_vars ) d_vars; #endif cx->ks[v(48,(0))] = ss[0] = word_in(key, 0); cx->ks[v(48,(1))] = ss[1] = word_in(key, 1); cx->ks[v(48,(2))] = ss[2] = word_in(key, 2); cx->ks[v(48,(3))] = ss[3] = word_in(key, 3); #ifdef DEC_KS_UNROLL cx->ks[v(48,(4))] = ff(ss[4] = word_in(key, 4)); cx->ks[v(48,(5))] = ff(ss[5] = word_in(key, 5)); kdf6(cx->ks, 0); kd6(cx->ks, 1); kd6(cx->ks, 2); kd6(cx->ks, 3); kd6(cx->ks, 4); kd6(cx->ks, 5); kd6(cx->ks, 6); kdl6(cx->ks, 7); #else cx->ks[v(48,(4))] = ss[4] = word_in(key, 4); cx->ks[v(48,(5))] = ss[5] = word_in(key, 5); { uint_32t i; for(i = 0; i < 7; ++i) k6e(cx->ks, i); k6ef(cx->ks, 7); #if !(DEC_ROUND == NO_TABLES) for(i = N_COLS; i < 12 * N_COLS; ++i) cx->ks[i] = inv_mcol(cx->ks[i]); #endif } #endif cx->inf.l = 0; cx->inf.b[0] = 12 * 16; #ifdef USE_VIA_ACE_IF_PRESENT if(VIA_ACE_AVAILABLE) cx->inf.b[1] = 0xff; #endif return EXIT_SUCCESS; } #endif #if defined(AES_256) || defined( AES_VAR ) #define k8ef(k,i) \ { k[v(56,(8*(i))+ 8)] = ss[0] ^= ls_box(ss[7],3) ^ t_use(r,c)[i]; \ k[v(56,(8*(i))+ 9)] = ss[1] ^= ss[0]; \ k[v(56,(8*(i))+10)] = ss[2] ^= ss[1]; \ k[v(56,(8*(i))+11)] = ss[3] ^= ss[2]; \ } #define k8e(k,i) \ { k8ef(k,i); \ k[v(56,(8*(i))+12)] = ss[4] ^= ls_box(ss[3],0); \ k[v(56,(8*(i))+13)] = ss[5] ^= ss[4]; \ k[v(56,(8*(i))+14)] = ss[6] ^= ss[5]; \ k[v(56,(8*(i))+15)] = ss[7] ^= ss[6]; \ } #define kdf8(k,i) \ { ss[0] ^= ls_box(ss[7],3) ^ t_use(r,c)[i]; k[v(56,(8*(i))+ 8)] = ff(ss[0]); \ ss[1] ^= ss[0]; k[v(56,(8*(i))+ 9)] = ff(ss[1]); \ ss[2] ^= ss[1]; k[v(56,(8*(i))+10)] = ff(ss[2]); \ ss[3] ^= ss[2]; k[v(56,(8*(i))+11)] = ff(ss[3]); \ ss[4] ^= ls_box(ss[3],0); k[v(56,(8*(i))+12)] = ff(ss[4]); \ ss[5] ^= ss[4]; k[v(56,(8*(i))+13)] = ff(ss[5]); \ ss[6] ^= ss[5]; k[v(56,(8*(i))+14)] = ff(ss[6]); \ ss[7] ^= ss[6]; k[v(56,(8*(i))+15)] = ff(ss[7]); \ } #define kd8(k,i) \ { ss[8] = ls_box(ss[7],3) ^ t_use(r,c)[i]; \ ss[0] ^= ss[8]; ss[8] = ff(ss[8]); k[v(56,(8*(i))+ 8)] = ss[8] ^= k[v(56,(8*(i)))]; \ ss[1] ^= ss[0]; k[v(56,(8*(i))+ 9)] = ss[8] ^= k[v(56,(8*(i))+ 1)]; \ ss[2] ^= ss[1]; k[v(56,(8*(i))+10)] = ss[8] ^= k[v(56,(8*(i))+ 2)]; \ ss[3] ^= ss[2]; k[v(56,(8*(i))+11)] = ss[8] ^= k[v(56,(8*(i))+ 3)]; \ ss[8] = ls_box(ss[3],0); \ ss[4] ^= ss[8]; ss[8] = ff(ss[8]); k[v(56,(8*(i))+12)] = ss[8] ^= k[v(56,(8*(i))+ 4)]; \ ss[5] ^= ss[4]; k[v(56,(8*(i))+13)] = ss[8] ^= k[v(56,(8*(i))+ 5)]; \ ss[6] ^= ss[5]; k[v(56,(8*(i))+14)] = ss[8] ^= k[v(56,(8*(i))+ 6)]; \ ss[7] ^= ss[6]; k[v(56,(8*(i))+15)] = ss[8] ^= k[v(56,(8*(i))+ 7)]; \ } #define kdl8(k,i) \ { ss[0] ^= ls_box(ss[7],3) ^ t_use(r,c)[i]; k[v(56,(8*(i))+ 8)] = ss[0]; \ ss[1] ^= ss[0]; k[v(56,(8*(i))+ 9)] = ss[1]; \ ss[2] ^= ss[1]; k[v(56,(8*(i))+10)] = ss[2]; \ ss[3] ^= ss[2]; k[v(56,(8*(i))+11)] = ss[3]; \ } AES_RETURN aes_decrypt_key256(const unsigned char *key, aes_decrypt_ctx cx[1]) { uint_32t ss[9]; #if defined( d_vars ) d_vars; #endif cx->ks[v(56,(0))] = ss[0] = word_in(key, 0); cx->ks[v(56,(1))] = ss[1] = word_in(key, 1); cx->ks[v(56,(2))] = ss[2] = word_in(key, 2); cx->ks[v(56,(3))] = ss[3] = word_in(key, 3); #ifdef DEC_KS_UNROLL cx->ks[v(56,(4))] = ff(ss[4] = word_in(key, 4)); cx->ks[v(56,(5))] = ff(ss[5] = word_in(key, 5)); cx->ks[v(56,(6))] = ff(ss[6] = word_in(key, 6)); cx->ks[v(56,(7))] = ff(ss[7] = word_in(key, 7)); kdf8(cx->ks, 0); kd8(cx->ks, 1); kd8(cx->ks, 2); kd8(cx->ks, 3); kd8(cx->ks, 4); kd8(cx->ks, 5); kdl8(cx->ks, 6); #else cx->ks[v(56,(4))] = ss[4] = word_in(key, 4); cx->ks[v(56,(5))] = ss[5] = word_in(key, 5); cx->ks[v(56,(6))] = ss[6] = word_in(key, 6); cx->ks[v(56,(7))] = ss[7] = word_in(key, 7); { uint_32t i; for(i = 0; i < 6; ++i) k8e(cx->ks, i); k8ef(cx->ks, 6); #if !(DEC_ROUND == NO_TABLES) for(i = N_COLS; i < 14 * N_COLS; ++i) cx->ks[i] = inv_mcol(cx->ks[i]); #endif } #endif cx->inf.l = 0; cx->inf.b[0] = 14 * 16; #ifdef USE_VIA_ACE_IF_PRESENT if(VIA_ACE_AVAILABLE) cx->inf.b[1] = 0xff; #endif return EXIT_SUCCESS; } #endif #if defined( AES_VAR ) AES_RETURN aes_decrypt_key(const unsigned char *key, int key_len, aes_decrypt_ctx cx[1]) { switch(key_len) { case 16: case 128: return aes_decrypt_key128(key, cx); case 24: case 192: return aes_decrypt_key192(key, cx); case 32: case 256: return aes_decrypt_key256(key, cx); default: return EXIT_FAILURE; } } #endif #endif #if defined(__cplusplus) } #endif ================================================ FILE: BNN/cpp/minizip/aes/aesopt.h ================================================ /* --------------------------------------------------------------------------- Copyright (c) 1998-2010, Brian Gladman, Worcester, UK. All rights reserved. The redistribution and use of this software (with or without changes) is allowed without the payment of fees or royalties provided that: source code distributions include the above copyright notice, this list of conditions and the following disclaimer; binary distributions include the above copyright notice, this list of conditions and the following disclaimer in their documentation. This software is provided 'as is' with no explicit or implied warranties in respect of its operation, including, but not limited to, correctness and fitness for purpose. --------------------------------------------------------------------------- Issue Date: 20/12/2007 This file contains the compilation options for AES (Rijndael) and code that is common across encryption, key scheduling and table generation. OPERATION These source code files implement the AES algorithm Rijndael designed by Joan Daemen and Vincent Rijmen. This version is designed for the standard block size of 16 bytes and for key sizes of 128, 192 and 256 bits (16, 24 and 32 bytes). This version is designed for flexibility and speed using operations on 32-bit words rather than operations on bytes. It can be compiled with either big or little endian internal byte order but is faster when the native byte order for the processor is used. THE CIPHER INTERFACE The cipher interface is implemented as an array of bytes in which lower AES bit sequence indexes map to higher numeric significance within bytes. uint_8t (an unsigned 8-bit type) uint_32t (an unsigned 32-bit type) struct aes_encrypt_ctx (structure for the cipher encryption context) struct aes_decrypt_ctx (structure for the cipher decryption context) AES_RETURN the function return type C subroutine calls: AES_RETURN aes_encrypt_key128(const unsigned char *key, aes_encrypt_ctx cx[1]); AES_RETURN aes_encrypt_key192(const unsigned char *key, aes_encrypt_ctx cx[1]); AES_RETURN aes_encrypt_key256(const unsigned char *key, aes_encrypt_ctx cx[1]); AES_RETURN aes_encrypt(const unsigned char *in, unsigned char *out, const aes_encrypt_ctx cx[1]); AES_RETURN aes_decrypt_key128(const unsigned char *key, aes_decrypt_ctx cx[1]); AES_RETURN aes_decrypt_key192(const unsigned char *key, aes_decrypt_ctx cx[1]); AES_RETURN aes_decrypt_key256(const unsigned char *key, aes_decrypt_ctx cx[1]); AES_RETURN aes_decrypt(const unsigned char *in, unsigned char *out, const aes_decrypt_ctx cx[1]); IMPORTANT NOTE: If you are using this C interface with dynamic tables make sure that you call aes_init() before AES is used so that the tables are initialised. C++ aes class subroutines: Class AESencrypt for encryption Construtors: AESencrypt(void) AESencrypt(const unsigned char *key) - 128 bit key Members: AES_RETURN key128(const unsigned char *key) AES_RETURN key192(const unsigned char *key) AES_RETURN key256(const unsigned char *key) AES_RETURN encrypt(const unsigned char *in, unsigned char *out) const Class AESdecrypt for encryption Construtors: AESdecrypt(void) AESdecrypt(const unsigned char *key) - 128 bit key Members: AES_RETURN key128(const unsigned char *key) AES_RETURN key192(const unsigned char *key) AES_RETURN key256(const unsigned char *key) AES_RETURN decrypt(const unsigned char *in, unsigned char *out) const */ #if !defined( _AESOPT_H ) #define _AESOPT_H #if defined( __cplusplus ) #include "aescpp.h" #else #include "aes.h" #endif /* PLATFORM SPECIFIC INCLUDES */ #include "brg_endian.h" /* CONFIGURATION - THE USE OF DEFINES Later in this section there are a number of defines that control the operation of the code. In each section, the purpose of each define is explained so that the relevant form can be included or excluded by setting either 1's or 0's respectively on the branches of the related #if clauses. The following local defines should not be changed. */ #define ENCRYPTION_IN_C 1 #define DECRYPTION_IN_C 2 #define ENC_KEYING_IN_C 4 #define DEC_KEYING_IN_C 8 #define NO_TABLES 0 #define ONE_TABLE 1 #define FOUR_TABLES 4 #define NONE 0 #define PARTIAL 1 #define FULL 2 /* --- START OF USER CONFIGURED OPTIONS --- */ /* 1. BYTE ORDER WITHIN 32 BIT WORDS The fundamental data processing units in Rijndael are 8-bit bytes. The input, output and key input are all enumerated arrays of bytes in which bytes are numbered starting at zero and increasing to one less than the number of bytes in the array in question. This enumeration is only used for naming bytes and does not imply any adjacency or order relationship from one byte to another. When these inputs and outputs are considered as bit sequences, bits 8*n to 8*n+7 of the bit sequence are mapped to byte[n] with bit 8n+i in the sequence mapped to bit 7-i within the byte. In this implementation bits are numbered from 0 to 7 starting at the numerically least significant end of each byte (bit n represents 2^n). However, Rijndael can be implemented more efficiently using 32-bit words by packing bytes into words so that bytes 4*n to 4*n+3 are placed into word[n]. While in principle these bytes can be assembled into words in any positions, this implementation only supports the two formats in which bytes in adjacent positions within words also have adjacent byte numbers. This order is called big-endian if the lowest numbered bytes in words have the highest numeric significance and little-endian if the opposite applies. This code can work in either order irrespective of the order used by the machine on which it runs. Normally the internal byte order will be set to the order of the processor on which the code is to be run but this define can be used to reverse this in special situations WARNING: Assembler code versions rely on PLATFORM_BYTE_ORDER being set. This define will hence be redefined later (in section 4) if necessary */ #if 1 # define ALGORITHM_BYTE_ORDER PLATFORM_BYTE_ORDER #elif 0 # define ALGORITHM_BYTE_ORDER IS_LITTLE_ENDIAN #elif 0 # define ALGORITHM_BYTE_ORDER IS_BIG_ENDIAN #else # error The algorithm byte order is not defined #endif /* 2. VIA ACE SUPPORT */ #if !defined(__APPLE__) && defined( __GNUC__ ) && defined( __i386__ ) \ || defined( _WIN32 ) && defined( _M_IX86 ) \ && !(defined( _WIN64 ) || defined( _WIN32_WCE ) || defined( _MSC_VER ) && ( _MSC_VER <= 800 )) # define VIA_ACE_POSSIBLE #endif /* Define this option if support for the VIA ACE is required. This uses inline assembler instructions and is only implemented for the Microsoft, Intel and GCC compilers. If VIA ACE is known to be present, then defining ASSUME_VIA_ACE_PRESENT will remove the ordinary encryption/decryption code. If USE_VIA_ACE_IF_PRESENT is defined then VIA ACE will be used if it is detected (both present and enabled) but the normal AES code will also be present. When VIA ACE is to be used, all AES encryption contexts MUST be 16 byte aligned; other input/output buffers do not need to be 16 byte aligned but there are very large performance gains if this can be arranged. VIA ACE also requires the decryption key schedule to be in reverse order (which later checks below ensure). */ #if 1 && defined( VIA_ACE_POSSIBLE ) && !defined( USE_VIA_ACE_IF_PRESENT ) # define USE_VIA_ACE_IF_PRESENT #endif #if 0 && defined( VIA_ACE_POSSIBLE ) && !defined( ASSUME_VIA_ACE_PRESENT ) # define ASSUME_VIA_ACE_PRESENT # endif /* 3. ASSEMBLER SUPPORT This define (which can be on the command line) enables the use of the assembler code routines for encryption, decryption and key scheduling as follows: ASM_X86_V1C uses the assembler (aes_x86_v1.asm) with large tables for encryption and decryption and but with key scheduling in C ASM_X86_V2 uses assembler (aes_x86_v2.asm) with compressed tables for encryption, decryption and key scheduling ASM_X86_V2C uses assembler (aes_x86_v2.asm) with compressed tables for encryption and decryption and but with key scheduling in C ASM_AMD64_C uses assembler (aes_amd64.asm) with compressed tables for encryption and decryption and but with key scheduling in C Change one 'if 0' below to 'if 1' to select the version or define as a compilation option. */ #if 0 && !defined( ASM_X86_V1C ) # define ASM_X86_V1C #elif 0 && !defined( ASM_X86_V2 ) # define ASM_X86_V2 #elif 0 && !defined( ASM_X86_V2C ) # define ASM_X86_V2C #elif 0 && !defined( ASM_AMD64_C ) # define ASM_AMD64_C #endif #if (defined ( ASM_X86_V1C ) || defined( ASM_X86_V2 ) || defined( ASM_X86_V2C )) \ && !defined( _M_IX86 ) || defined( ASM_AMD64_C ) && !defined( _M_X64 ) # error Assembler code is only available for x86 and AMD64 systems #endif /* 4. FAST INPUT/OUTPUT OPERATIONS. On some machines it is possible to improve speed by transferring the bytes in the input and output arrays to and from the internal 32-bit variables by addressing these arrays as if they are arrays of 32-bit words. On some machines this will always be possible but there may be a large performance penalty if the byte arrays are not aligned on the normal word boundaries. On other machines this technique will lead to memory access errors when such 32-bit word accesses are not properly aligned. The option SAFE_IO avoids such problems but will often be slower on those machines that support misaligned access (especially so if care is taken to align the input and output byte arrays on 32-bit word boundaries). If SAFE_IO is not defined it is assumed that access to byte arrays as if they are arrays of 32-bit words will not cause problems when such accesses are misaligned. */ #if 1 && !defined( _MSC_VER ) # define SAFE_IO #endif /* 5. LOOP UNROLLING The code for encryption and decrytpion cycles through a number of rounds that can be implemented either in a loop or by expanding the code into a long sequence of instructions, the latter producing a larger program but one that will often be much faster. The latter is called loop unrolling. There are also potential speed advantages in expanding two iterations in a loop with half the number of iterations, which is called partial loop unrolling. The following options allow partial or full loop unrolling to be set independently for encryption and decryption */ #if 1 # define ENC_UNROLL FULL #elif 0 # define ENC_UNROLL PARTIAL #else # define ENC_UNROLL NONE #endif #if 1 # define DEC_UNROLL FULL #elif 0 # define DEC_UNROLL PARTIAL #else # define DEC_UNROLL NONE #endif #if 1 # define ENC_KS_UNROLL #endif #if 1 # define DEC_KS_UNROLL #endif /* 6. FAST FINITE FIELD OPERATIONS If this section is included, tables are used to provide faster finite field arithmetic (this has no effect if FIXED_TABLES is defined). */ #if 1 # define FF_TABLES #endif /* 7. INTERNAL STATE VARIABLE FORMAT The internal state of Rijndael is stored in a number of local 32-bit word varaibles which can be defined either as an array or as individual names variables. Include this section if you want to store these local varaibles in arrays. Otherwise individual local variables will be used. */ #if 1 # define ARRAYS #endif /* 8. FIXED OR DYNAMIC TABLES When this section is included the tables used by the code are compiled statically into the binary file. Otherwise the subroutine aes_init() must be called to compute them before the code is first used. */ #if 1 && !(defined( _MSC_VER ) && ( _MSC_VER <= 800 )) # define FIXED_TABLES #endif /* 9. MASKING OR CASTING FROM LONGER VALUES TO BYTES In some systems it is better to mask longer values to extract bytes rather than using a cast. This option allows this choice. */ #if 0 # define to_byte(x) ((uint_8t)(x)) #else # define to_byte(x) ((x) & 0xff) #endif /* 10. TABLE ALIGNMENT On some sytsems speed will be improved by aligning the AES large lookup tables on particular boundaries. This define should be set to a power of two giving the desired alignment. It can be left undefined if alignment is not needed. This option is specific to the Microsft VC++ compiler - it seems to sometimes cause trouble for the VC++ version 6 compiler. */ #if 1 && defined( _MSC_VER ) && ( _MSC_VER >= 1300 ) # define TABLE_ALIGN 32 #endif /* 11. REDUCE CODE AND TABLE SIZE This replaces some expanded macros with function calls if AES_ASM_V2 or AES_ASM_V2C are defined */ #if 1 && (defined( ASM_X86_V2 ) || defined( ASM_X86_V2C )) # define REDUCE_CODE_SIZE #endif /* 12. TABLE OPTIONS This cipher proceeds by repeating in a number of cycles known as 'rounds' which are implemented by a round function which can optionally be speeded up using tables. The basic tables are each 256 32-bit words, with either one or four tables being required for each round function depending on how much speed is required. The encryption and decryption round functions are different and the last encryption and decrytpion round functions are different again making four different round functions in all. This means that: 1. Normal encryption and decryption rounds can each use either 0, 1 or 4 tables and table spaces of 0, 1024 or 4096 bytes each. 2. The last encryption and decryption rounds can also use either 0, 1 or 4 tables and table spaces of 0, 1024 or 4096 bytes each. Include or exclude the appropriate definitions below to set the number of tables used by this implementation. */ #if 1 /* set tables for the normal encryption round */ # define ENC_ROUND FOUR_TABLES #elif 0 # define ENC_ROUND ONE_TABLE #else # define ENC_ROUND NO_TABLES #endif #if 1 /* set tables for the last encryption round */ # define LAST_ENC_ROUND FOUR_TABLES #elif 0 # define LAST_ENC_ROUND ONE_TABLE #else # define LAST_ENC_ROUND NO_TABLES #endif #if 1 /* set tables for the normal decryption round */ # define DEC_ROUND FOUR_TABLES #elif 0 # define DEC_ROUND ONE_TABLE #else # define DEC_ROUND NO_TABLES #endif #if 1 /* set tables for the last decryption round */ # define LAST_DEC_ROUND FOUR_TABLES #elif 0 # define LAST_DEC_ROUND ONE_TABLE #else # define LAST_DEC_ROUND NO_TABLES #endif /* The decryption key schedule can be speeded up with tables in the same way that the round functions can. Include or exclude the following defines to set this requirement. */ #if 1 # define KEY_SCHED FOUR_TABLES #elif 0 # define KEY_SCHED ONE_TABLE #else # define KEY_SCHED NO_TABLES #endif /* ---- END OF USER CONFIGURED OPTIONS ---- */ /* VIA ACE support is only available for VC++ and GCC */ #if !defined( _MSC_VER ) && !defined( __GNUC__ ) # if defined( ASSUME_VIA_ACE_PRESENT ) # undef ASSUME_VIA_ACE_PRESENT # endif # if defined( USE_VIA_ACE_IF_PRESENT ) # undef USE_VIA_ACE_IF_PRESENT # endif #endif #if defined( ASSUME_VIA_ACE_PRESENT ) && !defined( USE_VIA_ACE_IF_PRESENT ) # define USE_VIA_ACE_IF_PRESENT #endif #if defined( USE_VIA_ACE_IF_PRESENT ) && !defined ( AES_REV_DKS ) # define AES_REV_DKS #endif /* Assembler support requires the use of platform byte order */ #if ( defined( ASM_X86_V1C ) || defined( ASM_X86_V2C ) || defined( ASM_AMD64_C ) ) \ && (ALGORITHM_BYTE_ORDER != PLATFORM_BYTE_ORDER) # undef ALGORITHM_BYTE_ORDER # define ALGORITHM_BYTE_ORDER PLATFORM_BYTE_ORDER #endif /* In this implementation the columns of the state array are each held in 32-bit words. The state array can be held in various ways: in an array of words, in a number of individual word variables or in a number of processor registers. The following define maps a variable name x and a column number c to the way the state array variable is to be held. The first define below maps the state into an array x[c] whereas the second form maps the state into a number of individual variables x0, x1, etc. Another form could map individual state colums to machine register names. */ #if defined( ARRAYS ) # define s(x,c) x[c] #else # define s(x,c) x##c #endif /* This implementation provides subroutines for encryption, decryption and for setting the three key lengths (separately) for encryption and decryption. Since not all functions are needed, masks are set up here to determine which will be implemented in C */ #if !defined( AES_ENCRYPT ) # define EFUNCS_IN_C 0 #elif defined( ASSUME_VIA_ACE_PRESENT ) || defined( ASM_X86_V1C ) \ || defined( ASM_X86_V2C ) || defined( ASM_AMD64_C ) # define EFUNCS_IN_C ENC_KEYING_IN_C #elif !defined( ASM_X86_V2 ) # define EFUNCS_IN_C ( ENCRYPTION_IN_C | ENC_KEYING_IN_C ) #else # define EFUNCS_IN_C 0 #endif #if !defined( AES_DECRYPT ) # define DFUNCS_IN_C 0 #elif defined( ASSUME_VIA_ACE_PRESENT ) || defined( ASM_X86_V1C ) \ || defined( ASM_X86_V2C ) || defined( ASM_AMD64_C ) # define DFUNCS_IN_C DEC_KEYING_IN_C #elif !defined( ASM_X86_V2 ) # define DFUNCS_IN_C ( DECRYPTION_IN_C | DEC_KEYING_IN_C ) #else # define DFUNCS_IN_C 0 #endif #define FUNCS_IN_C ( EFUNCS_IN_C | DFUNCS_IN_C ) /* END OF CONFIGURATION OPTIONS */ #define RC_LENGTH (5 * (AES_BLOCK_SIZE / 4 - 2)) /* Disable or report errors on some combinations of options */ #if ENC_ROUND == NO_TABLES && LAST_ENC_ROUND != NO_TABLES # undef LAST_ENC_ROUND # define LAST_ENC_ROUND NO_TABLES #elif ENC_ROUND == ONE_TABLE && LAST_ENC_ROUND == FOUR_TABLES # undef LAST_ENC_ROUND # define LAST_ENC_ROUND ONE_TABLE #endif #if ENC_ROUND == NO_TABLES && ENC_UNROLL != NONE # undef ENC_UNROLL # define ENC_UNROLL NONE #endif #if DEC_ROUND == NO_TABLES && LAST_DEC_ROUND != NO_TABLES # undef LAST_DEC_ROUND # define LAST_DEC_ROUND NO_TABLES #elif DEC_ROUND == ONE_TABLE && LAST_DEC_ROUND == FOUR_TABLES # undef LAST_DEC_ROUND # define LAST_DEC_ROUND ONE_TABLE #endif #if DEC_ROUND == NO_TABLES && DEC_UNROLL != NONE # undef DEC_UNROLL # define DEC_UNROLL NONE #endif #if defined( bswap32 ) # define aes_sw32 bswap32 #elif defined( bswap_32 ) # define aes_sw32 bswap_32 #else # define brot(x,n) (((uint_32t)(x) << n) | ((uint_32t)(x) >> (32 - n))) # define aes_sw32(x) ((brot((x),8) & 0x00ff00ff) | (brot((x),24) & 0xff00ff00)) #endif /* upr(x,n): rotates bytes within words by n positions, moving bytes to higher index positions with wrap around into low positions ups(x,n): moves bytes by n positions to higher index positions in words but without wrap around bval(x,n): extracts a byte from a word WARNING: The definitions given here are intended only for use with unsigned variables and with shift counts that are compile time constants */ #if ( ALGORITHM_BYTE_ORDER == IS_LITTLE_ENDIAN ) # define upr(x,n) (((uint_32t)(x) << (8 * (n))) | ((uint_32t)(x) >> (32 - 8 * (n)))) # define ups(x,n) ((uint_32t) (x) << (8 * (n))) # define bval(x,n) to_byte((x) >> (8 * (n))) # define bytes2word(b0, b1, b2, b3) \ (((uint_32t)(b3) << 24) | ((uint_32t)(b2) << 16) | ((uint_32t)(b1) << 8) | (b0)) #endif #if ( ALGORITHM_BYTE_ORDER == IS_BIG_ENDIAN ) # define upr(x,n) (((uint_32t)(x) >> (8 * (n))) | ((uint_32t)(x) << (32 - 8 * (n)))) # define ups(x,n) ((uint_32t) (x) >> (8 * (n))) # define bval(x,n) to_byte((x) >> (24 - 8 * (n))) # define bytes2word(b0, b1, b2, b3) \ (((uint_32t)(b0) << 24) | ((uint_32t)(b1) << 16) | ((uint_32t)(b2) << 8) | (b3)) #endif #if defined( SAFE_IO ) # define word_in(x,c) bytes2word(((const uint_8t*)(x)+4*c)[0], ((const uint_8t*)(x)+4*c)[1], \ ((const uint_8t*)(x)+4*c)[2], ((const uint_8t*)(x)+4*c)[3]) # define word_out(x,c,v) { ((uint_8t*)(x)+4*c)[0] = bval(v,0); ((uint_8t*)(x)+4*c)[1] = bval(v,1); \ ((uint_8t*)(x)+4*c)[2] = bval(v,2); ((uint_8t*)(x)+4*c)[3] = bval(v,3); } #elif ( ALGORITHM_BYTE_ORDER == PLATFORM_BYTE_ORDER ) # define word_in(x,c) (*((uint_32t*)(x)+(c))) # define word_out(x,c,v) (*((uint_32t*)(x)+(c)) = (v)) #else # define word_in(x,c) aes_sw32(*((uint_32t*)(x)+(c))) # define word_out(x,c,v) (*((uint_32t*)(x)+(c)) = aes_sw32(v)) #endif /* the finite field modular polynomial and elements */ #define WPOLY 0x011b #define BPOLY 0x1b /* multiply four bytes in GF(2^8) by 'x' {02} in parallel */ #define gf_c1 0x80808080 #define gf_c2 0x7f7f7f7f #define gf_mulx(x) ((((x) & gf_c2) << 1) ^ ((((x) & gf_c1) >> 7) * BPOLY)) /* The following defines provide alternative definitions of gf_mulx that might give improved performance if a fast 32-bit multiply is not available. Note that a temporary variable u needs to be defined where gf_mulx is used. #define gf_mulx(x) (u = (x) & gf_c1, u |= (u >> 1), ((x) & gf_c2) << 1) ^ ((u >> 3) | (u >> 6)) #define gf_c4 (0x01010101 * BPOLY) #define gf_mulx(x) (u = (x) & gf_c1, ((x) & gf_c2) << 1) ^ ((u - (u >> 7)) & gf_c4) */ /* Work out which tables are needed for the different options */ #if defined( ASM_X86_V1C ) # if defined( ENC_ROUND ) # undef ENC_ROUND # endif # define ENC_ROUND FOUR_TABLES # if defined( LAST_ENC_ROUND ) # undef LAST_ENC_ROUND # endif # define LAST_ENC_ROUND FOUR_TABLES # if defined( DEC_ROUND ) # undef DEC_ROUND # endif # define DEC_ROUND FOUR_TABLES # if defined( LAST_DEC_ROUND ) # undef LAST_DEC_ROUND # endif # define LAST_DEC_ROUND FOUR_TABLES # if defined( KEY_SCHED ) # undef KEY_SCHED # define KEY_SCHED FOUR_TABLES # endif #endif #if ( FUNCS_IN_C & ENCRYPTION_IN_C ) || defined( ASM_X86_V1C ) # if ENC_ROUND == ONE_TABLE # define FT1_SET # elif ENC_ROUND == FOUR_TABLES # define FT4_SET # else # define SBX_SET # endif # if LAST_ENC_ROUND == ONE_TABLE # define FL1_SET # elif LAST_ENC_ROUND == FOUR_TABLES # define FL4_SET # elif !defined( SBX_SET ) # define SBX_SET # endif #endif #if ( FUNCS_IN_C & DECRYPTION_IN_C ) || defined( ASM_X86_V1C ) # if DEC_ROUND == ONE_TABLE # define IT1_SET # elif DEC_ROUND == FOUR_TABLES # define IT4_SET # else # define ISB_SET # endif # if LAST_DEC_ROUND == ONE_TABLE # define IL1_SET # elif LAST_DEC_ROUND == FOUR_TABLES # define IL4_SET # elif !defined(ISB_SET) # define ISB_SET # endif #endif #if !(defined( REDUCE_CODE_SIZE ) && (defined( ASM_X86_V2 ) || defined( ASM_X86_V2C ))) # if ((FUNCS_IN_C & ENC_KEYING_IN_C) || (FUNCS_IN_C & DEC_KEYING_IN_C)) # if KEY_SCHED == ONE_TABLE # if !defined( FL1_SET ) && !defined( FL4_SET ) # define LS1_SET # endif # elif KEY_SCHED == FOUR_TABLES # if !defined( FL4_SET ) # define LS4_SET # endif # elif !defined( SBX_SET ) # define SBX_SET # endif # endif # if (FUNCS_IN_C & DEC_KEYING_IN_C) # if KEY_SCHED == ONE_TABLE # define IM1_SET # elif KEY_SCHED == FOUR_TABLES # define IM4_SET # elif !defined( SBX_SET ) # define SBX_SET # endif # endif #endif /* generic definitions of Rijndael macros that use tables */ #define no_table(x,box,vf,rf,c) bytes2word( \ box[bval(vf(x,0,c),rf(0,c))], \ box[bval(vf(x,1,c),rf(1,c))], \ box[bval(vf(x,2,c),rf(2,c))], \ box[bval(vf(x,3,c),rf(3,c))]) #define one_table(x,op,tab,vf,rf,c) \ ( tab[bval(vf(x,0,c),rf(0,c))] \ ^ op(tab[bval(vf(x,1,c),rf(1,c))],1) \ ^ op(tab[bval(vf(x,2,c),rf(2,c))],2) \ ^ op(tab[bval(vf(x,3,c),rf(3,c))],3)) #define four_tables(x,tab,vf,rf,c) \ ( tab[0][bval(vf(x,0,c),rf(0,c))] \ ^ tab[1][bval(vf(x,1,c),rf(1,c))] \ ^ tab[2][bval(vf(x,2,c),rf(2,c))] \ ^ tab[3][bval(vf(x,3,c),rf(3,c))]) #define vf1(x,r,c) (x) #define rf1(r,c) (r) #define rf2(r,c) ((8+r-c)&3) /* perform forward and inverse column mix operation on four bytes in long word x in */ /* parallel. NOTE: x must be a simple variable, NOT an expression in these macros. */ #if !(defined( REDUCE_CODE_SIZE ) && (defined( ASM_X86_V2 ) || defined( ASM_X86_V2C ))) #if defined( FM4_SET ) /* not currently used */ # define fwd_mcol(x) four_tables(x,t_use(f,m),vf1,rf1,0) #elif defined( FM1_SET ) /* not currently used */ # define fwd_mcol(x) one_table(x,upr,t_use(f,m),vf1,rf1,0) #else # define dec_fmvars uint_32t g2 # define fwd_mcol(x) (g2 = gf_mulx(x), g2 ^ upr((x) ^ g2, 3) ^ upr((x), 2) ^ upr((x), 1)) #endif #if defined( IM4_SET ) # define inv_mcol(x) four_tables(x,t_use(i,m),vf1,rf1,0) #elif defined( IM1_SET ) # define inv_mcol(x) one_table(x,upr,t_use(i,m),vf1,rf1,0) #else # define dec_imvars uint_32t g2, g4, g9 # define inv_mcol(x) (g2 = gf_mulx(x), g4 = gf_mulx(g2), g9 = (x) ^ gf_mulx(g4), g4 ^= g9, \ (x) ^ g2 ^ g4 ^ upr(g2 ^ g9, 3) ^ upr(g4, 2) ^ upr(g9, 1)) #endif #if defined( FL4_SET ) # define ls_box(x,c) four_tables(x,t_use(f,l),vf1,rf2,c) #elif defined( LS4_SET ) # define ls_box(x,c) four_tables(x,t_use(l,s),vf1,rf2,c) #elif defined( FL1_SET ) # define ls_box(x,c) one_table(x,upr,t_use(f,l),vf1,rf2,c) #elif defined( LS1_SET ) # define ls_box(x,c) one_table(x,upr,t_use(l,s),vf1,rf2,c) #else # define ls_box(x,c) no_table(x,t_use(s,box),vf1,rf2,c) #endif #endif #if defined( ASM_X86_V1C ) && defined( AES_DECRYPT ) && !defined( ISB_SET ) # define ISB_SET #endif #endif ================================================ FILE: BNN/cpp/minizip/aes/aestab.c ================================================ /* --------------------------------------------------------------------------- Copyright (c) 1998-2010, Brian Gladman, Worcester, UK. All rights reserved. The redistribution and use of this software (with or without changes) is allowed without the payment of fees or royalties provided that: source code distributions include the above copyright notice, this list of conditions and the following disclaimer; binary distributions include the above copyright notice, this list of conditions and the following disclaimer in their documentation. This software is provided 'as is' with no explicit or implied warranties in respect of its operation, including, but not limited to, correctness and fitness for purpose. --------------------------------------------------------------------------- Issue Date: 20/12/2007 */ #define DO_TABLES #include "aes.h" #include "aesopt.h" #if defined(FIXED_TABLES) #define sb_data(w) {\ w(0x63), w(0x7c), w(0x77), w(0x7b), w(0xf2), w(0x6b), w(0x6f), w(0xc5),\ w(0x30), w(0x01), w(0x67), w(0x2b), w(0xfe), w(0xd7), w(0xab), w(0x76),\ w(0xca), w(0x82), w(0xc9), w(0x7d), w(0xfa), w(0x59), w(0x47), w(0xf0),\ w(0xad), w(0xd4), w(0xa2), w(0xaf), w(0x9c), w(0xa4), w(0x72), w(0xc0),\ w(0xb7), w(0xfd), w(0x93), w(0x26), w(0x36), w(0x3f), w(0xf7), w(0xcc),\ w(0x34), w(0xa5), w(0xe5), w(0xf1), w(0x71), w(0xd8), w(0x31), w(0x15),\ w(0x04), w(0xc7), w(0x23), w(0xc3), w(0x18), w(0x96), w(0x05), w(0x9a),\ w(0x07), w(0x12), w(0x80), w(0xe2), w(0xeb), w(0x27), w(0xb2), w(0x75),\ w(0x09), w(0x83), w(0x2c), w(0x1a), w(0x1b), w(0x6e), w(0x5a), w(0xa0),\ w(0x52), w(0x3b), w(0xd6), w(0xb3), w(0x29), w(0xe3), w(0x2f), w(0x84),\ w(0x53), w(0xd1), w(0x00), w(0xed), w(0x20), w(0xfc), w(0xb1), w(0x5b),\ w(0x6a), w(0xcb), w(0xbe), w(0x39), w(0x4a), w(0x4c), w(0x58), w(0xcf),\ w(0xd0), w(0xef), w(0xaa), w(0xfb), w(0x43), w(0x4d), w(0x33), w(0x85),\ w(0x45), w(0xf9), w(0x02), w(0x7f), w(0x50), w(0x3c), w(0x9f), w(0xa8),\ w(0x51), w(0xa3), w(0x40), w(0x8f), w(0x92), w(0x9d), w(0x38), w(0xf5),\ w(0xbc), w(0xb6), w(0xda), w(0x21), w(0x10), w(0xff), w(0xf3), w(0xd2),\ w(0xcd), w(0x0c), w(0x13), w(0xec), w(0x5f), w(0x97), w(0x44), w(0x17),\ w(0xc4), w(0xa7), w(0x7e), w(0x3d), w(0x64), w(0x5d), w(0x19), w(0x73),\ w(0x60), w(0x81), w(0x4f), w(0xdc), w(0x22), w(0x2a), w(0x90), w(0x88),\ w(0x46), w(0xee), w(0xb8), w(0x14), w(0xde), w(0x5e), w(0x0b), w(0xdb),\ w(0xe0), w(0x32), w(0x3a), w(0x0a), w(0x49), w(0x06), w(0x24), w(0x5c),\ w(0xc2), w(0xd3), w(0xac), w(0x62), w(0x91), w(0x95), w(0xe4), w(0x79),\ w(0xe7), w(0xc8), w(0x37), w(0x6d), w(0x8d), w(0xd5), w(0x4e), w(0xa9),\ w(0x6c), w(0x56), w(0xf4), w(0xea), w(0x65), w(0x7a), w(0xae), w(0x08),\ w(0xba), w(0x78), w(0x25), w(0x2e), w(0x1c), w(0xa6), w(0xb4), w(0xc6),\ w(0xe8), w(0xdd), w(0x74), w(0x1f), w(0x4b), w(0xbd), w(0x8b), w(0x8a),\ w(0x70), w(0x3e), w(0xb5), w(0x66), w(0x48), w(0x03), w(0xf6), w(0x0e),\ w(0x61), w(0x35), w(0x57), w(0xb9), w(0x86), w(0xc1), w(0x1d), w(0x9e),\ w(0xe1), w(0xf8), w(0x98), w(0x11), w(0x69), w(0xd9), w(0x8e), w(0x94),\ w(0x9b), w(0x1e), w(0x87), w(0xe9), w(0xce), w(0x55), w(0x28), w(0xdf),\ w(0x8c), w(0xa1), w(0x89), w(0x0d), w(0xbf), w(0xe6), w(0x42), w(0x68),\ w(0x41), w(0x99), w(0x2d), w(0x0f), w(0xb0), w(0x54), w(0xbb), w(0x16) } #define isb_data(w) {\ w(0x52), w(0x09), w(0x6a), w(0xd5), w(0x30), w(0x36), w(0xa5), w(0x38),\ w(0xbf), w(0x40), w(0xa3), w(0x9e), w(0x81), w(0xf3), w(0xd7), w(0xfb),\ w(0x7c), w(0xe3), w(0x39), w(0x82), w(0x9b), w(0x2f), w(0xff), w(0x87),\ w(0x34), w(0x8e), w(0x43), w(0x44), w(0xc4), w(0xde), w(0xe9), w(0xcb),\ w(0x54), w(0x7b), w(0x94), w(0x32), w(0xa6), w(0xc2), w(0x23), w(0x3d),\ w(0xee), w(0x4c), w(0x95), w(0x0b), w(0x42), w(0xfa), w(0xc3), w(0x4e),\ w(0x08), w(0x2e), w(0xa1), w(0x66), w(0x28), w(0xd9), w(0x24), w(0xb2),\ w(0x76), w(0x5b), w(0xa2), w(0x49), w(0x6d), w(0x8b), w(0xd1), w(0x25),\ w(0x72), w(0xf8), w(0xf6), w(0x64), w(0x86), w(0x68), w(0x98), w(0x16),\ w(0xd4), w(0xa4), w(0x5c), w(0xcc), w(0x5d), w(0x65), w(0xb6), w(0x92),\ w(0x6c), w(0x70), w(0x48), w(0x50), w(0xfd), w(0xed), w(0xb9), w(0xda),\ w(0x5e), w(0x15), w(0x46), w(0x57), w(0xa7), w(0x8d), w(0x9d), w(0x84),\ w(0x90), w(0xd8), w(0xab), w(0x00), w(0x8c), w(0xbc), w(0xd3), w(0x0a),\ w(0xf7), w(0xe4), w(0x58), w(0x05), w(0xb8), w(0xb3), w(0x45), w(0x06),\ w(0xd0), w(0x2c), w(0x1e), w(0x8f), w(0xca), w(0x3f), w(0x0f), w(0x02),\ w(0xc1), w(0xaf), w(0xbd), w(0x03), w(0x01), w(0x13), w(0x8a), w(0x6b),\ w(0x3a), w(0x91), w(0x11), w(0x41), w(0x4f), w(0x67), w(0xdc), w(0xea),\ w(0x97), w(0xf2), w(0xcf), w(0xce), w(0xf0), w(0xb4), w(0xe6), w(0x73),\ w(0x96), w(0xac), w(0x74), w(0x22), w(0xe7), w(0xad), w(0x35), w(0x85),\ w(0xe2), w(0xf9), w(0x37), w(0xe8), w(0x1c), w(0x75), w(0xdf), w(0x6e),\ w(0x47), w(0xf1), w(0x1a), w(0x71), w(0x1d), w(0x29), w(0xc5), w(0x89),\ w(0x6f), w(0xb7), w(0x62), w(0x0e), w(0xaa), w(0x18), w(0xbe), w(0x1b),\ w(0xfc), w(0x56), w(0x3e), w(0x4b), w(0xc6), w(0xd2), w(0x79), w(0x20),\ w(0x9a), w(0xdb), w(0xc0), w(0xfe), w(0x78), w(0xcd), w(0x5a), w(0xf4),\ w(0x1f), w(0xdd), w(0xa8), w(0x33), w(0x88), w(0x07), w(0xc7), w(0x31),\ w(0xb1), w(0x12), w(0x10), w(0x59), w(0x27), w(0x80), w(0xec), w(0x5f),\ w(0x60), w(0x51), w(0x7f), w(0xa9), w(0x19), w(0xb5), w(0x4a), w(0x0d),\ w(0x2d), w(0xe5), w(0x7a), w(0x9f), w(0x93), w(0xc9), w(0x9c), w(0xef),\ w(0xa0), w(0xe0), w(0x3b), w(0x4d), w(0xae), w(0x2a), w(0xf5), w(0xb0),\ w(0xc8), w(0xeb), w(0xbb), w(0x3c), w(0x83), w(0x53), w(0x99), w(0x61),\ w(0x17), w(0x2b), w(0x04), w(0x7e), w(0xba), w(0x77), w(0xd6), w(0x26),\ w(0xe1), w(0x69), w(0x14), w(0x63), w(0x55), w(0x21), w(0x0c), w(0x7d) } #define mm_data(w) {\ w(0x00), w(0x01), w(0x02), w(0x03), w(0x04), w(0x05), w(0x06), w(0x07),\ w(0x08), w(0x09), w(0x0a), w(0x0b), w(0x0c), w(0x0d), w(0x0e), w(0x0f),\ w(0x10), w(0x11), w(0x12), w(0x13), w(0x14), w(0x15), w(0x16), w(0x17),\ w(0x18), w(0x19), w(0x1a), w(0x1b), w(0x1c), w(0x1d), w(0x1e), w(0x1f),\ w(0x20), w(0x21), w(0x22), w(0x23), w(0x24), w(0x25), w(0x26), w(0x27),\ w(0x28), w(0x29), w(0x2a), w(0x2b), w(0x2c), w(0x2d), w(0x2e), w(0x2f),\ w(0x30), w(0x31), w(0x32), w(0x33), w(0x34), w(0x35), w(0x36), w(0x37),\ w(0x38), w(0x39), w(0x3a), w(0x3b), w(0x3c), w(0x3d), w(0x3e), w(0x3f),\ w(0x40), w(0x41), w(0x42), w(0x43), w(0x44), w(0x45), w(0x46), w(0x47),\ w(0x48), w(0x49), w(0x4a), w(0x4b), w(0x4c), w(0x4d), w(0x4e), w(0x4f),\ w(0x50), w(0x51), w(0x52), w(0x53), w(0x54), w(0x55), w(0x56), w(0x57),\ w(0x58), w(0x59), w(0x5a), w(0x5b), w(0x5c), w(0x5d), w(0x5e), w(0x5f),\ w(0x60), w(0x61), w(0x62), w(0x63), w(0x64), w(0x65), w(0x66), w(0x67),\ w(0x68), w(0x69), w(0x6a), w(0x6b), w(0x6c), w(0x6d), w(0x6e), w(0x6f),\ w(0x70), w(0x71), w(0x72), w(0x73), w(0x74), w(0x75), w(0x76), w(0x77),\ w(0x78), w(0x79), w(0x7a), w(0x7b), w(0x7c), w(0x7d), w(0x7e), w(0x7f),\ w(0x80), w(0x81), w(0x82), w(0x83), w(0x84), w(0x85), w(0x86), w(0x87),\ w(0x88), w(0x89), w(0x8a), w(0x8b), w(0x8c), w(0x8d), w(0x8e), w(0x8f),\ w(0x90), w(0x91), w(0x92), w(0x93), w(0x94), w(0x95), w(0x96), w(0x97),\ w(0x98), w(0x99), w(0x9a), w(0x9b), w(0x9c), w(0x9d), w(0x9e), w(0x9f),\ w(0xa0), w(0xa1), w(0xa2), w(0xa3), w(0xa4), w(0xa5), w(0xa6), w(0xa7),\ w(0xa8), w(0xa9), w(0xaa), w(0xab), w(0xac), w(0xad), w(0xae), w(0xaf),\ w(0xb0), w(0xb1), w(0xb2), w(0xb3), w(0xb4), w(0xb5), w(0xb6), w(0xb7),\ w(0xb8), w(0xb9), w(0xba), w(0xbb), w(0xbc), w(0xbd), w(0xbe), w(0xbf),\ w(0xc0), w(0xc1), w(0xc2), w(0xc3), w(0xc4), w(0xc5), w(0xc6), w(0xc7),\ w(0xc8), w(0xc9), w(0xca), w(0xcb), w(0xcc), w(0xcd), w(0xce), w(0xcf),\ w(0xd0), w(0xd1), w(0xd2), w(0xd3), w(0xd4), w(0xd5), w(0xd6), w(0xd7),\ w(0xd8), w(0xd9), w(0xda), w(0xdb), w(0xdc), w(0xdd), w(0xde), w(0xdf),\ w(0xe0), w(0xe1), w(0xe2), w(0xe3), w(0xe4), w(0xe5), w(0xe6), w(0xe7),\ w(0xe8), w(0xe9), w(0xea), w(0xeb), w(0xec), w(0xed), w(0xee), w(0xef),\ w(0xf0), w(0xf1), w(0xf2), w(0xf3), w(0xf4), w(0xf5), w(0xf6), w(0xf7),\ w(0xf8), w(0xf9), w(0xfa), w(0xfb), w(0xfc), w(0xfd), w(0xfe), w(0xff) } #define rc_data(w) {\ w(0x01), w(0x02), w(0x04), w(0x08), w(0x10),w(0x20), w(0x40), w(0x80),\ w(0x1b), w(0x36) } #define h0(x) (x) #define w0(p) bytes2word(p, 0, 0, 0) #define w1(p) bytes2word(0, p, 0, 0) #define w2(p) bytes2word(0, 0, p, 0) #define w3(p) bytes2word(0, 0, 0, p) #define u0(p) bytes2word(f2(p), p, p, f3(p)) #define u1(p) bytes2word(f3(p), f2(p), p, p) #define u2(p) bytes2word(p, f3(p), f2(p), p) #define u3(p) bytes2word(p, p, f3(p), f2(p)) #define v0(p) bytes2word(fe(p), f9(p), fd(p), fb(p)) #define v1(p) bytes2word(fb(p), fe(p), f9(p), fd(p)) #define v2(p) bytes2word(fd(p), fb(p), fe(p), f9(p)) #define v3(p) bytes2word(f9(p), fd(p), fb(p), fe(p)) #endif #if defined(FIXED_TABLES) || !defined(FF_TABLES) #define f2(x) ((x<<1) ^ (((x>>7) & 1) * WPOLY)) #define f4(x) ((x<<2) ^ (((x>>6) & 1) * WPOLY) ^ (((x>>6) & 2) * WPOLY)) #define f8(x) ((x<<3) ^ (((x>>5) & 1) * WPOLY) ^ (((x>>5) & 2) * WPOLY) \ ^ (((x>>5) & 4) * WPOLY)) #define f3(x) (f2(x) ^ x) #define f9(x) (f8(x) ^ x) #define fb(x) (f8(x) ^ f2(x) ^ x) #define fd(x) (f8(x) ^ f4(x) ^ x) #define fe(x) (f8(x) ^ f4(x) ^ f2(x)) #else #define f2(x) ((x) ? pow[log[x] + 0x19] : 0) #define f3(x) ((x) ? pow[log[x] + 0x01] : 0) #define f9(x) ((x) ? pow[log[x] + 0xc7] : 0) #define fb(x) ((x) ? pow[log[x] + 0x68] : 0) #define fd(x) ((x) ? pow[log[x] + 0xee] : 0) #define fe(x) ((x) ? pow[log[x] + 0xdf] : 0) #endif #include "aestab.h" #if defined(__cplusplus) extern "C" { #endif #if defined(FIXED_TABLES) /* implemented in case of wrong call for fixed tables */ AES_RETURN aes_init(void) { return EXIT_SUCCESS; } #else /* Generate the tables for the dynamic table option */ #if defined(FF_TABLES) #define gf_inv(x) ((x) ? pow[ 255 - log[x]] : 0) #else /* It will generally be sensible to use tables to compute finite field multiplies and inverses but where memory is scarse this code might sometimes be better. But it only has effect during initialisation so its pretty unimportant in overall terms. */ /* return 2 ^ (n - 1) where n is the bit number of the highest bit set in x with x in the range 1 < x < 0x00000200. This form is used so that locals within fi can be bytes rather than words */ static uint_8t hibit(const uint_32t x) { uint_8t r = (uint_8t)((x >> 1) | (x >> 2)); r |= (r >> 2); r |= (r >> 4); return (r + 1) >> 1; } /* return the inverse of the finite field element x */ static uint_8t gf_inv(const uint_8t x) { uint_8t p1 = x, p2 = BPOLY, n1 = hibit(x), n2 = 0x80, v1 = 1, v2 = 0; if(x < 2) return x; for( ; ; ) { if(n1) while(n2 >= n1) /* divide polynomial p2 by p1 */ { n2 /= n1; /* shift smaller polynomial left */ p2 ^= (p1 * n2) & 0xff; /* and remove from larger one */ v2 ^= v1 * n2; /* shift accumulated value and */ n2 = hibit(p2); /* add into result */ } else return v1; if(n2) /* repeat with values swapped */ while(n1 >= n2) { n1 /= n2; p1 ^= p2 * n1; v1 ^= v2 * n1; n1 = hibit(p1); } else return v2; } } #endif /* The forward and inverse affine transformations used in the S-box */ uint_8t fwd_affine(const uint_8t x) { uint_32t w = x; w ^= (w << 1) ^ (w << 2) ^ (w << 3) ^ (w << 4); return 0x63 ^ ((w ^ (w >> 8)) & 0xff); } uint_8t inv_affine(const uint_8t x) { uint_32t w = x; w = (w << 1) ^ (w << 3) ^ (w << 6); return 0x05 ^ ((w ^ (w >> 8)) & 0xff); } static int init = 0; AES_RETURN aes_init(void) { uint_32t i, w; #if defined(FF_TABLES) uint_8t pow[512], log[256]; if(init) return EXIT_SUCCESS; /* log and power tables for GF(2^8) finite field with WPOLY as modular polynomial - the simplest primitive root is 0x03, used here to generate the tables */ i = 0; w = 1; do { pow[i] = (uint_8t)w; pow[i + 255] = (uint_8t)w; log[w] = (uint_8t)i++; w ^= (w << 1) ^ (w & 0x80 ? WPOLY : 0); } while (w != 1); #else if(init) return EXIT_SUCCESS; #endif for(i = 0, w = 1; i < RC_LENGTH; ++i) { t_set(r,c)[i] = bytes2word(w, 0, 0, 0); w = f2(w); } for(i = 0; i < 256; ++i) { uint_8t b; b = fwd_affine(gf_inv((uint_8t)i)); w = bytes2word(f2(b), b, b, f3(b)); #if defined( SBX_SET ) t_set(s,box)[i] = b; #endif #if defined( FT1_SET ) /* tables for a normal encryption round */ t_set(f,n)[i] = w; #endif #if defined( FT4_SET ) t_set(f,n)[0][i] = w; t_set(f,n)[1][i] = upr(w,1); t_set(f,n)[2][i] = upr(w,2); t_set(f,n)[3][i] = upr(w,3); #endif w = bytes2word(b, 0, 0, 0); #if defined( FL1_SET ) /* tables for last encryption round (may also */ t_set(f,l)[i] = w; /* be used in the key schedule) */ #endif #if defined( FL4_SET ) t_set(f,l)[0][i] = w; t_set(f,l)[1][i] = upr(w,1); t_set(f,l)[2][i] = upr(w,2); t_set(f,l)[3][i] = upr(w,3); #endif #if defined( LS1_SET ) /* table for key schedule if t_set(f,l) above is*/ t_set(l,s)[i] = w; /* not of the required form */ #endif #if defined( LS4_SET ) t_set(l,s)[0][i] = w; t_set(l,s)[1][i] = upr(w,1); t_set(l,s)[2][i] = upr(w,2); t_set(l,s)[3][i] = upr(w,3); #endif b = gf_inv(inv_affine((uint_8t)i)); w = bytes2word(fe(b), f9(b), fd(b), fb(b)); #if defined( IM1_SET ) /* tables for the inverse mix column operation */ t_set(i,m)[b] = w; #endif #if defined( IM4_SET ) t_set(i,m)[0][b] = w; t_set(i,m)[1][b] = upr(w,1); t_set(i,m)[2][b] = upr(w,2); t_set(i,m)[3][b] = upr(w,3); #endif #if defined( ISB_SET ) t_set(i,box)[i] = b; #endif #if defined( IT1_SET ) /* tables for a normal decryption round */ t_set(i,n)[i] = w; #endif #if defined( IT4_SET ) t_set(i,n)[0][i] = w; t_set(i,n)[1][i] = upr(w,1); t_set(i,n)[2][i] = upr(w,2); t_set(i,n)[3][i] = upr(w,3); #endif w = bytes2word(b, 0, 0, 0); #if defined( IL1_SET ) /* tables for last decryption round */ t_set(i,l)[i] = w; #endif #if defined( IL4_SET ) t_set(i,l)[0][i] = w; t_set(i,l)[1][i] = upr(w,1); t_set(i,l)[2][i] = upr(w,2); t_set(i,l)[3][i] = upr(w,3); #endif } init = 1; return EXIT_SUCCESS; } #endif #if defined(__cplusplus) } #endif ================================================ FILE: BNN/cpp/minizip/aes/aestab.h ================================================ /* --------------------------------------------------------------------------- Copyright (c) 1998-2010, Brian Gladman, Worcester, UK. All rights reserved. The redistribution and use of this software (with or without changes) is allowed without the payment of fees or royalties provided that: source code distributions include the above copyright notice, this list of conditions and the following disclaimer; binary distributions include the above copyright notice, this list of conditions and the following disclaimer in their documentation. This software is provided 'as is' with no explicit or implied warranties in respect of its operation, including, but not limited to, correctness and fitness for purpose. --------------------------------------------------------------------------- Issue Date: 20/12/2007 This file contains the code for declaring the tables needed to implement AES. The file aesopt.h is assumed to be included before this header file. If there are no global variables, the definitions here can be used to put the AES tables in a structure so that a pointer can then be added to the AES context to pass them to the AES routines that need them. If this facility is used, the calling program has to ensure that this pointer is managed appropriately. In particular, the value of the t_dec(in,it) item in the table structure must be set to zero in order to ensure that the tables are initialised. In practice the three code sequences in aeskey.c that control the calls to aes_init() and the aes_init() routine itself will have to be changed for a specific implementation. If global variables are available it will generally be preferable to use them with the precomputed FIXED_TABLES option that uses static global tables. The following defines can be used to control the way the tables are defined, initialised and used in embedded environments that require special features for these purposes the 't_dec' construction is used to declare fixed table arrays the 't_set' construction is used to set fixed table values the 't_use' construction is used to access fixed table values 256 byte tables: t_xxx(s,box) => forward S box t_xxx(i,box) => inverse S box 256 32-bit word OR 4 x 256 32-bit word tables: t_xxx(f,n) => forward normal round t_xxx(f,l) => forward last round t_xxx(i,n) => inverse normal round t_xxx(i,l) => inverse last round t_xxx(l,s) => key schedule table t_xxx(i,m) => key schedule table Other variables and tables: t_xxx(r,c) => the rcon table */ #if !defined( _AESTAB_H ) #define _AESTAB_H #if defined(__cplusplus) extern "C" { #endif #define t_dec(m,n) t_##m##n #define t_set(m,n) t_##m##n #define t_use(m,n) t_##m##n #if defined(FIXED_TABLES) # if !defined( __GNUC__ ) && (defined( __MSDOS__ ) || defined( __WIN16__ )) /* make tables far data to avoid using too much DGROUP space (PG) */ # define CONST const far # else # define CONST const # endif #else # define CONST #endif #if defined(DO_TABLES) # define EXTERN #else # define EXTERN extern #endif #if defined(_MSC_VER) && defined(TABLE_ALIGN) #define ALIGN __declspec(align(TABLE_ALIGN)) #else #define ALIGN #endif #if defined( __WATCOMC__ ) && ( __WATCOMC__ >= 1100 ) # define XP_DIR __cdecl #else # define XP_DIR #endif #if defined(DO_TABLES) && defined(FIXED_TABLES) #define d_1(t,n,b,e) EXTERN ALIGN CONST XP_DIR t n[256] = b(e) #define d_4(t,n,b,e,f,g,h) EXTERN ALIGN CONST XP_DIR t n[4][256] = { b(e), b(f), b(g), b(h) } EXTERN ALIGN CONST uint_32t t_dec(r,c)[RC_LENGTH] = rc_data(w0); #else #define d_1(t,n,b,e) EXTERN ALIGN CONST XP_DIR t n[256] #define d_4(t,n,b,e,f,g,h) EXTERN ALIGN CONST XP_DIR t n[4][256] EXTERN ALIGN CONST uint_32t t_dec(r,c)[RC_LENGTH]; #endif #if defined( SBX_SET ) d_1(uint_8t, t_dec(s,box), sb_data, h0); #endif #if defined( ISB_SET ) d_1(uint_8t, t_dec(i,box), isb_data, h0); #endif #if defined( FT1_SET ) d_1(uint_32t, t_dec(f,n), sb_data, u0); #endif #if defined( FT4_SET ) d_4(uint_32t, t_dec(f,n), sb_data, u0, u1, u2, u3); #endif #if defined( FL1_SET ) d_1(uint_32t, t_dec(f,l), sb_data, w0); #endif #if defined( FL4_SET ) d_4(uint_32t, t_dec(f,l), sb_data, w0, w1, w2, w3); #endif #if defined( IT1_SET ) d_1(uint_32t, t_dec(i,n), isb_data, v0); #endif #if defined( IT4_SET ) d_4(uint_32t, t_dec(i,n), isb_data, v0, v1, v2, v3); #endif #if defined( IL1_SET ) d_1(uint_32t, t_dec(i,l), isb_data, w0); #endif #if defined( IL4_SET ) d_4(uint_32t, t_dec(i,l), isb_data, w0, w1, w2, w3); #endif #if defined( LS1_SET ) #if defined( FL1_SET ) #undef LS1_SET #else d_1(uint_32t, t_dec(l,s), sb_data, w0); #endif #endif #if defined( LS4_SET ) #if defined( FL4_SET ) #undef LS4_SET #else d_4(uint_32t, t_dec(l,s), sb_data, w0, w1, w2, w3); #endif #endif #if defined( IM1_SET ) d_1(uint_32t, t_dec(i,m), mm_data, v0); #endif #if defined( IM4_SET ) d_4(uint_32t, t_dec(i,m), mm_data, v0, v1, v2, v3); #endif #if defined(__cplusplus) } #endif #endif ================================================ FILE: BNN/cpp/minizip/aes/brg_endian.h ================================================ /* --------------------------------------------------------------------------- Copyright (c) 1998-2010, Brian Gladman, Worcester, UK. All rights reserved. The redistribution and use of this software (with or without changes) is allowed without the payment of fees or royalties provided that: source code distributions include the above copyright notice, this list of conditions and the following disclaimer; binary distributions include the above copyright notice, this list of conditions and the following disclaimer in their documentation. This software is provided 'as is' with no explicit or implied warranties in respect of its operation, including, but not limited to, correctness and fitness for purpose. --------------------------------------------------------------------------- Issue Date: 20/12/2007 */ #ifndef _BRG_ENDIAN_H #define _BRG_ENDIAN_H #define IS_BIG_ENDIAN 4321 /* byte 0 is most significant (mc68k) */ #define IS_LITTLE_ENDIAN 1234 /* byte 0 is least significant (i386) */ /* Include files where endian defines and byteswap functions may reside */ #if defined( __sun ) # include #elif defined( __FreeBSD__ ) || defined( __OpenBSD__ ) || defined( __NetBSD__ ) # include #elif defined( BSD ) && ( BSD >= 199103 ) || defined( __APPLE__ ) || \ defined( __CYGWIN32__ ) || defined( __DJGPP__ ) || defined( __osf__ ) # include #elif defined( __linux__ ) || defined( __GNUC__ ) || defined( __GNU_LIBRARY__ ) # if !defined( __MINGW32__ ) && !defined( _AIX ) # include # if !defined( __BEOS__ ) # include # endif # endif #endif /* Now attempt to set the define for platform byte order using any */ /* of the four forms SYMBOL, _SYMBOL, __SYMBOL & __SYMBOL__, which */ /* seem to encompass most endian symbol definitions */ #if defined( BIG_ENDIAN ) && defined( LITTLE_ENDIAN ) # if defined( BYTE_ORDER ) && BYTE_ORDER == BIG_ENDIAN # define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN # elif defined( BYTE_ORDER ) && BYTE_ORDER == LITTLE_ENDIAN # define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN # endif #elif defined( BIG_ENDIAN ) # define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN #elif defined( LITTLE_ENDIAN ) # define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN #endif #if defined( _BIG_ENDIAN ) && defined( _LITTLE_ENDIAN ) # if defined( _BYTE_ORDER ) && _BYTE_ORDER == _BIG_ENDIAN # define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN # elif defined( _BYTE_ORDER ) && _BYTE_ORDER == _LITTLE_ENDIAN # define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN # endif #elif defined( _BIG_ENDIAN ) # define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN #elif defined( _LITTLE_ENDIAN ) # define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN #endif #if defined( __BIG_ENDIAN ) && defined( __LITTLE_ENDIAN ) # if defined( __BYTE_ORDER ) && __BYTE_ORDER == __BIG_ENDIAN # define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN # elif defined( __BYTE_ORDER ) && __BYTE_ORDER == __LITTLE_ENDIAN # define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN # endif #elif defined( __BIG_ENDIAN ) # define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN #elif defined( __LITTLE_ENDIAN ) # define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN #endif #if defined( __BIG_ENDIAN__ ) && defined( __LITTLE_ENDIAN__ ) # if defined( __BYTE_ORDER__ ) && __BYTE_ORDER__ == __BIG_ENDIAN__ # define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN # elif defined( __BYTE_ORDER__ ) && __BYTE_ORDER__ == __LITTLE_ENDIAN__ # define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN # endif #elif defined( __BIG_ENDIAN__ ) # define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN #elif defined( __LITTLE_ENDIAN__ ) # define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN #endif /* if the platform byte order could not be determined, then try to */ /* set this define using common machine defines */ #if !defined(PLATFORM_BYTE_ORDER) #if defined( __alpha__ ) || defined( __alpha ) || defined( i386 ) || \ defined( __i386__ ) || defined( _M_I86 ) || defined( _M_IX86 ) || \ defined( __OS2__ ) || defined( sun386 ) || defined( __TURBOC__ ) || \ defined( vax ) || defined( vms ) || defined( VMS ) || \ defined( __VMS ) || defined( _M_X64 ) # define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN #elif defined( AMIGA ) || defined( applec ) || defined( __AS400__ ) || \ defined( _CRAY ) || defined( __hppa ) || defined( __hp9000 ) || \ defined( ibm370 ) || defined( mc68000 ) || defined( m68k ) || \ defined( __MRC__ ) || defined( __MVS__ ) || defined( __MWERKS__ ) || \ defined( sparc ) || defined( __sparc) || defined( SYMANTEC_C ) || \ defined( __VOS__ ) || defined( __TIGCC__ ) || defined( __TANDEM ) || \ defined( THINK_C ) || defined( __VMCMS__ ) || defined( _AIX ) # define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN #elif 0 /* **** EDIT HERE IF NECESSARY **** */ # define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN #elif 0 /* **** EDIT HERE IF NECESSARY **** */ # define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN #else # error Please edit lines 126 or 128 in brg_endian.h to set the platform byte order #endif #endif #endif ================================================ FILE: BNN/cpp/minizip/aes/brg_types.h ================================================ /* --------------------------------------------------------------------------- Copyright (c) 1998-2010, Brian Gladman, Worcester, UK. All rights reserved. The redistribution and use of this software (with or without changes) is allowed without the payment of fees or royalties provided that: source code distributions include the above copyright notice, this list of conditions and the following disclaimer; binary distributions include the above copyright notice, this list of conditions and the following disclaimer in their documentation. This software is provided 'as is' with no explicit or implied warranties in respect of its operation, including, but not limited to, correctness and fitness for purpose. --------------------------------------------------------------------------- Issue Date: 20/12/2007 The unsigned integer types defined here are of the form uint_t where is the length of the type; for example, the unsigned 32-bit type is 'uint_32t'. These are NOT the same as the 'C99 integer types' that are defined in the inttypes.h and stdint.h headers since attempts to use these types have shown that support for them is still highly variable. However, since the latter are of the form uint_t, a regular expression search and replace (in VC++ search on 'uint_{:z}t' and replace with 'uint\1_t') can be used to convert the types used here to the C99 standard types. */ #ifndef _BRG_TYPES_H #define _BRG_TYPES_H #if defined(__cplusplus) extern "C" { #endif #include #if defined( _MSC_VER ) && ( _MSC_VER >= 1300 ) # include # define ptrint_t intptr_t #elif defined( __ECOS__ ) # define intptr_t unsigned int # define ptrint_t intptr_t #elif defined( __GNUC__ ) && ( __GNUC__ >= 3 ) # include # define ptrint_t intptr_t #else # define ptrint_t int #endif #ifndef BRG_UI8 # define BRG_UI8 # if UCHAR_MAX == 255u typedef unsigned char uint_8t; # else # error Please define uint_8t as an 8-bit unsigned integer type in brg_types.h # endif #endif #ifndef BRG_UI16 # define BRG_UI16 # if USHRT_MAX == 65535u typedef unsigned short uint_16t; # else # error Please define uint_16t as a 16-bit unsigned short type in brg_types.h # endif #endif #ifndef BRG_UI32 # define BRG_UI32 # if UINT_MAX == 4294967295u # define li_32(h) 0x##h##u typedef unsigned int uint_32t; # elif ULONG_MAX == 4294967295u # define li_32(h) 0x##h##ul typedef unsigned long uint_32t; # elif defined( _CRAY ) # error This code needs 32-bit data types, which Cray machines do not provide # else # error Please define uint_32t as a 32-bit unsigned integer type in brg_types.h # endif #endif #ifndef BRG_UI64 # if defined( __BORLANDC__ ) && !defined( __MSDOS__ ) # define BRG_UI64 # define li_64(h) 0x##h##ui64 typedef unsigned __int64 uint_64t; # elif defined( _MSC_VER ) && ( _MSC_VER < 1300 ) /* 1300 == VC++ 7.0 */ # define BRG_UI64 # define li_64(h) 0x##h##ui64 typedef unsigned __int64 uint_64t; # elif defined( __sun ) && defined( ULONG_MAX ) && ULONG_MAX == 0xfffffffful # define BRG_UI64 # define li_64(h) 0x##h##ull typedef unsigned long long uint_64t; # elif defined( __MVS__ ) # define BRG_UI64 # define li_64(h) 0x##h##ull typedef unsigned int long long uint_64t; # elif defined( UINT_MAX ) && UINT_MAX > 4294967295u # if UINT_MAX == 18446744073709551615u # define BRG_UI64 # define li_64(h) 0x##h##u typedef unsigned int uint_64t; # endif # elif defined( ULONG_MAX ) && ULONG_MAX > 4294967295u # if ULONG_MAX == 18446744073709551615ul # define BRG_UI64 # define li_64(h) 0x##h##ul typedef unsigned long uint_64t; # endif # elif defined( ULLONG_MAX ) && ULLONG_MAX > 4294967295u # if ULLONG_MAX == 18446744073709551615ull # define BRG_UI64 # define li_64(h) 0x##h##ull typedef unsigned long long uint_64t; # endif # elif defined( ULONG_LONG_MAX ) && ULONG_LONG_MAX > 4294967295u # if ULONG_LONG_MAX == 18446744073709551615ull # define BRG_UI64 # define li_64(h) 0x##h##ull typedef unsigned long long uint_64t; # endif # endif #endif #if !defined( BRG_UI64 ) # if defined( NEED_UINT_64T ) # error Please define uint_64t as an unsigned 64 bit type in brg_types.h # endif #endif #ifndef RETURN_VALUES # define RETURN_VALUES # if defined( DLL_EXPORT ) # if defined( _MSC_VER ) || defined ( __INTEL_COMPILER ) # define VOID_RETURN __declspec( dllexport ) void __stdcall # define INT_RETURN __declspec( dllexport ) int __stdcall # elif defined( __GNUC__ ) # define VOID_RETURN __declspec( __dllexport__ ) void # define INT_RETURN __declspec( __dllexport__ ) int # else # error Use of the DLL is only available on the Microsoft, Intel and GCC compilers # endif # elif defined( DLL_IMPORT ) # if defined( _MSC_VER ) || defined ( __INTEL_COMPILER ) # define VOID_RETURN __declspec( dllimport ) void __stdcall # define INT_RETURN __declspec( dllimport ) int __stdcall # elif defined( __GNUC__ ) # define VOID_RETURN __declspec( __dllimport__ ) void # define INT_RETURN __declspec( __dllimport__ ) int # else # error Use of the DLL is only available on the Microsoft, Intel and GCC compilers # endif # elif defined( __WATCOMC__ ) # define VOID_RETURN void __cdecl # define INT_RETURN int __cdecl # else # define VOID_RETURN void # define INT_RETURN int # endif #endif /* These defines are used to detect and set the memory alignment of pointers. Note that offsets are in bytes. ALIGN_OFFSET(x,n) return the positive or zero offset of the memory addressed by the pointer 'x' from an address that is aligned on an 'n' byte boundary ('n' is a power of 2) ALIGN_FLOOR(x,n) return a pointer that points to memory that is aligned on an 'n' byte boundary and is not higher than the memory address pointed to by 'x' ('n' is a power of 2) ALIGN_CEIL(x,n) return a pointer that points to memory that is aligned on an 'n' byte boundary and is not lower than the memory address pointed to by 'x' ('n' is a power of 2) */ #define ALIGN_OFFSET(x,n) (((ptrint_t)(x)) & ((n) - 1)) #define ALIGN_FLOOR(x,n) ((uint_8t*)(x) - ( ((ptrint_t)(x)) & ((n) - 1))) #define ALIGN_CEIL(x,n) ((uint_8t*)(x) + (-((ptrint_t)(x)) & ((n) - 1))) /* These defines are used to declare buffers in a way that allows faster operations on longer variables to be used. In all these defines 'size' must be a power of 2 and >= 8. NOTE that the buffer size is in bytes but the type length is in bits UNIT_TYPEDEF(x,size) declares a variable 'x' of length 'size' bits BUFR_TYPEDEF(x,size,bsize) declares a buffer 'x' of length 'bsize' bytes defined as an array of variables each of 'size' bits (bsize must be a multiple of size / 8) UNIT_CAST(x,size) casts a variable to a type of length 'size' bits UPTR_CAST(x,size) casts a pointer to a pointer to a varaiable of length 'size' bits */ #define UI_TYPE(size) uint_##size##t #define UNIT_TYPEDEF(x,size) typedef UI_TYPE(size) x #define BUFR_TYPEDEF(x,size,bsize) typedef UI_TYPE(size) x[bsize / (size >> 3)] #define UNIT_CAST(x,size) ((UI_TYPE(size) )(x)) #define UPTR_CAST(x,size) ((UI_TYPE(size)*)(x)) #if defined(__cplusplus) } #endif #endif ================================================ FILE: BNN/cpp/minizip/aes/entropy.c ================================================ #ifdef _WIN32 #include #else #include #include #include #endif #if defined(__cplusplus) extern "C" { #endif #ifdef _WIN32 int entropy_fun(unsigned char buf[], unsigned int len) { HCRYPTPROV provider; unsigned __int64 pentium_tsc[1]; unsigned int i; int result = 0; if (CryptAcquireContext(&provider, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) { result = CryptGenRandom(provider, len, buf); CryptReleaseContext(provider, 0); if (result) return len; } QueryPerformanceCounter((LARGE_INTEGER *)pentium_tsc); for(i = 0; i < 8 && i < len; ++i) buf[i] = ((unsigned char*)pentium_tsc)[i]; return i; } #else int entropy_fun(unsigned char buf[], unsigned int len) { int frand = open("/dev/random", O_RDONLY); int rlen = 0; if (frand != -1) { rlen = read(frand, buf, len); close(frand); } return rlen; } #endif #if defined(__cplusplus) } #endif ================================================ FILE: BNN/cpp/minizip/aes/entropy.h ================================================ #ifndef _ENTROPY_FUN_H #define _ENTROPY_FUN_H #if defined(__cplusplus) extern "C" { #endif int entropy_fun(unsigned char buf[], unsigned int len); #if defined(__cplusplus) } #endif #endif ================================================ FILE: BNN/cpp/minizip/aes/fileenc.c ================================================ /* --------------------------------------------------------------------------- Copyright (c) 2002, Dr Brian Gladman < >, Worcester, UK. All rights reserved. LICENSE TERMS The free distribution and use of this software in both source and binary form is allowed (with or without changes) provided that: 1. distributions of this source code include the above copyright notice, this list of conditions and the following disclaimer; 2. distributions in binary form include the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other associated materials; 3. the copyright holder's name is not used to endorse products built using this software without specific written permission. ALTERNATIVELY, provided that this notice is retained in full, this product may be distributed under the terms of the GNU General Public License (GPL), in which case the provisions of the GPL apply INSTEAD OF those given above. DISCLAIMER This software is provided 'as is' with no explicit or implied warranties in respect of its properties, including, but not limited to, correctness and/or fitness for purpose. ------------------------------------------------------------------------- Issue Date: 24/01/2003 This file implements password based file encryption and authentication using AES in CTR mode, HMAC-SHA1 authentication and RFC2898 password based key derivation. */ #include #include "fileenc.h" #if defined(__cplusplus) extern "C" { #endif /* subroutine for data encryption/decryption */ /* this could be speeded up a lot by aligning */ /* buffers and using 32 bit operations */ static void encr_data(unsigned char data[], unsigned long d_len, fcrypt_ctx cx[1]) { unsigned long i = 0, pos = cx->encr_pos; while(i < d_len) { if(pos == AES_BLOCK_SIZE) { unsigned int j = 0; /* increment encryption nonce */ while(j < 8 && !++cx->nonce[j]) ++j; /* encrypt the nonce to form next xor buffer */ aes_encrypt(cx->nonce, cx->encr_bfr, cx->encr_ctx); pos = 0; } data[i++] ^= cx->encr_bfr[pos++]; } cx->encr_pos = pos; } int fcrypt_init( int mode, /* the mode to be used (input) */ const unsigned char pwd[], /* the user specified password (input) */ unsigned int pwd_len, /* the length of the password (input) */ const unsigned char salt[], /* the salt (input) */ #ifdef PASSWORD_VERIFIER unsigned char pwd_ver[PWD_VER_LENGTH], /* 2 byte password verifier (output) */ #endif fcrypt_ctx cx[1]) /* the file encryption context (output) */ { unsigned char kbuf[2 * MAX_KEY_LENGTH + PWD_VER_LENGTH]; if(pwd_len > MAX_PWD_LENGTH) return PASSWORD_TOO_LONG; if(mode < 1 || mode > 3) return BAD_MODE; cx->mode = mode; cx->pwd_len = pwd_len; /* derive the encryption and authentication keys and the password verifier */ derive_key(pwd, pwd_len, salt, SALT_LENGTH(mode), KEYING_ITERATIONS, kbuf, 2 * KEY_LENGTH(mode) + PWD_VER_LENGTH); /* initialise the encryption nonce and buffer pos */ cx->encr_pos = AES_BLOCK_SIZE; /* if we need a random component in the encryption */ /* nonce, this is where it would have to be set */ memset(cx->nonce, 0, AES_BLOCK_SIZE * sizeof(unsigned char)); /* initialise for encryption using key 1 */ aes_encrypt_key(kbuf, KEY_LENGTH(mode), cx->encr_ctx); /* initialise for authentication using key 2 */ hmac_sha_begin(cx->auth_ctx); hmac_sha_key(kbuf + KEY_LENGTH(mode), KEY_LENGTH(mode), cx->auth_ctx); #ifdef PASSWORD_VERIFIER memcpy(pwd_ver, kbuf + 2 * KEY_LENGTH(mode), PWD_VER_LENGTH); #endif return GOOD_RETURN; } /* perform 'in place' encryption and authentication */ void fcrypt_encrypt(unsigned char data[], unsigned int data_len, fcrypt_ctx cx[1]) { encr_data(data, data_len, cx); hmac_sha_data(data, data_len, cx->auth_ctx); } /* perform 'in place' authentication and decryption */ void fcrypt_decrypt(unsigned char data[], unsigned int data_len, fcrypt_ctx cx[1]) { hmac_sha_data(data, data_len, cx->auth_ctx); encr_data(data, data_len, cx); } /* close encryption/decryption and return the MAC value */ int fcrypt_end(unsigned char mac[], fcrypt_ctx cx[1]) { hmac_sha_end(mac, MAC_LENGTH(cx->mode), cx->auth_ctx); return MAC_LENGTH(cx->mode); /* return MAC length in bytes */ } #if defined(__cplusplus) } #endif ================================================ FILE: BNN/cpp/minizip/aes/fileenc.h ================================================ /* --------------------------------------------------------------------------- Copyright (c) 2002, Dr Brian Gladman < >, Worcester, UK. All rights reserved. LICENSE TERMS The free distribution and use of this software in both source and binary form is allowed (with or without changes) provided that: 1. distributions of this source code include the above copyright notice, this list of conditions and the following disclaimer; 2. distributions in binary form include the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other associated materials; 3. the copyright holder's name is not used to endorse products built using this software without specific written permission. ALTERNATIVELY, provided that this notice is retained in full, this product may be distributed under the terms of the GNU General Public License (GPL), in which case the provisions of the GPL apply INSTEAD OF those given above. DISCLAIMER This software is provided 'as is' with no explicit or implied warranties in respect of its properties, including, but not limited to, correctness and/or fitness for purpose. --------------------------------------------------------------------------- Issue Date: 24/01/2003 This file contains the header file for fileenc.c, which implements password based file encryption and authentication using AES in CTR mode, HMAC-SHA1 authentication and RFC2898 password based key derivation. */ #ifndef _FENC_H #define _FENC_H #include "aes.h" #include "hmac.h" #include "pwd2key.h" #define PASSWORD_VERIFIER #define MAX_KEY_LENGTH 32 #define MAX_PWD_LENGTH 128 #define MAX_SALT_LENGTH 16 #define KEYING_ITERATIONS 1000 #ifdef PASSWORD_VERIFIER #define PWD_VER_LENGTH 2 #else #define PWD_VER_LENGTH 0 #endif #define GOOD_RETURN 0 #define PASSWORD_TOO_LONG -100 #define BAD_MODE -101 /* Field lengths (in bytes) versus File Encryption Mode (0 < mode < 4) Mode Key Salt MAC Overhead 1 16 8 10 18 2 24 12 10 22 3 32 16 10 26 The following macros assume that the mode value is correct. */ #define KEY_LENGTH(mode) (8 * (mode & 3) + 8) #define SALT_LENGTH(mode) (4 * (mode & 3) + 4) #define MAC_LENGTH(mode) (10) /* the context for file encryption */ #if defined(__cplusplus) extern "C" { #endif typedef struct { unsigned char nonce[AES_BLOCK_SIZE]; /* the CTR nonce */ unsigned char encr_bfr[AES_BLOCK_SIZE]; /* encrypt buffer */ aes_encrypt_ctx encr_ctx[1]; /* encryption context */ hmac_ctx auth_ctx[1]; /* authentication context */ unsigned int encr_pos; /* block position (enc) */ unsigned int pwd_len; /* password length */ unsigned int mode; /* File encryption mode */ } fcrypt_ctx; /* initialise file encryption or decryption */ int fcrypt_init( int mode, /* the mode to be used (input) */ const unsigned char pwd[], /* the user specified password (input) */ unsigned int pwd_len, /* the length of the password (input) */ const unsigned char salt[], /* the salt (input) */ #ifdef PASSWORD_VERIFIER unsigned char pwd_ver[PWD_VER_LENGTH], /* 2 byte password verifier (output) */ #endif fcrypt_ctx cx[1]); /* the file encryption context (output) */ /* perform 'in place' encryption or decryption and authentication */ void fcrypt_encrypt(unsigned char data[], unsigned int data_len, fcrypt_ctx cx[1]); void fcrypt_decrypt(unsigned char data[], unsigned int data_len, fcrypt_ctx cx[1]); /* close encryption/decryption and return the MAC value */ /* the return value is the length of the MAC */ int fcrypt_end(unsigned char mac[], /* the MAC value (output) */ fcrypt_ctx cx[1]); /* the context (input) */ #if defined(__cplusplus) } #endif #endif ================================================ FILE: BNN/cpp/minizip/aes/hmac.c ================================================ /* --------------------------------------------------------------------------- Copyright (c) 2002, Dr Brian Gladman, Worcester, UK. All rights reserved. LICENSE TERMS The free distribution and use of this software in both source and binary form is allowed (with or without changes) provided that: 1. distributions of this source code include the above copyright notice, this list of conditions and the following disclaimer; 2. distributions in binary form include the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other associated materials; 3. the copyright holder's name is not used to endorse products built using this software without specific written permission. ALTERNATIVELY, provided that this notice is retained in full, this product may be distributed under the terms of the GNU General Public License (GPL), in which case the provisions of the GPL apply INSTEAD OF those given above. DISCLAIMER This software is provided 'as is' with no explicit or implied warranties in respect of its properties, including, but not limited to, correctness and/or fitness for purpose. --------------------------------------------------------------------------- Issue Date: 26/08/2003 This is an implementation of HMAC, the FIPS standard keyed hash function */ #include "hmac.h" #include "brg_types.h" #if defined(__cplusplus) extern "C" { #endif /* initialise the HMAC context to zero */ void hmac_sha_begin(hmac_ctx cx[1]) { memset(cx, 0, sizeof(hmac_ctx)); } /* input the HMAC key (can be called multiple times) */ int hmac_sha_key(const unsigned char key[], unsigned long key_len, hmac_ctx cx[1]) { if(cx->klen == HMAC_IN_DATA) /* error if further key input */ return HMAC_BAD_MODE; /* is attempted in data mode */ if(cx->klen + key_len > HASH_INPUT_SIZE) /* if the key has to be hashed */ { if(cx->klen <= HASH_INPUT_SIZE) /* if the hash has not yet been */ { /* started, initialise it and */ sha_begin(cx->ctx); /* hash stored key characters */ sha_hash(cx->key, cx->klen, cx->ctx); } sha_hash(key, key_len, cx->ctx); /* hash long key data into hash */ } else /* otherwise store key data */ memcpy(cx->key + cx->klen, key, key_len); cx->klen += key_len; /* update the key length count */ return HMAC_OK; } /* input the HMAC data (can be called multiple times) - */ /* note that this call terminates the key input phase */ void hmac_sha_data(const unsigned char data[], unsigned long data_len, hmac_ctx cx[1]) { unsigned int i; if(cx->klen != HMAC_IN_DATA) /* if not yet in data phase */ { if(cx->klen > HASH_INPUT_SIZE) /* if key is being hashed */ { /* complete the hash and */ sha_end(cx->key, cx->ctx); /* store the result as the */ cx->klen = HASH_OUTPUT_SIZE; /* key and set new length */ } /* pad the key if necessary */ memset(cx->key + cx->klen, 0, HASH_INPUT_SIZE - cx->klen); /* xor ipad into key value */ for(i = 0; i < (HASH_INPUT_SIZE >> 2); ++i) ((uint_32t*)cx->key)[i] ^= 0x36363636; /* and start hash operation */ sha_begin(cx->ctx); sha_hash(cx->key, HASH_INPUT_SIZE, cx->ctx); /* mark as now in data mode */ cx->klen = HMAC_IN_DATA; } /* hash the data (if any) */ if(data_len) sha_hash(data, data_len, cx->ctx); } /* compute and output the MAC value */ void hmac_sha_end(unsigned char mac[], unsigned long mac_len, hmac_ctx cx[1]) { unsigned char dig[HASH_OUTPUT_SIZE]; unsigned int i; /* if no data has been entered perform a null data phase */ if(cx->klen != HMAC_IN_DATA) hmac_sha_data((const unsigned char*)0, 0, cx); sha_end(dig, cx->ctx); /* complete the inner hash */ /* set outer key value using opad and removing ipad */ for(i = 0; i < (HASH_INPUT_SIZE >> 2); ++i) ((uint_32t*)cx->key)[i] ^= 0x36363636 ^ 0x5c5c5c5c; /* perform the outer hash operation */ sha_begin(cx->ctx); sha_hash(cx->key, HASH_INPUT_SIZE, cx->ctx); sha_hash(dig, HASH_OUTPUT_SIZE, cx->ctx); sha_end(dig, cx->ctx); /* output the hash value */ for(i = 0; i < mac_len; ++i) mac[i] = dig[i]; } /* 'do it all in one go' subroutine */ void hmac_sha(const unsigned char key[], unsigned long key_len, const unsigned char data[], unsigned long data_len, unsigned char mac[], unsigned long mac_len) { hmac_ctx cx[1]; hmac_sha_begin(cx); hmac_sha_key(key, key_len, cx); hmac_sha_data(data, data_len, cx); hmac_sha_end(mac, mac_len, cx); } #if defined(__cplusplus) } #endif ================================================ FILE: BNN/cpp/minizip/aes/hmac.h ================================================ /* --------------------------------------------------------------------------- Copyright (c) 2002, Dr Brian Gladman, Worcester, UK. All rights reserved. LICENSE TERMS The free distribution and use of this software in both source and binary form is allowed (with or without changes) provided that: 1. distributions of this source code include the above copyright notice, this list of conditions and the following disclaimer; 2. distributions in binary form include the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other associated materials; 3. the copyright holder's name is not used to endorse products built using this software without specific written permission. ALTERNATIVELY, provided that this notice is retained in full, this product may be distributed under the terms of the GNU General Public License (GPL), in which case the provisions of the GPL apply INSTEAD OF those given above. DISCLAIMER This software is provided 'as is' with no explicit or implied warranties in respect of its properties, including, but not limited to, correctness and/or fitness for purpose. --------------------------------------------------------------------------- Issue Date: 26/08/2003 This is an implementation of HMAC, the FIPS standard keyed hash function */ #ifndef _HMAC_H #define _HMAC_H #include #if defined(__cplusplus) extern "C" { #endif #define USE_SHA1 #if !defined(USE_SHA1) && !defined(USE_SHA256) #error define USE_SHA1 or USE_SHA256 to set the HMAC hash algorithm #endif #ifdef USE_SHA1 #include "sha1.h" #define HASH_INPUT_SIZE SHA1_BLOCK_SIZE #define HASH_OUTPUT_SIZE SHA1_DIGEST_SIZE #define sha_ctx sha1_ctx #define sha_begin sha1_begin #define sha_hash sha1_hash #define sha_end sha1_end #endif #ifdef USE_SHA256 #include "sha2.h" #define HASH_INPUT_SIZE SHA256_BLOCK_SIZE #define HASH_OUTPUT_SIZE SHA256_DIGEST_SIZE #define sha_ctx sha256_ctx #define sha_begin sha256_begin #define sha_hash sha256_hash #define sha_end sha256_end #endif #define HMAC_OK 0 #define HMAC_BAD_MODE -1 #define HMAC_IN_DATA 0xffffffff typedef struct { unsigned char key[HASH_INPUT_SIZE]; sha_ctx ctx[1]; unsigned long klen; } hmac_ctx; void hmac_sha_begin(hmac_ctx cx[1]); int hmac_sha_key(const unsigned char key[], unsigned long key_len, hmac_ctx cx[1]); void hmac_sha_data(const unsigned char data[], unsigned long data_len, hmac_ctx cx[1]); void hmac_sha_end(unsigned char mac[], unsigned long mac_len, hmac_ctx cx[1]); void hmac_sha(const unsigned char key[], unsigned long key_len, const unsigned char data[], unsigned long data_len, unsigned char mac[], unsigned long mac_len); #if defined(__cplusplus) } #endif #endif ================================================ FILE: BNN/cpp/minizip/aes/prng.c ================================================ /* --------------------------------------------------------------------------- Copyright (c) 2002, Dr Brian Gladman < >, Worcester, UK. All rights reserved. LICENSE TERMS The free distribution and use of this software in both source and binary form is allowed (with or without changes) provided that: 1. distributions of this source code include the above copyright notice, this list of conditions and the following disclaimer; 2. distributions in binary form include the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other associated materials; 3. the copyright holder's name is not used to endorse products built using this software without specific written permission. ALTERNATIVELY, provided that this notice is retained in full, this product may be distributed under the terms of the GNU General Public License (GPL), in which case the provisions of the GPL apply INSTEAD OF those given above. DISCLAIMER This software is provided 'as is' with no explicit or implied warranties in respect of its properties, including, but not limited to, correctness and/or fitness for purpose. --------------------------------------------------------------------------- Issue Date: 24/01/2003 This file implements a random data pool based on the use of an external entropy function. It is based on the ideas advocated by Peter Gutmann in his work on pseudo random sequence generators. It is not a 'paranoid' random sequence generator and no attempt is made to protect the pool from prying eyes either by memory locking or by techniques to obscure its location in memory. */ #include #include "prng.h" #if defined(__cplusplus) extern "C" { #endif /* mix a random data pool using the SHA1 compression function (as */ /* suggested by Peter Gutmann in his paper on random pools) */ static void prng_mix(unsigned char buf[]) { unsigned int i, len; sha1_ctx ctx[1]; /*lint -e{663} unusual array to pointer conversion */ for(i = 0; i < PRNG_POOL_SIZE; i += SHA1_DIGEST_SIZE) { /* copy digest size pool block into SHA1 hash block */ memcpy(ctx->hash, buf + (i ? i : PRNG_POOL_SIZE) - SHA1_DIGEST_SIZE, SHA1_DIGEST_SIZE); /* copy data from pool into the SHA1 data buffer */ len = PRNG_POOL_SIZE - i; memcpy(ctx->wbuf, buf + i, (len > SHA1_BLOCK_SIZE ? SHA1_BLOCK_SIZE : len)); if(len < SHA1_BLOCK_SIZE) memcpy(((char*)ctx->wbuf) + len, buf, SHA1_BLOCK_SIZE - len); /* compress using the SHA1 compression function */ sha1_compile(ctx); /* put digest size block back into the random pool */ memcpy(buf + i, ctx->hash, SHA1_DIGEST_SIZE); } } /* refresh the output buffer and update the random pool by adding */ /* entropy and remixing */ static void update_pool(prng_ctx ctx[1]) { unsigned int i = 0; /* transfer random pool data to the output buffer */ memcpy(ctx->obuf, ctx->rbuf, PRNG_POOL_SIZE); /* enter entropy data into the pool */ while(i < PRNG_POOL_SIZE) i += ctx->entropy(ctx->rbuf + i, PRNG_POOL_SIZE - i); /* invert and xor the original pool data into the pool */ for(i = 0; i < PRNG_POOL_SIZE; ++i) ctx->rbuf[i] ^= ~ctx->obuf[i]; /* mix the pool and the output buffer */ prng_mix(ctx->rbuf); prng_mix(ctx->obuf); } void prng_init(prng_entropy_fn fun, prng_ctx ctx[1]) { int i; /* clear the buffers and the counter in the context */ memset(ctx, 0, sizeof(prng_ctx)); /* set the pointer to the entropy collection function */ ctx->entropy = fun; /* initialise the random data pool */ update_pool(ctx); /* mix the pool a minimum number of times */ for(i = 0; i < PRNG_MIN_MIX; ++i) prng_mix(ctx->rbuf); /* update the pool to prime the pool output buffer */ update_pool(ctx); } /* provide random bytes from the random data pool */ void prng_rand(unsigned char data[], unsigned int data_len, prng_ctx ctx[1]) { unsigned char *rp = data; unsigned int len, pos = ctx->pos; while(data_len) { /* transfer 'data_len' bytes (or the number of bytes remaining */ /* the pool output buffer if less) into the output */ len = (data_len < PRNG_POOL_SIZE - pos ? data_len : PRNG_POOL_SIZE - pos); memcpy(rp, ctx->obuf + pos, len); rp += len; /* update ouput buffer position pointer */ pos += len; /* update pool output buffer pointer */ data_len -= len; /* update the remaining data count */ /* refresh the random pool if necessary */ if(pos == PRNG_POOL_SIZE) { update_pool(ctx); pos = 0; } } ctx->pos = pos; } void prng_end(prng_ctx ctx[1]) { /* ensure the data in the context is destroyed */ memset(ctx, 0, sizeof(prng_ctx)); } #if defined(__cplusplus) } #endif ================================================ FILE: BNN/cpp/minizip/aes/prng.h ================================================ /* --------------------------------------------------------------------------- Copyright (c) 2002, Dr Brian Gladman < >, Worcester, UK. All rights reserved. LICENSE TERMS The free distribution and use of this software in both source and binary form is allowed (with or without changes) provided that: 1. distributions of this source code include the above copyright notice, this list of conditions and the following disclaimer; 2. distributions in binary form include the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other associated materials; 3. the copyright holder's name is not used to endorse products built using this software without specific written permission. ALTERNATIVELY, provided that this notice is retained in full, this product may be distributed under the terms of the GNU General Public License (GPL), in which case the provisions of the GPL apply INSTEAD OF those given above. DISCLAIMER This software is provided 'as is' with no explicit or implied warranties in respect of its properties, including, but not limited to, correctness and/or fitness for purpose. --------------------------------------------------------------------------- Issue Date: 24/01/2003 This is the header file for an implementation of a random data pool based on the use of an external entropy function (inspired by Peter Gutmann's work). */ #ifndef _PRNG_H #define _PRNG_H #include "sha1.h" #define PRNG_POOL_LEN 256 /* minimum random pool size */ #define PRNG_MIN_MIX 20 /* min initial pool mixing iterations */ /* ensure that pool length is a multiple of the SHA1 digest size */ #define PRNG_POOL_SIZE (SHA1_DIGEST_SIZE * (1 + (PRNG_POOL_LEN - 1) / SHA1_DIGEST_SIZE)) #if defined(__cplusplus) extern "C" { #endif /* A function for providing entropy is a parameter in the prng_init() */ /* call. This function has the following form and returns a maximum */ /* of 'len' bytes of pseudo random data in the buffer 'buf'. It can */ /* return less than 'len' bytes but will be repeatedly called for more */ /* data in this case. */ typedef int (*prng_entropy_fn)(unsigned char buf[], unsigned int len); typedef struct { unsigned char rbuf[PRNG_POOL_SIZE]; /* the random pool */ unsigned char obuf[PRNG_POOL_SIZE]; /* pool output buffer */ unsigned int pos; /* output buffer position */ prng_entropy_fn entropy; /* entropy function pointer */ } prng_ctx; /* initialise the random stream generator */ void prng_init(prng_entropy_fn fun, prng_ctx ctx[1]); /* obtain random bytes from the generator */ void prng_rand(unsigned char data[], unsigned int data_len, prng_ctx ctx[1]); /* close the random stream generator */ void prng_end(prng_ctx ctx[1]); #if defined(__cplusplus) } #endif #endif ================================================ FILE: BNN/cpp/minizip/aes/pwd2key.c ================================================ /* --------------------------------------------------------------------------- Copyright (c) 2002, Dr Brian Gladman, Worcester, UK. All rights reserved. LICENSE TERMS The free distribution and use of this software in both source and binary form is allowed (with or without changes) provided that: 1. distributions of this source code include the above copyright notice, this list of conditions and the following disclaimer; 2. distributions in binary form include the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other associated materials; 3. the copyright holder's name is not used to endorse products built using this software without specific written permission. ALTERNATIVELY, provided that this notice is retained in full, this product may be distributed under the terms of the GNU General Public License (GPL), in which case the provisions of the GPL apply INSTEAD OF those given above. DISCLAIMER This software is provided 'as is' with no explicit or implied warranties in respect of its properties, including, but not limited to, correctness and/or fitness for purpose. --------------------------------------------------------------------------- Issue Date: 26/08/2003 This is an implementation of RFC2898, which specifies key derivation from a password and a salt value. */ #include #include "hmac.h" #if defined(__cplusplus) extern "C" { #endif void derive_key(const unsigned char pwd[], /* the PASSWORD */ unsigned int pwd_len, /* and its length */ const unsigned char salt[], /* the SALT and its */ unsigned int salt_len, /* length */ unsigned int iter, /* the number of iterations */ unsigned char key[], /* space for the output key */ unsigned int key_len)/* and its required length */ { unsigned int i, j, k, n_blk; unsigned char uu[HASH_OUTPUT_SIZE], ux[HASH_OUTPUT_SIZE]; hmac_ctx c1[1], c2[1], c3[1]; /* set HMAC context (c1) for password */ hmac_sha_begin(c1); hmac_sha_key(pwd, pwd_len, c1); /* set HMAC context (c2) for password and salt */ memcpy(c2, c1, sizeof(hmac_ctx)); hmac_sha_data(salt, salt_len, c2); /* find the number of SHA blocks in the key */ n_blk = 1 + (key_len - 1) / HASH_OUTPUT_SIZE; for(i = 0; i < n_blk; ++i) /* for each block in key */ { /* ux[] holds the running xor value */ memset(ux, 0, HASH_OUTPUT_SIZE); /* set HMAC context (c3) for password and salt */ memcpy(c3, c2, sizeof(hmac_ctx)); /* enter additional data for 1st block into uu */ uu[0] = (unsigned char)((i + 1) >> 24); uu[1] = (unsigned char)((i + 1) >> 16); uu[2] = (unsigned char)((i + 1) >> 8); uu[3] = (unsigned char)(i + 1); /* this is the key mixing iteration */ for(j = 0, k = 4; j < iter; ++j) { /* add previous round data to HMAC */ hmac_sha_data(uu, k, c3); /* obtain HMAC for uu[] */ hmac_sha_end(uu, HASH_OUTPUT_SIZE, c3); /* xor into the running xor block */ for(k = 0; k < HASH_OUTPUT_SIZE; ++k) ux[k] ^= uu[k]; /* set HMAC context (c3) for password */ memcpy(c3, c1, sizeof(hmac_ctx)); } /* compile key blocks into the key output */ j = 0; k = i * HASH_OUTPUT_SIZE; while(j < HASH_OUTPUT_SIZE && k < key_len) key[k++] = ux[j++]; } } #ifdef TEST #include struct { unsigned int pwd_len; unsigned int salt_len; unsigned int it_count; unsigned char *pwd; unsigned char salt[32]; unsigned char key[32]; } tests[] = { { 8, 4, 5, (unsigned char*)"password", { 0x12, 0x34, 0x56, 0x78 }, { 0x5c, 0x75, 0xce, 0xf0, 0x1a, 0x96, 0x0d, 0xf7, 0x4c, 0xb6, 0xb4, 0x9b, 0x9e, 0x38, 0xe6, 0xb5 } }, { 8, 8, 5, (unsigned char*)"password", { 0x12, 0x34, 0x56, 0x78, 0x78, 0x56, 0x34, 0x12 }, { 0xd1, 0xda, 0xa7, 0x86, 0x15, 0xf2, 0x87, 0xe6, 0xa1, 0xc8, 0xb1, 0x20, 0xd7, 0x06, 0x2a, 0x49 } }, { 8, 21, 1, (unsigned char*)"password", { "ATHENA.MIT.EDUraeburn" }, { 0xcd, 0xed, 0xb5, 0x28, 0x1b, 0xb2, 0xf8, 0x01, 0x56, 0x5a, 0x11, 0x22, 0xb2, 0x56, 0x35, 0x15 } }, { 8, 21, 2, (unsigned char*)"password", { "ATHENA.MIT.EDUraeburn" }, { 0x01, 0xdb, 0xee, 0x7f, 0x4a, 0x9e, 0x24, 0x3e, 0x98, 0x8b, 0x62, 0xc7, 0x3c, 0xda, 0x93, 0x5d } }, { 8, 21, 1200, (unsigned char*)"password", { "ATHENA.MIT.EDUraeburn" }, { 0x5c, 0x08, 0xeb, 0x61, 0xfd, 0xf7, 0x1e, 0x4e, 0x4e, 0xc3, 0xcf, 0x6b, 0xa1, 0xf5, 0x51, 0x2b } } }; int main() { unsigned int i, j, key_len = 256; unsigned char key[256]; printf("\nTest of RFC2898 Password Based Key Derivation"); for(i = 0; i < 5; ++i) { derive_key(tests[i].pwd, tests[i].pwd_len, tests[i].salt, tests[i].salt_len, tests[i].it_count, key, key_len); printf("\ntest %i: ", i + 1); printf("key %s", memcmp(tests[i].key, key, 16) ? "is bad" : "is good"); for(j = 0; j < key_len && j < 64; j += 4) { if(j % 16 == 0) printf("\n"); printf("0x%02x%02x%02x%02x ", key[j], key[j + 1], key[j + 2], key[j + 3]); } printf(j < key_len ? " ... \n" : "\n"); } printf("\n"); return 0; } #if defined(__cplusplus) } #endif #endif ================================================ FILE: BNN/cpp/minizip/aes/pwd2key.h ================================================ /* --------------------------------------------------------------------------- Copyright (c) 2002, Dr Brian Gladman, Worcester, UK. All rights reserved. LICENSE TERMS The free distribution and use of this software in both source and binary form is allowed (with or without changes) provided that: 1. distributions of this source code include the above copyright notice, this list of conditions and the following disclaimer; 2. distributions in binary form include the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other associated materials; 3. the copyright holder's name is not used to endorse products built using this software without specific written permission. ALTERNATIVELY, provided that this notice is retained in full, this product may be distributed under the terms of the GNU General Public License (GPL), in which case the provisions of the GPL apply INSTEAD OF those given above. DISCLAIMER This software is provided 'as is' with no explicit or implied warranties in respect of its properties, including, but not limited to, correctness and/or fitness for purpose. --------------------------------------------------------------------------- Issue Date: 26/08/2003 This is an implementation of RFC2898, which specifies key derivation from a password and a salt value. */ #ifndef PWD2KEY_H #define PWD2KEY_H #if defined(__cplusplus) extern "C" { #endif void derive_key( const unsigned char pwd[], /* the PASSWORD, and */ unsigned int pwd_len, /* its length */ const unsigned char salt[], /* the SALT and its */ unsigned int salt_len, /* length */ unsigned int iter, /* the number of iterations */ unsigned char key[], /* space for the output key */ unsigned int key_len); /* and its required length */ #if defined(__cplusplus) } #endif #endif ================================================ FILE: BNN/cpp/minizip/aes/sha1.c ================================================ /* --------------------------------------------------------------------------- Copyright (c) 2002, Dr Brian Gladman, Worcester, UK. All rights reserved. LICENSE TERMS The free distribution and use of this software in both source and binary form is allowed (with or without changes) provided that: 1. distributions of this source code include the above copyright notice, this list of conditions and the following disclaimer; 2. distributions in binary form include the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other associated materials; 3. the copyright holder's name is not used to endorse products built using this software without specific written permission. ALTERNATIVELY, provided that this notice is retained in full, this product may be distributed under the terms of the GNU General Public License (GPL), in which case the provisions of the GPL apply INSTEAD OF those given above. DISCLAIMER This software is provided 'as is' with no explicit or implied warranties in respect of its properties, including, but not limited to, correctness and/or fitness for purpose. --------------------------------------------------------------------------- Issue Date: 01/08/2005 This is a byte oriented version of SHA1 that operates on arrays of bytes stored in memory. */ #include /* for memcpy() etc. */ #include "sha1.h" #include "brg_endian.h" #if defined(__cplusplus) extern "C" { #endif #if defined( _MSC_VER ) && ( _MSC_VER > 800 ) #pragma intrinsic(memcpy) #endif #if 0 && defined(_MSC_VER) #define rotl32 _lrotl #define rotr32 _lrotr #else #define rotl32(x,n) (((x) << n) | ((x) >> (32 - n))) #define rotr32(x,n) (((x) >> n) | ((x) << (32 - n))) #endif #if !defined(bswap_32) #define bswap_32(x) ((rotr32((x), 24) & 0x00ff00ff) | (rotr32((x), 8) & 0xff00ff00)) #endif #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) #define SWAP_BYTES #else #undef SWAP_BYTES #endif #if defined(SWAP_BYTES) #define bsw_32(p,n) \ { int _i = (n); while(_i--) ((uint_32t*)p)[_i] = bswap_32(((uint_32t*)p)[_i]); } #else #define bsw_32(p,n) #endif #define SHA1_MASK (SHA1_BLOCK_SIZE - 1) #if 0 #define ch(x,y,z) (((x) & (y)) ^ (~(x) & (z))) #define parity(x,y,z) ((x) ^ (y) ^ (z)) #define maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z))) #else /* Discovered by Rich Schroeppel and Colin Plumb */ #define ch(x,y,z) ((z) ^ ((x) & ((y) ^ (z)))) #define parity(x,y,z) ((x) ^ (y) ^ (z)) #define maj(x,y,z) (((x) & (y)) | ((z) & ((x) ^ (y)))) #endif /* Compile 64 bytes of hash data into SHA1 context. Note */ /* that this routine assumes that the byte order in the */ /* ctx->wbuf[] at this point is in such an order that low */ /* address bytes in the ORIGINAL byte stream will go in */ /* this buffer to the high end of 32-bit words on BOTH big */ /* and little endian systems */ #ifdef ARRAY #define q(v,n) v[n] #else #define q(v,n) v##n #endif #define one_cycle(v,a,b,c,d,e,f,k,h) \ q(v,e) += rotr32(q(v,a),27) + \ f(q(v,b),q(v,c),q(v,d)) + k + h; \ q(v,b) = rotr32(q(v,b), 2) #define five_cycle(v,f,k,i) \ one_cycle(v, 0,1,2,3,4, f,k,hf(i )); \ one_cycle(v, 4,0,1,2,3, f,k,hf(i+1)); \ one_cycle(v, 3,4,0,1,2, f,k,hf(i+2)); \ one_cycle(v, 2,3,4,0,1, f,k,hf(i+3)); \ one_cycle(v, 1,2,3,4,0, f,k,hf(i+4)) VOID_RETURN sha1_compile(sha1_ctx ctx[1]) { uint_32t *w = ctx->wbuf; #ifdef ARRAY uint_32t v[5]; memcpy(v, ctx->hash, 5 * sizeof(uint_32t)); #else uint_32t v0, v1, v2, v3, v4; v0 = ctx->hash[0]; v1 = ctx->hash[1]; v2 = ctx->hash[2]; v3 = ctx->hash[3]; v4 = ctx->hash[4]; #endif #define hf(i) w[i] five_cycle(v, ch, 0x5a827999, 0); five_cycle(v, ch, 0x5a827999, 5); five_cycle(v, ch, 0x5a827999, 10); one_cycle(v,0,1,2,3,4, ch, 0x5a827999, hf(15)); \ #undef hf #define hf(i) (w[(i) & 15] = rotl32( \ w[((i) + 13) & 15] ^ w[((i) + 8) & 15] \ ^ w[((i) + 2) & 15] ^ w[(i) & 15], 1)) one_cycle(v,4,0,1,2,3, ch, 0x5a827999, hf(16)); one_cycle(v,3,4,0,1,2, ch, 0x5a827999, hf(17)); one_cycle(v,2,3,4,0,1, ch, 0x5a827999, hf(18)); one_cycle(v,1,2,3,4,0, ch, 0x5a827999, hf(19)); five_cycle(v, parity, 0x6ed9eba1, 20); five_cycle(v, parity, 0x6ed9eba1, 25); five_cycle(v, parity, 0x6ed9eba1, 30); five_cycle(v, parity, 0x6ed9eba1, 35); five_cycle(v, maj, 0x8f1bbcdc, 40); five_cycle(v, maj, 0x8f1bbcdc, 45); five_cycle(v, maj, 0x8f1bbcdc, 50); five_cycle(v, maj, 0x8f1bbcdc, 55); five_cycle(v, parity, 0xca62c1d6, 60); five_cycle(v, parity, 0xca62c1d6, 65); five_cycle(v, parity, 0xca62c1d6, 70); five_cycle(v, parity, 0xca62c1d6, 75); #ifdef ARRAY ctx->hash[0] += v[0]; ctx->hash[1] += v[1]; ctx->hash[2] += v[2]; ctx->hash[3] += v[3]; ctx->hash[4] += v[4]; #else ctx->hash[0] += v0; ctx->hash[1] += v1; ctx->hash[2] += v2; ctx->hash[3] += v3; ctx->hash[4] += v4; #endif } VOID_RETURN sha1_begin(sha1_ctx ctx[1]) { ctx->count[0] = ctx->count[1] = 0; ctx->hash[0] = 0x67452301; ctx->hash[1] = 0xefcdab89; ctx->hash[2] = 0x98badcfe; ctx->hash[3] = 0x10325476; ctx->hash[4] = 0xc3d2e1f0; } /* SHA1 hash data in an array of bytes into hash buffer and */ /* call the hash_compile function as required. */ VOID_RETURN sha1_hash(const unsigned char data[], unsigned long len, sha1_ctx ctx[1]) { uint_32t pos = (uint_32t)(ctx->count[0] & SHA1_MASK), space = SHA1_BLOCK_SIZE - pos; const unsigned char *sp = data; if((ctx->count[0] += len) < len) ++(ctx->count[1]); while(len >= space) /* tranfer whole blocks if possible */ { memcpy(((unsigned char*)ctx->wbuf) + pos, sp, space); sp += space; len -= space; space = SHA1_BLOCK_SIZE; pos = 0; bsw_32(ctx->wbuf, SHA1_BLOCK_SIZE >> 2); sha1_compile(ctx); } memcpy(((unsigned char*)ctx->wbuf) + pos, sp, len); } /* SHA1 final padding and digest calculation */ VOID_RETURN sha1_end(unsigned char hval[], sha1_ctx ctx[1]) { uint_32t i = (uint_32t)(ctx->count[0] & SHA1_MASK); /* put bytes in the buffer in an order in which references to */ /* 32-bit words will put bytes with lower addresses into the */ /* top of 32 bit words on BOTH big and little endian machines */ bsw_32(ctx->wbuf, (i + 3) >> 2); /* we now need to mask valid bytes and add the padding which is */ /* a single 1 bit and as many zero bits as necessary. Note that */ /* we can always add the first padding byte here because the */ /* buffer always has at least one empty slot */ ctx->wbuf[i >> 2] &= 0xffffff80 << 8 * (~i & 3); ctx->wbuf[i >> 2] |= 0x00000080 << 8 * (~i & 3); /* we need 9 or more empty positions, one for the padding byte */ /* (above) and eight for the length count. If there is not */ /* enough space, pad and empty the buffer */ if(i > SHA1_BLOCK_SIZE - 9) { if(i < 60) ctx->wbuf[15] = 0; sha1_compile(ctx); i = 0; } else /* compute a word index for the empty buffer positions */ i = (i >> 2) + 1; while(i < 14) /* and zero pad all but last two positions */ ctx->wbuf[i++] = 0; /* the following 32-bit length fields are assembled in the */ /* wrong byte order on little endian machines but this is */ /* corrected later since they are only ever used as 32-bit */ /* word values. */ ctx->wbuf[14] = (ctx->count[1] << 3) | (ctx->count[0] >> 29); ctx->wbuf[15] = ctx->count[0] << 3; sha1_compile(ctx); /* extract the hash value as bytes in case the hash buffer is */ /* misaligned for 32-bit words */ for(i = 0; i < SHA1_DIGEST_SIZE; ++i) hval[i] = (unsigned char)(ctx->hash[i >> 2] >> (8 * (~i & 3))); } VOID_RETURN sha1(unsigned char hval[], const unsigned char data[], unsigned long len) { sha1_ctx cx[1]; sha1_begin(cx); sha1_hash(data, len, cx); sha1_end(hval, cx); } #if defined(__cplusplus) } #endif ================================================ FILE: BNN/cpp/minizip/aes/sha1.h ================================================ /* --------------------------------------------------------------------------- Copyright (c) 2002, Dr Brian Gladman, Worcester, UK. All rights reserved. LICENSE TERMS The free distribution and use of this software in both source and binary form is allowed (with or without changes) provided that: 1. distributions of this source code include the above copyright notice, this list of conditions and the following disclaimer; 2. distributions in binary form include the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other associated materials; 3. the copyright holder's name is not used to endorse products built using this software without specific written permission. ALTERNATIVELY, provided that this notice is retained in full, this product may be distributed under the terms of the GNU General Public License (GPL), in which case the provisions of the GPL apply INSTEAD OF those given above. DISCLAIMER This software is provided 'as is' with no explicit or implied warranties in respect of its properties, including, but not limited to, correctness and/or fitness for purpose. --------------------------------------------------------------------------- Issue Date: 01/08/2005 */ #ifndef _SHA1_H #define _SHA1_H #include #include "brg_types.h" #define SHA1_BLOCK_SIZE 64 #define SHA1_DIGEST_SIZE 20 #if defined(__cplusplus) extern "C" { #endif /* type to hold the SHA256 context */ typedef struct { uint_32t count[2]; uint_32t hash[5]; uint_32t wbuf[16]; } sha1_ctx; /* Note that these prototypes are the same for both bit and */ /* byte oriented implementations. However the length fields */ /* are in bytes or bits as appropriate for the version used */ /* and bit sequences are input as arrays of bytes in which */ /* bit sequences run from the most to the least significant */ /* end of each byte */ VOID_RETURN sha1_compile(sha1_ctx ctx[1]); VOID_RETURN sha1_begin(sha1_ctx ctx[1]); VOID_RETURN sha1_hash(const unsigned char data[], unsigned long len, sha1_ctx ctx[1]); VOID_RETURN sha1_end(unsigned char hval[], sha1_ctx ctx[1]); VOID_RETURN sha1(unsigned char hval[], const unsigned char data[], unsigned long len); #if defined(__cplusplus) } #endif #endif ================================================ FILE: BNN/cpp/minizip/configure.ac ================================================ # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_INIT([minizip], [1.2.8], [bugzilla.redhat.com]) AC_CONFIG_SRCDIR([minizip.c]) AM_INIT_AUTOMAKE([foreign]) LT_INIT AC_MSG_CHECKING([whether to build example programs]) AC_ARG_ENABLE([demos], AC_HELP_STRING([--enable-demos], [build example programs])) AM_CONDITIONAL([COND_DEMOS], [test "$enable_demos" = yes]) if test "$enable_demos" = yes then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi case "${host}" in *-mingw* | mingw*) WIN32="yes" ;; *) ;; esac AM_CONDITIONAL([WIN32], [test "${WIN32}" = "yes"]) AC_SUBST([HAVE_UNISTD_H], [0]) AC_CHECK_HEADER([unistd.h], [HAVE_UNISTD_H=1], []) AC_CONFIG_FILES([Makefile minizip.pc]) AC_OUTPUT ================================================ FILE: BNN/cpp/minizip/crypt.h ================================================ /* crypt.h -- base code for traditional PKWARE encryption Version 1.01e, February 12th, 2005 Copyright (C) 1998-2005 Gilles Vollant Modifications for Info-ZIP crypting Copyright (C) 2003 Terry Thorsen This code is a modified version of crypting code in Info-ZIP distribution Copyright (C) 1990-2000 Info-ZIP. All rights reserved. See the Info-ZIP LICENSE file version 2000-Apr-09 or later for terms of use which also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html The encryption/decryption parts of this source code (as opposed to the non-echoing password parts) were originally written in Europe. The whole source package can be freely distributed, including from the USA. (Prior to January 2000, re-export from the US was a violation of US law.) This encryption code is a direct transcription of the algorithm from Roger Schlafly, described by Phil Katz in the file appnote.txt. This file (appnote.txt) is distributed with the PKZIP program (even in the version without encryption capabilities). If you don't need crypting in your application, just define symbols NOCRYPT and NOUNCRYPT. Mar 8th, 2016 - Lucio Cosmo Fixed support for 64bit builds for archives with "PKWARE" password. Changed long, unsigned long, unsigned to unsigned int in access functions to crctables and pkeys */ #define CRC32(c, b) ((*(pcrc_32_tab+(((unsigned int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8)) /*********************************************************************** * Return the next byte in the pseudo-random sequence */ static int decrypt_byte(unsigned int* pkeys) { unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an * unpredictable manner on 16-bit systems; not a problem * with any known compiler so far, though */ temp = ((unsigned int)(*(pkeys+2)) & 0xffff) | 2; return (unsigned int)(((temp * (temp ^ 1)) >> 8) & 0xff); } /*********************************************************************** * Update the encryption keys with the next byte of plain text */ static int update_keys(unsigned int* pkeys,const unsigned int* pcrc_32_tab,int c) { (*(pkeys+0)) = CRC32((*(pkeys+0)), c); (*(pkeys+1)) += (*(pkeys+0)) & 0xff; (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1; { register int keyshift = (int)((*(pkeys+1)) >> 24); (*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift); } return c; } /*********************************************************************** * Initialize the encryption keys and the random header according to * the given password. */ static void init_keys(const char* passwd,unsigned int* pkeys,const unsigned int* pcrc_32_tab) { *(pkeys+0) = 305419896L; *(pkeys+1) = 591751049L; *(pkeys+2) = 878082192L; while (*passwd != 0) { update_keys(pkeys,pcrc_32_tab,(int)*passwd); passwd++; } } #define zdecode(pkeys,pcrc_32_tab,c) \ (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys))) #define zencode(pkeys,pcrc_32_tab,c,t) \ (t=decrypt_byte(pkeys), update_keys(pkeys,pcrc_32_tab,c), t^(c)) #ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED #define RAND_HEAD_LEN 12 /* "last resort" source for second part of crypt seed pattern */ # ifndef ZCR_SEED2 # define ZCR_SEED2 3141592654UL /* use PI as default pattern */ # endif static int crypthead(const char* passwd, /* password string */ unsigned char* buf, /* where to write header */ int bufSize, unsigned int* pkeys, const unsigned int* pcrc_32_tab, unsigned int crcForCrypting) { int n; /* index in random header */ int t; /* temporary */ int c; /* random byte */ unsigned char header[RAND_HEAD_LEN-2]; /* random header */ static unsigned calls = 0; /* ensure different random header each time */ if (bufSize < RAND_HEAD_LEN) return 0; /* First generate RAND_HEAD_LEN-2 random bytes. We encrypt the * output of rand() to get less predictability, since rand() is * often poorly implemented. */ if (++calls == 1) { srand((unsigned)(time(NULL) ^ ZCR_SEED2)); } init_keys(passwd, pkeys, pcrc_32_tab); for (n = 0; n < RAND_HEAD_LEN-2; n++) { c = (rand() >> 7) & 0xff; header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t); } /* Encrypt random header (last two bytes is high word of crc) */ init_keys(passwd, pkeys, pcrc_32_tab); for (n = 0; n < RAND_HEAD_LEN-2; n++) { buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t); } buf[n++] = (unsigned char)zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 16) & 0xff, t); buf[n++] = (unsigned char)zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 24) & 0xff, t); return n; } #endif ================================================ FILE: BNN/cpp/minizip/ioapi.c ================================================ /* ioapi.h -- IO base function header for compress/uncompress .zip part of the MiniZip project Copyright (C) 1998-2010 Gilles Vollant http://www.winimage.com/zLibDll/minizip.html Modifications for Zip64 support Copyright (C) 2009-2010 Mathias Svensson http://result42.com This program is distributed under the terms of the same license as zlib. See the accompanying LICENSE file for the full text of the license. */ #include #include #include "ioapi.h" #if defined(_WIN32) # define snprintf _snprintf #endif #ifdef __APPLE__ /* In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions */ # define FOPEN_FUNC(filename, mode) fopen(filename, mode) # define FTELLO_FUNC(stream) ftello(stream) # define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin) #else # define FOPEN_FUNC(filename, mode) fopen64(filename, mode) # define FTELLO_FUNC(stream) ftello64(stream) # define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin) #endif /* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ #ifndef SEEK_CUR # define SEEK_CUR 1 #endif #ifndef SEEK_END # define SEEK_END 2 #endif #ifndef SEEK_SET # define SEEK_SET 0 #endif voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode) { if (pfilefunc->zfile_func64.zopen64_file != NULL) return (*(pfilefunc->zfile_func64.zopen64_file)) (pfilefunc->zfile_func64.opaque,filename,mode); return (*(pfilefunc->zopen32_file))(pfilefunc->zfile_func64.opaque,(const char*)filename,mode); } voidpf call_zopendisk64 OF((const zlib_filefunc64_32_def* pfilefunc, voidpf filestream, int number_disk, int mode)) { if (pfilefunc->zfile_func64.zopendisk64_file != NULL) return (*(pfilefunc->zfile_func64.zopendisk64_file)) (pfilefunc->zfile_func64.opaque,filestream,number_disk,mode); return (*(pfilefunc->zopendisk32_file))(pfilefunc->zfile_func64.opaque,filestream,number_disk,mode); } long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin) { uLong offsetTruncated; if (pfilefunc->zfile_func64.zseek64_file != NULL) return (*(pfilefunc->zfile_func64.zseek64_file)) (pfilefunc->zfile_func64.opaque,filestream,offset,origin); offsetTruncated = (uLong)offset; if (offsetTruncated != offset) return -1; return (*(pfilefunc->zseek32_file))(pfilefunc->zfile_func64.opaque,filestream,offsetTruncated,origin); } ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream) { uLong tell_uLong; if (pfilefunc->zfile_func64.zseek64_file != NULL) return (*(pfilefunc->zfile_func64.ztell64_file)) (pfilefunc->zfile_func64.opaque,filestream); tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream); if ((tell_uLong) == 0xffffffff) return (ZPOS64_T)-1; return tell_uLong; } void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32) { p_filefunc64_32->zfile_func64.zopen64_file = NULL; p_filefunc64_32->zfile_func64.zopendisk64_file = NULL; p_filefunc64_32->zopen32_file = p_filefunc32->zopen_file; p_filefunc64_32->zopendisk32_file = p_filefunc32->zopendisk_file; p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file; p_filefunc64_32->zfile_func64.zread_file = p_filefunc32->zread_file; p_filefunc64_32->zfile_func64.zwrite_file = p_filefunc32->zwrite_file; p_filefunc64_32->zfile_func64.ztell64_file = NULL; p_filefunc64_32->zfile_func64.zseek64_file = NULL; p_filefunc64_32->zfile_func64.zclose_file = p_filefunc32->zclose_file; p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file; p_filefunc64_32->zfile_func64.opaque = p_filefunc32->opaque; p_filefunc64_32->zseek32_file = p_filefunc32->zseek_file; p_filefunc64_32->ztell32_file = p_filefunc32->ztell_file; } static voidpf ZCALLBACK fopen_file_func OF((voidpf opaque, const char* filename, int mode)); static uLong ZCALLBACK fread_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size)); static uLong ZCALLBACK fwrite_file_func OF((voidpf opaque, voidpf stream, const void* buf,uLong size)); static ZPOS64_T ZCALLBACK ftell64_file_func OF((voidpf opaque, voidpf stream)); static long ZCALLBACK fseek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); static int ZCALLBACK fclose_file_func OF((voidpf opaque, voidpf stream)); static int ZCALLBACK ferror_file_func OF((voidpf opaque, voidpf stream)); typedef struct { FILE *file; int filenameLength; void *filename; } FILE_IOPOSIX; static voidpf file_build_ioposix(FILE *file, const char *filename) { FILE_IOPOSIX *ioposix = NULL; if (file == NULL) return NULL; ioposix = (FILE_IOPOSIX*)malloc(sizeof(FILE_IOPOSIX)); ioposix->file = file; ioposix->filenameLength = strlen(filename) + 1; ioposix->filename = (char*)malloc(ioposix->filenameLength * sizeof(char)); strncpy(ioposix->filename, filename, ioposix->filenameLength); return (voidpf)ioposix; } static voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* filename, int mode) { FILE* file = NULL; const char* mode_fopen = NULL; if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER) == ZLIB_FILEFUNC_MODE_READ) mode_fopen = "rb"; else if (mode & ZLIB_FILEFUNC_MODE_EXISTING) mode_fopen = "r+b"; else if (mode & ZLIB_FILEFUNC_MODE_CREATE) mode_fopen = "wb"; if ((filename != NULL) && (mode_fopen != NULL)) { file = fopen(filename, mode_fopen); return file_build_ioposix(file, filename); } return file; } static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename, int mode) { FILE* file = NULL; const char* mode_fopen = NULL; if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER) == ZLIB_FILEFUNC_MODE_READ) mode_fopen = "rb"; else if (mode & ZLIB_FILEFUNC_MODE_EXISTING) mode_fopen = "r+b"; else if (mode & ZLIB_FILEFUNC_MODE_CREATE) mode_fopen = "wb"; if ((filename != NULL) && (mode_fopen != NULL)) { file = FOPEN_FUNC((const char*)filename, mode_fopen); return file_build_ioposix(file, (const char*)filename); } return file; } static voidpf ZCALLBACK fopendisk64_file_func (voidpf opaque, voidpf stream, int number_disk, int mode) { FILE_IOPOSIX *ioposix = NULL; char *diskFilename = NULL; voidpf ret = NULL; int i = 0; if (stream == NULL) return NULL; ioposix = (FILE_IOPOSIX*)stream; diskFilename = (char*)malloc(ioposix->filenameLength * sizeof(char)); strncpy(diskFilename, ioposix->filename, ioposix->filenameLength); for (i = ioposix->filenameLength - 1; i >= 0; i -= 1) { if (diskFilename[i] != '.') continue; snprintf(&diskFilename[i], ioposix->filenameLength - i, ".z%02d", number_disk + 1); break; } if (i >= 0) ret = fopen64_file_func(opaque, diskFilename, mode); free(diskFilename); return ret; } static voidpf ZCALLBACK fopendisk_file_func (voidpf opaque, voidpf stream, int number_disk, int mode) { FILE_IOPOSIX *ioposix = NULL; char *diskFilename = NULL; voidpf ret = NULL; int i = 0; if (stream == NULL) return NULL; ioposix = (FILE_IOPOSIX*)stream; diskFilename = (char*)malloc(ioposix->filenameLength * sizeof(char)); strncpy(diskFilename, ioposix->filename, ioposix->filenameLength); for (i = ioposix->filenameLength - 1; i >= 0; i -= 1) { if (diskFilename[i] != '.') continue; snprintf(&diskFilename[i], ioposix->filenameLength - i, ".z%02d", number_disk + 1); break; } if (i >= 0) ret = fopen_file_func(opaque, diskFilename, mode); free(diskFilename); return ret; } static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf, uLong size) { FILE_IOPOSIX *ioposix = NULL; uLong ret; if (stream == NULL) return -1; ioposix = (FILE_IOPOSIX*)stream; ret = (uLong)fread(buf, 1, (size_t)size, ioposix->file); return ret; } static uLong ZCALLBACK fwrite_file_func (voidpf opaque, voidpf stream, const void* buf, uLong size) { FILE_IOPOSIX *ioposix = NULL; uLong ret; if (stream == NULL) return -1; ioposix = (FILE_IOPOSIX*)stream; ret = (uLong)fwrite(buf, 1, (size_t)size, ioposix->file); return ret; } static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream) { FILE_IOPOSIX *ioposix = NULL; long ret = -1; if (stream == NULL) return ret; ioposix = (FILE_IOPOSIX*)stream; ret = ftell(ioposix->file); return ret; } static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream) { FILE_IOPOSIX *ioposix = NULL; ZPOS64_T ret = -1; if (stream == NULL) return ret; ioposix = (FILE_IOPOSIX*)stream; ret = FTELLO_FUNC(ioposix->file); return ret; } static long ZCALLBACK fseek_file_func (voidpf opaque, voidpf stream, uLong offset, int origin) { FILE_IOPOSIX *ioposix = NULL; int fseek_origin = 0; long ret = 0; if (stream == NULL) return -1; ioposix = (FILE_IOPOSIX*)stream; switch (origin) { case ZLIB_FILEFUNC_SEEK_CUR: fseek_origin = SEEK_CUR; break; case ZLIB_FILEFUNC_SEEK_END: fseek_origin = SEEK_END; break; case ZLIB_FILEFUNC_SEEK_SET: fseek_origin = SEEK_SET; break; default: return -1; } if (fseek(ioposix->file, offset, fseek_origin) != 0) ret = -1; return ret; } static long ZCALLBACK fseek64_file_func (voidpf opaque, voidpf stream, ZPOS64_T offset, int origin) { FILE_IOPOSIX *ioposix = NULL; int fseek_origin = 0; long ret = 0; if (stream == NULL) return -1; ioposix = (FILE_IOPOSIX*)stream; switch (origin) { case ZLIB_FILEFUNC_SEEK_CUR: fseek_origin = SEEK_CUR; break; case ZLIB_FILEFUNC_SEEK_END: fseek_origin = SEEK_END; break; case ZLIB_FILEFUNC_SEEK_SET: fseek_origin = SEEK_SET; break; default: return -1; } if(FSEEKO_FUNC(ioposix->file, offset, fseek_origin) != 0) ret = -1; return ret; } static int ZCALLBACK fclose_file_func (voidpf opaque, voidpf stream) { FILE_IOPOSIX *ioposix = NULL; int ret = -1; if (stream == NULL) return ret; ioposix = (FILE_IOPOSIX*)stream; if (ioposix->filename != NULL) free(ioposix->filename); ret = fclose(ioposix->file); free(ioposix); return ret; } static int ZCALLBACK ferror_file_func (voidpf opaque, voidpf stream) { FILE_IOPOSIX *ioposix = NULL; int ret = -1; if (stream == NULL) return ret; ioposix = (FILE_IOPOSIX*)stream; ret = ferror(ioposix->file); return ret; } void fill_fopen_filefunc (zlib_filefunc_def* pzlib_filefunc_def) { pzlib_filefunc_def->zopen_file = fopen_file_func; pzlib_filefunc_def->zopendisk_file = fopendisk_file_func; pzlib_filefunc_def->zread_file = fread_file_func; pzlib_filefunc_def->zwrite_file = fwrite_file_func; pzlib_filefunc_def->ztell_file = ftell_file_func; pzlib_filefunc_def->zseek_file = fseek_file_func; pzlib_filefunc_def->zclose_file = fclose_file_func; pzlib_filefunc_def->zerror_file = ferror_file_func; pzlib_filefunc_def->opaque = NULL; } void fill_fopen64_filefunc (zlib_filefunc64_def* pzlib_filefunc_def) { pzlib_filefunc_def->zopen64_file = fopen64_file_func; pzlib_filefunc_def->zopendisk64_file = fopendisk64_file_func; pzlib_filefunc_def->zread_file = fread_file_func; pzlib_filefunc_def->zwrite_file = fwrite_file_func; pzlib_filefunc_def->ztell64_file = ftell64_file_func; pzlib_filefunc_def->zseek64_file = fseek64_file_func; pzlib_filefunc_def->zclose_file = fclose_file_func; pzlib_filefunc_def->zerror_file = ferror_file_func; pzlib_filefunc_def->opaque = NULL; } ================================================ FILE: BNN/cpp/minizip/ioapi.h ================================================ /* ioapi.h -- IO base function header for compress/uncompress .zip part of the MiniZip project Copyright (C) 1998-2010 Gilles Vollant http://www.winimage.com/zLibDll/minizip.html Modifications for Zip64 support Copyright (C) 2009-2010 Mathias Svensson http://result42.com This program is distributed under the terms of the same license as zlib. See the accompanying LICENSE file for the full text of the license. */ #ifndef _ZLIBIOAPI64_H #define _ZLIBIOAPI64_H #if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__)) # ifndef __USE_FILE_OFFSET64 # define __USE_FILE_OFFSET64 # endif # ifndef __USE_LARGEFILE64 # define __USE_LARGEFILE64 # endif # ifndef _LARGEFILE64_SOURCE # define _LARGEFILE64_SOURCE # endif # ifndef _FILE_OFFSET_BIT # define _FILE_OFFSET_BIT 64 # endif #endif #include #include #include "zlib.h" #if defined(USE_FILE32API) # define fopen64 fopen # define ftello64 ftell # define fseeko64 fseek #else # if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) # define fopen64 fopen # define ftello64 ftello # define fseeko64 fseeko # endif # ifdef _MSC_VER # define fopen64 fopen # if (_MSC_VER >= 1400) && (!(defined(NO_MSCVER_FILE64_FUNC))) # define ftello64 _ftelli64 # define fseeko64 _fseeki64 # else /* old MSC */ # define ftello64 ftell # define fseeko64 fseek # endif # endif #endif /* a type choosen by DEFINE */ #ifdef HAVE_64BIT_INT_CUSTOM typedef 64BIT_INT_CUSTOM_TYPE ZPOS64_T; #else # ifdef HAVE_STDINT_H # include "stdint.h" typedef uint64_t ZPOS64_T; # else # if defined(_MSC_VER) || defined(__BORLANDC__) typedef unsigned __int64 ZPOS64_T; # else typedef unsigned long long int ZPOS64_T; # endif # endif #endif #ifdef __cplusplus extern "C" { #endif #define ZLIB_FILEFUNC_SEEK_CUR (1) #define ZLIB_FILEFUNC_SEEK_END (2) #define ZLIB_FILEFUNC_SEEK_SET (0) #define ZLIB_FILEFUNC_MODE_READ (1) #define ZLIB_FILEFUNC_MODE_WRITE (2) #define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3) #define ZLIB_FILEFUNC_MODE_EXISTING (4) #define ZLIB_FILEFUNC_MODE_CREATE (8) #ifndef ZCALLBACK # if (defined(WIN32) || defined(_WIN32) || defined (WINDOWS) || \ defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK) # define ZCALLBACK CALLBACK # else # define ZCALLBACK # endif #endif typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode)); typedef voidpf (ZCALLBACK *opendisk_file_func) OF((voidpf opaque, voidpf stream, int number_disk, int mode)); typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size)); typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream)); typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream)); typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream)); typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin)); /* here is the "old" 32 bits structure structure */ typedef struct zlib_filefunc_def_s { open_file_func zopen_file; opendisk_file_func zopendisk_file; read_file_func zread_file; write_file_func zwrite_file; tell_file_func ztell_file; seek_file_func zseek_file; close_file_func zclose_file; testerror_file_func zerror_file; voidpf opaque; } zlib_filefunc_def; typedef ZPOS64_T (ZCALLBACK *tell64_file_func) OF((voidpf opaque, voidpf stream)); typedef long (ZCALLBACK *seek64_file_func) OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); typedef voidpf (ZCALLBACK *open64_file_func) OF((voidpf opaque, const void* filename, int mode)); typedef voidpf (ZCALLBACK *opendisk64_file_func)OF((voidpf opaque, voidpf stream, int number_disk, int mode)); typedef struct zlib_filefunc64_def_s { open64_file_func zopen64_file; opendisk64_file_func zopendisk64_file; read_file_func zread_file; write_file_func zwrite_file; tell64_file_func ztell64_file; seek64_file_func zseek64_file; close_file_func zclose_file; testerror_file_func zerror_file; voidpf opaque; } zlib_filefunc64_def; void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); void fill_fopen64_filefunc OF((zlib_filefunc64_def* pzlib_filefunc_def)); /* now internal definition, only for zip.c and unzip.h */ typedef struct zlib_filefunc64_32_def_s { zlib_filefunc64_def zfile_func64; open_file_func zopen32_file; opendisk_file_func zopendisk32_file; tell_file_func ztell32_file; seek_file_func zseek32_file; } zlib_filefunc64_32_def; #define ZREAD64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zread_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size)) #define ZWRITE64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zwrite_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size)) /*#define ZTELL64(filefunc,filestream) ((*((filefunc).ztell64_file)) ((filefunc).opaque,filestream))*/ /*#define ZSEEK64(filefunc,filestream,pos,mode) ((*((filefunc).zseek64_file)) ((filefunc).opaque,filestream,pos,mode))*/ #define ZCLOSE64(filefunc,filestream) ((*((filefunc).zfile_func64.zclose_file)) ((filefunc).zfile_func64.opaque,filestream)) #define ZERROR64(filefunc,filestream) ((*((filefunc).zfile_func64.zerror_file)) ((filefunc).zfile_func64.opaque,filestream)) voidpf call_zopen64 OF((const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)); voidpf call_zopendisk64 OF((const zlib_filefunc64_32_def* pfilefunc, voidpf filestream, int number_disk, int mode)); long call_zseek64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin)); ZPOS64_T call_ztell64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream)); void fill_zlib_filefunc64_32_def_from_filefunc32 OF((zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32)); #define ZOPEN64(filefunc,filename,mode) (call_zopen64((&(filefunc)),(filename),(mode))) #define ZOPENDISK64(filefunc,filestream,diskn,mode) (call_zopendisk64((&(filefunc)),(filestream),(diskn),(mode))) #define ZTELL64(filefunc,filestream) (call_ztell64((&(filefunc)),(filestream))) #define ZSEEK64(filefunc,filestream,pos,mode) (call_zseek64((&(filefunc)),(filestream),(pos),(mode))) #ifdef __cplusplus } #endif #endif ================================================ FILE: BNN/cpp/minizip/ioapi_buf.c ================================================ /* ioapi_buf.h -- IO base function header for compress/uncompress .zip files using zlib + zip or unzip API This version of ioapi is designed to buffer IO. Copyright (C) 1998-2003 Gilles Vollant (C) 2012-2014 Nathan Moinvaziri This program is distributed under the terms of the same license as zlib. See the accompanying LICENSE file for the full text of the license. */ #include #include #include #include #include "zlib.h" #include "ioapi.h" #include "ioapi_buf.h" #if defined(_WIN32) # include # define PRINTF _cprintf # define VPRINTF _vcprintf #else # define PRINTF printf # define VPRINTF vprintf #endif //#define IOBUF_VERBOSE #ifdef __GNUC__ #ifndef max #define max(x,y) ({ \ const typeof(x) _x = (x); \ const typeof(y) _y = (y); \ (void) (&_x == &_y); \ _x > _y ? _x : _y; }) #endif /* __GNUC__ */ #ifndef min #define min(x,y) ({ \ const typeof(x) _x = (x); \ const typeof(y) _y = (y); \ (void) (&_x == &_y); \ _x < _y ? _x : _y; }) #endif #endif typedef struct ourstream_s { char readBuffer[IOBUF_BUFFERSIZE]; uInt readBufferLength; uInt readBufferPos; uInt readBufferHits; uInt readBufferMisses; char writeBuffer[IOBUF_BUFFERSIZE]; uInt writeBufferLength; uInt writeBufferPos; uInt writeBufferHits; uInt writeBufferMisses; ZPOS64_T position; voidpf stream; } ourstream_t; #if defined(IOBUF_VERBOSE) # define print_buf(o,s,f,...) print_buf_internal(o,s,f,__VA_ARGS__); #else # define print_buf(o,s,f,...) #endif void print_buf_internal(voidpf opaque, voidpf stream, char *format, ...) { ourstream_t *streamio = (ourstream_t *)stream; va_list arglist; PRINTF("Buf stream %p - ", streamio); va_start(arglist, format); VPRINTF(format, arglist); va_end(arglist); } voidpf fopen_buf_internal_func (opaque, stream, number_disk, mode) voidpf opaque; voidpf stream; int number_disk; int mode; { ourstream_t *streamio = NULL; if (stream == NULL) return NULL; streamio = (ourstream_t *)malloc(sizeof(ourstream_t)); if (streamio == NULL) return NULL; memset(streamio, 0, sizeof(ourstream_t)); streamio->stream = stream; print_buf(opaque, streamio, "open [num %d mode %d]\n", number_disk, mode); return streamio; } voidpf ZCALLBACK fopen_buf_func (opaque, filename, mode) voidpf opaque; const char* filename; int mode; { ourbuffer_t *bufio = (ourbuffer_t *)opaque; voidpf stream = bufio->filefunc.zopen_file(bufio->filefunc.opaque, filename, mode); return fopen_buf_internal_func(opaque, stream, 0, mode); } voidpf ZCALLBACK fopen64_buf_func (opaque, filename, mode) voidpf opaque; const char* filename; int mode; { ourbuffer_t *bufio = (ourbuffer_t *)opaque; voidpf stream = bufio->filefunc64.zopen64_file(bufio->filefunc64.opaque, filename, mode); return fopen_buf_internal_func(opaque, stream, 0, mode); } voidpf ZCALLBACK fopendisk_buf_func (opaque, stream_cd, number_disk, mode) voidpf opaque; voidpf stream_cd; int number_disk; int mode; { ourbuffer_t *bufio = (ourbuffer_t *)opaque; ourstream_t *streamio = (ourstream_t *)stream_cd; voidpf *stream = bufio->filefunc.zopendisk_file(bufio->filefunc.opaque, streamio->stream, number_disk, mode); return fopen_buf_internal_func(opaque, stream, number_disk, mode); } voidpf ZCALLBACK fopendisk64_buf_func (opaque, stream_cd, number_disk, mode) voidpf opaque; voidpf stream_cd; int number_disk; int mode; { ourbuffer_t *bufio = (ourbuffer_t *)opaque; ourstream_t *streamio = (ourstream_t *)stream_cd; voidpf stream = bufio->filefunc64.zopendisk64_file(bufio->filefunc64.opaque, streamio->stream, number_disk, mode); return fopen_buf_internal_func(opaque, stream, number_disk, mode); } long fflush_buf OF((voidpf opaque, voidpf stream)); long fflush_buf (opaque, stream) voidpf opaque; voidpf stream; { ourbuffer_t *bufio = (ourbuffer_t *)opaque; ourstream_t *streamio = (ourstream_t *)stream; uInt totalBytesWritten = 0; uInt bytesToWrite = streamio->writeBufferLength; uInt bytesLeftToWrite = streamio->writeBufferLength; int bytesWritten = 0; while (bytesLeftToWrite > 0) { if (bufio->filefunc64.zwrite_file != NULL) bytesWritten = bufio->filefunc64.zwrite_file(bufio->filefunc64.opaque, streamio->stream, streamio->writeBuffer + (bytesToWrite - bytesLeftToWrite), bytesLeftToWrite); else bytesWritten = bufio->filefunc.zwrite_file(bufio->filefunc.opaque, streamio->stream, streamio->writeBuffer + (bytesToWrite - bytesLeftToWrite), bytesLeftToWrite); streamio->writeBufferMisses += 1; print_buf(opaque, stream, "write flush [%d:%d len %d]\n", bytesToWrite, bytesLeftToWrite, streamio->writeBufferLength); if (bytesWritten < 0) return bytesWritten; totalBytesWritten += bytesWritten; bytesLeftToWrite -= bytesWritten; streamio->position += bytesWritten; } streamio->writeBufferLength = 0; streamio->writeBufferPos = 0; return totalBytesWritten; } uLong ZCALLBACK fread_buf_func (opaque, stream, buf, size) voidpf opaque; voidpf stream; void* buf; uLong size; { ourbuffer_t *bufio = (ourbuffer_t *)opaque; ourstream_t *streamio = (ourstream_t *)stream; uInt bytesToRead = 0; uInt bufLength = 0; uInt bytesToCopy = 0; uInt bytesLeftToRead = size; uInt bytesRead = -1; print_buf(opaque, stream, "read [size %ld pos %lld]\n", size, streamio->position); if (streamio->writeBufferLength > 0) { print_buf(opaque, stream, "switch from write to read, not yet supported [%lld]\n", streamio->position); } while (bytesLeftToRead > 0) { if ((streamio->readBufferLength == 0) || (streamio->readBufferPos == streamio->readBufferLength)) { if (streamio->readBufferLength == IOBUF_BUFFERSIZE) { streamio->readBufferPos = 0; streamio->readBufferLength = 0; } bytesToRead = IOBUF_BUFFERSIZE -(streamio->readBufferLength - streamio->readBufferPos); if (bufio->filefunc64.zread_file != NULL) bytesRead = bufio->filefunc64.zread_file(bufio->filefunc64.opaque, streamio->stream, streamio->readBuffer + streamio->readBufferPos, bytesToRead); else bytesRead = bufio->filefunc.zread_file(bufio->filefunc.opaque, streamio->stream, streamio->readBuffer + streamio->readBufferPos, bytesToRead); streamio->readBufferMisses += 1; streamio->readBufferLength += bytesRead; streamio->position += bytesRead; print_buf(opaque, stream, "filled [read %d/%d buf %d:%d pos %lld]\n", bytesRead, bytesToRead, streamio->readBufferPos, streamio->readBufferLength, streamio->position); if (bytesRead == 0) break; } if ((streamio->readBufferLength - streamio->readBufferPos) > 0) { bytesToCopy = min(bytesLeftToRead, (streamio->readBufferLength - streamio->readBufferPos)); memcpy((char *)buf + bufLength, streamio->readBuffer + streamio->readBufferPos, bytesToCopy); bufLength += bytesToCopy; bytesLeftToRead -= bytesToCopy; streamio->readBufferHits += 1; streamio->readBufferPos += bytesToCopy; print_buf(opaque, stream, "emptied [copied %d remaining %d buf %d:%d pos %lld]\n", bytesToCopy, bytesLeftToRead, streamio->readBufferPos, streamio->readBufferLength, streamio->position); } } return size - bytesLeftToRead; } uLong ZCALLBACK fwrite_buf_func (opaque, stream, buf, size) voidpf opaque; voidpf stream; const void* buf; uLong size; { ourbuffer_t *bufio = (ourbuffer_t *)opaque; ourstream_t *streamio = (ourstream_t *)stream; uInt bytesToWrite = size; uInt bytesLeftToWrite = size; uInt bytesToCopy = 0; int retVal = 0; print_buf(opaque, stream, "write [size %ld len %d pos %lld]\n", size, streamio->writeBufferLength, streamio->position); if (streamio->readBufferLength > 0) { streamio->position -= streamio->readBufferLength; streamio->position += streamio->readBufferPos; streamio->readBufferLength = 0; streamio->readBufferPos = 0; print_buf(opaque, stream, "switch from read to write [%lld]\n", streamio->position); if (bufio->filefunc64.zseek64_file != NULL) retVal = bufio->filefunc64.zseek64_file(bufio->filefunc64.opaque, streamio->stream, streamio->position, ZLIB_FILEFUNC_SEEK_SET); else retVal = bufio->filefunc.zseek_file(bufio->filefunc.opaque, streamio->stream, (uLong)streamio->position, ZLIB_FILEFUNC_SEEK_SET); if (retVal != 0) return -1; } while (bytesLeftToWrite > 0) { bytesToCopy = min(bytesLeftToWrite, (IOBUF_BUFFERSIZE - min(streamio->writeBufferLength, streamio->writeBufferPos))); if (bytesToCopy == 0) { if (fflush_buf(opaque, stream) <= 0) return 0; continue; } memcpy(streamio->writeBuffer + streamio->writeBufferPos, (char *)buf + (bytesToWrite - bytesLeftToWrite), bytesToCopy); print_buf(opaque, stream, "write copy [remaining %d write %d:%d len %d]\n", bytesToCopy, bytesToWrite, bytesLeftToWrite, streamio->writeBufferLength); bytesLeftToWrite -= bytesToCopy; streamio->writeBufferPos += bytesToCopy; streamio->writeBufferHits += 1; if (streamio->writeBufferPos > streamio->writeBufferLength) streamio->writeBufferLength += streamio->writeBufferPos - streamio->writeBufferLength; } return size - bytesLeftToWrite; } ZPOS64_T ftell_buf_internal_func (opaque, stream, position) voidpf opaque; voidpf stream; ZPOS64_T position; { ourstream_t *streamio = (ourstream_t *)stream; streamio->position = position; print_buf(opaque, stream, "tell [pos %llu readpos %d writepos %d err %d]\n", streamio->position, streamio->readBufferPos, streamio->writeBufferPos, errno); if (streamio->readBufferLength > 0) position -= (streamio->readBufferLength - streamio->readBufferPos); if (streamio->writeBufferLength > 0) position += streamio->writeBufferPos; return position; } long ZCALLBACK ftell_buf_func (opaque, stream) voidpf opaque; voidpf stream; { ourbuffer_t *bufio = (ourbuffer_t *)opaque; ourstream_t *streamio = (ourstream_t *)stream; ZPOS64_T position = bufio->filefunc.ztell_file(bufio->filefunc.opaque, streamio->stream); return (long)ftell_buf_internal_func(opaque, stream, position); } ZPOS64_T ZCALLBACK ftell64_buf_func (opaque, stream) voidpf opaque; voidpf stream; { ourbuffer_t *bufio = (ourbuffer_t *)opaque; ourstream_t *streamio = (ourstream_t *)stream; ZPOS64_T position = bufio->filefunc64.ztell64_file(bufio->filefunc64.opaque, streamio->stream); return ftell_buf_internal_func(opaque, stream, position); } int fseek_buf_internal_func (opaque, stream, offset, origin) voidpf opaque; voidpf stream; ZPOS64_T offset; int origin; { ourstream_t *streamio = (ourstream_t *)stream; print_buf(opaque, stream, "seek [origin %d offset %llu pos %lld]\n", origin, offset, streamio->position); switch (origin) { case ZLIB_FILEFUNC_SEEK_SET: if (streamio->writeBufferLength > 0) { if ((offset >= streamio->position) && (offset <= streamio->position + streamio->writeBufferLength)) { streamio->writeBufferPos = (uLong)(offset - streamio->position); return 0; } } if ((streamio->readBufferLength > 0) && (offset < streamio->position) && (offset >= streamio->position - streamio->readBufferLength)) { streamio->readBufferPos = (uLong)(offset - (streamio->position - streamio->readBufferLength)); return 0; } if (fflush_buf(opaque, stream) < 0) return -1; streamio->position = offset; break; case ZLIB_FILEFUNC_SEEK_CUR: if (streamio->readBufferLength > 0) { if (offset <= (streamio->readBufferLength - streamio->readBufferPos)) { streamio->readBufferPos += (uLong)offset; return 0; } offset -= (streamio->readBufferLength - streamio->readBufferPos); streamio->position += offset; } if (streamio->writeBufferLength > 0) { if (offset <= (streamio->writeBufferLength - streamio->writeBufferPos)) { streamio->writeBufferPos += (uLong)offset; return 0; } offset -= (streamio->writeBufferLength - streamio->writeBufferPos); } if (fflush_buf(opaque, stream) < 0) return -1; break; case ZLIB_FILEFUNC_SEEK_END: if (streamio->writeBufferLength > 0) { streamio->writeBufferPos = streamio->writeBufferLength; return 0; } break; } streamio->readBufferLength = 0; streamio->readBufferPos = 0; streamio->writeBufferLength = 0; streamio->writeBufferPos = 0; return 1; } long ZCALLBACK fseek_buf_func (opaque, stream, offset, origin) voidpf opaque; voidpf stream; uLong offset; int origin; { ourbuffer_t *bufio = (ourbuffer_t *)opaque; ourstream_t *streamio = (ourstream_t *)stream; int retVal = -1; if (bufio->filefunc.zseek_file == NULL) return retVal; retVal = fseek_buf_internal_func(opaque, stream, offset, origin); if (retVal == 1) retVal = bufio->filefunc.zseek_file(bufio->filefunc.opaque, streamio->stream, offset, origin); return retVal; } long ZCALLBACK fseek64_buf_func (opaque, stream, offset, origin) voidpf opaque; voidpf stream; ZPOS64_T offset; int origin; { ourbuffer_t *bufio = (ourbuffer_t *)opaque; ourstream_t *streamio = (ourstream_t *)stream; int retVal = -1; if (bufio->filefunc64.zseek64_file == NULL) return retVal; retVal = fseek_buf_internal_func(opaque, stream, offset, origin); if (retVal == 1) retVal = bufio->filefunc64.zseek64_file(bufio->filefunc64.opaque, streamio->stream, offset, origin); return retVal; } int ZCALLBACK fclose_buf_func (opaque, stream) voidpf opaque; voidpf stream; { ourbuffer_t *bufio = (ourbuffer_t *)opaque; ourstream_t *streamio = (ourstream_t *)stream; int retVal = 0; fflush_buf(opaque, stream); print_buf(opaque, stream, "close\n"); if (streamio->readBufferHits + streamio->readBufferMisses > 0) print_buf(opaque, stream, "read efficency %.02f%%\n", (streamio->readBufferHits / ((float)streamio->readBufferHits + streamio->readBufferMisses)) * 100); if (streamio->writeBufferHits + streamio->writeBufferMisses > 0) print_buf(opaque, stream, "write efficency %.02f%%\n", (streamio->writeBufferHits / ((float)streamio->writeBufferHits + streamio->writeBufferMisses)) * 100); if (bufio->filefunc64.zclose_file != NULL) retVal = bufio->filefunc64.zclose_file(bufio->filefunc64.opaque, streamio->stream); else retVal = bufio->filefunc.zclose_file(bufio->filefunc.opaque, streamio->stream); free(streamio); return retVal; } int ZCALLBACK ferror_buf_func (opaque, stream) voidpf opaque; voidpf stream; { ourbuffer_t *bufio = (ourbuffer_t *)opaque; ourstream_t *streamio = (ourstream_t *)stream; if (bufio->filefunc64.zerror_file != NULL) return bufio->filefunc64.zerror_file(bufio->filefunc64.opaque, streamio->stream); return bufio->filefunc.zerror_file(bufio->filefunc.opaque, streamio->stream); } void fill_buffer_filefunc (pzlib_filefunc_def, ourbuf) zlib_filefunc_def* pzlib_filefunc_def; ourbuffer_t *ourbuf; { pzlib_filefunc_def->zopen_file = fopen_buf_func; pzlib_filefunc_def->zopendisk_file = fopendisk_buf_func; pzlib_filefunc_def->zread_file = fread_buf_func; pzlib_filefunc_def->zwrite_file = fwrite_buf_func; pzlib_filefunc_def->ztell_file = ftell_buf_func; pzlib_filefunc_def->zseek_file = fseek_buf_func; pzlib_filefunc_def->zclose_file = fclose_buf_func; pzlib_filefunc_def->zerror_file = ferror_buf_func; pzlib_filefunc_def->opaque = ourbuf; } void fill_buffer_filefunc64 (pzlib_filefunc_def, ourbuf) zlib_filefunc64_def* pzlib_filefunc_def; ourbuffer_t *ourbuf; { pzlib_filefunc_def->zopen64_file = fopen64_buf_func; pzlib_filefunc_def->zopendisk64_file = fopendisk64_buf_func; pzlib_filefunc_def->zread_file = fread_buf_func; pzlib_filefunc_def->zwrite_file = fwrite_buf_func; pzlib_filefunc_def->ztell64_file = ftell64_buf_func; pzlib_filefunc_def->zseek64_file = fseek64_buf_func; pzlib_filefunc_def->zclose_file = fclose_buf_func; pzlib_filefunc_def->zerror_file = ferror_buf_func; pzlib_filefunc_def->opaque = ourbuf; } ================================================ FILE: BNN/cpp/minizip/ioapi_buf.h ================================================ /* ioapi_buf.h -- IO base function header for compress/uncompress .zip files using zlib + zip or unzip API This version of ioapi is designed to buffer IO. Copyright (C) 1998-2003 Gilles Vollant (C) 2012-2014 Nathan Moinvaziri This program is distributed under the terms of the same license as zlib. See the accompanying LICENSE file for the full text of the license. */ #ifndef _IOAPI_BUF_H #define _IOAPI_BUF_H #include #include #include #include "zlib.h" #include "ioapi.h" #define IOBUF_BUFFERSIZE (64 * 1024) #ifdef __cplusplus extern "C" { #endif voidpf ZCALLBACK fopen_buf_func OF((voidpf opaque,const char* filename,int mode)); voidpf ZCALLBACK fopen64_buf_func OF((voidpf opaque,const char* filename,int mode)); voidpf ZCALLBACK fopendisk_buf_func OF((voidpf opaque, voidpf stream_cd, int number_disk, int mode)); voidpf ZCALLBACK fopendisk64_buf_func OF((voidpf opaque, voidpf stream_cd, int number_disk, int mode)); uLong ZCALLBACK fread_buf_func OF((voidpf opaque,voidpf stream,void* buf,uLong size)); uLong ZCALLBACK fwrite_buf_func OF((voidpf opaque,voidpf stream,const void* buf,uLong size)); long ZCALLBACK ftell_buf_func OF((voidpf opaque,voidpf stream)); ZPOS64_T ZCALLBACK ftell64_buf_func OF((voidpf opaque, voidpf stream)); long ZCALLBACK fseek_buf_func OF((voidpf opaque,voidpf stream,uLong offset,int origin)); long ZCALLBACK fseek64_buf_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); int ZCALLBACK fclose_buf_func OF((voidpf opaque,voidpf stream)); int ZCALLBACK ferror_buf_func OF((voidpf opaque,voidpf stream)); typedef struct ourbuffer_s { zlib_filefunc_def filefunc; zlib_filefunc64_def filefunc64; } ourbuffer_t; void fill_buffer_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def, ourbuffer_t *ourbuf)); void fill_buffer_filefunc64 OF((zlib_filefunc64_def* pzlib_filefunc_def, ourbuffer_t *ourbuf)); #ifdef __cplusplus } #endif #endif ================================================ FILE: BNN/cpp/minizip/ioapi_mem.c ================================================ /* ioapi_mem.h -- IO base function header for compress/uncompress .zip files using zlib + zip or unzip API This version of ioapi is designed to access memory rather than files. We do use a region of memory to put data in to and take it out of. We do not have auto-extending buffers and do not inform anyone else that the data has been written. It is really intended for accessing a zip archive embedded in an application such that I can write an installer with no external files. Creation of archives has not been attempted, although parts of the framework are present. Based on Unzip ioapi.c version 0.22, May 19th, 2003 Copyright (C) 1998-2003 Gilles Vollant (C) 2003 Justin Fletcher This file is under the same license as the Unzip tool it is distributed with. */ #include #include #include #include "zlib.h" #include "ioapi.h" #include "ioapi_mem.h" #ifndef IOMEM_BUFFERSIZE # define IOMEM_BUFFERSIZE (64 * 1024) #endif voidpf ZCALLBACK fopen_mem_func (opaque, filename, mode) voidpf opaque; const char* filename; int mode; { ourmemory_t *mem = (ourmemory_t *)opaque; if (mem == NULL) return NULL; /* Mem structure passed in was null */ if (mode & ZLIB_FILEFUNC_MODE_CREATE) { if (mem->grow) { mem->size = IOMEM_BUFFERSIZE; mem->base = (char *)malloc(mem->size); } mem->limit = 0; /* When writing we start with 0 bytes written */ } else mem->limit = mem->size; mem->cur_offset = 0; return mem; } voidpf ZCALLBACK fopendisk_mem_func (opaque, stream, number_disk, mode) voidpf opaque; voidpf stream; int number_disk; int mode; { /* Not used */ return NULL; } uLong ZCALLBACK fread_mem_func (opaque, stream, buf, size) voidpf opaque; voidpf stream; void* buf; uLong size; { ourmemory_t *mem = (ourmemory_t *)stream; if (size > mem->size - mem->cur_offset) size = mem->size - mem->cur_offset; memcpy(buf, mem->base + mem->cur_offset, size); mem->cur_offset += size; return size; } uLong ZCALLBACK fwrite_mem_func (opaque, stream, buf, size) voidpf opaque; voidpf stream; const void* buf; uLong size; { ourmemory_t *mem = (ourmemory_t *)stream; char *newbase = NULL; uLong newmemsize = 0; if (size > mem->size - mem->cur_offset) { if (mem->grow) { newmemsize = mem->size; if (size < IOMEM_BUFFERSIZE) newmemsize += IOMEM_BUFFERSIZE; else newmemsize += size; newbase = (char *)malloc(newmemsize); memcpy(newbase, mem->base, mem->size); free(mem->base); mem->base = newbase; mem->size = newmemsize; } else size = mem->size - mem->cur_offset; } memcpy(mem->base + mem->cur_offset, buf, size); mem->cur_offset += size; if (mem->cur_offset > mem->limit) mem->limit = mem->cur_offset; return size; } long ZCALLBACK ftell_mem_func (opaque, stream) voidpf opaque; voidpf stream; { ourmemory_t *mem = (ourmemory_t *)stream; return mem->cur_offset; } long ZCALLBACK fseek_mem_func (opaque, stream, offset, origin) voidpf opaque; voidpf stream; uLong offset; int origin; { ourmemory_t *mem = (ourmemory_t *)stream; uLong new_pos; switch (origin) { case ZLIB_FILEFUNC_SEEK_CUR: new_pos = mem->cur_offset + offset; break; case ZLIB_FILEFUNC_SEEK_END: new_pos = mem->limit + offset; break; case ZLIB_FILEFUNC_SEEK_SET: new_pos = offset; break; default: return -1; } if (new_pos > mem->size) return 1; /* Failed to seek that far */ mem->cur_offset = new_pos; return 0; } int ZCALLBACK fclose_mem_func (opaque, stream) voidpf opaque; voidpf stream; { /* Even with grow = 1, caller must always free() memory */ return 0; } int ZCALLBACK ferror_mem_func (opaque, stream) voidpf opaque; voidpf stream; { /* We never return errors */ return 0; } void fill_memory_filefunc (pzlib_filefunc_def, ourmem) zlib_filefunc_def* pzlib_filefunc_def; ourmemory_t *ourmem; { pzlib_filefunc_def->zopen_file = fopen_mem_func; pzlib_filefunc_def->zopendisk_file = fopendisk_mem_func; pzlib_filefunc_def->zread_file = fread_mem_func; pzlib_filefunc_def->zwrite_file = fwrite_mem_func; pzlib_filefunc_def->ztell_file = ftell_mem_func; pzlib_filefunc_def->zseek_file = fseek_mem_func; pzlib_filefunc_def->zclose_file = fclose_mem_func; pzlib_filefunc_def->zerror_file = ferror_mem_func; pzlib_filefunc_def->opaque = ourmem; } ================================================ FILE: BNN/cpp/minizip/ioapi_mem.h ================================================ /* ioapi_mem.h -- IO base function header for compress/uncompress .zip files using zlib + zip or unzip API This version of ioapi is designed to access memory rather than files. We do use a region of memory to put data in to and take it out of. Copyright (C) 1998-2003 Gilles Vollant (C) 2003 Justin Fletcher This program is distributed under the terms of the same license as zlib. See the accompanying LICENSE file for the full text of the license. */ #ifndef _IOAPI_MEM_H #define _IOAPI_MEM_H #include #include #include #include "zlib.h" #include "ioapi.h" #ifdef __cplusplus extern "C" { #endif voidpf ZCALLBACK fopen_mem_func OF((voidpf opaque,const char* filename,int mode)); voidpf ZCALLBACK fopendisk_mem_func OF((voidpf opaque, voidpf stream, int number_disk, int mode)); uLong ZCALLBACK fread_mem_func OF((voidpf opaque,voidpf stream,void* buf,uLong size)); uLong ZCALLBACK fwrite_mem_func OF((voidpf opaque,voidpf stream,const void* buf,uLong size)); long ZCALLBACK ftell_mem_func OF((voidpf opaque,voidpf stream)); long ZCALLBACK fseek_mem_func OF((voidpf opaque,voidpf stream,uLong offset,int origin)); int ZCALLBACK fclose_mem_func OF((voidpf opaque,voidpf stream)); int ZCALLBACK ferror_mem_func OF((voidpf opaque,voidpf stream)); typedef struct ourmemory_s { char *base; /* Base of the region of memory we're using */ uLong size; /* Size of the region of memory we're using */ uLong limit; /* Furthest we've written */ uLong cur_offset; /* Current offset in the area */ int grow; /* Growable memory buffer */ } ourmemory_t; void fill_memory_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def, ourmemory_t *ourmem)); #ifdef __cplusplus } #endif #endif ================================================ FILE: BNN/cpp/minizip/iowin32.c ================================================ /* iowin32.c -- IO base function header for compress/uncompress .zip Version 1.1, February 14h, 2010 part of the MiniZip project Copyright (C) 1998-2010 Gilles Vollant http://www.winimage.com/zLibDll/minizip.html Modifications for Zip64 support Copyright (C) 2009-2010 Mathias Svensson http://result42.com This program is distributed under the terms of the same license as zlib. See the accompanying LICENSE file for the full text of the license. */ #include #include #include "zlib.h" #include "ioapi.h" #include "iowin32.h" #ifndef INVALID_HANDLE_VALUE # define INVALID_HANDLE_VALUE (0xFFFFFFFF) #endif #ifndef INVALID_SET_FILE_POINTER # define INVALID_SET_FILE_POINTER ((DWORD)-1) #endif #if defined(WINAPI_FAMILY_PARTITION) && (!(defined(IOWIN32_USING_WINRT_API))) # if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) # define IOWIN32_USING_WINRT_API 1 # endif #endif voidpf ZCALLBACK win32_open_file_func OF((voidpf opaque, const char* filename, int mode)); uLong ZCALLBACK win32_read_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size)); uLong ZCALLBACK win32_write_file_func OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); ZPOS64_T ZCALLBACK win32_tell64_file_func OF((voidpf opaque, voidpf stream)); long ZCALLBACK win32_seek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); int ZCALLBACK win32_close_file_func OF((voidpf opaque, voidpf stream)); int ZCALLBACK win32_error_file_func OF((voidpf opaque, voidpf stream)); typedef struct { HANDLE hf; int error; void *filename; int filenameLength; } WIN32FILE_IOWIN; static void win32_translate_open_mode(int mode, DWORD* lpdwDesiredAccess, DWORD* lpdwCreationDisposition, DWORD* lpdwShareMode, DWORD* lpdwFlagsAndAttributes) { *lpdwDesiredAccess = *lpdwShareMode = *lpdwFlagsAndAttributes = *lpdwCreationDisposition = 0; if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER) == ZLIB_FILEFUNC_MODE_READ) { *lpdwDesiredAccess = GENERIC_READ; *lpdwCreationDisposition = OPEN_EXISTING; *lpdwShareMode = FILE_SHARE_READ; } else if (mode & ZLIB_FILEFUNC_MODE_EXISTING) { *lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ; *lpdwCreationDisposition = OPEN_EXISTING; } else if (mode & ZLIB_FILEFUNC_MODE_CREATE) { *lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ; *lpdwCreationDisposition = CREATE_ALWAYS; } } static voidpf win32_build_iowin(HANDLE hFile) { WIN32FILE_IOWIN *iowin = NULL; if ((hFile != NULL) && (hFile != INVALID_HANDLE_VALUE)) { iowin = (WIN32FILE_IOWIN *)malloc(sizeof(WIN32FILE_IOWIN)); if (iowin == NULL) { CloseHandle(hFile); return NULL; } memset(iowin, 0, sizeof(WIN32FILE_IOWIN)); iowin->hf = hFile; } return (voidpf)iowin; } voidpf ZCALLBACK win32_open64_file_func (voidpf opaque, const void* filename, int mode) { DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; HANDLE hFile = NULL; WIN32FILE_IOWIN *iowin = NULL; win32_translate_open_mode(mode, &dwDesiredAccess, &dwCreationDisposition, &dwShareMode, &dwFlagsAndAttributes); if ((filename != NULL) && (dwDesiredAccess != 0)) { #ifdef IOWIN32_USING_WINRT_API #ifdef UNICODE hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL); #else WCHAR filenameW[FILENAME_MAX + 0x200 + 1]; MultiByteToWideChar(CP_ACP, 0, (const char*)filename, -1, filenameW, FILENAME_MAX + 0x200); hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL); #endif #else hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); #endif } iowin = win32_build_iowin(hFile); if (iowin == NULL) return NULL; iowin->filenameLength = _tcslen(filename) + 1; iowin->filename = (void*)malloc(iowin->filenameLength * sizeof(TCHAR)); _tcsncpy(iowin->filename, filename, iowin->filenameLength); return iowin; } voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque, const void* filename, int mode) { DWORD dwDesiredAccess, dwCreationDisposition, dwShareMode, dwFlagsAndAttributes ; HANDLE hFile = NULL; WIN32FILE_IOWIN *iowin = NULL; win32_translate_open_mode(mode, &dwDesiredAccess, &dwCreationDisposition, &dwShareMode, &dwFlagsAndAttributes); if ((filename != NULL) && (dwDesiredAccess != 0)) { #ifdef IOWIN32_USING_WINRT_API WCHAR filenameW[FILENAME_MAX + 0x200 + 1]; MultiByteToWideChar(CP_ACP, 0, (const char*)filename, -1, filenameW, FILENAME_MAX + 0x200); hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL); #else hFile = CreateFileA((LPCSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); #endif } iowin = win32_build_iowin(hFile); if (iowin == NULL) return NULL; iowin->filenameLength = strlen(filename) + 1; iowin->filename = (void*)malloc(iowin->filenameLength * sizeof(char)); strncpy(iowin->filename, filename, iowin->filenameLength); return iowin; } voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int mode) { DWORD dwDesiredAccess, dwCreationDisposition, dwShareMode, dwFlagsAndAttributes; HANDLE hFile = NULL; WIN32FILE_IOWIN *iowin = NULL; win32_translate_open_mode(mode, &dwDesiredAccess, &dwCreationDisposition, &dwShareMode, &dwFlagsAndAttributes); if ((filename != NULL) && (dwDesiredAccess != 0)) { #ifdef IOWIN32_USING_WINRT_API hFile = CreateFile2((LPCWSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL); #else hFile = CreateFileW((LPCWSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); #endif } iowin = win32_build_iowin(hFile); if (iowin == NULL) return NULL; if (iowin->filename == NULL) { iowin->filenameLength = wcslen(filename) + 1; iowin->filename = (void*)malloc(iowin->filenameLength * sizeof(WCHAR)); wcsncpy(iowin->filename, filename, iowin->filenameLength); } return iowin; } voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mode) { DWORD dwDesiredAccess, dwCreationDisposition, dwShareMode, dwFlagsAndAttributes ; HANDLE hFile = NULL; WIN32FILE_IOWIN *iowin = NULL; win32_translate_open_mode(mode, &dwDesiredAccess, &dwCreationDisposition, &dwShareMode, &dwFlagsAndAttributes); if ((filename != NULL) && (dwDesiredAccess != 0)) { #ifdef IOWIN32_USING_WINRT_API #ifdef UNICODE hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL); #else WCHAR filenameW[FILENAME_MAX + 0x200 + 1]; MultiByteToWideChar(CP_ACP, 0, (const char*)filename, -1, filenameW, FILENAME_MAX + 0x200); hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL); #endif #else hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); #endif } iowin = win32_build_iowin(hFile); if (iowin == NULL) return NULL; iowin->filenameLength = _tcslen((TCHAR*)filename) + 1; iowin->filename = (void*)malloc(iowin->filenameLength * sizeof(TCHAR)); _tcsncpy(iowin->filename, (TCHAR*)filename, iowin->filenameLength); return iowin; } voidpf ZCALLBACK win32_opendisk64_file_func (voidpf opaque, voidpf stream, int number_disk, int mode) { WIN32FILE_IOWIN *iowin = NULL; TCHAR *diskFilename = NULL; voidpf ret = NULL; int i = 0; if (stream == NULL) return NULL; iowin = (WIN32FILE_IOWIN*)stream; diskFilename = (TCHAR*)malloc(iowin->filenameLength * sizeof(TCHAR)); _tcsncpy(diskFilename, iowin->filename, iowin->filenameLength); for (i = iowin->filenameLength - 1; i >= 0; i -= 1) { if (diskFilename[i] != _T('.')) continue; _sntprintf(&diskFilename[i], iowin->filenameLength - i, _T(".z%02d"), number_disk + 1); break; } if (i >= 0) ret = win32_open64_file_func(opaque, (char*)diskFilename, mode); free(diskFilename); return ret; } voidpf ZCALLBACK win32_opendisk64_file_funcW (voidpf opaque, voidpf stream, int number_disk, int mode) { WIN32FILE_IOWIN *iowin = NULL; WCHAR *diskFilename = NULL; voidpf ret = NULL; int i = 0; if (stream == NULL) return NULL; iowin = (WIN32FILE_IOWIN*)stream; diskFilename = (WCHAR*)malloc((iowin->filenameLength + 10) * sizeof(WCHAR)); wcsncpy(diskFilename, iowin->filename, iowin->filenameLength); for (i = iowin->filenameLength - 1; i >= 0; i -= 1) { if (diskFilename[i] != L'.') continue; _snwprintf(&diskFilename[i], (iowin->filenameLength + 10) - i, L".z%02d", number_disk + 1); break; } if (i >= 0) ret = win32_open64_file_funcW(opaque, diskFilename, mode); free(diskFilename); return ret; } voidpf ZCALLBACK win32_opendisk64_file_funcA (voidpf opaque, voidpf stream, int number_disk, int mode) { WIN32FILE_IOWIN *iowin = NULL; char *diskFilename = NULL; voidpf ret = NULL; int i = 0; if (stream == NULL) return NULL; iowin = (WIN32FILE_IOWIN*)stream; diskFilename = (char*)malloc(iowin->filenameLength * sizeof(char)); strncpy(diskFilename, iowin->filename, iowin->filenameLength); for (i = iowin->filenameLength - 1; i >= 0; i -= 1) { if (diskFilename[i] != '.') continue; _snprintf(&diskFilename[i], iowin->filenameLength - i, ".z%02d", number_disk + 1); break; } if (i >= 0) ret = win32_open64_file_funcA(opaque, diskFilename, mode); free(diskFilename); return ret; } voidpf ZCALLBACK win32_opendisk_file_func (voidpf opaque, voidpf stream, int number_disk, int mode) { WIN32FILE_IOWIN *iowin = NULL; TCHAR *diskFilename = NULL; voidpf ret = NULL; int i = 0; if (stream == NULL) return NULL; iowin = (WIN32FILE_IOWIN*)stream; diskFilename = (TCHAR*)malloc(iowin->filenameLength * sizeof(TCHAR)); _tcsncpy(diskFilename, iowin->filename, iowin->filenameLength); for (i = iowin->filenameLength - 1; i >= 0; i -= 1) { if (diskFilename[i] != _T('.')) continue; _sntprintf(&diskFilename[i], iowin->filenameLength - i, _T(".z%02d"), number_disk + 1); break; } if (i >= 0) ret = win32_open_file_func(opaque, (char*)diskFilename, mode); free(diskFilename); return ret; } uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void* buf,uLong size) { uLong ret = 0; HANDLE hFile = NULL; if (stream != NULL) hFile = ((WIN32FILE_IOWIN*)stream)->hf; if (hFile != NULL) { if (!ReadFile(hFile, buf, size, &ret, NULL)) { DWORD dwErr = GetLastError(); if (dwErr == ERROR_HANDLE_EOF) dwErr = 0; ((WIN32FILE_IOWIN*)stream)->error = (int)dwErr; } } return ret; } uLong ZCALLBACK win32_write_file_func (voidpf opaque,voidpf stream,const void* buf,uLong size) { uLong ret = 0; HANDLE hFile = NULL; if (stream != NULL) hFile = ((WIN32FILE_IOWIN*)stream)->hf; if (hFile != NULL) { if (!WriteFile(hFile, buf, size, &ret, NULL)) { DWORD dwErr = GetLastError(); if (dwErr == ERROR_HANDLE_EOF) dwErr = 0; ((WIN32FILE_IOWIN*)stream)->error = (int)dwErr; } } return ret; } static BOOL win32_setfilepointer_internal(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *newPos, DWORD dwMoveMethod) { #ifdef IOWIN32_USING_WINRT_API return SetFilePointerEx(hFile, pos, newPos, dwMoveMethod); #else LONG lHigh = pos.HighPart; BOOL ret = TRUE; DWORD dwNewPos = SetFilePointer(hFile, pos.LowPart, &lHigh, dwMoveMethod); if ((dwNewPos == INVALID_SET_FILE_POINTER) && (GetLastError() != NO_ERROR)) ret = FALSE; if ((newPos != NULL) && (ret)) { newPos->LowPart = dwNewPos; newPos->HighPart = lHigh; } return ret; #endif } long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream) { long ret = -1; HANDLE hFile = NULL; if (stream != NULL) hFile = ((WIN32FILE_IOWIN*)stream)->hf; if (hFile != NULL) { LARGE_INTEGER pos; pos.QuadPart = 0; if (!win32_setfilepointer_internal(hFile, pos, &pos, FILE_CURRENT)) { DWORD dwErr = GetLastError(); ((WIN32FILE_IOWIN*)stream)->error = (int)dwErr; ret = -1; } else ret = (long)pos.LowPart; } return ret; } ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream) { ZPOS64_T ret = (ZPOS64_T)-1; HANDLE hFile = NULL; if (stream != NULL) hFile = ((WIN32FILE_IOWIN*)stream)->hf; if (hFile) { LARGE_INTEGER pos; pos.QuadPart = 0; if (!win32_setfilepointer_internal(hFile, pos, &pos, FILE_CURRENT)) { DWORD dwErr = GetLastError(); ((WIN32FILE_IOWIN*)stream)->error = (int)dwErr; ret = (ZPOS64_T)-1; } else ret = pos.QuadPart; } return ret; } long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,int origin) { DWORD dwMoveMethod = 0xFFFFFFFF; HANDLE hFile = NULL; long ret = -1; if (stream != NULL) hFile = ((WIN32FILE_IOWIN*)stream)->hf; switch (origin) { case ZLIB_FILEFUNC_SEEK_CUR: dwMoveMethod = FILE_CURRENT; break; case ZLIB_FILEFUNC_SEEK_END: dwMoveMethod = FILE_END; break; case ZLIB_FILEFUNC_SEEK_SET: dwMoveMethod = FILE_BEGIN; break; default: return -1; } if (hFile != NULL) { LARGE_INTEGER pos; pos.QuadPart = offset; if (!win32_setfilepointer_internal(hFile, pos, NULL, dwMoveMethod)) { DWORD dwErr = GetLastError(); ((WIN32FILE_IOWIN*)stream)->error = (int)dwErr; ret = -1; } else ret = 0; } return ret; } long ZCALLBACK win32_seek64_file_func (voidpf opaque, voidpf stream,ZPOS64_T offset,int origin) { DWORD dwMoveMethod = 0xFFFFFFFF; HANDLE hFile = NULL; long ret = -1; if (stream != NULL) hFile = ((WIN32FILE_IOWIN*)stream)->hf; switch (origin) { case ZLIB_FILEFUNC_SEEK_CUR: dwMoveMethod = FILE_CURRENT; break; case ZLIB_FILEFUNC_SEEK_END: dwMoveMethod = FILE_END; break; case ZLIB_FILEFUNC_SEEK_SET: dwMoveMethod = FILE_BEGIN; break; default: return -1; } if (hFile) { LARGE_INTEGER pos; pos.QuadPart = offset; if (!win32_setfilepointer_internal(hFile, pos, NULL, dwMoveMethod)) { DWORD dwErr = GetLastError(); ((WIN32FILE_IOWIN*)stream)->error = (int)dwErr; ret = -1; } else ret = 0; } return ret; } int ZCALLBACK win32_close_file_func (voidpf opaque, voidpf stream) { WIN32FILE_IOWIN* iowin = NULL; int ret = -1; if (stream == NULL) return ret; iowin = ((WIN32FILE_IOWIN*)stream); if (iowin->filename != NULL) free(iowin->filename); if (iowin->hf != NULL) { CloseHandle(iowin->hf); ret=0; } free(stream); return ret; } int ZCALLBACK win32_error_file_func (voidpf opaque, voidpf stream) { int ret = -1; if (stream == NULL) return ret; ret = ((WIN32FILE_IOWIN*)stream)->error; return ret; } void fill_win32_filefunc (zlib_filefunc_def* pzlib_filefunc_def) { pzlib_filefunc_def->zopen_file = win32_open_file_func; pzlib_filefunc_def->zopendisk_file = win32_opendisk_file_func; pzlib_filefunc_def->zread_file = win32_read_file_func; pzlib_filefunc_def->zwrite_file = win32_write_file_func; pzlib_filefunc_def->ztell_file = win32_tell_file_func; pzlib_filefunc_def->zseek_file = win32_seek_file_func; pzlib_filefunc_def->zclose_file = win32_close_file_func; pzlib_filefunc_def->zerror_file = win32_error_file_func; pzlib_filefunc_def->opaque = NULL; } void fill_win32_filefunc64(zlib_filefunc64_def* pzlib_filefunc_def) { pzlib_filefunc_def->zopen64_file = win32_open64_file_func; pzlib_filefunc_def->zopendisk64_file = win32_opendisk64_file_func; pzlib_filefunc_def->zread_file = win32_read_file_func; pzlib_filefunc_def->zwrite_file = win32_write_file_func; pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; pzlib_filefunc_def->zclose_file = win32_close_file_func; pzlib_filefunc_def->zerror_file = win32_error_file_func; pzlib_filefunc_def->opaque = NULL; } void fill_win32_filefunc64A(zlib_filefunc64_def* pzlib_filefunc_def) { pzlib_filefunc_def->zopen64_file = win32_open64_file_funcA; pzlib_filefunc_def->zopendisk64_file = win32_opendisk64_file_funcA; pzlib_filefunc_def->zread_file = win32_read_file_func; pzlib_filefunc_def->zwrite_file = win32_write_file_func; pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; pzlib_filefunc_def->zclose_file = win32_close_file_func; pzlib_filefunc_def->zerror_file = win32_error_file_func; pzlib_filefunc_def->opaque = NULL; } void fill_win32_filefunc64W(zlib_filefunc64_def* pzlib_filefunc_def) { pzlib_filefunc_def->zopen64_file = win32_open64_file_funcW; pzlib_filefunc_def->zopendisk64_file = win32_opendisk64_file_funcW; pzlib_filefunc_def->zread_file = win32_read_file_func; pzlib_filefunc_def->zwrite_file = win32_write_file_func; pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; pzlib_filefunc_def->zclose_file = win32_close_file_func; pzlib_filefunc_def->zerror_file = win32_error_file_func; pzlib_filefunc_def->opaque = NULL; } ================================================ FILE: BNN/cpp/minizip/iowin32.h ================================================ /* iowin32.h -- IO base function header for compress/uncompress .zip Version 1.1, February 14h, 2010 part of the MiniZip project Copyright (C) 1998-2010 Gilles Vollant http://www.winimage.com/zLibDll/minizip.html Modifications for Zip64 support Copyright (C) 2009-2010 Mathias Svensson http://result42.com This program is distributed under the terms of the same license as zlib. See the accompanying LICENSE file for the full text of the license. */ #ifndef _IOWIN32_H #define _IOWIN32_H #include #ifdef __cplusplus extern "C" { #endif void fill_win32_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); void fill_win32_filefunc64 OF((zlib_filefunc64_def* pzlib_filefunc_def)); void fill_win32_filefunc64A OF((zlib_filefunc64_def* pzlib_filefunc_def)); void fill_win32_filefunc64W OF((zlib_filefunc64_def* pzlib_filefunc_def)); #ifdef __cplusplus } #endif #endif ================================================ FILE: BNN/cpp/minizip/miniunz.c ================================================ /* miniunz.c Version 1.1, February 14h, 2010 sample part of the MiniZip project Copyright (C) 1998-2010 Gilles Vollant http://www.winimage.com/zLibDll/minizip.html Modifications of Unzip for Zip64 Copyright (C) 2007-2008 Even Rouault Modifications for Zip64 support Copyright (C) 2009-2010 Mathias Svensson http://result42.com This program is distributed under the terms of the same license as zlib. See the accompanying LICENSE file for the full text of the license. */ #if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__)) # ifndef __USE_FILE_OFFSET64 # define __USE_FILE_OFFSET64 # endif # ifndef __USE_LARGEFILE64 # define __USE_LARGEFILE64 # endif # ifndef _LARGEFILE64_SOURCE # define _LARGEFILE64_SOURCE # endif # ifndef _FILE_OFFSET_BIT # define _FILE_OFFSET_BIT 64 # endif #endif #ifdef __APPLE__ /* In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions */ # define FOPEN_FUNC(filename, mode) fopen(filename, mode) # define FTELLO_FUNC(stream) ftello(stream) # define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin) #else # define FOPEN_FUNC(filename, mode) fopen64(filename, mode) # define FTELLO_FUNC(stream) ftello64(stream) # define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin) #endif #include #include #include #include #include #include #ifdef _WIN32 # include # include #else # include # include # include #endif #ifdef _WIN32 # define MKDIR(d) _mkdir(d) # define CHDIR(d) _chdir(d) #else # define MKDIR(d) mkdir(d, 0775) # define CHDIR(d) chdir(d) #endif #include "unzip.h" #define WRITEBUFFERSIZE (8192) #define MAXFILENAME (256) #ifdef _WIN32 # define USEWIN32IOAPI # include "iowin32.h" #endif void change_file_date(const char *filename, uLong dosdate, tm_unz tmu_date) { #ifdef _WIN32 HANDLE hFile; FILETIME ftm, ftLocal, ftCreate, ftLastAcc, ftLastWrite; hFile = CreateFileA(filename, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (hFile != INVALID_HANDLE_VALUE) { GetFileTime(hFile, &ftCreate, &ftLastAcc, &ftLastWrite); DosDateTimeToFileTime((WORD)(dosdate>>16),(WORD)dosdate, &ftLocal); LocalFileTimeToFileTime(&ftLocal, &ftm); SetFileTime(hFile, &ftm, &ftLastAcc, &ftm); CloseHandle(hFile); } #else #if defined unix || defined __APPLE__ struct utimbuf ut; struct tm newdate; newdate.tm_sec = tmu_date.tm_sec; newdate.tm_min = tmu_date.tm_min; newdate.tm_hour = tmu_date.tm_hour; newdate.tm_mday = tmu_date.tm_mday; newdate.tm_mon = tmu_date.tm_mon; if (tmu_date.tm_year > 1900) newdate.tm_year = tmu_date.tm_year - 1900; else newdate.tm_year = tmu_date.tm_year ; newdate.tm_isdst = -1; ut.actime = ut.modtime = mktime(&newdate); utime(filename,&ut); #endif #endif } int check_file_exists(const char* filename) { FILE* ftestexist = FOPEN_FUNC(filename,"rb"); if (ftestexist == NULL) return 0; fclose(ftestexist); return 1; } int makedir(const char *newdir) { char *buffer = NULL; char *p = NULL; int len = (int)strlen(newdir); if (len <= 0) return 0; buffer = (char*)malloc(len+1); if (buffer == NULL) { printf("Error allocating memory\n"); return UNZ_INTERNALERROR; } strcpy(buffer, newdir); if (buffer[len-1] == '/') buffer[len-1] = 0; if (MKDIR(buffer) == 0) { free(buffer); return 1; } p = buffer + 1; while (1) { char hold; while(*p && *p != '\\' && *p != '/') p++; hold = *p; *p = 0; if ((MKDIR(buffer) == -1) && (errno == ENOENT)) { printf("couldn't create directory %s (%d)\n", buffer, errno); free(buffer); return 0; } if (hold == 0) break; *p++ = hold; } free(buffer); return 1; } void display_zpos64(ZPOS64_T n, int size_char) { /* To avoid compatibility problem we do here the conversion */ char number[21] = {0}; int offset = 19; int pos_string = 19; int size_display_string = 19; while (1) { number[offset] = (char)((n%10) + '0'); if (number[offset] != '0') pos_string = offset; n /= 10; if (offset == 0) break; offset--; } size_display_string -= pos_string; while (size_char-- > size_display_string) printf(" "); printf("%s",&number[pos_string]); } void do_banner() { printf("MiniUnz 1.01b, demo of zLib + Unz package written by Gilles Vollant\n"); printf("more info at http://www.winimage.com/zLibDll/minizip.html\n\n"); } void do_help() { printf("Usage : miniunz [-e] [-x] [-v] [-l] [-o] [-p password] file.zip [file_to_extr.] [-d extractdir]\n\n" \ " -e Extract without pathname (junk paths)\n" \ " -x Extract with pathname\n" \ " -v list files\n" \ " -l list files\n" \ " -d directory to extract into\n" \ " -o overwrite files without prompting\n" \ " -p extract crypted file using password\n\n"); } int do_list(unzFile uf) { int err = unzGoToFirstFile(uf); if (err != UNZ_OK) { printf("error %d with zipfile in unzGoToFirstFile\n", err); return 1; } printf(" Length Method Size Ratio Date Time CRC-32 Name\n"); printf(" ------ ------ ---- ----- ---- ---- ------ ----\n"); do { char filename_inzip[256] = {0}; unz_file_info64 file_info = {0}; uLong ratio = 0; const char *string_method = NULL; char charCrypt = ' '; err = unzGetCurrentFileInfo64(uf, &file_info, filename_inzip, sizeof(filename_inzip), NULL, 0, NULL, 0); if (err != UNZ_OK) { printf("error %d with zipfile in unzGetCurrentFileInfo\n", err); break; } if (file_info.uncompressed_size > 0) ratio = (uLong)((file_info.compressed_size*100) / file_info.uncompressed_size); /* Display a '*' if the file is encrypted */ if ((file_info.flag & 1) != 0) charCrypt = '*'; if (file_info.compression_method == 0) string_method = "Stored"; else if (file_info.compression_method == Z_DEFLATED) { uInt iLevel = (uInt)((file_info.flag & 0x6) / 2); if (iLevel == 0) string_method = "Defl:N"; else if (iLevel == 1) string_method = "Defl:X"; else if ((iLevel == 2) || (iLevel == 3)) string_method = "Defl:F"; /* 2:fast , 3 : extra fast*/ } else if (file_info.compression_method == Z_BZIP2ED) { string_method = "BZip2 "; } else string_method = "Unkn. "; display_zpos64(file_info.uncompressed_size, 7); printf(" %6s%c", string_method, charCrypt); display_zpos64(file_info.compressed_size, 7); printf(" %3lu%% %2.2lu-%2.2lu-%2.2lu %2.2lu:%2.2lu %8.8lx %s\n", ratio, (uLong)file_info.tmu_date.tm_mon + 1, (uLong)file_info.tmu_date.tm_mday, (uLong)file_info.tmu_date.tm_year % 100, (uLong)file_info.tmu_date.tm_hour, (uLong)file_info.tmu_date.tm_min, (uLong)file_info.crc, filename_inzip); err = unzGoToNextFile(uf); } while (err == UNZ_OK); if (err != UNZ_END_OF_LIST_OF_FILE && err != UNZ_OK) { printf("error %d with zipfile in unzGoToNextFile\n", err); return err; } return 0; } int do_extract_currentfile(unzFile uf, int opt_extract_without_path, int* popt_overwrite, const char *password) { unz_file_info64 file_info = {0}; FILE* fout = NULL; void* buf = NULL; uInt size_buf = WRITEBUFFERSIZE; int err = UNZ_OK; int errclose = UNZ_OK; int skip = 0; char filename_inzip[256] = {0}; char* filename_withoutpath = NULL; const char* write_filename = NULL; char* p = NULL; err = unzGetCurrentFileInfo64(uf, &file_info, filename_inzip, sizeof(filename_inzip), NULL, 0, NULL, 0); if (err != UNZ_OK) { printf("error %d with zipfile in unzGetCurrentFileInfo\n",err); return err; } p = filename_withoutpath = filename_inzip; while (*p != 0) { if ((*p == '/') || (*p == '\\')) filename_withoutpath = p+1; p++; } /* If zip entry is a directory then create it on disk */ if (*filename_withoutpath == 0) { if (opt_extract_without_path == 0) { printf("creating directory: %s\n", filename_inzip); MKDIR(filename_inzip); } return err; } buf = (void*)malloc(size_buf); if (buf == NULL) { printf("Error allocating memory\n"); return UNZ_INTERNALERROR; } err = unzOpenCurrentFilePassword(uf, password); if (err != UNZ_OK) printf("error %d with zipfile in unzOpenCurrentFilePassword\n", err); if (opt_extract_without_path) write_filename = filename_withoutpath; else write_filename = filename_inzip; /* Determine if the file should be overwritten or not and ask the user if needed */ if ((err == UNZ_OK) && (*popt_overwrite == 0) && (check_file_exists(write_filename))) { char rep = 0; do { char answer[128]; printf("The file %s exists. Overwrite ? [y]es, [n]o, [A]ll: ", write_filename); if (scanf("%1s", answer) != 1) exit(EXIT_FAILURE); rep = answer[0]; if ((rep >= 'a') && (rep <= 'z')) rep -= 0x20; } while ((rep != 'Y') && (rep != 'N') && (rep != 'A')); if (rep == 'N') skip = 1; if (rep == 'A') *popt_overwrite = 1; } /* Create the file on disk so we can unzip to it */ if ((skip == 0) && (err == UNZ_OK)) { fout = FOPEN_FUNC(write_filename, "wb"); /* Some zips don't contain directory alone before file */ if ((fout == NULL) && (opt_extract_without_path == 0) && (filename_withoutpath != (char*)filename_inzip)) { char c = *(filename_withoutpath-1); *(filename_withoutpath-1) = 0; makedir(write_filename); *(filename_withoutpath-1) = c; fout = FOPEN_FUNC(write_filename, "wb"); } if (fout == NULL) printf("error opening %s\n", write_filename); } /* Read from the zip, unzip to buffer, and write to disk */ if (fout != NULL) { printf(" extracting: %s\n", write_filename); do { err = unzReadCurrentFile(uf, buf, size_buf); if (err < 0) { printf("error %d with zipfile in unzReadCurrentFile\n", err); break; } if (err == 0) break; if (fwrite(buf, err, 1, fout) != 1) { printf("error %d in writing extracted file\n", errno); err = UNZ_ERRNO; break; } } while (err > 0); if (fout) fclose(fout); /* Set the time of the file that has been unzipped */ if (err == 0) change_file_date(write_filename,file_info.dosDate, file_info.tmu_date); } errclose = unzCloseCurrentFile(uf); if (errclose != UNZ_OK) printf("error %d with zipfile in unzCloseCurrentFile\n", errclose); free(buf); return err; } int do_extract_all(unzFile uf, int opt_extract_without_path, int opt_overwrite, const char *password) { int err = unzGoToFirstFile(uf); if (err != UNZ_OK) { printf("error %d with zipfile in unzGoToFirstFile\n", err); return 1; } do { err = do_extract_currentfile(uf, opt_extract_without_path, &opt_overwrite, password); if (err != UNZ_OK) break; err = unzGoToNextFile(uf); } while (err == UNZ_OK); if (err != UNZ_END_OF_LIST_OF_FILE) { printf("error %d with zipfile in unzGoToNextFile\n", err); return 1; } return 0; } int do_extract_onefile(unzFile uf, const char* filename, int opt_extract_without_path, int opt_overwrite, const char* password) { if (unzLocateFile(uf, filename, NULL) != UNZ_OK) { printf("file %s not found in the zipfile\n", filename); return 2; } if (do_extract_currentfile(uf, opt_extract_without_path, &opt_overwrite, password) == UNZ_OK) return 0; return 1; } int main(int argc, const char *argv[]) { const char *zipfilename = NULL; const char *filename_to_extract = NULL; const char *password = NULL; int i = 0; int ret = 0; int opt_do_list = 0; int opt_do_extract = 1; int opt_do_extract_withoutpath = 0; int opt_overwrite = 0; int opt_extractdir = 0; const char *dirname = NULL; unzFile uf = NULL; do_banner(); if (argc == 1) { do_help(); return 0; } /* Parse command line options */ for (i = 1; i < argc; i++) { if ((*argv[i]) == '-') { const char *p = argv[i]+1; while (*p != 0) { char c = *(p++); if ((c == 'l') || (c == 'L')) opt_do_list = 1; if ((c == 'v') || (c == 'V')) opt_do_list = 1; if ((c == 'x') || (c == 'X')) opt_do_extract = 1; if ((c == 'e') || (c == 'E')) opt_do_extract = opt_do_extract_withoutpath = 1; if ((c == 'o') || (c == 'O')) opt_overwrite=1; if ((c == 'd') || (c == 'D')) { opt_extractdir = 1; dirname = argv[i+1]; } if (((c == 'p') || (c == 'P')) && (i+1 < argc)) { password = argv[i+1]; i++; } } } else { if (zipfilename == NULL) zipfilename = argv[i]; else if ((filename_to_extract == NULL) && (!opt_extractdir)) filename_to_extract = argv[i]; } } /* Open zip file */ if (zipfilename != NULL) { #ifdef USEWIN32IOAPI zlib_filefunc64_def ffunc; fill_win32_filefunc64A(&ffunc); uf = unzOpen2_64(zipfilename, &ffunc); #else uf = unzOpen64(zipfilename); #endif } if (uf == NULL) { printf("Cannot open %s\n", zipfilename); return 1; } printf("%s opened\n", zipfilename); /* Process command line options */ if (opt_do_list == 1) { ret = do_list(uf); } else if (opt_do_extract == 1) { if (opt_extractdir && CHDIR(dirname)) { printf("Error changing into %s, aborting\n", dirname); exit(-1); } if (filename_to_extract == NULL) ret = do_extract_all(uf, opt_do_extract_withoutpath, opt_overwrite, password); else ret = do_extract_onefile(uf, filename_to_extract, opt_do_extract_withoutpath, opt_overwrite, password); } unzClose(uf); return ret; } ================================================ FILE: BNN/cpp/minizip/miniunz.vcproj ================================================ ================================================ FILE: BNN/cpp/minizip/minizip.c ================================================ /* minizip.c Version 1.1, February 14h, 2010 sample part of the MiniZip project Copyright (C) 1998-2010 Gilles Vollant http://www.winimage.com/zLibDll/minizip.html Modifications of Unzip for Zip64 Copyright (C) 2007-2008 Even Rouault Modifications for Zip64 support Copyright (C) 2009-2010 Mathias Svensson http://result42.com This program is distributed under the terms of the same license as zlib. See the accompanying LICENSE file for the full text of the license. */ #if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__)) # ifndef __USE_FILE_OFFSET64 # define __USE_FILE_OFFSET64 # endif # ifndef __USE_LARGEFILE64 # define __USE_LARGEFILE64 # endif # ifndef _LARGEFILE64_SOURCE # define _LARGEFILE64_SOURCE # endif # ifndef _FILE_OFFSET_BIT # define _FILE_OFFSET_BIT 64 # endif #endif #ifdef __APPLE__ /* In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions */ # define FOPEN_FUNC(filename, mode) fopen(filename, mode) # define FTELLO_FUNC(stream) ftello(stream) # define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin) #else # define FOPEN_FUNC(filename, mode) fopen64(filename, mode) # define FTELLO_FUNC(stream) ftello64(stream) # define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin) #endif #include #include #include #include #include #include #ifdef _WIN32 # include # include #else # include # include # include # include #endif #include "zip.h" #ifdef _WIN32 # define USEWIN32IOAPI # include "iowin32.h" #endif #define WRITEBUFFERSIZE (16384) #define MAXFILENAME (256) uLong filetime(const char *filename, tm_zip *tmzip, uLong *dostime) { int ret = 0; #ifdef _WIN32 FILETIME ftLocal; HANDLE hFind; WIN32_FIND_DATAA ff32; hFind = FindFirstFileA(filename, &ff32); if (hFind != INVALID_HANDLE_VALUE) { FileTimeToLocalFileTime(&(ff32.ftLastWriteTime), &ftLocal); FileTimeToDosDateTime(&ftLocal,((LPWORD)dostime)+1,((LPWORD)dostime)+0); FindClose(hFind); ret = 1; } #else #if defined unix || defined __APPLE__ struct stat s = {0}; struct tm* filedate; time_t tm_t = 0; if (strcmp(filename,"-") != 0) { char name[MAXFILENAME+1]; int len = strlen(filename); if (len > MAXFILENAME) len = MAXFILENAME; strncpy(name, filename, MAXFILENAME - 1); name[MAXFILENAME] = 0; if (name[len - 1] == '/') name[len - 1] = 0; /* not all systems allow stat'ing a file with / appended */ if (stat(name,&s) == 0) { tm_t = s.st_mtime; ret = 1; } } filedate = localtime(&tm_t); tmzip->tm_sec = filedate->tm_sec; tmzip->tm_min = filedate->tm_min; tmzip->tm_hour = filedate->tm_hour; tmzip->tm_mday = filedate->tm_mday; tmzip->tm_mon = filedate->tm_mon ; tmzip->tm_year = filedate->tm_year; #endif #endif return ret; } int check_file_exists(const char* filename) { FILE* ftestexist = FOPEN_FUNC(filename, "rb"); if (ftestexist == NULL) return 0; fclose(ftestexist); return 1; } int is_large_file(const char* filename) { ZPOS64_T pos = 0; FILE* pFile = FOPEN_FUNC(filename, "rb"); if (pFile == NULL) return 0; FSEEKO_FUNC(pFile, 0, SEEK_END); pos = FTELLO_FUNC(pFile); fclose(pFile); printf("File : %s is %lld bytes\n", filename, pos); return (pos >= 0xffffffff); } /* Calculate the CRC32 of a file, because to encrypt a file, we need known the CRC32 of the file before */ int get_file_crc(const char* filenameinzip, void *buf, unsigned long size_buf, unsigned long* result_crc) { FILE *fin = NULL; unsigned long calculate_crc = 0; unsigned long size_read = 0; int err = ZIP_OK; fin = FOPEN_FUNC(filenameinzip,"rb"); if (fin == NULL) err = ZIP_ERRNO; else { do { size_read = (int)fread(buf,1,size_buf,fin); if ((size_read < size_buf) && (feof(fin) == 0)) { printf("error in reading %s\n",filenameinzip); err = ZIP_ERRNO; } if (size_read > 0) calculate_crc = crc32(calculate_crc,buf,size_read); } while ((err == ZIP_OK) && (size_read > 0)); } if (fin) fclose(fin); printf("file %s crc %lx\n", filenameinzip, calculate_crc); *result_crc = calculate_crc; return err; } void do_banner() { printf("MiniZip 1.1, demo of zLib + MiniZip64 package, written by Gilles Vollant\n"); printf("more info on MiniZip at http://www.winimage.com/zLibDll/minizip.html\n\n"); } void do_help() { printf("Usage : minizip [-o] [-a] [-0 to -9] [-p password] [-j] file.zip [files_to_add]\n\n" \ " -o Overwrite existing file.zip\n" \ " -a Append to existing file.zip\n" \ " -0 Store only\n" \ " -1 Compress faster\n" \ " -9 Compress better\n\n" \ " -j exclude path. store only the file name.\n\n"); } int main(int argc, char *argv[]) { zipFile zf = NULL; #ifdef USEWIN32IOAPI zlib_filefunc64_def ffunc = {0}; #endif char *zipfilename = NULL; const char* password = NULL; void* buf = NULL; int size_buf = WRITEBUFFERSIZE; int zipfilenamearg = 0; int errclose = 0; int err = 0; int i = 0; int opt_overwrite = APPEND_STATUS_CREATE; int opt_compress_level = Z_DEFAULT_COMPRESSION; int opt_exclude_path = 0; do_banner(); if (argc == 1) { do_help(); return 0; } /* Parse command line options */ for (i = 1; i < argc; i++) { if ((*argv[i]) == '-') { const char *p = argv[i]+1; while ((*p) != '\0') { char c = *(p++);; if ((c == 'o') || (c == 'O')) opt_overwrite = APPEND_STATUS_CREATEAFTER; if ((c == 'a') || (c == 'A')) opt_overwrite = APPEND_STATUS_ADDINZIP; if ((c >= '0') && (c <= '9')) opt_compress_level = (c - '0'); if ((c == 'j') || (c == 'J')) opt_exclude_path = 1; if (((c == 'p') || (c == 'P')) && (i+1 < argc)) { password=argv[i+1]; i++; } } } else { if (zipfilenamearg == 0) zipfilenamearg = i; } } if (zipfilenamearg == 0) { do_help(); return 0; } zipfilename = argv[zipfilenamearg]; buf = (void*)malloc(size_buf); if (buf == NULL) { printf("Error allocating memory\n"); return ZIP_INTERNALERROR; } if (opt_overwrite == 2) { /* If the file don't exist, we not append file */ if (check_file_exists(zipfilename) == 0) opt_overwrite = 1; } else if (opt_overwrite == 0) { /* If ask the user what to do because append and overwrite args not set */ if (check_file_exists(zipfilename) != 0) { char rep = 0; do { char answer[128]; printf("The file %s exists. Overwrite ? [y]es, [n]o, [a]ppend : ", zipfilename); if (scanf("%1s", answer) != 1) exit(EXIT_FAILURE); rep = answer[0]; if ((rep >= 'a') && (rep <= 'z')) rep -= 0x20; } while ((rep != 'Y') && (rep != 'N') && (rep != 'A')); if (rep == 'A') opt_overwrite = 2; else if (rep == 'N') { do_help(); free(buf); return 0; } } } #ifdef USEWIN32IOAPI fill_win32_filefunc64A(&ffunc); zf = zipOpen2_64(zipfilename, opt_overwrite, NULL, &ffunc); #else zf = zipOpen64(zipfilename, opt_overwrite); #endif if (zf == NULL) { printf("error opening %s\n", zipfilename); err = ZIP_ERRNO; } else printf("creating %s\n", zipfilename); /* Go through command line args looking for files to add to zip */ for (i = zipfilenamearg + 1; (i < argc) && (err == ZIP_OK); i++) { FILE *fin = NULL; int size_read = 0; const char* filenameinzip = argv[i]; const char *savefilenameinzip; zip_fileinfo zi = {0}; unsigned long crcFile = 0; int zip64 = 0; /* Skip command line options */ if ((((*(argv[i])) == '-') || ((*(argv[i])) == '/')) && (strlen(argv[i]) == 2) && ((argv[i][1] == 'o') || (argv[i][1] == 'O') || (argv[i][1] == 'a') || (argv[i][1] == 'A') || (argv[i][1] == 'p') || (argv[i][1] == 'P') || ((argv[i][1] >= '0') && (argv[i][1] <= '9')))) continue; /* Get information about the file on disk so we can store it in zip */ filetime(filenameinzip, &zi.tmz_date, &zi.dosDate); if ((password != NULL) && (err == ZIP_OK)) err = get_file_crc(filenameinzip, buf, size_buf, &crcFile); zip64 = is_large_file(filenameinzip); /* Construct the filename that our file will be stored in the zip as. The path name saved, should not include a leading slash. If it did, windows/xp and dynazip couldn't read the zip file. */ savefilenameinzip = filenameinzip; while (savefilenameinzip[0] == '\\' || savefilenameinzip[0] == '/') savefilenameinzip++; /* Should the file be stored with any path info at all? */ if (opt_exclude_path) { const char *tmpptr = NULL; const char *lastslash = 0; for (tmpptr = savefilenameinzip; *tmpptr; tmpptr++) { if (*tmpptr == '\\' || *tmpptr == '/') lastslash = tmpptr; } if (lastslash != NULL) savefilenameinzip = lastslash + 1; /* base filename follows last slash. */ } /* Add to zip file */ err = zipOpenNewFileInZip3_64(zf, savefilenameinzip, &zi, NULL, 0, NULL, 0, NULL /* comment*/, (opt_compress_level != 0) ? Z_DEFLATED : 0, opt_compress_level,0, -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, password, crcFile, zip64); if (err != ZIP_OK) printf("error in opening %s in zipfile (%d)\n", filenameinzip, err); else { fin = FOPEN_FUNC(filenameinzip, "rb"); if (fin == NULL) { err = ZIP_ERRNO; printf("error in opening %s for reading\n", filenameinzip); } } if (err == ZIP_OK) { /* Read contents of file and write it to zip */ do { size_read = (int)fread(buf, 1, size_buf, fin); if ((size_read < size_buf) && (feof(fin) == 0)) { printf("error in reading %s\n",filenameinzip); err = ZIP_ERRNO; } if (size_read > 0) { err = zipWriteInFileInZip(zf, buf, size_read); if (err < 0) printf("error in writing %s in the zipfile (%d)\n", filenameinzip, err); } } while ((err == ZIP_OK) && (size_read > 0)); } if (fin) fclose(fin); if (err < 0) err = ZIP_ERRNO; else { err = zipCloseFileInZip(zf); if (err != ZIP_OK) printf("error in closing %s in the zipfile (%d)\n", filenameinzip, err); } } errclose = zipClose(zf, NULL); if (errclose != ZIP_OK) printf("error in closing %s (%d)\n", zipfilename, errclose); free(buf); return err; } ================================================ FILE: BNN/cpp/minizip/minizip.pc.in ================================================ prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@/minizip Name: minizip Description: Minizip zip file manipulation library Requires: Version: @PACKAGE_VERSION@ Libs: -L${libdir} -lminizip Libs.private: -lz Cflags: -I${includedir} ================================================ FILE: BNN/cpp/minizip/minizip.sln ================================================  Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniunz", "miniunz.vcproj", "{8D770B0A-A853-4FB7-8E71-5BDDC16A8C11}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip.vcproj", "{9C3AFF9E-022F-4A42-BCDC-C705AEE00DEB}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {8D770B0A-A853-4FB7-8E71-5BDDC16A8C11}.Debug|Win32.ActiveCfg = Debug|Win32 {8D770B0A-A853-4FB7-8E71-5BDDC16A8C11}.Debug|Win32.Build.0 = Debug|Win32 {8D770B0A-A853-4FB7-8E71-5BDDC16A8C11}.Release|Win32.ActiveCfg = Release|Win32 {8D770B0A-A853-4FB7-8E71-5BDDC16A8C11}.Release|Win32.Build.0 = Release|Win32 {9C3AFF9E-022F-4A42-BCDC-C705AEE00DEB}.Debug|Win32.ActiveCfg = Debug|Win32 {9C3AFF9E-022F-4A42-BCDC-C705AEE00DEB}.Debug|Win32.Build.0 = Debug|Win32 {9C3AFF9E-022F-4A42-BCDC-C705AEE00DEB}.Release|Win32.ActiveCfg = Release|Win32 {9C3AFF9E-022F-4A42-BCDC-C705AEE00DEB}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal ================================================ FILE: BNN/cpp/minizip/minizip.vcproj ================================================ ================================================ FILE: BNN/cpp/minizip/unzip.c ================================================ /* unzip.c -- IO for uncompress .zip files using zlib Version 1.1, February 14h, 2010 part of the MiniZip project Copyright (C) 1998-2010 Gilles Vollant http://www.winimage.com/zLibDll/minizip.html Modifications of Unzip for Zip64 Copyright (C) 2007-2008 Even Rouault Modifications for Zip64 support on both zip and unzip Copyright (C) 2009-2010 Mathias Svensson http://result42.com Modifications for AES, PKWARE disk spanning Copyright (C) 2010-2014 Nathan Moinvaziri This program is distributed under the terms of the same license as zlib. See the accompanying LICENSE file for the full text of the license. Mar 8th, 2016 - Lucio Cosmo Fixed support for 64bit builds for archives with "PKWARE" password. Changed long, unsigned long, unsigned to unsigned int in access functions to crctables and pkeys */ #include #include #include /*#ifndef NOUNCRYPT # define NOUNCRYPT #endif*/ #include "zlib.h" #include "unzip.h" #ifdef STDC # include # include # include #endif #ifdef NO_ERRNO_H extern int errno; #else # include #endif #ifdef HAVE_AES # define AES_METHOD (99) # define AES_PWVERIFYSIZE (2) # define AES_MAXSALTLENGTH (16) # define AES_AUTHCODESIZE (10) # define AES_HEADERSIZE (11) # define AES_KEYSIZE(mode) (64 + (mode * 64)) # include "aes/aes.h" # include "aes/fileenc.h" #endif #ifndef NOUNCRYPT # include "crypt.h" #endif #ifndef local # define local static #endif /* compile with -Dlocal if your debugger can't find static symbols */ #define DISKHEADERMAGIC (0x08074b50) #define LOCALHEADERMAGIC (0x04034b50) #define CENTRALHEADERMAGIC (0x02014b50) #define ENDHEADERMAGIC (0x06054b50) #define ZIP64ENDHEADERMAGIC (0x06064b50) #define ZIP64ENDLOCHEADERMAGIC (0x07064b50) #define SIZECENTRALDIRITEM (0x2e) #define SIZECENTRALHEADERLOCATOR (0x14) /* 20 */ #define SIZEZIPLOCALHEADER (0x1e) #ifndef BUFREADCOMMENT # define BUFREADCOMMENT (0x400) #endif #ifndef UNZ_BUFSIZE # define UNZ_BUFSIZE (64 * 1024) #endif #ifndef UNZ_MAXFILENAMEINZIP # define UNZ_MAXFILENAMEINZIP (256) #endif #ifndef ALLOC # define ALLOC(size) (malloc(size)) #endif #ifndef TRYFREE # define TRYFREE(p) {if (p) free(p);} #endif const char unz_copyright[] = " unzip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; /* unz_file_info_interntal contain internal info about a file in zipfile*/ typedef struct unz_file_info64_internal_s { ZPOS64_T offset_curfile; /* relative offset of local header 8 bytes */ ZPOS64_T byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx) */ #ifdef HAVE_AES uLong aes_encryption_mode; uLong aes_compression_method; uLong aes_version; #endif } unz_file_info64_internal; /* file_in_zip_read_info_s contain internal information about a file in zipfile */ typedef struct { Bytef *read_buffer; /* internal buffer for compressed data */ z_stream stream; /* zLib stream structure for inflate */ #ifdef HAVE_BZIP2 bz_stream bstream; /* bzLib stream structure for bziped */ #endif #ifdef HAVE_AES fcrypt_ctx aes_ctx; #endif ZPOS64_T pos_in_zipfile; /* position in byte on the zipfile, for fseek */ uLong stream_initialised; /* flag set if stream structure is initialised */ ZPOS64_T offset_local_extrafield; /* offset of the local extra field */ uInt size_local_extrafield; /* size of the local extra field */ ZPOS64_T pos_local_extrafield; /* position in the local extra field in read */ ZPOS64_T total_out_64; uLong crc32; /* crc32 of all data uncompressed */ uLong crc32_wait; /* crc32 we must obtain after decompress all */ ZPOS64_T rest_read_compressed; /* number of byte to be decompressed */ ZPOS64_T rest_read_uncompressed; /* number of byte to be obtained after decomp */ zlib_filefunc64_32_def z_filefunc; voidpf filestream; /* io structore of the zipfile */ uLong compression_method; /* compression method (0==store) */ ZPOS64_T byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx) */ int raw; } file_in_zip64_read_info_s; /* unz64_s contain internal information about the zipfile */ typedef struct { zlib_filefunc64_32_def z_filefunc; voidpf filestream; /* io structure of the current zipfile */ voidpf filestream_with_CD; /* io structure of the disk with the central directory */ unz_global_info64 gi; /* public global information */ ZPOS64_T byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx)*/ ZPOS64_T num_file; /* number of the current file in the zipfile*/ ZPOS64_T pos_in_central_dir; /* pos of the current file in the central dir*/ ZPOS64_T current_file_ok; /* flag about the usability of the current file*/ ZPOS64_T central_pos; /* position of the beginning of the central dir*/ uLong number_disk; /* number of the current disk, used for spanning ZIP*/ ZPOS64_T size_central_dir; /* size of the central directory */ ZPOS64_T offset_central_dir; /* offset of start of central directory with respect to the starting disk number */ unz_file_info64 cur_file_info; /* public info about the current file in zip*/ unz_file_info64_internal cur_file_info_internal; /* private info about it*/ file_in_zip64_read_info_s* pfile_in_zip_read; /* structure about the current file if we are decompressing it */ int isZip64; /* is the current file zip64 */ #ifndef NOUNCRYPT unsigned int keys[3]; /* keys defining the pseudo-random sequence */ const unsigned int* pcrc_32_tab; #endif } unz64_s; /* Translate date/time from Dos format to tm_unz (readable more easily) */ local void unz64local_DosDateToTmuDate (ZPOS64_T ulDosDate, tm_unz* ptm) { ZPOS64_T uDate = (ZPOS64_T)(ulDosDate>>16); ptm->tm_mday = (uInt)(uDate&0x1f); ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1); ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980); ptm->tm_hour = (uInt)((ulDosDate &0xF800)/0x800); ptm->tm_min = (uInt)((ulDosDate&0x7E0)/0x20); ptm->tm_sec = (uInt)(2*(ulDosDate&0x1f)); #define unz64local_in_range(min, max, value) ((min) <= (value) && (value) <= (max)) if (!unz64local_in_range(0, 11, ptm->tm_mon) || !unz64local_in_range(1, 31, ptm->tm_mday) || !unz64local_in_range(0, 23, ptm->tm_hour) || !unz64local_in_range(0, 59, ptm->tm_min) || !unz64local_in_range(0, 59, ptm->tm_sec)) /* Invalid date stored, so don't return it. */ memset(ptm, 0, sizeof(tm_unz)); #undef unz64local_in_range } /* Read a byte from a gz_stream; Return EOF for end of file. */ local int unz64local_getByte OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi)); local int unz64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi) { unsigned char c; int err = (int)ZREAD64(*pzlib_filefunc_def, filestream, &c, 1); if (err == 1) { *pi = (int)c; return UNZ_OK; } *pi = 0; if (ZERROR64(*pzlib_filefunc_def, filestream)) return UNZ_ERRNO; return UNZ_EOF; } local int unz64local_getShort OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); local int unz64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX) { uLong x; int i = 0; int err; err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); x = (uLong)i; if (err == UNZ_OK) err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); x |= ((uLong)i)<<8; if (err == UNZ_OK) *pX = x; else *pX = 0; return err; } local int unz64local_getLong OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); local int unz64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX) { uLong x; int i = 0; int err; err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); x = (uLong)i; if (err == UNZ_OK) err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); x |= ((uLong)i)<<8; if (err == UNZ_OK) err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); x |= ((uLong)i)<<16; if (err == UNZ_OK) err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); x += ((uLong)i)<<24; if (err == UNZ_OK) *pX = x; else *pX = 0; return err; } local int unz64local_getLong64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX)); local int unz64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX) { ZPOS64_T x; int i = 0; int err; err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); x = (ZPOS64_T)i; if (err == UNZ_OK) err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); x |= ((ZPOS64_T)i)<<8; if (err == UNZ_OK) err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); x |= ((ZPOS64_T)i)<<16; if (err == UNZ_OK) err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); x |= ((ZPOS64_T)i)<<24; if (err == UNZ_OK) err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); x |= ((ZPOS64_T)i)<<32; if (err == UNZ_OK) err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); x |= ((ZPOS64_T)i)<<40; if (err == UNZ_OK) err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); x |= ((ZPOS64_T)i)<<48; if (err == UNZ_OK) err = unz64local_getByte(pzlib_filefunc_def, filestream, &i); x |= ((ZPOS64_T)i)<<56; if (err == UNZ_OK) *pX = x; else *pX = 0; return err; } /* Locate the Central directory of a zip file (at the end, just before the global comment) */ local ZPOS64_T unz64local_SearchCentralDir OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)); local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) { unsigned char* buf; ZPOS64_T file_size; ZPOS64_T back_read = 4; ZPOS64_T max_back = 0xffff; /* maximum size of global comment */ ZPOS64_T pos_found = 0; uLong read_size; ZPOS64_T read_pos; int i; buf = (unsigned char*)ALLOC(BUFREADCOMMENT + 4); if (buf == NULL) return 0; if (ZSEEK64(*pzlib_filefunc_def, filestream, 0, ZLIB_FILEFUNC_SEEK_END) != 0) { TRYFREE(buf); return 0; } file_size = ZTELL64(*pzlib_filefunc_def, filestream); if (max_back > file_size) max_back = file_size; while (back_read < max_back) { if (back_read + BUFREADCOMMENT > max_back) back_read = max_back; else back_read += BUFREADCOMMENT; read_pos = file_size - back_read; read_size = ((BUFREADCOMMENT + 4) < (file_size - read_pos)) ? (BUFREADCOMMENT + 4) : (uLong)(file_size - read_pos); if (ZSEEK64(*pzlib_filefunc_def, filestream, read_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) break; if (ZREAD64(*pzlib_filefunc_def, filestream, buf, read_size) != read_size) break; for (i = (int)read_size-3; (i--) > 0;) if (((*(buf+i)) == (ENDHEADERMAGIC & 0xff)) && ((*(buf+i+1)) == (ENDHEADERMAGIC >> 8 & 0xff)) && ((*(buf+i+2)) == (ENDHEADERMAGIC >> 16 & 0xff)) && ((*(buf+i+3)) == (ENDHEADERMAGIC >> 24 & 0xff))) { pos_found = read_pos+i; break; } if (pos_found != 0) break; } TRYFREE(buf); return pos_found; } /* Locate the Central directory 64 of a zipfile (at the end, just before the global comment) */ local ZPOS64_T unz64local_SearchCentralDir64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, const ZPOS64_T endcentraloffset)); local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, const ZPOS64_T endcentraloffset) { ZPOS64_T offset; uLong uL; /* Zip64 end of central directory locator */ if (ZSEEK64(*pzlib_filefunc_def, filestream, endcentraloffset - SIZECENTRALHEADERLOCATOR, ZLIB_FILEFUNC_SEEK_SET) != 0) return 0; /* read locator signature */ if (unz64local_getLong(pzlib_filefunc_def, filestream, &uL) != UNZ_OK) return 0; if (uL != ZIP64ENDLOCHEADERMAGIC) return 0; /* number of the disk with the start of the zip64 end of central directory */ if (unz64local_getLong(pzlib_filefunc_def, filestream, &uL) != UNZ_OK) return 0; /* relative offset of the zip64 end of central directory record */ if (unz64local_getLong64(pzlib_filefunc_def, filestream, &offset) != UNZ_OK) return 0; /* total number of disks */ if (unz64local_getLong(pzlib_filefunc_def, filestream, &uL) != UNZ_OK) return 0; /* Goto end of central directory record */ if (ZSEEK64(*pzlib_filefunc_def, filestream, offset, ZLIB_FILEFUNC_SEEK_SET) != 0) return 0; /* the signature */ if (unz64local_getLong(pzlib_filefunc_def, filestream, &uL) != UNZ_OK) return 0; if (uL != ZIP64ENDHEADERMAGIC) return 0; return offset; } local unzFile unzOpenInternal(const void *path, zlib_filefunc64_32_def* pzlib_filefunc64_32_def) { unz64_s us; unz64_s *s; ZPOS64_T central_pos; ZPOS64_T central_pos64; uLong uL; ZPOS64_T uL64; voidpf filestream = NULL; ZPOS64_T number_entry_CD; int err = UNZ_OK; if (unz_copyright[0]!=' ') return NULL; us.filestream = NULL; us.filestream_with_CD = NULL; us.z_filefunc.zseek32_file = NULL; us.z_filefunc.ztell32_file = NULL; if (pzlib_filefunc64_32_def == NULL) fill_fopen64_filefunc(&us.z_filefunc.zfile_func64); else us.z_filefunc = *pzlib_filefunc64_32_def; us.filestream = ZOPEN64(us.z_filefunc, path, ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_EXISTING); if (us.filestream == NULL) return NULL; us.filestream_with_CD = us.filestream; us.isZip64 = 0; /* Search for end of central directory header */ central_pos = unz64local_SearchCentralDir(&us.z_filefunc, us.filestream); if (central_pos) { if (ZSEEK64(us.z_filefunc, us.filestream, central_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) err = UNZ_ERRNO; /* the signature, already checked */ if (unz64local_getLong(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) err = UNZ_ERRNO; /* number of this disk */ if (unz64local_getShort(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) err = UNZ_ERRNO; us.number_disk = uL; /* number of the disk with the start of the central directory */ if (unz64local_getShort(&us.z_filefunc, us.filestream,& uL) != UNZ_OK) err = UNZ_ERRNO; us.gi.number_disk_with_CD = uL; /* total number of entries in the central directory on this disk */ if (unz64local_getShort(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) err = UNZ_ERRNO; us.gi.number_entry = uL; /* total number of entries in the central directory */ if (unz64local_getShort(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) err = UNZ_ERRNO; number_entry_CD = uL; if (number_entry_CD != us.gi.number_entry) err = UNZ_BADZIPFILE; /* size of the central directory */ if (unz64local_getLong(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) err = UNZ_ERRNO; us.size_central_dir = uL; /* offset of start of central directory with respect to the starting disk number */ if (unz64local_getLong(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) err = UNZ_ERRNO; us.offset_central_dir = uL; /* zipfile comment length */ if (unz64local_getShort(&us.z_filefunc, us.filestream, &us.gi.size_comment) != UNZ_OK) err = UNZ_ERRNO; if (err == UNZ_OK) { /* Search for Zip64 end of central directory header */ central_pos64 = unz64local_SearchCentralDir64(&us.z_filefunc, us.filestream, central_pos); if (central_pos64) { central_pos = central_pos64; us.isZip64 = 1; if (ZSEEK64(us.z_filefunc, us.filestream, central_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) err = UNZ_ERRNO; /* the signature, already checked */ if (unz64local_getLong(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) err = UNZ_ERRNO; /* size of zip64 end of central directory record */ if (unz64local_getLong64(&us.z_filefunc, us.filestream, &uL64) != UNZ_OK) err = UNZ_ERRNO; /* version made by */ if (unz64local_getShort(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) err = UNZ_ERRNO; /* version needed to extract */ if (unz64local_getShort(&us.z_filefunc, us.filestream, &uL) != UNZ_OK) err = UNZ_ERRNO; /* number of this disk */ if (unz64local_getLong(&us.z_filefunc, us.filestream, &us.number_disk) != UNZ_OK) err = UNZ_ERRNO; /* number of the disk with the start of the central directory */ if (unz64local_getLong(&us.z_filefunc, us.filestream, &us.gi.number_disk_with_CD) != UNZ_OK) err = UNZ_ERRNO; /* total number of entries in the central directory on this disk */ if (unz64local_getLong64(&us.z_filefunc, us.filestream, &us.gi.number_entry) != UNZ_OK) err = UNZ_ERRNO; /* total number of entries in the central directory */ if (unz64local_getLong64(&us.z_filefunc, us.filestream, &number_entry_CD) != UNZ_OK) err = UNZ_ERRNO; if (number_entry_CD != us.gi.number_entry) err = UNZ_BADZIPFILE; /* size of the central directory */ if (unz64local_getLong64(&us.z_filefunc, us.filestream, &us.size_central_dir) != UNZ_OK) err = UNZ_ERRNO; /* offset of start of central directory with respect to the starting disk number */ if (unz64local_getLong64(&us.z_filefunc, us.filestream, &us.offset_central_dir) != UNZ_OK) err = UNZ_ERRNO; } else if ((us.gi.number_entry == 0xffff) || (us.size_central_dir == 0xffff) || (us.offset_central_dir == 0xffffffff)) err = UNZ_BADZIPFILE; } } else err = UNZ_ERRNO; if ((err == UNZ_OK) && (central_pos < us.offset_central_dir + us.size_central_dir)) err = UNZ_BADZIPFILE; if (err != UNZ_OK) { ZCLOSE64(us.z_filefunc, us.filestream); return NULL; } if (us.gi.number_disk_with_CD == 0) { /* If there is only one disk open another stream so we don't have to seek between the CD and the file headers constantly */ filestream = ZOPEN64(us.z_filefunc, path, ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_EXISTING); if (filestream != NULL) us.filestream = filestream; } /* Hack for zip files that have no respect for zip64 if ((central_pos > 0xffffffff) && (us.offset_central_dir < 0xffffffff)) us.offset_central_dir = central_pos - us.size_central_dir;*/ us.byte_before_the_zipfile = central_pos - (us.offset_central_dir + us.size_central_dir); us.central_pos = central_pos; us.pfile_in_zip_read = NULL; s = (unz64_s*)ALLOC(sizeof(unz64_s)); if (s != NULL) { *s = us; unzGoToFirstFile((unzFile)s); } return (unzFile)s; } extern unzFile ZEXPORT unzOpen2(const char *path, zlib_filefunc_def* pzlib_filefunc32_def) { if (pzlib_filefunc32_def != NULL) { zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; fill_zlib_filefunc64_32_def_from_filefunc32(&zlib_filefunc64_32_def_fill, pzlib_filefunc32_def); return unzOpenInternal(path, &zlib_filefunc64_32_def_fill); } return unzOpenInternal(path, NULL); } extern unzFile ZEXPORT unzOpen2_64(const void *path, zlib_filefunc64_def* pzlib_filefunc_def) { if (pzlib_filefunc_def != NULL) { zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; zlib_filefunc64_32_def_fill.zfile_func64 = *pzlib_filefunc_def; zlib_filefunc64_32_def_fill.ztell32_file = NULL; zlib_filefunc64_32_def_fill.zseek32_file = NULL; return unzOpenInternal(path, &zlib_filefunc64_32_def_fill); } return unzOpenInternal(path, NULL); } extern unzFile ZEXPORT unzOpen(const char *path) { return unzOpenInternal(path, NULL); } extern unzFile ZEXPORT unzOpen64(const void *path) { return unzOpenInternal(path, NULL); } extern int ZEXPORT unzClose(unzFile file) { unz64_s* s; if (file == NULL) return UNZ_PARAMERROR; s = (unz64_s*)file; if (s->pfile_in_zip_read != NULL) unzCloseCurrentFile(file); if ((s->filestream != NULL) && (s->filestream != s->filestream_with_CD)) ZCLOSE64(s->z_filefunc, s->filestream); if (s->filestream_with_CD != NULL) ZCLOSE64(s->z_filefunc, s->filestream_with_CD); s->filestream = NULL; s->filestream_with_CD = NULL; TRYFREE(s); return UNZ_OK; } /* Goto to the next available disk for spanned archives */ local int unzGoToNextDisk OF((unzFile file)); local int unzGoToNextDisk(unzFile file) { unz64_s* s; uLong number_disk_next = 0; s = (unz64_s*)file; if (s == NULL) return UNZ_PARAMERROR; number_disk_next = s->number_disk; if ((s->pfile_in_zip_read != NULL) && (s->pfile_in_zip_read->rest_read_uncompressed > 0)) /* We are currently reading a file and we need the next sequential disk */ number_disk_next += 1; else /* Goto the disk for the current file */ number_disk_next = s->cur_file_info.disk_num_start; if (number_disk_next != s->number_disk) { /* Switch disks */ if ((s->filestream != NULL) && (s->filestream != s->filestream_with_CD)) ZCLOSE64(s->z_filefunc, s->filestream); if (number_disk_next == s->gi.number_disk_with_CD) { s->filestream = s->filestream_with_CD; } else { s->filestream = ZOPENDISK64(s->z_filefunc, s->filestream_with_CD, number_disk_next, ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_EXISTING); } if (s->filestream == NULL) return UNZ_ERRNO; s->number_disk = number_disk_next; } return UNZ_OK; } extern int ZEXPORT unzGetGlobalInfo(unzFile file, unz_global_info* pglobal_info32) { unz64_s* s; if (file == NULL) return UNZ_PARAMERROR; s = (unz64_s*)file; /* to do : check if number_entry is not truncated */ pglobal_info32->number_entry = (uLong)s->gi.number_entry; pglobal_info32->size_comment = s->gi.size_comment; pglobal_info32->number_disk_with_CD = s->gi.number_disk_with_CD; return UNZ_OK; } extern int ZEXPORT unzGetGlobalInfo64(unzFile file, unz_global_info64* pglobal_info) { unz64_s* s; if (file == NULL) return UNZ_PARAMERROR; s = (unz64_s*)file; *pglobal_info = s->gi; return UNZ_OK; } extern int ZEXPORT unzGetGlobalComment(unzFile file, char *comment, uLong comment_size) { unz64_s* s; uLong bytes_to_read = comment_size; if (file == NULL) return (int)UNZ_PARAMERROR; s = (unz64_s*)file; if (bytes_to_read > s->gi.size_comment) bytes_to_read = s->gi.size_comment; if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, s->central_pos + 22, ZLIB_FILEFUNC_SEEK_SET) != 0) return UNZ_ERRNO; if (bytes_to_read>0) { *comment = 0; if (ZREAD64(s->z_filefunc, s->filestream_with_CD, comment, bytes_to_read) != bytes_to_read) return UNZ_ERRNO; } if ((comment != NULL) && (comment_size > s->gi.size_comment)) *(comment+s->gi.size_comment) = 0; return (int)bytes_to_read; } /* Get Info about the current file in the zipfile, with internal only info */ local int unz64local_GetCurrentFileInfoInternal(unzFile file, unz_file_info64 *pfile_info, unz_file_info64_internal *pfile_info_internal, char *filename, uLong filename_size, void *extrafield, uLong extrafield_size, char *comment, uLong comment_size) { unz64_s* s; unz_file_info64 file_info; unz_file_info64_internal file_info_internal; ZPOS64_T bytes_to_read; int err = UNZ_OK; uLong uMagic; long lSeek = 0; ZPOS64_T current_pos = 0; uLong acc = 0; uLong uL; ZPOS64_T uL64; if (file == NULL) return UNZ_PARAMERROR; s = (unz64_s*)file; if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, s->pos_in_central_dir + s->byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) err = UNZ_ERRNO; /* Check the magic */ if (err == UNZ_OK) { if (unz64local_getLong(&s->z_filefunc, s->filestream_with_CD, &uMagic) != UNZ_OK) err = UNZ_ERRNO; else if (uMagic != CENTRALHEADERMAGIC) err = UNZ_BADZIPFILE; } /* Read central directory header */ if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.version) != UNZ_OK) err = UNZ_ERRNO; if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.version_needed) != UNZ_OK) err = UNZ_ERRNO; if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.flag) != UNZ_OK) err = UNZ_ERRNO; if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.compression_method) != UNZ_OK) err = UNZ_ERRNO; if (unz64local_getLong(&s->z_filefunc, s->filestream_with_CD, &file_info.dosDate) != UNZ_OK) err = UNZ_ERRNO; unz64local_DosDateToTmuDate(file_info.dosDate, &file_info.tmu_date); if (unz64local_getLong(&s->z_filefunc, s->filestream_with_CD, &file_info.crc) != UNZ_OK) err = UNZ_ERRNO; if (unz64local_getLong(&s->z_filefunc, s->filestream_with_CD, &uL) != UNZ_OK) err = UNZ_ERRNO; file_info.compressed_size = uL; if (unz64local_getLong(&s->z_filefunc, s->filestream_with_CD, &uL) != UNZ_OK) err = UNZ_ERRNO; file_info.uncompressed_size = uL; if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.size_filename) != UNZ_OK) err = UNZ_ERRNO; if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.size_file_extra) != UNZ_OK) err = UNZ_ERRNO; if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.size_file_comment) != UNZ_OK) err = UNZ_ERRNO; if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.disk_num_start) != UNZ_OK) err = UNZ_ERRNO; if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &file_info.internal_fa) != UNZ_OK) err = UNZ_ERRNO; if (unz64local_getLong(&s->z_filefunc, s->filestream_with_CD, &file_info.external_fa) != UNZ_OK) err = UNZ_ERRNO; /* Relative offset of local header */ if (unz64local_getLong(&s->z_filefunc, s->filestream_with_CD, &uL) != UNZ_OK) err = UNZ_ERRNO; file_info.size_file_extra_internal = 0; file_info.disk_offset = uL; file_info_internal.offset_curfile = uL; #ifdef HAVE_AES file_info_internal.aes_compression_method = 0; file_info_internal.aes_encryption_mode = 0; file_info_internal.aes_version = 0; #endif lSeek += file_info.size_filename; if ((err == UNZ_OK) && (filename != NULL)) { if (file_info.size_filename < filename_size) { *(filename+file_info.size_filename) = 0; bytes_to_read = file_info.size_filename; } else bytes_to_read = filename_size; if ((file_info.size_filename > 0) && (filename_size > 0)) if (ZREAD64(s->z_filefunc, s->filestream_with_CD,filename, (uLong)bytes_to_read) != bytes_to_read) err = UNZ_ERRNO; lSeek -= (uLong)bytes_to_read; } /* Read extrafield */ if ((err == UNZ_OK) && (extrafield != NULL)) { if (file_info.size_file_extra < extrafield_size) bytes_to_read = file_info.size_file_extra; else bytes_to_read = extrafield_size; if (lSeek != 0) { if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, lSeek, ZLIB_FILEFUNC_SEEK_CUR) == 0) lSeek=0; else err = UNZ_ERRNO; } if ((file_info.size_file_extra > 0) && (extrafield_size > 0)) if (ZREAD64(s->z_filefunc, s->filestream_with_CD, extrafield, (uLong)bytes_to_read) != bytes_to_read) err = UNZ_ERRNO; lSeek += file_info.size_file_extra - (uLong)bytes_to_read; } else lSeek += file_info.size_file_extra; if ((err == UNZ_OK) && (file_info.size_file_extra != 0)) { if (lSeek != 0) { if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, lSeek, ZLIB_FILEFUNC_SEEK_CUR) == 0) lSeek=0; else err = UNZ_ERRNO; } /* We are going to parse the extra field so we need to move back */ current_pos = ZTELL64(s->z_filefunc, s->filestream_with_CD); if (current_pos < file_info.size_file_extra) err = UNZ_ERRNO; current_pos -= file_info.size_file_extra; if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, current_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) err = UNZ_ERRNO; while((err != UNZ_ERRNO) && (acc < file_info.size_file_extra)) { uLong headerid; uLong datasize; if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &headerid) != UNZ_OK) err = UNZ_ERRNO; if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &datasize) != UNZ_OK) err = UNZ_ERRNO; /* ZIP64 extra fields */ if (headerid == 0x0001) { /* Subtract size of ZIP64 field, since ZIP64 is handled internally */ file_info.size_file_extra_internal += 2 + 2 + datasize; if (file_info.uncompressed_size == 0xffffffff) { if (unz64local_getLong64(&s->z_filefunc, s->filestream_with_CD, &file_info.uncompressed_size) != UNZ_OK) err = UNZ_ERRNO; } if (file_info.compressed_size == 0xffffffff) { if (unz64local_getLong64(&s->z_filefunc, s->filestream_with_CD, &file_info.compressed_size) != UNZ_OK) err = UNZ_ERRNO; } if (file_info_internal.offset_curfile == 0xffffffff) { /* Relative Header offset */ if (unz64local_getLong64(&s->z_filefunc, s->filestream_with_CD, &uL64) != UNZ_OK) err = UNZ_ERRNO; file_info_internal.offset_curfile = uL64; file_info.disk_offset = uL64; } if (file_info.disk_num_start == 0xffffffff) { /* Disk Start Number */ if (unz64local_getLong(&s->z_filefunc, s->filestream_with_CD, &file_info.disk_num_start) != UNZ_OK) err = UNZ_ERRNO; } } #ifdef HAVE_AES /* AES header */ else if (headerid == 0x9901) { /* Subtract size of AES field, since AES is handled internally */ file_info.size_file_extra_internal += 2 + 2 + datasize; /* Verify version info */ if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &uL) != UNZ_OK) err = UNZ_ERRNO; /* Support AE-1 and AE-2 */ if (uL != 1 && uL != 2) err = UNZ_ERRNO; file_info_internal.aes_version = uL; if (unz64local_getByte(&s->z_filefunc, s->filestream_with_CD, &uL) != UNZ_OK) err = UNZ_ERRNO; if ((char)uL != 'A') err = UNZ_ERRNO; if (unz64local_getByte(&s->z_filefunc, s->filestream_with_CD, &uL) != UNZ_OK) err = UNZ_ERRNO; if ((char)uL != 'E') err = UNZ_ERRNO; /* Get AES encryption strength and actual compression method */ if (unz64local_getByte(&s->z_filefunc, s->filestream_with_CD, &uL) != UNZ_OK) err = UNZ_ERRNO; file_info_internal.aes_encryption_mode = uL; if (unz64local_getShort(&s->z_filefunc, s->filestream_with_CD, &uL) != UNZ_OK) err = UNZ_ERRNO; file_info_internal.aes_compression_method = uL; } #endif else { if (ZSEEK64(s->z_filefunc, s->filestream_with_CD,datasize, ZLIB_FILEFUNC_SEEK_CUR) != 0) err = UNZ_ERRNO; } acc += 2 + 2 + datasize; } } if (file_info.disk_num_start == s->gi.number_disk_with_CD) file_info_internal.byte_before_the_zipfile = s->byte_before_the_zipfile; else file_info_internal.byte_before_the_zipfile = 0; if ((err == UNZ_OK) && (comment != NULL)) { if (file_info.size_file_comment < comment_size) { *(comment+file_info.size_file_comment) = 0; bytes_to_read = file_info.size_file_comment; } else bytes_to_read = comment_size; if (lSeek != 0) { if (ZSEEK64(s->z_filefunc, s->filestream_with_CD, lSeek, ZLIB_FILEFUNC_SEEK_CUR) != 0) err = UNZ_ERRNO; } if ((file_info.size_file_comment > 0) && (comment_size > 0)) if (ZREAD64(s->z_filefunc, s->filestream_with_CD, comment, (uLong)bytes_to_read) != bytes_to_read) err = UNZ_ERRNO; lSeek += file_info.size_file_comment - (uLong)bytes_to_read; } else lSeek += file_info.size_file_comment; if ((err == UNZ_OK) && (pfile_info != NULL)) *pfile_info = file_info; if ((err == UNZ_OK) && (pfile_info_internal != NULL)) *pfile_info_internal = file_info_internal; return err; } extern int ZEXPORT unzGetCurrentFileInfo(unzFile file, unz_file_info * pfile_info, char *filename, uLong filename_size, void *extrafield, uLong extrafield_size, char* comment, uLong comment_size) { unz_file_info64 file_info64; int err; err = unz64local_GetCurrentFileInfoInternal(file, &file_info64, NULL, filename, filename_size, extrafield, extrafield_size, comment, comment_size); if ((err == UNZ_OK) && (pfile_info != NULL)) { pfile_info->version = file_info64.version; pfile_info->version_needed = file_info64.version_needed; pfile_info->flag = file_info64.flag; pfile_info->compression_method = file_info64.compression_method; pfile_info->dosDate = file_info64.dosDate; pfile_info->crc = file_info64.crc; pfile_info->size_filename = file_info64.size_filename; pfile_info->size_file_extra = file_info64.size_file_extra - file_info64.size_file_extra_internal; pfile_info->size_file_comment = file_info64.size_file_comment; pfile_info->disk_num_start = file_info64.disk_num_start; pfile_info->internal_fa = file_info64.internal_fa; pfile_info->external_fa = file_info64.external_fa; pfile_info->tmu_date = file_info64.tmu_date, pfile_info->compressed_size = (uLong)file_info64.compressed_size; pfile_info->uncompressed_size = (uLong)file_info64.uncompressed_size; } return err; } extern int ZEXPORT unzGetCurrentFileInfo64(unzFile file, unz_file_info64 * pfile_info, char *filename, uLong filename_size, void *extrafield, uLong extrafield_size, char* comment, uLong comment_size) { return unz64local_GetCurrentFileInfoInternal(file, pfile_info, NULL, filename, filename_size, extrafield, extrafield_size, comment,comment_size); } /* Read the local header of the current zipfile. Check the coherency of the local header and info in the end of central directory about this file store in *piSizeVar the size of extra info in local header (filename and size of extra field data) */ local int unz64local_CheckCurrentFileCoherencyHeader(unz64_s* s, uInt* piSizeVar, ZPOS64_T *poffset_local_extrafield, uInt *psize_local_extrafield) { uLong uMagic, uL, uFlags; uLong size_filename; uLong size_extra_field; int err = UNZ_OK; int compression_method = 0; *piSizeVar = 0; *poffset_local_extrafield = 0; *psize_local_extrafield = 0; err = unzGoToNextDisk((unzFile)s); if (err != UNZ_OK) return err; if (ZSEEK64(s->z_filefunc, s->filestream, s->cur_file_info_internal.offset_curfile + s->cur_file_info_internal.byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) return UNZ_ERRNO; if (err == UNZ_OK) { if (unz64local_getLong(&s->z_filefunc, s->filestream, &uMagic) != UNZ_OK) err = UNZ_ERRNO; else if (uMagic != LOCALHEADERMAGIC) err = UNZ_BADZIPFILE; } if (unz64local_getShort(&s->z_filefunc, s->filestream, &uL) != UNZ_OK) err = UNZ_ERRNO; if (unz64local_getShort(&s->z_filefunc, s->filestream, &uFlags) != UNZ_OK) err = UNZ_ERRNO; if (unz64local_getShort(&s->z_filefunc, s->filestream, &uL) != UNZ_OK) err = UNZ_ERRNO; else if ((err == UNZ_OK) && (uL != s->cur_file_info.compression_method)) err = UNZ_BADZIPFILE; compression_method = (int)s->cur_file_info.compression_method; #ifdef HAVE_AES if (compression_method == AES_METHOD) compression_method = (int)s->cur_file_info_internal.aes_compression_method; #endif if ((err == UNZ_OK) && (compression_method != 0) && #ifdef HAVE_BZIP2 (compression_method != Z_BZIP2ED) && #endif (compression_method != Z_DEFLATED)) err = UNZ_BADZIPFILE; if (unz64local_getLong(&s->z_filefunc, s->filestream, &uL) != UNZ_OK) /* date/time */ err = UNZ_ERRNO; if (unz64local_getLong(&s->z_filefunc, s->filestream, &uL) != UNZ_OK) /* crc */ err = UNZ_ERRNO; else if ((err == UNZ_OK) && (uL != s->cur_file_info.crc) && ((uFlags & 8) == 0)) err = UNZ_BADZIPFILE; if (unz64local_getLong(&s->z_filefunc, s->filestream, &uL) != UNZ_OK) /* size compr */ err = UNZ_ERRNO; else if ((uL != 0xffffffff) && (err == UNZ_OK) && (uL != s->cur_file_info.compressed_size) && ((uFlags & 8) == 0)) err = UNZ_BADZIPFILE; if (unz64local_getLong(&s->z_filefunc, s->filestream, &uL) != UNZ_OK) /* size uncompr */ err = UNZ_ERRNO; else if ((uL != 0xffffffff) && (err == UNZ_OK) && (uL != s->cur_file_info.uncompressed_size) && ((uFlags & 8) == 0)) err = UNZ_BADZIPFILE; if (unz64local_getShort(&s->z_filefunc, s->filestream, &size_filename) != UNZ_OK) err = UNZ_ERRNO; else if ((err == UNZ_OK) && (size_filename != s->cur_file_info.size_filename)) err = UNZ_BADZIPFILE; *piSizeVar += (uInt)size_filename; if (unz64local_getShort(&s->z_filefunc, s->filestream, &size_extra_field) != UNZ_OK) err = UNZ_ERRNO; *poffset_local_extrafield = s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + size_filename; *psize_local_extrafield = (uInt)size_extra_field; *piSizeVar += (uInt)size_extra_field; return err; } /* Open for reading data the current file in the zipfile. If there is no error and the file is opened, the return value is UNZ_OK. */ extern int ZEXPORT unzOpenCurrentFile3(unzFile file, int* method, int* level, int raw, const char* password) { int err = UNZ_OK; int compression_method; uInt iSizeVar; unz64_s* s; file_in_zip64_read_info_s* pfile_in_zip_read_info; ZPOS64_T offset_local_extrafield; uInt size_local_extrafield; #ifndef NOUNCRYPT char source[12]; #else if (password != NULL) return UNZ_PARAMERROR; #endif if (file == NULL) return UNZ_PARAMERROR; s = (unz64_s*)file; if (!s->current_file_ok) return UNZ_PARAMERROR; if (s->pfile_in_zip_read != NULL) unzCloseCurrentFile(file); if (unz64local_CheckCurrentFileCoherencyHeader(s, &iSizeVar, &offset_local_extrafield, &size_local_extrafield) != UNZ_OK) return UNZ_BADZIPFILE; pfile_in_zip_read_info = (file_in_zip64_read_info_s*)ALLOC(sizeof(file_in_zip64_read_info_s)); if (pfile_in_zip_read_info == NULL) return UNZ_INTERNALERROR; pfile_in_zip_read_info->read_buffer = (Bytef*)ALLOC(UNZ_BUFSIZE); pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; pfile_in_zip_read_info->pos_local_extrafield = 0; pfile_in_zip_read_info->raw = raw; if (pfile_in_zip_read_info->read_buffer == NULL) { TRYFREE(pfile_in_zip_read_info); return UNZ_INTERNALERROR; } pfile_in_zip_read_info->stream_initialised = 0; compression_method = (int)s->cur_file_info.compression_method; #ifdef HAVE_AES if (compression_method == AES_METHOD) compression_method = (int)s->cur_file_info_internal.aes_compression_method; #endif if (method != NULL) *method = compression_method; if (level != NULL) { *level = 6; switch (s->cur_file_info.flag & 0x06) { case 6 : *level = 1; break; case 4 : *level = 2; break; case 2 : *level = 9; break; } } if ((compression_method != 0) && #ifdef HAVE_BZIP2 (compression_method != Z_BZIP2ED) && #endif (compression_method != Z_DEFLATED)) err = UNZ_BADZIPFILE; pfile_in_zip_read_info->crc32_wait = s->cur_file_info.crc; pfile_in_zip_read_info->crc32 = 0; pfile_in_zip_read_info->total_out_64 = 0; pfile_in_zip_read_info->compression_method = compression_method; pfile_in_zip_read_info->filestream = s->filestream; pfile_in_zip_read_info->z_filefunc = s->z_filefunc; if (s->number_disk == s->gi.number_disk_with_CD) pfile_in_zip_read_info->byte_before_the_zipfile = s->byte_before_the_zipfile; else pfile_in_zip_read_info->byte_before_the_zipfile = 0; pfile_in_zip_read_info->stream.total_out = 0; pfile_in_zip_read_info->stream.total_in = 0; pfile_in_zip_read_info->stream.next_in = NULL; if (!raw) { if (compression_method == Z_BZIP2ED) { #ifdef HAVE_BZIP2 pfile_in_zip_read_info->bstream.bzalloc = (void *(*) (void *, int, int))0; pfile_in_zip_read_info->bstream.bzfree = (free_func)0; pfile_in_zip_read_info->bstream.opaque = (voidpf)0; pfile_in_zip_read_info->bstream.state = (voidpf)0; pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; pfile_in_zip_read_info->stream.zfree = (free_func)0; pfile_in_zip_read_info->stream.opaque = (voidpf)0; pfile_in_zip_read_info->stream.next_in = (voidpf)0; pfile_in_zip_read_info->stream.avail_in = 0; err = BZ2_bzDecompressInit(&pfile_in_zip_read_info->bstream, 0, 0); if (err == Z_OK) pfile_in_zip_read_info->stream_initialised=Z_BZIP2ED; else { TRYFREE(pfile_in_zip_read_info); return err; } #else pfile_in_zip_read_info->raw = 1; #endif } else if (compression_method == Z_DEFLATED) { pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; pfile_in_zip_read_info->stream.zfree = (free_func)0; pfile_in_zip_read_info->stream.opaque = (voidpf)s; pfile_in_zip_read_info->stream.next_in = 0; pfile_in_zip_read_info->stream.avail_in = 0; err = inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); if (err == Z_OK) pfile_in_zip_read_info->stream_initialised = Z_DEFLATED; else { TRYFREE(pfile_in_zip_read_info); return err; } /* windowBits is passed < 0 to tell that there is no zlib header. * Note that in this case inflate *requires* an extra "dummy" byte * after the compressed stream in order to complete decompression and * return Z_STREAM_END. * In unzip, i don't wait absolutely Z_STREAM_END because I known the * size of both compressed and uncompressed data */ } } pfile_in_zip_read_info->rest_read_compressed = s->cur_file_info.compressed_size; pfile_in_zip_read_info->rest_read_uncompressed = s->cur_file_info.uncompressed_size; pfile_in_zip_read_info->pos_in_zipfile = s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + iSizeVar; pfile_in_zip_read_info->stream.avail_in = (uInt)0; s->pfile_in_zip_read = pfile_in_zip_read_info; #ifndef NOUNCRYPT s->pcrc_32_tab = NULL; if ((password != NULL) && ((s->cur_file_info.flag & 1) != 0)) { if (ZSEEK64(s->z_filefunc, s->filestream, s->pfile_in_zip_read->pos_in_zipfile + s->pfile_in_zip_read->byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) return UNZ_INTERNALERROR; #ifdef HAVE_AES if (s->cur_file_info.compression_method == AES_METHOD) { unsigned char passverify[AES_PWVERIFYSIZE]; unsigned char saltvalue[AES_MAXSALTLENGTH]; uInt saltlength; if ((s->cur_file_info_internal.aes_encryption_mode < 1) || (s->cur_file_info_internal.aes_encryption_mode > 3)) return UNZ_INTERNALERROR; saltlength = SALT_LENGTH(s->cur_file_info_internal.aes_encryption_mode); if (ZREAD64(s->z_filefunc, s->filestream, saltvalue, saltlength) != saltlength) return UNZ_INTERNALERROR; if (ZREAD64(s->z_filefunc, s->filestream, passverify, AES_PWVERIFYSIZE) != AES_PWVERIFYSIZE) return UNZ_INTERNALERROR; fcrypt_init(s->cur_file_info_internal.aes_encryption_mode, password, strlen(password), saltvalue, passverify, &s->pfile_in_zip_read->aes_ctx); s->pfile_in_zip_read->rest_read_compressed -= saltlength + AES_PWVERIFYSIZE; s->pfile_in_zip_read->rest_read_compressed -= AES_AUTHCODESIZE; s->pfile_in_zip_read->pos_in_zipfile += saltlength + AES_PWVERIFYSIZE; } else #endif { int i; s->pcrc_32_tab = (const unsigned int*)get_crc_table(); init_keys(password, s->keys, s->pcrc_32_tab); if (ZREAD64(s->z_filefunc, s->filestream, source, 12) < 12) return UNZ_INTERNALERROR; for (i = 0; i < 12; i++) zdecode(s->keys, s->pcrc_32_tab, source[i]); s->pfile_in_zip_read->rest_read_compressed -= 12; s->pfile_in_zip_read->pos_in_zipfile += 12; } } #endif return UNZ_OK; } extern int ZEXPORT unzOpenCurrentFile(unzFile file) { return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL); } extern int ZEXPORT unzOpenCurrentFilePassword(unzFile file, const char* password) { return unzOpenCurrentFile3(file, NULL, NULL, 0, password); } extern int ZEXPORT unzOpenCurrentFile2(unzFile file, int* method, int* level, int raw) { return unzOpenCurrentFile3(file, method, level, raw, NULL); } /* Read bytes from the current file. buf contain buffer where data must be copied len the size of buf. return the number of byte copied if some bytes are copied return 0 if the end of file was reached return <0 with error code if there is an error (UNZ_ERRNO for IO error, or zLib error for uncompress error) */ extern int ZEXPORT unzReadCurrentFile(unzFile file, voidp buf, unsigned len) { int err = UNZ_OK; uInt read = 0; unz64_s* s; if (file == NULL) return UNZ_PARAMERROR; s = (unz64_s*)file; if (s->pfile_in_zip_read == NULL) return UNZ_PARAMERROR; if (s->pfile_in_zip_read->read_buffer == NULL) return UNZ_END_OF_LIST_OF_FILE; if (len == 0) return 0; s->pfile_in_zip_read->stream.next_out = (Bytef*)buf; s->pfile_in_zip_read->stream.avail_out = (uInt)len; if (s->pfile_in_zip_read->raw) { if (len > s->pfile_in_zip_read->rest_read_compressed + s->pfile_in_zip_read->stream.avail_in) s->pfile_in_zip_read->stream.avail_out = (uInt)s->pfile_in_zip_read->rest_read_compressed + s->pfile_in_zip_read->stream.avail_in; } else { if (len > s->pfile_in_zip_read->rest_read_uncompressed) s->pfile_in_zip_read->stream.avail_out = (uInt)s->pfile_in_zip_read->rest_read_uncompressed; } while (s->pfile_in_zip_read->stream.avail_out > 0) { if (s->pfile_in_zip_read->stream.avail_in == 0) { uLong bytes_to_read = UNZ_BUFSIZE; uLong bytes_not_read = 0; uLong bytes_read = 0; uLong total_bytes_read = 0; if (s->pfile_in_zip_read->stream.next_in != NULL) bytes_not_read = s->pfile_in_zip_read->read_buffer + UNZ_BUFSIZE - s->pfile_in_zip_read->stream.next_in; bytes_to_read -= bytes_not_read; if (bytes_not_read > 0) memcpy(s->pfile_in_zip_read->read_buffer, s->pfile_in_zip_read->stream.next_in, bytes_not_read); if (s->pfile_in_zip_read->rest_read_compressed < bytes_to_read) bytes_to_read = (uInt)s->pfile_in_zip_read->rest_read_compressed; while (total_bytes_read != bytes_to_read) { if (ZSEEK64(s->pfile_in_zip_read->z_filefunc, s->pfile_in_zip_read->filestream, s->pfile_in_zip_read->pos_in_zipfile + s->pfile_in_zip_read->byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) return UNZ_ERRNO; bytes_read = ZREAD64(s->pfile_in_zip_read->z_filefunc, s->pfile_in_zip_read->filestream, s->pfile_in_zip_read->read_buffer + bytes_not_read + total_bytes_read, bytes_to_read - total_bytes_read); total_bytes_read += bytes_read; s->pfile_in_zip_read->pos_in_zipfile += bytes_read; if (bytes_read == 0) { if (ZERROR64(s->pfile_in_zip_read->z_filefunc, s->pfile_in_zip_read->filestream)) return UNZ_ERRNO; err = unzGoToNextDisk(file); if (err != UNZ_OK) return err; s->pfile_in_zip_read->pos_in_zipfile = 0; s->pfile_in_zip_read->filestream = s->filestream; } } #ifndef NOUNCRYPT if ((s->cur_file_info.flag & 1) != 0) { #ifdef HAVE_AES if (s->cur_file_info.compression_method == AES_METHOD) { fcrypt_decrypt(s->pfile_in_zip_read->read_buffer, bytes_to_read, &s->pfile_in_zip_read->aes_ctx); } else #endif if (s->pcrc_32_tab != NULL) { uInt i; for(i = 0; i < total_bytes_read; i++) s->pfile_in_zip_read->read_buffer[i] = zdecode(s->keys, s->pcrc_32_tab, s->pfile_in_zip_read->read_buffer[i]); } } #endif s->pfile_in_zip_read->rest_read_compressed -= total_bytes_read; s->pfile_in_zip_read->stream.next_in = (Bytef*)s->pfile_in_zip_read->read_buffer; s->pfile_in_zip_read->stream.avail_in = (uInt)(bytes_not_read + total_bytes_read); } if ((s->pfile_in_zip_read->compression_method == 0) || (s->pfile_in_zip_read->raw)) { uInt copy, i; if ((s->pfile_in_zip_read->stream.avail_in == 0) && (s->pfile_in_zip_read->rest_read_compressed == 0)) return (read == 0) ? UNZ_EOF : read; if (s->pfile_in_zip_read->stream.avail_out < s->pfile_in_zip_read->stream.avail_in) copy = s->pfile_in_zip_read->stream.avail_out; else copy = s->pfile_in_zip_read->stream.avail_in; for (i = 0; i < copy; i++) *(s->pfile_in_zip_read->stream.next_out+i) = *(s->pfile_in_zip_read->stream.next_in+i); s->pfile_in_zip_read->total_out_64 = s->pfile_in_zip_read->total_out_64 + copy; s->pfile_in_zip_read->rest_read_uncompressed -= copy; s->pfile_in_zip_read->crc32 = crc32(s->pfile_in_zip_read->crc32, s->pfile_in_zip_read->stream.next_out, copy); s->pfile_in_zip_read->stream.avail_in -= copy; s->pfile_in_zip_read->stream.avail_out -= copy; s->pfile_in_zip_read->stream.next_out += copy; s->pfile_in_zip_read->stream.next_in += copy; s->pfile_in_zip_read->stream.total_out += copy; read += copy; } else if (s->pfile_in_zip_read->compression_method == Z_BZIP2ED) { #ifdef HAVE_BZIP2 uLong total_out_before, total_out_after; const Bytef *buf_before; uLong out_bytes; s->pfile_in_zip_read->bstream.next_in = (char*)s->pfile_in_zip_read->stream.next_in; s->pfile_in_zip_read->bstream.avail_in = s->pfile_in_zip_read->stream.avail_in; s->pfile_in_zip_read->bstream.total_in_lo32 = (uInt)s->pfile_in_zip_read->stream.total_in; s->pfile_in_zip_read->bstream.total_in_hi32 = s->pfile_in_zip_read->stream.total_in >> 32; s->pfile_in_zip_read->bstream.next_out = (char*)s->pfile_in_zip_read->stream.next_out; s->pfile_in_zip_read->bstream.avail_out = s->pfile_in_zip_read->stream.avail_out; s->pfile_in_zip_read->bstream.total_out_lo32 = (uInt)s->pfile_in_zip_read->stream.total_out; s->pfile_in_zip_read->bstream.total_out_hi32 = s->pfile_in_zip_read->stream.total_out >> 32; total_out_before = s->pfile_in_zip_read->bstream.total_out_lo32 + (((uLong)s->pfile_in_zip_read->bstream.total_out_hi32) << 32); buf_before = (const Bytef *)s->pfile_in_zip_read->bstream.next_out; err = BZ2_bzDecompress(&s->pfile_in_zip_read->bstream); total_out_after = s->pfile_in_zip_read->bstream.total_out_lo32 + (((uLong)s->pfile_in_zip_read->bstream.total_out_hi32) << 32); out_bytes = total_out_after-total_out_before; s->pfile_in_zip_read->total_out_64 = s->pfile_in_zip_read->total_out_64 + out_bytes; s->pfile_in_zip_read->rest_read_uncompressed -= out_bytes; s->pfile_in_zip_read->crc32 = crc32(s->pfile_in_zip_read->crc32,buf_before, (uInt)(out_bytes)); read += (uInt)(total_out_after - total_out_before); s->pfile_in_zip_read->stream.next_in = (Bytef*)s->pfile_in_zip_read->bstream.next_in; s->pfile_in_zip_read->stream.avail_in = s->pfile_in_zip_read->bstream.avail_in; s->pfile_in_zip_read->stream.total_in = s->pfile_in_zip_read->bstream.total_in_lo32; s->pfile_in_zip_read->stream.next_out = (Bytef*)s->pfile_in_zip_read->bstream.next_out; s->pfile_in_zip_read->stream.avail_out = s->pfile_in_zip_read->bstream.avail_out; s->pfile_in_zip_read->stream.total_out = s->pfile_in_zip_read->bstream.total_out_lo32; if (err == BZ_STREAM_END) return (read == 0) ? UNZ_EOF : read; if (err != BZ_OK) break; #endif } else { ZPOS64_T total_out_before, total_out_after; const Bytef *buf_before; ZPOS64_T out_bytes; int flush=Z_SYNC_FLUSH; total_out_before = s->pfile_in_zip_read->stream.total_out; buf_before = s->pfile_in_zip_read->stream.next_out; /* if ((pfile_in_zip_read_info->rest_read_uncompressed == pfile_in_zip_read_info->stream.avail_out) && (pfile_in_zip_read_info->rest_read_compressed == 0)) flush = Z_FINISH; */ err = inflate(&s->pfile_in_zip_read->stream,flush); if ((err >= 0) && (s->pfile_in_zip_read->stream.msg != NULL)) err = Z_DATA_ERROR; total_out_after = s->pfile_in_zip_read->stream.total_out; out_bytes = total_out_after-total_out_before; s->pfile_in_zip_read->total_out_64 += out_bytes; s->pfile_in_zip_read->rest_read_uncompressed -= out_bytes; s->pfile_in_zip_read->crc32 = crc32(s->pfile_in_zip_read->crc32,buf_before, (uInt)(out_bytes)); read += (uInt)(total_out_after - total_out_before); if (err == Z_STREAM_END) return (read == 0) ? UNZ_EOF : read; if (err != Z_OK) break; } } if (err == Z_OK) return read; return err; } extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64(unzFile file) { unz64_s* s; s = (unz64_s*)file; if (file == NULL) return 0; /* UNZ_PARAMERROR */ if (s->pfile_in_zip_read == NULL) return 0; /* UNZ_PARAMERROR */ return s->pfile_in_zip_read->pos_in_zipfile + s->pfile_in_zip_read->byte_before_the_zipfile; } extern int ZEXPORT unzGetLocalExtrafield(unzFile file, voidp buf, unsigned len) { unz64_s* s; uInt read_now; ZPOS64_T size_to_read; if (file == NULL) return UNZ_PARAMERROR; s = (unz64_s*)file; if (s->pfile_in_zip_read == NULL) return UNZ_PARAMERROR; size_to_read = s->pfile_in_zip_read->size_local_extrafield - s->pfile_in_zip_read->pos_local_extrafield; if (buf == NULL) return (int)size_to_read; if (len > size_to_read) read_now = (uInt)size_to_read; else read_now = (uInt)len ; if (read_now == 0) return 0; if (ZSEEK64(s->pfile_in_zip_read->z_filefunc, s->pfile_in_zip_read->filestream, s->pfile_in_zip_read->offset_local_extrafield + s->pfile_in_zip_read->pos_local_extrafield, ZLIB_FILEFUNC_SEEK_SET) != 0) return UNZ_ERRNO; if (ZREAD64(s->pfile_in_zip_read->z_filefunc, s->pfile_in_zip_read->filestream, buf, read_now) != read_now) return UNZ_ERRNO; return (int)read_now; } extern int ZEXPORT unzCloseCurrentFile(unzFile file) { int err = UNZ_OK; unz64_s* s; file_in_zip64_read_info_s* pfile_in_zip_read_info; if (file == NULL) return UNZ_PARAMERROR; s = (unz64_s*)file; pfile_in_zip_read_info=s->pfile_in_zip_read; if (pfile_in_zip_read_info == NULL) return UNZ_PARAMERROR; #ifdef HAVE_AES if (s->cur_file_info.compression_method == AES_METHOD) { unsigned char authcode[AES_AUTHCODESIZE]; unsigned char rauthcode[AES_AUTHCODESIZE]; if (ZREAD64(s->z_filefunc, s->filestream, authcode, AES_AUTHCODESIZE) != AES_AUTHCODESIZE) return UNZ_ERRNO; if (fcrypt_end(rauthcode, &s->pfile_in_zip_read->aes_ctx) != AES_AUTHCODESIZE) err = UNZ_CRCERROR; if (memcmp(authcode, rauthcode, AES_AUTHCODESIZE) != 0) err = UNZ_CRCERROR; } /* AES zip version AE-1 will expect a valid crc as well */ if ((s->cur_file_info.compression_method != AES_METHOD) || (s->cur_file_info_internal.aes_version == 0x0001)) #endif { if ((pfile_in_zip_read_info->rest_read_uncompressed == 0) && (!pfile_in_zip_read_info->raw)) { if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) err = UNZ_CRCERROR; } } TRYFREE(pfile_in_zip_read_info->read_buffer); pfile_in_zip_read_info->read_buffer = NULL; if (pfile_in_zip_read_info->stream_initialised == Z_DEFLATED) inflateEnd(&pfile_in_zip_read_info->stream); #ifdef HAVE_BZIP2 else if (pfile_in_zip_read_info->stream_initialised == Z_BZIP2ED) BZ2_bzDecompressEnd(&pfile_in_zip_read_info->bstream); #endif pfile_in_zip_read_info->stream_initialised = 0; TRYFREE(pfile_in_zip_read_info); s->pfile_in_zip_read = NULL; return err; } extern int ZEXPORT unzGoToFirstFile2(unzFile file, unz_file_info64 *pfile_info, char *filename, uLong filename_size, void *extrafield, uLong extrafield_size, char *comment, uLong comment_size) { int err = UNZ_OK; unz64_s* s; if (file == NULL) return UNZ_PARAMERROR; s = (unz64_s*)file; s->pos_in_central_dir = s->offset_central_dir; s->num_file = 0; err = unz64local_GetCurrentFileInfoInternal(file, &s->cur_file_info, &s->cur_file_info_internal, filename,filename_size, extrafield,extrafield_size, comment,comment_size); s->current_file_ok = (err == UNZ_OK); if ((err == UNZ_OK) && (pfile_info != NULL)) memcpy(pfile_info, &s->cur_file_info, sizeof(unz_file_info64)); return err; } extern int ZEXPORT unzGoToFirstFile(unzFile file) { return unzGoToFirstFile2(file, NULL, NULL, 0, NULL, 0, NULL, 0); } extern int ZEXPORT unzGoToNextFile2(unzFile file, unz_file_info64 *pfile_info, char *filename, uLong filename_size, void *extrafield, uLong extrafield_size, char *comment, uLong comment_size) { unz64_s* s; int err; if (file == NULL) return UNZ_PARAMERROR; s = (unz64_s*)file; if (!s->current_file_ok) return UNZ_END_OF_LIST_OF_FILE; if (s->gi.number_entry != 0xffff) /* 2^16 files overflow hack */ if (s->num_file+1 == s->gi.number_entry) return UNZ_END_OF_LIST_OF_FILE; s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment; s->num_file++; err = unz64local_GetCurrentFileInfoInternal(file,&s->cur_file_info, &s->cur_file_info_internal, filename, filename_size, extrafield,extrafield_size, comment,comment_size); s->current_file_ok = (err == UNZ_OK); if ((err == UNZ_OK) && (pfile_info != NULL)) memcpy(pfile_info, &s->cur_file_info, sizeof(unz_file_info64)); return err; } extern int ZEXPORT unzGoToNextFile(unzFile file) { return unzGoToNextFile2(file, NULL, NULL, 0, NULL, 0, NULL, 0); } extern int ZEXPORT unzLocateFile(unzFile file, const char *filename, unzFileNameComparer filename_compare_func) { unz64_s* s; int err; unz_file_info64 cur_file_info_saved; unz_file_info64_internal cur_file_info_internal_saved; ZPOS64_T num_file_saved; ZPOS64_T pos_in_central_dir_saved; char current_filename[UNZ_MAXFILENAMEINZIP+1]; if (file == NULL) return UNZ_PARAMERROR; if (strlen(filename) >= UNZ_MAXFILENAMEINZIP) return UNZ_PARAMERROR; s = (unz64_s*)file; if (!s->current_file_ok) return UNZ_END_OF_LIST_OF_FILE; /* Save the current state */ num_file_saved = s->num_file; pos_in_central_dir_saved = s->pos_in_central_dir; cur_file_info_saved = s->cur_file_info; cur_file_info_internal_saved = s->cur_file_info_internal; err = unzGoToFirstFile2(file, NULL, current_filename, sizeof(current_filename)-1, NULL, 0, NULL, 0); while (err == UNZ_OK) { if (filename_compare_func != NULL) err = filename_compare_func(file, current_filename, filename); else err = strcmp(current_filename, filename); if (err == 0) return UNZ_OK; err = unzGoToNextFile2(file, NULL, current_filename, sizeof(current_filename)-1, NULL, 0, NULL, 0); } /* We failed, so restore the state of the 'current file' to where we were. */ s->num_file = num_file_saved; s->pos_in_central_dir = pos_in_central_dir_saved; s->cur_file_info = cur_file_info_saved; s->cur_file_info_internal = cur_file_info_internal_saved; return err; } extern int ZEXPORT unzGetFilePos(unzFile file, unz_file_pos* file_pos) { unz64_file_pos file_pos64; int err = unzGetFilePos64(file,&file_pos64); if (err == UNZ_OK) { file_pos->pos_in_zip_directory = (uLong)file_pos64.pos_in_zip_directory; file_pos->num_of_file = (uLong)file_pos64.num_of_file; } return err; } extern int ZEXPORT unzGoToFilePos(unzFile file, unz_file_pos* file_pos) { unz64_file_pos file_pos64; if (file_pos == NULL) return UNZ_PARAMERROR; file_pos64.pos_in_zip_directory = file_pos->pos_in_zip_directory; file_pos64.num_of_file = file_pos->num_of_file; return unzGoToFilePos64(file,&file_pos64); } extern int ZEXPORT unzGetFilePos64(unzFile file, unz64_file_pos* file_pos) { unz64_s* s; if (file == NULL || file_pos == NULL) return UNZ_PARAMERROR; s = (unz64_s*)file; if (!s->current_file_ok) return UNZ_END_OF_LIST_OF_FILE; file_pos->pos_in_zip_directory = s->pos_in_central_dir; file_pos->num_of_file = s->num_file; return UNZ_OK; } extern int ZEXPORT unzGoToFilePos64(unzFile file, const unz64_file_pos* file_pos) { unz64_s* s; int err; if (file == NULL || file_pos == NULL) return UNZ_PARAMERROR; s = (unz64_s*)file; /* jump to the right spot */ s->pos_in_central_dir = file_pos->pos_in_zip_directory; s->num_file = file_pos->num_of_file; /* set the current file */ err = unz64local_GetCurrentFileInfoInternal(file,&s->cur_file_info, &s->cur_file_info_internal,NULL,0,NULL,0,NULL,0); /* return results */ s->current_file_ok = (err == UNZ_OK); return err; } extern uLong ZEXPORT unzGetOffset(unzFile file) { ZPOS64_T offset64; if (file == NULL) return 0; /* UNZ_PARAMERROR; */ offset64 = unzGetOffset64(file); return (uLong)offset64; } extern ZPOS64_T ZEXPORT unzGetOffset64(unzFile file) { unz64_s* s; if (file == NULL) return 0; /* UNZ_PARAMERROR; */ s = (unz64_s*)file; if (!s->current_file_ok) return 0; if (s->gi.number_entry != 0 && s->gi.number_entry != 0xffff) if (s->num_file == s->gi.number_entry) return 0; return s->pos_in_central_dir; } extern int ZEXPORT unzSetOffset(unzFile file, uLong pos) { return unzSetOffset64(file, pos); } extern int ZEXPORT unzSetOffset64(unzFile file, ZPOS64_T pos) { unz64_s* s; int err; if (file == NULL) return UNZ_PARAMERROR; s = (unz64_s*)file; s->pos_in_central_dir = pos; s->num_file = s->gi.number_entry; /* hack */ err = unz64local_GetCurrentFileInfoInternal(file, &s->cur_file_info, &s->cur_file_info_internal, NULL, 0, NULL, 0, NULL, 0); s->current_file_ok = (err == UNZ_OK); return err; } extern z_off_t ZEXPORT unztell(unzFile file) { unz64_s* s; if (file == NULL) return UNZ_PARAMERROR; s = (unz64_s*)file; if (s->pfile_in_zip_read == NULL) return UNZ_PARAMERROR; return (z_off_t)s->pfile_in_zip_read->stream.total_out; } extern ZPOS64_T ZEXPORT unztell64(unzFile file) { unz64_s* s; if (file == NULL) return (ZPOS64_T)-1; s = (unz64_s*)file; if (s->pfile_in_zip_read == NULL) return (ZPOS64_T)-1; return s->pfile_in_zip_read->total_out_64; } extern int ZEXPORT unzseek(unzFile file, z_off_t offset, int origin) { return unzseek64(file, (ZPOS64_T)offset, origin); } extern int ZEXPORT unzseek64(unzFile file, ZPOS64_T offset, int origin) { unz64_s* s; ZPOS64_T stream_pos_begin; ZPOS64_T stream_pos_end; int isWithinBuffer; ZPOS64_T position; if (file == NULL) return UNZ_PARAMERROR; s = (unz64_s*)file; if (s->pfile_in_zip_read == NULL) return UNZ_ERRNO; if (s->pfile_in_zip_read->compression_method != 0) return UNZ_ERRNO; if (origin == SEEK_SET) position = offset; else if (origin == SEEK_CUR) position = s->pfile_in_zip_read->total_out_64 + offset; else if (origin == SEEK_END) position = s->cur_file_info.compressed_size + offset; else return UNZ_PARAMERROR; if (position > s->cur_file_info.compressed_size) return UNZ_PARAMERROR; stream_pos_end = s->pfile_in_zip_read->pos_in_zipfile; stream_pos_begin = stream_pos_end; if (stream_pos_begin > UNZ_BUFSIZE) stream_pos_begin -= UNZ_BUFSIZE; else stream_pos_begin = 0; isWithinBuffer = s->pfile_in_zip_read->stream.avail_in != 0 && (s->pfile_in_zip_read->rest_read_compressed != 0 || s->cur_file_info.compressed_size < UNZ_BUFSIZE) && position >= stream_pos_begin && position < stream_pos_end; if (isWithinBuffer) { s->pfile_in_zip_read->stream.next_in += position - s->pfile_in_zip_read->total_out_64; s->pfile_in_zip_read->stream.avail_in = (uInt)(stream_pos_end - position); } else { s->pfile_in_zip_read->stream.avail_in = 0; s->pfile_in_zip_read->stream.next_in = 0; s->pfile_in_zip_read->pos_in_zipfile = s->pfile_in_zip_read->offset_local_extrafield + position; s->pfile_in_zip_read->rest_read_compressed = s->cur_file_info.compressed_size - position; } s->pfile_in_zip_read->rest_read_uncompressed -= (position - s->pfile_in_zip_read->total_out_64); s->pfile_in_zip_read->stream.total_out = (uLong)position; s->pfile_in_zip_read->total_out_64 = position; return UNZ_OK; } extern int ZEXPORT unzeof(unzFile file) { unz64_s* s; if (file == NULL) return UNZ_PARAMERROR; s = (unz64_s*)file; if (s->pfile_in_zip_read == NULL) return UNZ_PARAMERROR; if (s->pfile_in_zip_read->rest_read_uncompressed == 0) return 1; return 0; } ================================================ FILE: BNN/cpp/minizip/unzip.h ================================================ /* unzip.h -- IO for uncompress .zip files using zlib Version 1.1, February 14h, 2010 part of the MiniZip project Copyright (C) 1998-2010 Gilles Vollant http://www.winimage.com/zLibDll/minizip.html Modifications of Unzip for Zip64 Copyright (C) 2007-2008 Even Rouault Modifications for Zip64 support on both zip and unzip Copyright (C) 2009-2010 Mathias Svensson http://result42.com This program is distributed under the terms of the same license as zlib. See the accompanying LICENSE file for the full text of the license. */ #ifndef _UNZ_H #define _UNZ_H #ifdef __cplusplus extern "C" { #endif #ifndef _ZLIB_H #include "zlib.h" #endif #ifndef _ZLIBIOAPI_H #include "ioapi.h" #endif #ifdef HAVE_BZIP2 #include "bzlib.h" #endif #define Z_BZIP2ED 12 #if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) /* like the STRICT of WIN32, we define a pointer that cannot be converted from (void*) without cast */ typedef struct TagunzFile__ { int unused; } unzFile__; typedef unzFile__ *unzFile; #else typedef voidp unzFile; #endif #define UNZ_OK (0) #define UNZ_END_OF_LIST_OF_FILE (-100) #define UNZ_ERRNO (Z_ERRNO) #define UNZ_EOF (0) #define UNZ_PARAMERROR (-102) #define UNZ_BADZIPFILE (-103) #define UNZ_INTERNALERROR (-104) #define UNZ_CRCERROR (-105) /* tm_unz contain date/time info */ typedef struct tm_unz_s { uInt tm_sec; /* seconds after the minute - [0,59] */ uInt tm_min; /* minutes after the hour - [0,59] */ uInt tm_hour; /* hours since midnight - [0,23] */ uInt tm_mday; /* day of the month - [1,31] */ uInt tm_mon; /* months since January - [0,11] */ uInt tm_year; /* years - [1980..2044] */ } tm_unz; /* unz_global_info structure contain global data about the ZIPfile These data comes from the end of central dir */ typedef struct unz_global_info64_s { ZPOS64_T number_entry; /* total number of entries in the central dir on this disk */ uLong number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP*/ uLong size_comment; /* size of the global comment of the zipfile */ } unz_global_info64; typedef struct unz_global_info_s { uLong number_entry; /* total number of entries in the central dir on this disk */ uLong number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP*/ uLong size_comment; /* size of the global comment of the zipfile */ } unz_global_info; /* unz_file_info contain information about a file in the zipfile */ typedef struct unz_file_info64_s { uLong version; /* version made by 2 bytes */ uLong version_needed; /* version needed to extract 2 bytes */ uLong flag; /* general purpose bit flag 2 bytes */ uLong compression_method; /* compression method 2 bytes */ uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ uLong crc; /* crc-32 4 bytes */ ZPOS64_T compressed_size; /* compressed size 8 bytes */ ZPOS64_T uncompressed_size; /* uncompressed size 8 bytes */ uLong size_filename; /* filename length 2 bytes */ uLong size_file_extra; /* extra field length 2 bytes */ uLong size_file_comment; /* file comment length 2 bytes */ uLong disk_num_start; /* disk number start 2 bytes */ uLong internal_fa; /* internal file attributes 2 bytes */ uLong external_fa; /* external file attributes 4 bytes */ tm_unz tmu_date; ZPOS64_T disk_offset; uLong size_file_extra_internal; } unz_file_info64; typedef struct unz_file_info_s { uLong version; /* version made by 2 bytes */ uLong version_needed; /* version needed to extract 2 bytes */ uLong flag; /* general purpose bit flag 2 bytes */ uLong compression_method; /* compression method 2 bytes */ uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ uLong crc; /* crc-32 4 bytes */ uLong compressed_size; /* compressed size 4 bytes */ uLong uncompressed_size; /* uncompressed size 4 bytes */ uLong size_filename; /* filename length 2 bytes */ uLong size_file_extra; /* extra field length 2 bytes */ uLong size_file_comment; /* file comment length 2 bytes */ uLong disk_num_start; /* disk number start 2 bytes */ uLong internal_fa; /* internal file attributes 2 bytes */ uLong external_fa; /* external file attributes 4 bytes */ tm_unz tmu_date; uLong disk_offset; } unz_file_info; /***************************************************************************/ /* Opening and close a zip file */ extern unzFile ZEXPORT unzOpen OF((const char *path)); extern unzFile ZEXPORT unzOpen64 OF((const void *path)); /* Open a Zip file. path should contain the full pathname (by example, on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer "zlib/zlib113.zip". return NULL if zipfile cannot be opened or doesn't exist return unzFile handle if no error NOTE: The "64" function take a const void* pointer, because the path is just the value passed to the open64_file_func callback. Under Windows, if UNICODE is defined, using fill_fopen64_filefunc, the path is a pointer to a wide unicode string (LPCTSTR is LPCWSTR), so const char* does not describe the reality */ extern unzFile ZEXPORT unzOpen2 OF((const char *path, zlib_filefunc_def* pzlib_filefunc_def)); /* Open a Zip file, like unzOpen, but provide a set of file low level API for read/write operations */ extern unzFile ZEXPORT unzOpen2_64 OF((const void *path, zlib_filefunc64_def* pzlib_filefunc_def)); /* Open a Zip file, like unz64Open, but provide a set of file low level API for read/write 64-bit operations */ extern int ZEXPORT unzClose OF((unzFile file)); /* Close a ZipFile opened with unzOpen. If there is files inside the .Zip opened with unzOpenCurrentFile, these files MUST be closed with unzipCloseCurrentFile before call unzipClose. return UNZ_OK if there is no error */ extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, unz_global_info *pglobal_info)); extern int ZEXPORT unzGetGlobalInfo64 OF((unzFile file, unz_global_info64 *pglobal_info)); /* Write info about the ZipFile in the *pglobal_info structure. return UNZ_OK if no error */ extern int ZEXPORT unzGetGlobalComment OF((unzFile file, char *comment, uLong comment_size)); /* Get the global comment string of the ZipFile, in the comment buffer. uSizeBuf is the size of the szComment buffer. return the number of byte copied or an error code <0 */ /***************************************************************************/ /* Reading the content of the current zipfile, you can open it, read data from it, and close it (you can close it before reading all the file) */ extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); /* Open for reading data the current file in the zipfile. return UNZ_OK if no error */ extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file, const char* password)); /* Open for reading data the current file in the zipfile. password is a crypting password return UNZ_OK if no error */ extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file, int* method, int* level, int raw)); /* Same as unzOpenCurrentFile, but open for read raw the file (not uncompress) if raw==1 *method will receive method of compression, *level will receive level of compression NOTE: you can set level parameter as NULL (if you did not want known level, but you CANNOT set method parameter as NULL */ extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file, int* method, int* level, int raw, const char* password)); /* Same as unzOpenCurrentFile, but takes extra parameter password for encrypted files */ extern int ZEXPORT unzReadCurrentFile OF((unzFile file, voidp buf, unsigned len)); /* Read bytes from the current file (opened by unzOpenCurrentFile) buf contain buffer where data must be copied len the size of buf. return the number of byte copied if somes bytes are copied return 0 if the end of file was reached return <0 with error code if there is an error (UNZ_ERRNO for IO error, or zLib error for uncompress error) */ extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, unz_file_info *pfile_info, char *filename, uLong filename_size, void *extrafield, uLong extrafield_size, char *comment, uLong comment_size)); extern int ZEXPORT unzGetCurrentFileInfo64 OF((unzFile file, unz_file_info64 *pfile_info, char *filename, uLong filename_size, void *extrafield, uLong extrafield_size, char *comment, uLong comment_size)); /* Get Info about the current file pfile_info if != NULL, the *pfile_info structure will contain somes info about the current file filename if != NULL, the file name string will be copied in filename filename_size is the size of the filename buffer extrafield if != NULL, the extra field information from the central header will be copied in to extrafield_size is the size of the extraField buffer comment if != NULL, the comment string of the file will be copied in to comment_size is the size of the comment buffer */ extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file)); extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, voidp buf, unsigned len)); /* Read extra field from the current file (opened by unzOpenCurrentFile) This is the local-header version of the extra field (sometimes, there is more info in the local-header version than in the central-header) if buf == NULL, it return the size of the local extra field if buf != NULL, len is the size of the buffer, the extra header is copied in buf. return number of bytes copied in buf, or (if <0) the error code */ extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); /* Close the file in zip opened with unzOpenCurrentFile return UNZ_CRCERROR if all the file was read but the CRC is not good */ /***************************************************************************/ /* Browse the directory of the zipfile */ typedef int (*unzFileNameComparer)(unzFile file, const char *filename1, const char *filename2); typedef int (*unzIteratorFunction)(unzFile file); typedef int (*unzIteratorFunction2)(unzFile file, unz_file_info64 *pfile_info, char *filename, uLong filename_size, void *extrafield, uLong extrafield_size, char *comment, uLong comment_size); extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); /* Set the current file of the zipfile to the first file. return UNZ_OK if no error */ extern int ZEXPORT unzGoToFirstFile2 OF((unzFile file, unz_file_info64 *pfile_info, char *filename, uLong filename_size, void *extrafield, uLong extrafield_size, char *comment, uLong comment_size)); /* Set the current file of the zipfile to the first file and retrieves the current info on success. Not as seek intensive as unzGoToFirstFile + unzGetCurrentFileInfo. return UNZ_OK if no error */ extern int ZEXPORT unzGoToNextFile OF((unzFile file)); /* Set the current file of the zipfile to the next file. return UNZ_OK if no error return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest */ extern int ZEXPORT unzGoToNextFile2 OF((unzFile file, unz_file_info64 *pfile_info, char *filename, uLong filename_size, void *extrafield, uLong extrafield_size, char *comment, uLong comment_size)); /* Set the current file of the zipfile to the next file and retrieves the current info on success. Does less seeking around than unzGotoNextFile + unzGetCurrentFileInfo. return UNZ_OK if no error return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest */ extern int ZEXPORT unzLocateFile OF((unzFile file, const char *filename, unzFileNameComparer filename_compare_func)); /* Try locate the file szFileName in the zipfile. For custom filename comparison pass in comparison function. return UNZ_OK if the file is found (it becomes the current file) return UNZ_END_OF_LIST_OF_FILE if the file is not found */ /***************************************************************************/ /* Raw access to zip file */ typedef struct unz_file_pos_s { uLong pos_in_zip_directory; /* offset in zip file directory */ uLong num_of_file; /* # of file */ } unz_file_pos; extern int ZEXPORT unzGetFilePos OF((unzFile file, unz_file_pos* file_pos)); extern int ZEXPORT unzGoToFilePos OF((unzFile file, unz_file_pos* file_pos)); typedef struct unz64_file_pos_s { ZPOS64_T pos_in_zip_directory; /* offset in zip file directory */ ZPOS64_T num_of_file; /* # of file */ } unz64_file_pos; extern int ZEXPORT unzGetFilePos64 OF((unzFile file, unz64_file_pos* file_pos)); extern int ZEXPORT unzGoToFilePos64 OF((unzFile file, const unz64_file_pos* file_pos)); extern uLong ZEXPORT unzGetOffset OF((unzFile file)); extern ZPOS64_T ZEXPORT unzGetOffset64 OF((unzFile file)); /* Get the current file offset */ extern int ZEXPORT unzSetOffset OF((unzFile file, uLong pos)); extern int ZEXPORT unzSetOffset64 OF((unzFile file, ZPOS64_T pos)); /* Set the current file offset */ extern z_off_t ZEXPORT unztell OF((unzFile file)); extern ZPOS64_T ZEXPORT unztell64 OF((unzFile file)); /* return current position in uncompressed data */ extern int ZEXPORT unzseek OF((unzFile file, z_off_t offset, int origin)); extern int ZEXPORT unzseek64 OF((unzFile file, ZPOS64_T offset, int origin)); /* Seek within the uncompressed data if compression method is storage */ extern int ZEXPORT unzeof OF((unzFile file)); /* return 1 if the end of file was reached, 0 elsewhere */ /***************************************************************************/ #ifdef __cplusplus } #endif #endif /* _UNZ_H */ ================================================ FILE: BNN/cpp/minizip/zip.c ================================================ /* zip.c -- IO on .zip files using zlib Version 1.1, February 14h, 2010 part of the MiniZip project Copyright (C) 1998-2010 Gilles Vollant http://www.winimage.com/zLibDll/minizip.html Modifications for Zip64 support Copyright (C) 2009-2010 Mathias Svensson http://result42.com Modifications for AES, PKWARE disk spanning Copyright (C) 2010-2014 Nathan Moinvaziri This program is distributed under the terms of the same license as zlib. See the accompanying LICENSE file for the full text of the license. */ #include #include #include #include #include "zlib.h" #include "zip.h" #ifdef STDC # include # include # include #endif #ifdef NO_ERRNO_H extern int errno; #else # include #endif #ifdef HAVE_AES # define AES_METHOD (99) # define AES_PWVERIFYSIZE (2) # define AES_AUTHCODESIZE (10) # define AES_MAXSALTLENGTH (16) # define AES_VERSION (0x0001) # define AES_ENCRYPTIONMODE (0x03) # include "aes/aes.h" # include "aes/fileenc.h" # include "aes/prng.h" # include "aes/entropy.h" #endif #ifndef NOCRYPT # define INCLUDECRYPTINGCODE_IFCRYPTALLOWED # include "crypt.h" #endif #ifndef local # define local static #endif /* compile with -Dlocal if your debugger can't find static symbols */ #define SIZEDATA_INDATABLOCK (4096-(4*4)) #define DISKHEADERMAGIC (0x08074b50) #define LOCALHEADERMAGIC (0x04034b50) #define CENTRALHEADERMAGIC (0x02014b50) #define ENDHEADERMAGIC (0x06054b50) #define ZIP64ENDHEADERMAGIC (0x06064b50) #define ZIP64ENDLOCHEADERMAGIC (0x07064b50) #define FLAG_LOCALHEADER_OFFSET (0x06) #define CRC_LOCALHEADER_OFFSET (0x0e) #define SIZECENTRALHEADER (0x2e) /* 46 */ #define SIZECENTRALHEADERLOCATOR (0x14) /* 20 */ #define SIZECENTRALDIRITEM (0x2e) #define SIZEZIPLOCALHEADER (0x1e) #ifndef BUFREADCOMMENT # define BUFREADCOMMENT (0x400) #endif #ifndef VERSIONMADEBY # define VERSIONMADEBY (0x0) /* platform dependent */ #endif #ifndef Z_BUFSIZE # define Z_BUFSIZE (64*1024) #endif #ifndef Z_MAXFILENAMEINZIP # define Z_MAXFILENAMEINZIP (256) #endif #ifndef ALLOC # define ALLOC(size) (malloc(size)) #endif #ifndef TRYFREE # define TRYFREE(p) {if (p) free(p);} #endif /* NOT sure that this work on ALL platform */ #define MAKEULONG64(a, b) ((ZPOS64_T)(((unsigned long)(a)) | ((ZPOS64_T)((unsigned long)(b))) << 32)) #ifndef DEF_MEM_LEVEL # if MAX_MEM_LEVEL >= 8 # define DEF_MEM_LEVEL 8 # else # define DEF_MEM_LEVEL MAX_MEM_LEVEL # endif #endif const char zip_copyright[] = " zip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; typedef struct linkedlist_datablock_internal_s { struct linkedlist_datablock_internal_s* next_datablock; uLong avail_in_this_block; uLong filled_in_this_block; uLong unused; /* for future use and alignment */ unsigned char data[SIZEDATA_INDATABLOCK]; } linkedlist_datablock_internal; typedef struct linkedlist_data_s { linkedlist_datablock_internal* first_block; linkedlist_datablock_internal* last_block; } linkedlist_data; typedef struct { z_stream stream; /* zLib stream structure for inflate */ #ifdef HAVE_BZIP2 bz_stream bstream; /* bzLib stream structure for bziped */ #endif #ifdef HAVE_AES fcrypt_ctx aes_ctx; prng_ctx aes_rng[1]; #endif int stream_initialised; /* 1 is stream is initialized */ uInt pos_in_buffered_data; /* last written byte in buffered_data */ ZPOS64_T pos_local_header; /* offset of the local header of the file currently writing */ char* central_header; /* central header data for the current file */ uLong size_centralextra; uLong size_centralheader; /* size of the central header for cur file */ uLong size_centralextrafree; /* Extra bytes allocated to the central header but that are not used */ uLong size_comment; uLong flag; /* flag of the file currently writing */ int method; /* compression method written to file.*/ int compression_method; /* compression method to use */ int raw; /* 1 for directly writing raw data */ Byte buffered_data[Z_BUFSIZE]; /* buffer contain compressed data to be writ*/ uLong dosDate; uLong crc32; int zip64; /* Add ZIP64 extended information in the extra field */ uLong number_disk; /* number of current disk used for spanning ZIP */ ZPOS64_T pos_zip64extrainfo; ZPOS64_T total_compressed; ZPOS64_T total_uncompressed; #ifndef NOCRYPT unsigned int keys[3]; /* keys defining the pseudo-random sequence */ const unsigned int* pcrc_32_tab; int crypt_header_size; #endif } curfile64_info; typedef struct { zlib_filefunc64_32_def z_filefunc; voidpf filestream; /* io structure of the zipfile */ voidpf filestream_with_CD; /* io structure of the zipfile with the central dir */ linkedlist_data central_dir; /* datablock with central dir in construction*/ int in_opened_file_inzip; /* 1 if a file in the zip is currently writ.*/ int append; /* append mode */ curfile64_info ci; /* info on the file currently writing */ ZPOS64_T begin_pos; /* position of the beginning of the zipfile */ ZPOS64_T add_position_when_writting_offset; ZPOS64_T number_entry; ZPOS64_T disk_size; /* size of each disk */ uLong number_disk; /* number of the current disk, used for spanning ZIP */ uLong number_disk_with_CD; /* number the the disk with central dir, used for spanning ZIP */ #ifndef NO_ADDFILEINEXISTINGZIP char *globalcomment; #endif } zip64_internal; /* Allocate a new data block */ local linkedlist_datablock_internal* allocate_new_datablock OF(()); local linkedlist_datablock_internal* allocate_new_datablock() { linkedlist_datablock_internal* ldi; ldi = (linkedlist_datablock_internal*)ALLOC(sizeof(linkedlist_datablock_internal)); if (ldi != NULL) { ldi->next_datablock = NULL; ldi->filled_in_this_block = 0; ldi->avail_in_this_block = SIZEDATA_INDATABLOCK; } return ldi; } /* Free data block in linked list */ local void free_datablock OF((linkedlist_datablock_internal* ldi)); local void free_datablock(linkedlist_datablock_internal* ldi) { while (ldi != NULL) { linkedlist_datablock_internal* ldinext = ldi->next_datablock; TRYFREE(ldi); ldi = ldinext; } } /* Initialize linked list */ local void init_linkedlist OF((linkedlist_data* ll)); local void init_linkedlist(linkedlist_data* ll) { ll->first_block = ll->last_block = NULL; } /* Free entire linked list and all data blocks */ local void free_linkedlist OF((linkedlist_data* ll)); local void free_linkedlist(linkedlist_data* ll) { free_datablock(ll->first_block); ll->first_block = ll->last_block = NULL; } /* Add data to linked list data block */ local int add_data_in_datablock OF((linkedlist_data* ll, const void* buf, uLong len)); local int add_data_in_datablock(linkedlist_data* ll, const void* buf, uLong len) { linkedlist_datablock_internal* ldi; const unsigned char* from_copy; if (ll == NULL) return ZIP_INTERNALERROR; if (ll->last_block == NULL) { ll->first_block = ll->last_block = allocate_new_datablock(); if (ll->first_block == NULL) return ZIP_INTERNALERROR; } ldi = ll->last_block; from_copy = (unsigned char*)buf; while (len > 0) { uInt copy_this; uInt i; unsigned char* to_copy; if (ldi->avail_in_this_block == 0) { ldi->next_datablock = allocate_new_datablock(); if (ldi->next_datablock == NULL) return ZIP_INTERNALERROR; ldi = ldi->next_datablock ; ll->last_block = ldi; } if (ldi->avail_in_this_block < len) copy_this = (uInt)ldi->avail_in_this_block; else copy_this = (uInt)len; to_copy = &(ldi->data[ldi->filled_in_this_block]); for (i = 0; i < copy_this; i++) *(to_copy+i) = *(from_copy+i); ldi->filled_in_this_block += copy_this; ldi->avail_in_this_block -= copy_this; from_copy += copy_this; len -= copy_this; } return ZIP_OK; } local uLong zip64local_TmzDateToDosDate OF((const tm_zip* ptm)); local uLong zip64local_TmzDateToDosDate(const tm_zip* ptm) { uLong year; #define zip64local_in_range(min, max, value) ((min) <= (value) && (value) <= (max)) /* Years supported: * [00, 79] (assumed to be between 2000 and 2079) * [80, 207] (assumed to be between 1980 and 2107, typical output of old software that does 'year-1900' to get a double digit year) * [1980, 2107] Due to the date format limitations, only years between 1980 and 2107 can be stored. */ if (!(zip64local_in_range(1980, 2107, ptm->tm_year) || zip64local_in_range(0, 207, ptm->tm_year)) || !zip64local_in_range(0, 11, ptm->tm_mon) || !zip64local_in_range(1, 31, ptm->tm_mday) || !zip64local_in_range(0, 23, ptm->tm_hour) || !zip64local_in_range(0, 59, ptm->tm_min) || !zip64local_in_range(0, 59, ptm->tm_sec)) return 0; #undef zip64local_in_range year = (uLong)ptm->tm_year; if (year >= 1980) /* range [1980, 2107] */ year -= 1980; else if (year >= 80) /* range [80, 99] */ year -= 80; else /* range [00, 79] */ year += 20; return (uLong)(((ptm->tm_mday) + (32 * (ptm->tm_mon+1)) + (512 * year)) << 16) | ((ptm->tm_sec / 2) + (32 * ptm->tm_min) + (2048 * (uLong)ptm->tm_hour)); } /* Inputs a long in LSB order to the given file: nbByte == 1, 2 ,4 or 8 (byte, short or long, ZPOS64_T) */ local int zip64local_putValue OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte)); local int zip64local_putValue (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte) { unsigned char buf[8]; int n; for (n = 0; n < nbByte; n++) { buf[n] = (unsigned char)(x & 0xff); x >>= 8; } if (x != 0) { /* Data overflow - hack for ZIP64 (X Roche) */ for (n = 0; n < nbByte; n++) { buf[n] = 0xff; } } if (ZWRITE64(*pzlib_filefunc_def,filestream,buf,nbByte)!=(uLong)nbByte) return ZIP_ERRNO; return ZIP_OK; } local ZPOS64_T zip64local_getValue_frommemory OF((void* src, int nbByte)); local ZPOS64_T zip64local_getValue_frommemory (void* src, int nbByte) { ZPOS64_T x = 0; unsigned char* buf =(unsigned char*)src; int n; for (n = 0; n < nbByte; n++) { x <<= 8; x |= buf[nbByte - n - 1]; } return x; } local void zip64local_putValue_inmemory OF((void* dest, ZPOS64_T x, int nbByte)); local void zip64local_putValue_inmemory (void* dest, ZPOS64_T x, int nbByte) { unsigned char* buf =(unsigned char*)dest; int n; for (n = 0; n < nbByte; n++) { buf[n] = (unsigned char)(x & 0xff); x >>= 8; } if (x != 0) { /* data overflow - hack for ZIP64 */ for (n = 0; n < nbByte; n++) { buf[n] = 0xff; } } } local int zip64local_getByte OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi)); local int zip64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def,voidpf filestream,int* pi) { unsigned char c; int err = (int)ZREAD64(*pzlib_filefunc_def, filestream, &c,1); if (err == 1) { *pi = (int)c; return ZIP_OK; } if (ZERROR64(*pzlib_filefunc_def, filestream)) return ZIP_ERRNO; return ZIP_EOF; } local int zip64local_getShort OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); local int zip64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX) { uLong x; int i = 0; int err; err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); x = (uLong)i; if (err == ZIP_OK) err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); x += ((uLong)i) << 8; if (err == ZIP_OK) *pX = x; else *pX = 0; return err; } local int zip64local_getLong OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); local int zip64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX) { uLong x; int i = 0; int err; err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); x = (uLong)i; if (err == ZIP_OK) err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); x += ((uLong)i) << 8; if (err == ZIP_OK) err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); x += ((uLong)i) << 16; if (err == ZIP_OK) err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); x += ((uLong)i) << 24; if (err == ZIP_OK) *pX = x; else *pX = 0; return err; } local int zip64local_getLong64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX)); local int zip64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX) { ZPOS64_T x; int i = 0; int err; err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); x = (ZPOS64_T)i; if (err == ZIP_OK) err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); x += ((ZPOS64_T)i) << 8; if (err == ZIP_OK) err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); x += ((ZPOS64_T)i) << 16; if (err == ZIP_OK) err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); x += ((ZPOS64_T)i) << 24; if (err == ZIP_OK) err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); x += ((ZPOS64_T)i) << 32; if (err == ZIP_OK) err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); x += ((ZPOS64_T)i) << 40; if (err == ZIP_OK) err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); x += ((ZPOS64_T)i) << 48; if (err == ZIP_OK) err = zip64local_getByte(pzlib_filefunc_def, filestream, &i); x += ((ZPOS64_T)i) << 56; if (err == ZIP_OK) *pX = x; else *pX = 0; return err; } /* Gets the amount of bytes left to write to the current disk for spanning archives */ local int zipGetDiskSizeAvailable OF((zipFile file, ZPOS64_T *size_available)); local int zipGetDiskSizeAvailable(zipFile file, ZPOS64_T *size_available) { zip64_internal* zi; ZPOS64_T current_disk_size; zi = (zip64_internal*)file; ZSEEK64(zi->z_filefunc, zi->filestream, 0, ZLIB_FILEFUNC_SEEK_END); current_disk_size = ZTELL64(zi->z_filefunc, zi->filestream); *size_available = zi->disk_size - current_disk_size; return ZIP_OK; } /* Goes to a specific disk number for spanning archives */ local int zipGoToSpecificDisk OF((zipFile file, int number_disk, int open_existing)); local int zipGoToSpecificDisk(zipFile file, int number_disk, int open_existing) { zip64_internal* zi; int err = ZIP_OK; zi = (zip64_internal*)file; if (zi->disk_size == 0) return err; if ((zi->filestream != NULL) && (zi->filestream != zi->filestream_with_CD)) ZCLOSE64(zi->z_filefunc, zi->filestream); zi->filestream = ZOPENDISK64(zi->z_filefunc, zi->filestream_with_CD, number_disk, (open_existing == 1) ? (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_EXISTING) : (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_CREATE)); if (zi->filestream == NULL) err = ZIP_ERRNO; return err; } /* Goes to the first disk in a spanned archive */ local int zipGoToFirstDisk OF((zipFile file)); local int zipGoToFirstDisk(zipFile file) { zip64_internal* zi; int number_disk_next; int err = ZIP_OK; zi = (zip64_internal*)file; if (zi->disk_size == 0) return err; number_disk_next = 0; if (zi->number_disk_with_CD > 0) number_disk_next = zi->number_disk_with_CD - 1; err = zipGoToSpecificDisk(file, number_disk_next, (zi->append == APPEND_STATUS_ADDINZIP)); if ((err == ZIP_ERRNO) && (zi->append == APPEND_STATUS_ADDINZIP)) err = zipGoToSpecificDisk(file, number_disk_next, 0); if (err == ZIP_OK) zi->number_disk = number_disk_next; ZSEEK64(zi->z_filefunc, zi->filestream, 0, ZLIB_FILEFUNC_SEEK_END); return err; } /* Goes to the next disk in a spanned archive */ local int zipGoToNextDisk OF((zipFile file)); local int zipGoToNextDisk(zipFile file) { zip64_internal* zi; ZPOS64_T size_available_in_disk; int err = ZIP_OK; int number_disk_next; zi = (zip64_internal*)file; if (zi->disk_size == 0) return err; number_disk_next = zi->number_disk + 1; do { err = zipGoToSpecificDisk(file, number_disk_next, (zi->append == APPEND_STATUS_ADDINZIP)); if ((err == ZIP_ERRNO) && (zi->append == APPEND_STATUS_ADDINZIP)) err = zipGoToSpecificDisk(file, number_disk_next, 0); if (err != ZIP_OK) break; err = zipGetDiskSizeAvailable(file, &size_available_in_disk); if (err != ZIP_OK) break; zi->number_disk = number_disk_next; zi->number_disk_with_CD = zi->number_disk + 1; number_disk_next += 1; } while (size_available_in_disk <= 0); return err; } /* Locate the Central directory of a zipfile (at the end, just before the global comment) */ local ZPOS64_T zip64local_SearchCentralDir OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)); local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) { unsigned char* buf; ZPOS64_T file_size; ZPOS64_T back_read = 4; ZPOS64_T max_back=0xffff; /* maximum size of global comment */ ZPOS64_T pos_found=0; uLong read_size; ZPOS64_T read_pos; int i; buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); if (buf == NULL) return 0; if (ZSEEK64(*pzlib_filefunc_def, filestream, 0, ZLIB_FILEFUNC_SEEK_END) != 0) { TRYFREE(buf); return 0; } file_size = ZTELL64(*pzlib_filefunc_def, filestream); if (max_back > file_size) max_back = file_size; while (back_read < max_back) { if (back_read + BUFREADCOMMENT > max_back) back_read = max_back; else back_read += BUFREADCOMMENT; read_pos = file_size-back_read; read_size = ((BUFREADCOMMENT+4) < (file_size-read_pos)) ? (BUFREADCOMMENT+4) : (uLong)(file_size-read_pos); if (ZSEEK64(*pzlib_filefunc_def, filestream, read_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) break; if (ZREAD64(*pzlib_filefunc_def, filestream, buf, read_size) != read_size) break; for (i = (int)read_size-3; (i--) > 0;) if ((*(buf+i)) == (ENDHEADERMAGIC & 0xff) && (*(buf+i+1)) == (ENDHEADERMAGIC >> 8 & 0xff) && (*(buf+i+2)) == (ENDHEADERMAGIC >> 16 & 0xff) && (*(buf+i+3)) == (ENDHEADERMAGIC >> 24 & 0xff)) { pos_found = read_pos+i; break; } if (pos_found != 0) break; } TRYFREE(buf); return pos_found; } /* Locate the Central directory 64 of a zipfile (at the end, just before the global comment) */ local ZPOS64_T zip64local_SearchCentralDir64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, const ZPOS64_T endcentraloffset)); local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, const ZPOS64_T endcentraloffset) { ZPOS64_T offset; uLong uL; /* Zip64 end of central directory locator */ if (ZSEEK64(*pzlib_filefunc_def, filestream, endcentraloffset - SIZECENTRALHEADERLOCATOR, ZLIB_FILEFUNC_SEEK_SET) != 0) return 0; /* Read locator signature */ if (zip64local_getLong(pzlib_filefunc_def, filestream, &uL) != ZIP_OK) return 0; if (uL != ZIP64ENDLOCHEADERMAGIC) return 0; /* Number of the disk with the start of the zip64 end of central directory */ if (zip64local_getLong(pzlib_filefunc_def, filestream, &uL) != ZIP_OK) return 0; /* Relative offset of the zip64 end of central directory record */ if (zip64local_getLong64(pzlib_filefunc_def, filestream, &offset) != ZIP_OK) return 0; /* Total number of disks */ if (zip64local_getLong(pzlib_filefunc_def, filestream, &uL) != ZIP_OK) return 0; /* Goto end of central directory record */ if (ZSEEK64(*pzlib_filefunc_def,filestream, offset, ZLIB_FILEFUNC_SEEK_SET) != 0) return 0; /* The signature */ if (zip64local_getLong(pzlib_filefunc_def, filestream, &uL) != ZIP_OK) return 0; if (uL != ZIP64ENDHEADERMAGIC) return 0; return offset; } extern zipFile ZEXPORT zipOpen4(const void *pathname, int append, ZPOS64_T disk_size, const char ** globalcomment, zlib_filefunc64_32_def* pzlib_filefunc64_32_def) { zip64_internal ziinit; zip64_internal* zi; #ifndef NO_ADDFILEINEXISTINGZIP ZPOS64_T byte_before_the_zipfile; /* byte before the zipfile, (>0 for sfx)*/ ZPOS64_T size_central_dir; /* size of the central directory */ ZPOS64_T offset_central_dir; /* offset of start of central directory */ ZPOS64_T number_entry_CD; /* total number of entries in the central dir */ ZPOS64_T number_entry; ZPOS64_T central_pos; ZPOS64_T size_central_dir_to_read; uLong uL; uLong size_comment; size_t buf_size = SIZEDATA_INDATABLOCK; void* buf_read; #endif int err = ZIP_OK; int mode; ziinit.z_filefunc.zseek32_file = NULL; ziinit.z_filefunc.ztell32_file = NULL; if (pzlib_filefunc64_32_def == NULL) fill_fopen64_filefunc(&ziinit.z_filefunc.zfile_func64); else ziinit.z_filefunc = *pzlib_filefunc64_32_def; if (append == APPEND_STATUS_CREATE) mode = (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_CREATE); else mode = (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_EXISTING); ziinit.filestream = ZOPEN64(ziinit.z_filefunc, pathname, mode); if (ziinit.filestream == NULL) return NULL; if (append == APPEND_STATUS_CREATEAFTER) { /* Don't support spanning ZIP with APPEND_STATUS_CREATEAFTER */ if (disk_size > 0) return NULL; ZSEEK64(ziinit.z_filefunc,ziinit.filestream,0,SEEK_END); } ziinit.filestream_with_CD = ziinit.filestream; ziinit.append = append; ziinit.number_disk = 0; ziinit.number_disk_with_CD = 0; ziinit.disk_size = disk_size; ziinit.begin_pos = ZTELL64(ziinit.z_filefunc,ziinit.filestream); ziinit.in_opened_file_inzip = 0; ziinit.ci.stream_initialised = 0; ziinit.number_entry = 0; ziinit.add_position_when_writting_offset = 0; init_linkedlist(&(ziinit.central_dir)); zi = (zip64_internal*)ALLOC(sizeof(zip64_internal)); if (zi == NULL) { ZCLOSE64(ziinit.z_filefunc,ziinit.filestream); return NULL; } #ifndef NO_ADDFILEINEXISTINGZIP /* Add file in a zipfile */ ziinit.globalcomment = NULL; if (append == APPEND_STATUS_ADDINZIP) { /* Read and Cache Central Directory Records */ central_pos = zip64local_SearchCentralDir(&ziinit.z_filefunc,ziinit.filestream); /* Disable to allow appending to empty ZIP archive (must be standard zip, not zip64) if (central_pos == 0) err = ZIP_ERRNO; */ if (err == ZIP_OK) { /* Read end of central directory info */ if (ZSEEK64(ziinit.z_filefunc, ziinit.filestream, central_pos,ZLIB_FILEFUNC_SEEK_SET) != 0) err = ZIP_ERRNO; /* The signature, already checked */ if (zip64local_getLong(&ziinit.z_filefunc, ziinit.filestream, &uL) != ZIP_OK) err = ZIP_ERRNO; /* Number of this disk */ if (zip64local_getShort(&ziinit.z_filefunc, ziinit.filestream, &ziinit.number_disk) != ZIP_OK) err = ZIP_ERRNO; /* Number of the disk with the start of the central directory */ if (zip64local_getShort(&ziinit.z_filefunc, ziinit.filestream, &ziinit.number_disk_with_CD) != ZIP_OK) err = ZIP_ERRNO; /* Total number of entries in the central dir on this disk */ number_entry = 0; if (zip64local_getShort(&ziinit.z_filefunc, ziinit.filestream, &uL) != ZIP_OK) err = ZIP_ERRNO; else number_entry = uL; /* Total number of entries in the central dir */ number_entry_CD = 0; if (zip64local_getShort(&ziinit.z_filefunc, ziinit.filestream, &uL) != ZIP_OK) err = ZIP_ERRNO; else number_entry_CD = uL; if (number_entry_CD!=number_entry) err = ZIP_BADZIPFILE; /* Size of the central directory */ size_central_dir = 0; if (zip64local_getLong(&ziinit.z_filefunc, ziinit.filestream, &uL) != ZIP_OK) err = ZIP_ERRNO; else size_central_dir = uL; /* Offset of start of central directory with respect to the starting disk number */ offset_central_dir = 0; if (zip64local_getLong(&ziinit.z_filefunc, ziinit.filestream, &uL) != ZIP_OK) err = ZIP_ERRNO; else offset_central_dir = uL; /* Zipfile global comment length */ if (zip64local_getShort(&ziinit.z_filefunc, ziinit.filestream, &size_comment) != ZIP_OK) err = ZIP_ERRNO; if ((err == ZIP_OK) && ((number_entry_CD == 0xffff) || (offset_central_dir == 0xffffffff))) { /* Format should be Zip64, as the central directory or file size is too large */ central_pos = zip64local_SearchCentralDir64(&ziinit.z_filefunc, ziinit.filestream, central_pos); if (central_pos) { ZPOS64_T sizeEndOfCentralDirectory; if (ZSEEK64(ziinit.z_filefunc, ziinit.filestream, central_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) err = ZIP_ERRNO; /* The signature, already checked */ if (zip64local_getLong(&ziinit.z_filefunc, ziinit.filestream, &uL) != ZIP_OK) err = ZIP_ERRNO; /* Size of zip64 end of central directory record */ if (zip64local_getLong64(&ziinit.z_filefunc, ziinit.filestream, &sizeEndOfCentralDirectory) != ZIP_OK) err = ZIP_ERRNO; /* Version made by */ if (zip64local_getShort(&ziinit.z_filefunc, ziinit.filestream, &uL) != ZIP_OK) err = ZIP_ERRNO; /* Version needed to extract */ if (zip64local_getShort(&ziinit.z_filefunc, ziinit.filestream, &uL) != ZIP_OK) err = ZIP_ERRNO; /* Number of this disk */ if (zip64local_getLong(&ziinit.z_filefunc, ziinit.filestream, &ziinit.number_disk) != ZIP_OK) err = ZIP_ERRNO; /* Number of the disk with the start of the central directory */ if (zip64local_getLong(&ziinit.z_filefunc, ziinit.filestream, &ziinit.number_disk_with_CD) != ZIP_OK) err = ZIP_ERRNO; /* Total number of entries in the central directory on this disk */ if (zip64local_getLong64(&ziinit.z_filefunc, ziinit.filestream, &number_entry) != ZIP_OK) err = ZIP_ERRNO; /* Total number of entries in the central directory */ if (zip64local_getLong64(&ziinit.z_filefunc, ziinit.filestream, &number_entry_CD) != ZIP_OK) err = ZIP_ERRNO; if (number_entry_CD!=number_entry) err = ZIP_BADZIPFILE; /* Size of the central directory */ if (zip64local_getLong64(&ziinit.z_filefunc, ziinit.filestream, &size_central_dir) != ZIP_OK) err = ZIP_ERRNO; /* Offset of start of central directory with respect to the starting disk number */ if (zip64local_getLong64(&ziinit.z_filefunc, ziinit.filestream, &offset_central_dir) != ZIP_OK) err = ZIP_ERRNO; } else err = ZIP_BADZIPFILE; } } if ((err == ZIP_OK) && (central_pos 0) { ziinit.globalcomment = (char*)ALLOC(size_comment+1); if (ziinit.globalcomment) { size_comment = ZREAD64(ziinit.z_filefunc, ziinit.filestream, ziinit.globalcomment, size_comment); ziinit.globalcomment[size_comment] = 0; } } byte_before_the_zipfile = central_pos - (offset_central_dir+size_central_dir); ziinit.add_position_when_writting_offset = byte_before_the_zipfile; /* Store central directory in memory */ size_central_dir_to_read = size_central_dir; buf_size = SIZEDATA_INDATABLOCK; buf_read = (void*)ALLOC(buf_size); if (ZSEEK64(ziinit.z_filefunc, ziinit.filestream, offset_central_dir + byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) err = ZIP_ERRNO; while ((size_central_dir_to_read > 0) && (err == ZIP_OK)) { ZPOS64_T read_this = SIZEDATA_INDATABLOCK; if (read_this > size_central_dir_to_read) read_this = size_central_dir_to_read; if (ZREAD64(ziinit.z_filefunc, ziinit.filestream, buf_read, (uLong)read_this) != read_this) err = ZIP_ERRNO; if (err == ZIP_OK) err = add_data_in_datablock(&ziinit.central_dir, buf_read, (uLong)read_this); size_central_dir_to_read -= read_this; } TRYFREE(buf_read); ziinit.begin_pos = byte_before_the_zipfile; ziinit.number_entry = number_entry_CD; if (ZSEEK64(ziinit.z_filefunc, ziinit.filestream, offset_central_dir+byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) err = ZIP_ERRNO; } if (globalcomment) *globalcomment = ziinit.globalcomment; #endif if (err != ZIP_OK) { #ifndef NO_ADDFILEINEXISTINGZIP TRYFREE(ziinit.globalcomment); #endif TRYFREE(zi); return NULL; } *zi = ziinit; zipGoToFirstDisk((zipFile)zi); return(zipFile)zi; } extern zipFile ZEXPORT zipOpen2(const char *pathname, int append, const char ** globalcomment, zlib_filefunc_def* pzlib_filefunc32_def) { if (pzlib_filefunc32_def != NULL) { zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; fill_zlib_filefunc64_32_def_from_filefunc32(&zlib_filefunc64_32_def_fill,pzlib_filefunc32_def); return zipOpen4(pathname, append, 0, globalcomment, &zlib_filefunc64_32_def_fill); } return zipOpen4(pathname, append, 0, globalcomment, NULL); } extern zipFile ZEXPORT zipOpen2_64(const void *pathname, int append, const char ** globalcomment, zlib_filefunc64_def* pzlib_filefunc_def) { if (pzlib_filefunc_def != NULL) { zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; zlib_filefunc64_32_def_fill.zfile_func64 = *pzlib_filefunc_def; zlib_filefunc64_32_def_fill.ztell32_file = NULL; zlib_filefunc64_32_def_fill.zseek32_file = NULL; return zipOpen4(pathname, append, 0, globalcomment, &zlib_filefunc64_32_def_fill); } return zipOpen4(pathname, append, 0, globalcomment, NULL); } extern zipFile ZEXPORT zipOpen3(const char *pathname, int append, ZPOS64_T disk_size, const char ** globalcomment, zlib_filefunc_def* pzlib_filefunc32_def) { if (pzlib_filefunc32_def != NULL) { zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; fill_zlib_filefunc64_32_def_from_filefunc32(&zlib_filefunc64_32_def_fill,pzlib_filefunc32_def); return zipOpen4(pathname, append, disk_size, globalcomment, &zlib_filefunc64_32_def_fill); } return zipOpen4(pathname, append, disk_size, globalcomment, NULL); } extern zipFile ZEXPORT zipOpen3_64(const void *pathname, int append, ZPOS64_T disk_size, const char ** globalcomment, zlib_filefunc64_def* pzlib_filefunc_def) { if (pzlib_filefunc_def != NULL) { zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; zlib_filefunc64_32_def_fill.zfile_func64 = *pzlib_filefunc_def; zlib_filefunc64_32_def_fill.ztell32_file = NULL; zlib_filefunc64_32_def_fill.zseek32_file = NULL; return zipOpen4(pathname, append, disk_size, globalcomment, &zlib_filefunc64_32_def_fill); } return zipOpen4(pathname, append, disk_size, globalcomment, NULL); } extern zipFile ZEXPORT zipOpen(const char* pathname, int append) { return zipOpen3((const void*)pathname,append,0,NULL,NULL); } extern zipFile ZEXPORT zipOpen64(const void* pathname, int append) { return zipOpen3(pathname,append,0,NULL,NULL); } extern int ZEXPORT zipOpenNewFileInZip4_64(zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char* password, uLong crcForCrypting, uLong versionMadeBy, uLong flagBase, int zip64) { zip64_internal* zi; uInt size_filename; uInt size_comment = 0; uInt i; int err = ZIP_OK; ZPOS64_T size_available; ZPOS64_T size_needed; #ifdef NOCRYPT (crcForCrypting); if (password != NULL) return ZIP_PARAMERROR; #endif if (file == NULL) return ZIP_PARAMERROR; if ((method != 0) && #ifdef HAVE_BZIP2 (method != Z_BZIP2ED) && #endif (method != Z_DEFLATED)) return ZIP_PARAMERROR; zi = (zip64_internal*)file; if (zi->in_opened_file_inzip == 1) { err = zipCloseFileInZip (file); if (err != ZIP_OK) return err; } if (filename == NULL) filename = "-"; if (comment != NULL) size_comment = (uInt)strlen(comment); size_filename = (uInt)strlen(filename); if (zipfi == NULL) zi->ci.dosDate = 0; else { if (zipfi->dosDate != 0) zi->ci.dosDate = zipfi->dosDate; else zi->ci.dosDate = zip64local_TmzDateToDosDate(&zipfi->tmz_date); } zi->ci.method = method; zi->ci.compression_method = method; zi->ci.crc32 = 0; zi->ci.stream_initialised = 0; zi->ci.pos_in_buffered_data = 0; zi->ci.raw = raw; zi->ci.flag = flagBase; if ((level == 8) || (level == 9)) zi->ci.flag |= 2; if (level == 2) zi->ci.flag |= 4; if (level == 1) zi->ci.flag |= 6; if (password != NULL) { zi->ci.flag |= 1; #ifdef HAVE_AES zi->ci.method = AES_METHOD; #endif } if (zi->disk_size > 0) { if ((zi->number_disk == 0) && (zi->number_entry == 0)) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)DISKHEADERMAGIC, 4); /* Make sure enough space available on current disk for local header */ zipGetDiskSizeAvailable((zipFile)zi, &size_available); size_needed = 30 + size_filename + size_extrafield_local; if (zi->ci.zip64) size_needed += 20; #ifdef HAVE_AES if (zi->ci.method == AES_METHOD) size_needed += 11; #endif if (size_available < size_needed) zipGoToNextDisk((zipFile)zi); } zi->ci.pos_local_header = ZTELL64(zi->z_filefunc, zi->filestream); zi->ci.size_comment = size_comment; zi->ci.size_centralheader = SIZECENTRALHEADER + size_filename + size_extrafield_global; zi->ci.size_centralextra = size_extrafield_global; zi->ci.size_centralextrafree = 32; /* Extra space reserved for ZIP64 extra info */ #ifdef HAVE_AES if (zi->ci.method == AES_METHOD) zi->ci.size_centralextrafree += 11; /* Extra space reserved for AES extra info */ #endif zi->ci.central_header = (char*)ALLOC((uInt)zi->ci.size_centralheader + zi->ci.size_centralextrafree + size_comment); zi->ci.number_disk = zi->number_disk; /* Write central directory header */ zip64local_putValue_inmemory(zi->ci.central_header, (uLong)CENTRALHEADERMAGIC, 4); zip64local_putValue_inmemory(zi->ci.central_header+4, (uLong)versionMadeBy, 2); zip64local_putValue_inmemory(zi->ci.central_header+6, (uLong)20, 2); zip64local_putValue_inmemory(zi->ci.central_header+8, (uLong)zi->ci.flag, 2); zip64local_putValue_inmemory(zi->ci.central_header+10, (uLong)zi->ci.method, 2); zip64local_putValue_inmemory(zi->ci.central_header+12, (uLong)zi->ci.dosDate, 4); zip64local_putValue_inmemory(zi->ci.central_header+16, (uLong)0, 4); /*crc*/ zip64local_putValue_inmemory(zi->ci.central_header+20, (uLong)0, 4); /*compr size*/ zip64local_putValue_inmemory(zi->ci.central_header+24, (uLong)0, 4); /*uncompr size*/ zip64local_putValue_inmemory(zi->ci.central_header+28, (uLong)size_filename, 2); zip64local_putValue_inmemory(zi->ci.central_header+30, (uLong)size_extrafield_global, 2); zip64local_putValue_inmemory(zi->ci.central_header+32, (uLong)size_comment, 2); zip64local_putValue_inmemory(zi->ci.central_header+34, (uLong)zi->ci.number_disk, 2); /*disk nm start*/ if (zipfi == NULL) zip64local_putValue_inmemory(zi->ci.central_header+36, (uLong)0, 2); else zip64local_putValue_inmemory(zi->ci.central_header+36, (uLong)zipfi->internal_fa, 2); if (zipfi == NULL) zip64local_putValue_inmemory(zi->ci.central_header+38, (uLong)0, 4); else zip64local_putValue_inmemory(zi->ci.central_header+38, (uLong)zipfi->external_fa, 4); if (zi->ci.pos_local_header >= 0xffffffff) zip64local_putValue_inmemory(zi->ci.central_header+42, (uLong)0xffffffff, 4); else zip64local_putValue_inmemory(zi->ci.central_header+42, (uLong)zi->ci.pos_local_header - zi->add_position_when_writting_offset, 4); for (i = 0; i < size_filename; i++) zi->ci.central_header[SIZECENTRALHEADER+i] = filename[i]; for (i = 0; i < size_extrafield_global; i++) zi->ci.central_header[SIZECENTRALHEADER+size_filename+i] = ((const char*)extrafield_global)[i]; /* Store comment at the end for later repositioning */ for (i = 0; i < size_comment; i++) zi->ci.central_header[zi->ci.size_centralheader+ zi->ci.size_centralextrafree+i] = comment[i]; if (zi->ci.central_header == NULL) return ZIP_INTERNALERROR; zi->ci.zip64 = zip64; zi->ci.total_compressed = 0; zi->ci.total_uncompressed = 0; zi->ci.pos_zip64extrainfo = 0; /* Write the local header */ err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)LOCALHEADERMAGIC, 4); if (err == ZIP_OK) { if (zi->ci.zip64) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)45, 2); /* version needed to extract */ else err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)20, 2); /* version needed to extract */ } if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->ci.flag, 2); if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->ci.method, 2); if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->ci.dosDate, 4); /* CRC & compressed size & uncompressed size will be filled in later and rewritten later */ if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0, 4); /* crc 32, unknown */ if (err == ZIP_OK) { if (zi->ci.zip64) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0xFFFFFFFF, 4); /* compressed size, unknown */ else err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0, 4); /* compressed size, unknown */ } if (err == ZIP_OK) { if (zi->ci.zip64) /* uncompressed size, unknown */ err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0xFFFFFFFF, 4); else /* uncompressed size, unknown */ err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0, 4); } if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)size_filename, 2); if (err == ZIP_OK) { ZPOS64_T size_extrafield = size_extrafield_local; if (zi->ci.zip64) size_extrafield += 20; #ifdef HAVE_AES if (zi->ci.method == AES_METHOD) size_extrafield += 11; #endif err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)size_extrafield,2); } if ((err == ZIP_OK) && (size_filename > 0)) { if (ZWRITE64(zi->z_filefunc, zi->filestream, filename, size_filename) != size_filename) err = ZIP_ERRNO; } if ((err == ZIP_OK) && (size_extrafield_local > 0)) { if (ZWRITE64(zi->z_filefunc, zi->filestream, extrafield_local, size_extrafield_local) != size_extrafield_local) err = ZIP_ERRNO; } /* Write the Zip64 extended info */ if ((err == ZIP_OK) && (zi->ci.zip64)) { short headerid = 1; short datasize = 16; ZPOS64_T compressed_size = 0; ZPOS64_T uncompressed_size = 0; /* Remember position of Zip64 extended info for the local file header. (needed when we update size after done with file) */ zi->ci.pos_zip64extrainfo = ZTELL64(zi->z_filefunc, zi->filestream); err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)headerid, 2); err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)datasize, 2); err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)uncompressed_size, 8); err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)compressed_size, 8); } #ifdef HAVE_AES /* Write the AES extended info */ if ((err == ZIP_OK) && (zi->ci.method == AES_METHOD)) { int headerid = 0x9901; short datasize = 7; err = zip64local_putValue(&zi->z_filefunc, zi->filestream, headerid, 2); err = zip64local_putValue(&zi->z_filefunc, zi->filestream, datasize, 2); err = zip64local_putValue(&zi->z_filefunc, zi->filestream, AES_VERSION, 2); err = zip64local_putValue(&zi->z_filefunc, zi->filestream, 'A', 1); err = zip64local_putValue(&zi->z_filefunc, zi->filestream, 'E', 1); err = zip64local_putValue(&zi->z_filefunc, zi->filestream, AES_ENCRYPTIONMODE, 1); err = zip64local_putValue(&zi->z_filefunc, zi->filestream, zi->ci.compression_method, 2); } #endif #ifdef HAVE_BZIP2 zi->ci.bstream.avail_in = (uInt)0; zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE; zi->ci.bstream.next_out = (char*)zi->ci.buffered_data; zi->ci.bstream.total_in_hi32 = 0; zi->ci.bstream.total_in_lo32 = 0; zi->ci.bstream.total_out_hi32 = 0; zi->ci.bstream.total_out_lo32 = 0; #endif zi->ci.stream.avail_in = (uInt)0; zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; zi->ci.stream.next_out = zi->ci.buffered_data; zi->ci.stream.total_in = 0; zi->ci.stream.total_out = 0; zi->ci.stream.data_type = Z_BINARY; if ((err == ZIP_OK) && (!zi->ci.raw)) { if (method == Z_DEFLATED) { zi->ci.stream.zalloc = (alloc_func)0; zi->ci.stream.zfree = (free_func)0; zi->ci.stream.opaque = (voidpf)zi; if (windowBits > 0) windowBits = -windowBits; err = deflateInit2(&zi->ci.stream, level, Z_DEFLATED, windowBits, memLevel, strategy); if (err == Z_OK) zi->ci.stream_initialised = Z_DEFLATED; } else if (method == Z_BZIP2ED) { #ifdef HAVE_BZIP2 zi->ci.bstream.bzalloc = 0; zi->ci.bstream.bzfree = 0; zi->ci.bstream.opaque = (voidpf)0; err = BZ2_bzCompressInit(&zi->ci.bstream, level, 0, 35); if (err == BZ_OK) zi->ci.stream_initialised = Z_BZIP2ED; #endif } } #ifndef NOCRYPT zi->ci.crypt_header_size = 0; if ((err == Z_OK) && ((zi->ci.flag & 1) != 0)) { #ifdef HAVE_AES if (zi->ci.method == AES_METHOD) { unsigned char passverify[AES_PWVERIFYSIZE]; unsigned char saltvalue[AES_MAXSALTLENGTH]; uInt saltlength; if ((AES_ENCRYPTIONMODE < 1) || (AES_ENCRYPTIONMODE > 3)) return Z_ERRNO; saltlength = SALT_LENGTH(AES_ENCRYPTIONMODE); prng_init(entropy_fun, zi->ci.aes_rng); prng_rand(saltvalue, saltlength, zi->ci.aes_rng); prng_end(zi->ci.aes_rng); fcrypt_init(AES_ENCRYPTIONMODE, password, strlen(password), saltvalue, passverify, &zi->ci.aes_ctx); if (ZWRITE64(zi->z_filefunc, zi->filestream, saltvalue, saltlength) != saltlength) err = ZIP_ERRNO; if (ZWRITE64(zi->z_filefunc, zi->filestream, passverify, AES_PWVERIFYSIZE) != AES_PWVERIFYSIZE) err = ZIP_ERRNO; zi->ci.crypt_header_size = saltlength + AES_PWVERIFYSIZE + AES_AUTHCODESIZE; } else #endif { unsigned char bufHead[RAND_HEAD_LEN]; unsigned int sizeHead; zi->ci.pcrc_32_tab = (const unsigned int*)get_crc_table(); /*init_keys(password, zi->ci.keys, zi->ci.pcrc_32_tab);*/ sizeHead = crypthead(password, bufHead, RAND_HEAD_LEN, zi->ci.keys, zi->ci.pcrc_32_tab, crcForCrypting); zi->ci.crypt_header_size = sizeHead; if (ZWRITE64(zi->z_filefunc, zi->filestream, bufHead, sizeHead) != sizeHead) err = ZIP_ERRNO; } } #endif if (err == Z_OK) zi->in_opened_file_inzip = 1; return err; } extern int ZEXPORT zipOpenNewFileInZip4(zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char* password, uLong crcForCrypting, uLong versionMadeBy, uLong flagBase) { return zipOpenNewFileInZip4_64(file, filename, zipfi, extrafield_local, size_extrafield_local, extrafield_global, size_extrafield_global, comment, method, level, raw, windowBits, memLevel, strategy, password, crcForCrypting, versionMadeBy, flagBase, 0); } extern int ZEXPORT zipOpenNewFileInZip3(zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char* password, uLong crcForCrypting) { return zipOpenNewFileInZip4_64(file, filename, zipfi, extrafield_local, size_extrafield_local, extrafield_global, size_extrafield_global, comment, method, level, raw, windowBits, memLevel, strategy, password, crcForCrypting, VERSIONMADEBY, 0, 0); } extern int ZEXPORT zipOpenNewFileInZip3_64(zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char* password, uLong crcForCrypting, int zip64) { return zipOpenNewFileInZip4_64(file, filename, zipfi, extrafield_local, size_extrafield_local, extrafield_global, size_extrafield_global, comment, method, level, raw, windowBits, memLevel, strategy, password, crcForCrypting, VERSIONMADEBY, 0, zip64); } extern int ZEXPORT zipOpenNewFileInZip2(zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level, int raw) { return zipOpenNewFileInZip4_64(file, filename, zipfi, extrafield_local, size_extrafield_local, extrafield_global, size_extrafield_global, comment, method, level, raw, -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, NULL, 0, VERSIONMADEBY, 0, 0); } extern int ZEXPORT zipOpenNewFileInZip2_64(zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level, int raw, int zip64) { return zipOpenNewFileInZip4_64(file, filename, zipfi, extrafield_local, size_extrafield_local, extrafield_global, size_extrafield_global, comment, method, level, raw, -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, NULL, 0, VERSIONMADEBY, 0, zip64); } extern int ZEXPORT zipOpenNewFileInZip64(zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void*extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level, int zip64) { return zipOpenNewFileInZip4_64(file, filename, zipfi, extrafield_local, size_extrafield_local, extrafield_global, size_extrafield_global, comment, method, level, 0, -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, NULL, 0, VERSIONMADEBY, 0, zip64); } extern int ZEXPORT zipOpenNewFileInZip(zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void*extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level) { return zipOpenNewFileInZip4_64(file, filename, zipfi, extrafield_local, size_extrafield_local, extrafield_global, size_extrafield_global, comment, method, level, 0, -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, NULL, 0, VERSIONMADEBY, 0, 0); } /* Flushes the write buffer to disk */ local int zip64FlushWriteBuffer OF((zip64_internal* zi)); local int zip64FlushWriteBuffer(zip64_internal* zi) { int err = ZIP_OK; uInt written = 0; uInt total_written = 0; uInt write = 0; uInt max_write = 0; ZPOS64_T size_available = 0; if ((zi->ci.flag & 1) != 0) { #ifndef NOCRYPT #ifdef HAVE_AES if (zi->ci.method == AES_METHOD) { fcrypt_encrypt(zi->ci.buffered_data, zi->ci.pos_in_buffered_data, &zi->ci.aes_ctx); } else #endif { uInt i; int t; for (i = 0;i < zi->ci.pos_in_buffered_data; i++) zi->ci.buffered_data[i] = zencode(zi->ci.keys, zi->ci.pcrc_32_tab, zi->ci.buffered_data[i],t); } #endif } write = zi->ci.pos_in_buffered_data; do { max_write = write; if (zi->disk_size > 0) { err = zipGetDiskSizeAvailable((zipFile)zi, &size_available); if (err != ZIP_OK) return err; if (size_available == 0) { err = zipGoToNextDisk((zipFile)zi); if (err != ZIP_OK) return err; } if (size_available < (ZPOS64_T)max_write) max_write = (uInt)size_available; } written = ZWRITE64(zi->z_filefunc, zi->filestream, zi->ci.buffered_data + total_written, max_write); if (ZERROR64(zi->z_filefunc, zi->filestream)) { err = ZIP_ERRNO; break; } total_written += written; write -= written; } while (write > 0); zi->ci.total_compressed += zi->ci.pos_in_buffered_data; #ifdef HAVE_BZIP2 if (zi->ci.compression_method == Z_BZIP2ED) { zi->ci.total_uncompressed += zi->ci.bstream.total_in_lo32; zi->ci.bstream.total_in_lo32 = 0; zi->ci.bstream.total_in_hi32 = 0; } else #endif { zi->ci.total_uncompressed += zi->ci.stream.total_in; zi->ci.stream.total_in = 0; } zi->ci.pos_in_buffered_data = 0; return err; } extern int ZEXPORT zipWriteInFileInZip(zipFile file,const void* buf,unsigned int len) { zip64_internal* zi; int err = ZIP_OK; if (file == NULL) return ZIP_PARAMERROR; zi = (zip64_internal*)file; if (zi->in_opened_file_inzip == 0) return ZIP_PARAMERROR; zi->ci.crc32 = crc32(zi->ci.crc32, buf, (uInt)len); #ifdef HAVE_BZIP2 if ((zi->ci.compression_method == Z_BZIP2ED) && (!zi->ci.raw)) { zi->ci.bstream.next_in = (void*)buf; zi->ci.bstream.avail_in = len; err = BZ_RUN_OK; while ((err == BZ_RUN_OK) && (zi->ci.bstream.avail_in > 0)) { if (zi->ci.bstream.avail_out == 0) { if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) err = ZIP_ERRNO; zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE; zi->ci.bstream.next_out = (char*)zi->ci.buffered_data; } else { uLong uTotalOutBefore_lo = zi->ci.bstream.total_out_lo32; uLong uTotalOutBefore_hi = zi->ci.bstream.total_out_hi32; err = BZ2_bzCompress(&zi->ci.bstream, BZ_RUN); zi->ci.pos_in_buffered_data += (uInt)(zi->ci.bstream.total_out_lo32 - uTotalOutBefore_lo); } } if (err == BZ_RUN_OK) err = ZIP_OK; } else #endif { zi->ci.stream.next_in = (Bytef*)buf; zi->ci.stream.avail_in = len; while ((err == ZIP_OK) && (zi->ci.stream.avail_in > 0)) { if (zi->ci.stream.avail_out == 0) { if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) err = ZIP_ERRNO; zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; zi->ci.stream.next_out = zi->ci.buffered_data; } if (err != ZIP_OK) break; if ((zi->ci.compression_method == Z_DEFLATED) && (!zi->ci.raw)) { uLong total_out_before = zi->ci.stream.total_out; err = deflate(&zi->ci.stream, Z_NO_FLUSH); zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - total_out_before); } else { uInt copy_this,i; if (zi->ci.stream.avail_in < zi->ci.stream.avail_out) copy_this = zi->ci.stream.avail_in; else copy_this = zi->ci.stream.avail_out; for (i = 0; i < copy_this; i++) *(((char*)zi->ci.stream.next_out)+i) = *(((const char*)zi->ci.stream.next_in)+i); zi->ci.stream.avail_in -= copy_this; zi->ci.stream.avail_out -= copy_this; zi->ci.stream.next_in += copy_this; zi->ci.stream.next_out += copy_this; zi->ci.stream.total_in += copy_this; zi->ci.stream.total_out += copy_this; zi->ci.pos_in_buffered_data += copy_this; } } } return err; } extern int ZEXPORT zipCloseFileInZipRaw(zipFile file, uLong uncompressed_size, uLong crc32) { return zipCloseFileInZipRaw64 (file, uncompressed_size, crc32); } extern int ZEXPORT zipCloseFileInZipRaw64(zipFile file, ZPOS64_T uncompressed_size, uLong crc32) { zip64_internal* zi; ZPOS64_T compressed_size; uLong invalidValue = 0xffffffff; uLong i = 0; short datasize = 0; int err = ZIP_OK; if (file == NULL) return ZIP_PARAMERROR; zi = (zip64_internal*)file; if (zi->in_opened_file_inzip == 0) return ZIP_PARAMERROR; zi->ci.stream.avail_in = 0; if (!zi->ci.raw) { if (zi->ci.compression_method == Z_DEFLATED) { while (err == ZIP_OK) { uLong total_out_before; if (zi->ci.stream.avail_out == 0) { if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) err = ZIP_ERRNO; zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; zi->ci.stream.next_out = zi->ci.buffered_data; } total_out_before = zi->ci.stream.total_out; err = deflate(&zi->ci.stream, Z_FINISH); zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - total_out_before); } } else if (zi->ci.compression_method == Z_BZIP2ED) { #ifdef HAVE_BZIP2 err = BZ_FINISH_OK; while (err == BZ_FINISH_OK) { uLong total_out_before; if (zi->ci.bstream.avail_out == 0) { if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) err = ZIP_ERRNO; zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE; zi->ci.bstream.next_out = (char*)zi->ci.buffered_data; } total_out_before = zi->ci.bstream.total_out_lo32; err = BZ2_bzCompress(&zi->ci.bstream, BZ_FINISH); if (err == BZ_STREAM_END) err = Z_STREAM_END; zi->ci.pos_in_buffered_data += (uInt)(zi->ci.bstream.total_out_lo32 - total_out_before); } if (err == BZ_FINISH_OK) err = ZIP_OK; #endif } } if (err == Z_STREAM_END) err = ZIP_OK; /* this is normal */ if ((zi->ci.pos_in_buffered_data > 0) && (err == ZIP_OK)) { if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) err = ZIP_ERRNO; } #ifdef HAVE_AES if (zi->ci.method == AES_METHOD) { unsigned char authcode[AES_AUTHCODESIZE]; fcrypt_end(authcode, &zi->ci.aes_ctx); if (ZWRITE64(zi->z_filefunc, zi->filestream, authcode, AES_AUTHCODESIZE) != AES_AUTHCODESIZE) err = ZIP_ERRNO; } #endif if (!zi->ci.raw) { if (zi->ci.compression_method == Z_DEFLATED) { int tmp_err = deflateEnd(&zi->ci.stream); if (err == ZIP_OK) err = tmp_err; zi->ci.stream_initialised = 0; } #ifdef HAVE_BZIP2 else if (zi->ci.compression_method == Z_BZIP2ED) { int tmperr = BZ2_bzCompressEnd(&zi->ci.bstream); if (err == ZIP_OK) err = tmperr; zi->ci.stream_initialised = 0; } #endif crc32 = (uLong)zi->ci.crc32; uncompressed_size = zi->ci.total_uncompressed; } compressed_size = zi->ci.total_compressed; #ifndef NOCRYPT compressed_size += zi->ci.crypt_header_size; #endif /* Update current item crc and sizes */ if (compressed_size >= 0xffffffff || uncompressed_size >= 0xffffffff || zi->ci.pos_local_header >= 0xffffffff) { /* Do not change "version made by" upper byte since it might have been set by the user */ uLong versionMadeBy = (uLong)zip64local_getValue_frommemory(zi->ci.central_header+4, 2); /* version made by */ if ((versionMadeBy & 0xff) < 45) zip64local_putValue_inmemory(zi->ci.central_header+4, (uLong)((versionMadeBy & 0xff00) | (uLong)45), 2); /* version made by */ zip64local_putValue_inmemory(zi->ci.central_header+6, (uLong)45, 2); /* version needed */ } zip64local_putValue_inmemory(zi->ci.central_header+16, crc32, 4); /* crc */ if (compressed_size >= 0xffffffff) zip64local_putValue_inmemory(zi->ci.central_header+20, invalidValue, 4); /* compr size */ else zip64local_putValue_inmemory(zi->ci.central_header+20, compressed_size, 4); /* compr size */ if (zi->ci.stream.data_type == Z_ASCII) zip64local_putValue_inmemory(zi->ci.central_header+36, (uLong)Z_ASCII, 2); /* internal file attrib */ if (uncompressed_size >= 0xffffffff) zip64local_putValue_inmemory(zi->ci.central_header+24, invalidValue, 4); /* uncompr size */ else zip64local_putValue_inmemory(zi->ci.central_header+24, uncompressed_size, 4); /* uncompr size */ /* Add ZIP64 extra info field for uncompressed size */ if (uncompressed_size >= 0xffffffff) datasize += 8; /* Add ZIP64 extra info field for compressed size */ if (compressed_size >= 0xffffffff) datasize += 8; /* Add ZIP64 extra info field for relative offset to local file header of current file */ if (zi->ci.pos_local_header >= 0xffffffff) datasize += 8; /* Add Extra Information Header for 'ZIP64 information' */ if (datasize > 0) { char* p = zi->ci.central_header + zi->ci.size_centralheader; if ((uLong)(datasize + 4) > zi->ci.size_centralextrafree) return ZIP_BADZIPFILE; zip64local_putValue_inmemory(p, 0x0001, 2); p += 2; zip64local_putValue_inmemory(p, datasize, 2); p += 2; if (uncompressed_size >= 0xffffffff) { zip64local_putValue_inmemory(p, uncompressed_size, 8); p += 8; } if (compressed_size >= 0xffffffff) { zip64local_putValue_inmemory(p, compressed_size, 8); p += 8; } if (zi->ci.pos_local_header >= 0xffffffff) { zip64local_putValue_inmemory(p, zi->ci.pos_local_header, 8); p += 8; } zi->ci.size_centralextrafree -= datasize + 4; zi->ci.size_centralheader += datasize + 4; zi->ci.size_centralextra += datasize + 4; zip64local_putValue_inmemory(zi->ci.central_header+30, (uLong)zi->ci.size_centralextra, 2); } #ifdef HAVE_AES /* Write the AES extended info */ if (zi->ci.method == AES_METHOD) { char* p = zi->ci.central_header + zi->ci.size_centralheader; datasize = 7; if ((uLong)(datasize + 4) > zi->ci.size_centralextrafree) return ZIP_BADZIPFILE; zip64local_putValue_inmemory(p, 0x9901, 2); p += 2; zip64local_putValue_inmemory(p, datasize, 2); p += 2; zip64local_putValue_inmemory(p, AES_VERSION, 2); p += 2; zip64local_putValue_inmemory(p, 'A', 1); p += 1; zip64local_putValue_inmemory(p, 'E', 1); p += 1; zip64local_putValue_inmemory(p, AES_ENCRYPTIONMODE, 1); p += 1; zip64local_putValue_inmemory(p, zi->ci.compression_method, 2); p += 2; zi->ci.size_centralextrafree -= datasize + 4; zi->ci.size_centralheader += datasize + 4; zi->ci.size_centralextra += datasize + 4; zip64local_putValue_inmemory(zi->ci.central_header+30, (uLong)zi->ci.size_centralextra, 2); } #endif /* Restore comment to correct position */ for (i = 0; i < zi->ci.size_comment; i++) zi->ci.central_header[zi->ci.size_centralheader+i] = zi->ci.central_header[zi->ci.size_centralheader+zi->ci.size_centralextrafree+i]; zi->ci.size_centralheader += zi->ci.size_comment; if (err == ZIP_OK) err = add_data_in_datablock(&zi->central_dir, zi->ci.central_header, (uLong)zi->ci.size_centralheader); free(zi->ci.central_header); if (err == ZIP_OK) { /* Update the LocalFileHeader with the new values. */ ZPOS64_T cur_pos_inzip = ZTELL64(zi->z_filefunc, zi->filestream); uLong cur_number_disk = zi->number_disk; /* Local file header is stored on previous disk, switch to make edits */ if (zi->ci.number_disk != cur_number_disk) err = zipGoToSpecificDisk(file, zi->ci.number_disk, 1); if (ZSEEK64(zi->z_filefunc, zi->filestream, zi->ci.pos_local_header + 14, ZLIB_FILEFUNC_SEEK_SET) != 0) err = ZIP_ERRNO; if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream,crc32,4); /* crc 32, unknown */ if (uncompressed_size >= 0xffffffff || compressed_size >= 0xffffffff) { if (zi->ci.pos_zip64extrainfo > 0) { /* Update the size in the ZIP64 extended field. */ if (ZSEEK64(zi->z_filefunc, zi->filestream, zi->ci.pos_zip64extrainfo + 4, ZLIB_FILEFUNC_SEEK_SET) != 0) err = ZIP_ERRNO; if (err == ZIP_OK) /* compressed size, unknown */ err = zip64local_putValue(&zi->z_filefunc, zi->filestream, uncompressed_size, 8); if (err == ZIP_OK) /* uncompressed size, unknown */ err = zip64local_putValue(&zi->z_filefunc, zi->filestream, compressed_size, 8); } else err = ZIP_BADZIPFILE; /* Caller passed zip64 = 0, so no room for zip64 info -> fatal */ } else { if (err == ZIP_OK) /* compressed size, unknown */ err = zip64local_putValue(&zi->z_filefunc, zi->filestream,compressed_size, 4); if (err == ZIP_OK) /* uncompressed size, unknown */ err = zip64local_putValue(&zi->z_filefunc, zi->filestream,uncompressed_size, 4); } /* Now switch back again to the disk we were on before */ if (zi->ci.number_disk != cur_number_disk) err = zipGoToSpecificDisk(file, cur_number_disk, 1); if (ZSEEK64(zi->z_filefunc, zi->filestream, cur_pos_inzip, ZLIB_FILEFUNC_SEEK_SET) != 0) err = ZIP_ERRNO; } zi->number_entry++; zi->in_opened_file_inzip = 0; return err; } extern int ZEXPORT zipCloseFileInZip(zipFile file) { return zipCloseFileInZipRaw(file, 0, 0); } extern int ZEXPORT zipClose(zipFile file, const char* global_comment) { return zipClose_64(file, global_comment); } extern int ZEXPORT zipClose_64(zipFile file, const char* global_comment) { return zipClose2_64(file, global_comment, VERSIONMADEBY); } extern int ZEXPORT zipClose2_64(zipFile file, const char* global_comment, uLong versionMadeBy) { zip64_internal* zi; int err = 0; uLong size_centraldir = 0; uInt size_global_comment = 0; ZPOS64_T centraldir_pos_inzip; ZPOS64_T pos = 0; uLong write = 0; if (file == NULL) return ZIP_PARAMERROR; zi = (zip64_internal*)file; if (zi->in_opened_file_inzip == 1) err = zipCloseFileInZip(file); #ifndef NO_ADDFILEINEXISTINGZIP if (global_comment == NULL) global_comment = zi->globalcomment; #endif if (zi->filestream != zi->filestream_with_CD) { if (ZCLOSE64(zi->z_filefunc, zi->filestream) != 0) if (err == ZIP_OK) err = ZIP_ERRNO; if (zi->disk_size > 0) zi->number_disk_with_CD = zi->number_disk + 1; zi->filestream = zi->filestream_with_CD; } centraldir_pos_inzip = ZTELL64(zi->z_filefunc, zi->filestream); if (err == ZIP_OK) { linkedlist_datablock_internal* ldi = zi->central_dir.first_block; while (ldi!= NULL) { if ((err == ZIP_OK) && (ldi->filled_in_this_block > 0)) { write = ZWRITE64(zi->z_filefunc, zi->filestream, ldi->data, ldi->filled_in_this_block); if (write != ldi->filled_in_this_block) err = ZIP_ERRNO; } size_centraldir += ldi->filled_in_this_block; ldi = ldi->next_datablock; } } free_linkedlist(&(zi->central_dir)); pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; /* Write the ZIP64 central directory header */ if (pos >= 0xffffffff || zi->number_entry > 0xffff) { ZPOS64_T zip64eocd_pos_inzip = ZTELL64(zi->z_filefunc, zi->filestream); uLong zip64datasize = 44; err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)ZIP64ENDHEADERMAGIC, 4); /* Size of this 'zip64 end of central directory' */ if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)zip64datasize, 8); /* Version made by */ if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)versionMadeBy, 2); /* version needed */ if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)45, 2); /* Number of this disk */ if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->number_disk_with_CD, 4); /* Number of the disk with the start of the central directory */ if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->number_disk_with_CD, 4); /* Total number of entries in the central dir on this disk */ if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, zi->number_entry, 8); /* Total number of entries in the central dir */ if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, zi->number_entry, 8); /* Size of the central directory */ if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)size_centraldir, 8); if (err == ZIP_OK) { /* Offset of start of central directory with respect to the starting disk number */ ZPOS64_T pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)pos, 8); } if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)ZIP64ENDLOCHEADERMAGIC, 4); /* Number of the disk with the start of the central directory */ if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->number_disk_with_CD, 4); /* Relative offset to the Zip64EndOfCentralDirectory */ if (err == ZIP_OK) { ZPOS64_T pos = zip64eocd_pos_inzip - zi->add_position_when_writting_offset; err = zip64local_putValue(&zi->z_filefunc, zi->filestream, pos, 8); } /* Number of the disk with the start of the central directory */ if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->number_disk_with_CD+1, 4); } /* Write the central directory header */ /* Signature */ if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)ENDHEADERMAGIC, 4); /* Number of this disk */ if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->number_disk_with_CD, 2); /* Number of the disk with the start of the central directory */ if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->number_disk_with_CD, 2); /* Total number of entries in the central dir on this disk */ if (err == ZIP_OK) { if (zi->number_entry >= 0xffff) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0xffff, 2); /* use value in ZIP64 record */ else err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->number_entry, 2); } /* Total number of entries in the central dir */ if (err == ZIP_OK) { if (zi->number_entry >= 0xffff) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0xffff, 2); /* use value in ZIP64 record */ else err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)zi->number_entry, 2); } /* Size of the central directory */ if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)size_centraldir,4); /* Offset of start of central directory with respect to the starting disk number */ if (err == ZIP_OK) { ZPOS64_T pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; if (pos >= 0xffffffff) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)0xffffffff, 4); else err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)pos, 4); } /* Write global comment */ if (global_comment != NULL) size_global_comment = (uInt)strlen(global_comment); if (err == ZIP_OK) err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (uLong)size_global_comment, 2); if (err == ZIP_OK && size_global_comment > 0) { if (ZWRITE64(zi->z_filefunc, zi->filestream, global_comment, size_global_comment) != size_global_comment) err = ZIP_ERRNO; } if ((ZCLOSE64(zi->z_filefunc, zi->filestream) != 0) && (err == ZIP_OK)) err = ZIP_ERRNO; #ifndef NO_ADDFILEINEXISTINGZIP TRYFREE(zi->globalcomment); #endif TRYFREE(zi); return err; } ================================================ FILE: BNN/cpp/minizip/zip.h ================================================ /* zip.h -- IO on .zip files using zlib Version 1.1, February 14h, 2010 part of the MiniZip project Copyright (C) 1998-2010 Gilles Vollant http://www.winimage.com/zLibDll/minizip.html Modifications for Zip64 support Copyright (C) 2009-2010 Mathias Svensson http://result42.com This program is distributed under the terms of the same license as zlib. See the accompanying LICENSE file for the full text of the license. */ #ifndef _ZIP_H #define _ZIP_H #ifdef __cplusplus extern "C" { #endif #ifndef _ZLIB_H # include "zlib.h" #endif #ifndef _ZLIBIOAPI_H # include "ioapi.h" #endif #ifdef HAVE_BZIP2 # include "bzlib.h" #endif #define Z_BZIP2ED 12 #if defined(STRICTZIP) || defined(STRICTZIPUNZIP) /* like the STRICT of WIN32, we define a pointer that cannot be converted from (void*) without cast */ typedef struct TagzipFile__ { int unused; } zipFile__; typedef zipFile__ *zipFile; #else typedef voidp zipFile; #endif #define ZIP_OK (0) #define ZIP_EOF (0) #define ZIP_ERRNO (Z_ERRNO) #define ZIP_PARAMERROR (-102) #define ZIP_BADZIPFILE (-103) #define ZIP_INTERNALERROR (-104) #ifndef DEF_MEM_LEVEL # if MAX_MEM_LEVEL >= 8 # define DEF_MEM_LEVEL 8 # else # define DEF_MEM_LEVEL MAX_MEM_LEVEL # endif #endif /* default memLevel */ /* tm_zip contain date/time info */ typedef struct tm_zip_s { uInt tm_sec; /* seconds after the minute - [0,59] */ uInt tm_min; /* minutes after the hour - [0,59] */ uInt tm_hour; /* hours since midnight - [0,23] */ uInt tm_mday; /* day of the month - [1,31] */ uInt tm_mon; /* months since January - [0,11] */ uInt tm_year; /* years - [1980..2044] */ } tm_zip; typedef struct { tm_zip tmz_date; /* date in understandable format */ uLong dosDate; /* if dos_date == 0, tmu_date is used */ uLong internal_fa; /* internal file attributes 2 bytes */ uLong external_fa; /* external file attributes 4 bytes */ } zip_fileinfo; #define APPEND_STATUS_CREATE (0) #define APPEND_STATUS_CREATEAFTER (1) #define APPEND_STATUS_ADDINZIP (2) /***************************************************************************/ /* Writing a zip file */ extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append)); extern zipFile ZEXPORT zipOpen64 OF((const void *pathname, int append)); /* Create a zipfile. pathname should contain the full pathname (by example, on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer "zlib/zlib113.zip". return NULL if zipfile cannot be opened return zipFile handle if no error If the file pathname exist and append == APPEND_STATUS_CREATEAFTER, the zip will be created at the end of the file. (useful if the file contain a self extractor code) If the file pathname exist and append == APPEND_STATUS_ADDINZIP, we will add files in existing zip (be sure you don't add file that doesn't exist) NOTE: There is no delete function into a zipfile. If you want delete file into a zipfile, you must open a zipfile, and create another. Of course, you can use RAW reading and writing to copy the file you did not want delete. */ extern zipFile ZEXPORT zipOpen2 OF((const char *pathname, int append, const char ** globalcomment, zlib_filefunc_def* pzlib_filefunc_def)); extern zipFile ZEXPORT zipOpen2_64 OF((const void *pathname, int append, const char ** globalcomment, zlib_filefunc64_def* pzlib_filefunc_def)); extern zipFile ZEXPORT zipOpen3 OF((const char *pathname, int append, ZPOS64_T disk_size, const char ** globalcomment, zlib_filefunc_def* pzlib_filefunc_def)); /* Same as zipOpen2 but allows specification of spanned zip size */ extern zipFile ZEXPORT zipOpen3_64 OF((const void *pathname, int append, ZPOS64_T disk_size, const char ** globalcomment, zlib_filefunc64_def* pzlib_filefunc_def)); extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level)); /* Open a file in the ZIP for writing. filename : the filename in zip (if NULL, '-' without quote will be used *zipfi contain supplemental information extrafield_local buffer to store the local header extra field data, can be NULL size_extrafield_local size of extrafield_local buffer extrafield_global buffer to store the global header extra field data, can be NULL size_extrafield_global size of extrafield_local buffer comment buffer for comment string method contain the compression method (0 for store, Z_DEFLATED for deflate) level contain the level of compression (can be Z_DEFAULT_COMPRESSION) zip64 is set to 1 if a zip64 extended information block should be added to the local file header. this MUST be '1' if the uncompressed size is >= 0xffffffff. */ extern int ZEXPORT zipOpenNewFileInZip64 OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level, int zip64)); /* Same as zipOpenNewFileInZip with zip64 support */ extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level, int raw)); /* Same as zipOpenNewFileInZip, except if raw=1, we write raw file */ extern int ZEXPORT zipOpenNewFileInZip2_64 OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level, int raw, int zip64)); /* Same as zipOpenNewFileInZip3 with zip64 support */ extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char* password, uLong crcForCrypting)); /* Same as zipOpenNewFileInZip2, except windowBits, memLevel, strategy : see parameter strategy in deflateInit2 password : crypting password (NULL for no crypting) crcForCrypting : crc of file to compress (needed for crypting) */ extern int ZEXPORT zipOpenNewFileInZip3_64 OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char* password, uLong crcForCrypting, int zip64)); /* Same as zipOpenNewFileInZip3 with zip64 support */ extern int ZEXPORT zipOpenNewFileInZip4 OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char* password, uLong crcForCrypting, uLong versionMadeBy, uLong flagBase)); /* Same as zipOpenNewFileInZip3 except versionMadeBy & flag fields */ extern int ZEXPORT zipOpenNewFileInZip4_64 OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char* password, uLong crcForCrypting, uLong versionMadeBy, uLong flagBase, int zip64)); /* Same as zipOpenNewFileInZip4 with zip64 support */ extern int ZEXPORT zipWriteInFileInZip OF((zipFile file, const void* buf, unsigned len)); /* Write data in the zipfile */ extern int ZEXPORT zipCloseFileInZip OF((zipFile file)); /* Close the current file in the zipfile */ extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file, uLong uncompressed_size, uLong crc32)); extern int ZEXPORT zipCloseFileInZipRaw64 OF((zipFile file, ZPOS64_T uncompressed_size, uLong crc32)); /* Close the current file in the zipfile, for file opened with parameter raw=1 in zipOpenNewFileInZip2 uncompressed_size and crc32 are value for the uncompressed size */ extern int ZEXPORT zipClose OF((zipFile file, const char* global_comment)); /* Close the zipfile */ extern int ZEXPORT zipClose_64 OF((zipFile file, const char* global_comment)); extern int ZEXPORT zipClose2_64 OF((zipFile file, const char* global_comment, uLong versionMadeBy)); /* Same as zipClose_64 except versionMadeBy field */ /***************************************************************************/ #ifdef __cplusplus } #endif #endif /* _ZIP_H */ ================================================ FILE: BNN/cpp/utils/Common.cpp ================================================ #include "Common.h" //------------------------------------------------------------------------ std::string get_root_dir() { char* root = getenv("CRAFT_BNN_ROOT"); if (!root) { fprintf(stderr, "Cannot find CRAFT_BNN_ROOT directory\n"); exit(-1); } return std::string(root); } ================================================ FILE: BNN/cpp/utils/Common.h ================================================ #ifndef COMMON_H #define COMMON_H #include #include #include #include #include "Typedefs.h" // Returns the repo's root dir or exits std::string get_root_dir(); // We encode negative to -1, positive to 0 template Bit sgn(const T x) { #pragma HLS INLINE return (x < 0) ? -1 : 0; } #endif ================================================ FILE: BNN/cpp/utils/DataIO.cpp ================================================ #include "DataIO.h" Cifar10TestInputs::Cifar10TestInputs(unsigned n) : m_size(n*CHANNELS*ROWS*COLS) { data = new float[m_size]; std::string full_filename = get_root_dir() + filename; DB_PRINT(2, "Opening data archive %s\n", full_filename.c_str()); unzFile ar = open_unzip(full_filename.c_str()); unsigned nfiles = get_nfiles_in_unzip(ar); assert(nfiles == 1); // We read m_size*4 bytes from the archive unsigned fsize = get_current_file_size(ar); assert(m_size*4 <= fsize); DB_PRINT(2, "Reading %u bytes\n", m_size*4); read_current_file(ar, (void*)data, m_size*4); unzClose(ar); } Cifar10TestLabels::Cifar10TestLabels(unsigned n) : m_size(n) { data = new float[m_size]; std::string full_filename = get_root_dir() + filename; DB_PRINT(2, "Opening data archive %s\n", full_filename.c_str()); unzFile ar = open_unzip(full_filename.c_str()); unsigned nfiles = get_nfiles_in_unzip(ar); assert(nfiles == 1); // We read n*4 bytes from the archive unsigned fsize = get_current_file_size(ar); assert(m_size*4 <= fsize); DB_PRINT(2, "Reading %u bytes\n", m_size*4); read_current_file(ar, (void*)data, m_size*4); unzClose(ar); } ================================================ FILE: BNN/cpp/utils/DataIO.h ================================================ //------------------------------------------------------------------------ // Class to read the image data //------------------------------------------------------------------------ #include #include "Debug.h" #include "ZipIO.h" #include "Common.h" #include "SArray.h" // This class will load N cifar10 test images struct Cifar10TestInputs { static const unsigned CHANNELS=3; static const unsigned ROWS=32; static const unsigned COLS=32; static constexpr const char* filename = "/data/cifar10_test_inputs.zip"; float* data; unsigned m_size; Cifar10TestInputs(unsigned n); ~Cifar10TestInputs() { delete[] data; } unsigned size() { return m_size; } }; struct Cifar10TestLabels { static constexpr const char* filename = "/data/cifar10_test_labels.zip"; float* data; unsigned m_size; Cifar10TestLabels(unsigned n); ~Cifar10TestLabels() { delete[] data; } unsigned size() { return m_size; } }; ================================================ FILE: BNN/cpp/utils/Debug.h ================================================ #ifndef DEBUG_H #define DEBUG_H #ifndef DEBUG_LEVEL #define DEBUG_LEVEL 0 #endif #ifdef HLS_COMPILE #undef DEBUG_LEVEL #endif #ifdef DEBUG_LEVEL #define DB(lvl, x) if (lvl <= DEBUG_LEVEL) {x;} #define DB_PRINT(lvl, ...) \ if (lvl <= DEBUG_LEVEL) \ printf (__VA_ARGS__) #else #define DB(lvl, x) #define DB_PRINT(lvl, ...) #endif #endif ================================================ FILE: BNN/cpp/utils/Makefile ================================================ include ../Makefile.inc # HDR are pure headers HDR=Debug.h BitVector.h QuantizeParams.h Layers.h Typedefs.h # OBJ must include a .cpp and .h with same name OBJ=DataIO.o ParamIO.o ZipIO.o Timer.o Common.o EXE=open_zip.exe ART=libCraftUtils.a all: $(ART) # Rule for object files, each object must have a header $(OBJ): %.o: %.cpp %.h $(CXX) -c $< -o $@ $(CFLAGS) %.o: %.cpp $(CXX) -c $< -o $@ $(CFLAGS) # Rule for executables $(EXE): %.exe: %.o $(OBJ) g++ $^ -o $@ $(CFLAGS) $(LDFLAGS) # Rule for libs $(ART): $(OBJ) $(AR) $@ $^ .PHONY: hlsclean clean: rm -f *.o *.exe *.a ================================================ FILE: BNN/cpp/utils/ParamIO.cpp ================================================ #include #include "ParamIO.h" #include "ZipIO.h" #include "Common.h" Params::Params(std::string zipfile) : m_filename(zipfile), m_arrays(0) { // Open file DB_PRINT(2, "Opening params archive %s\n", m_filename.c_str()); unzFile ar = open_unzip(m_filename); // Get number of files in the archive m_arrays = get_nfiles_in_unzip(ar); DB_PRINT(2, "Number of param arrays: %u\n", m_arrays); assert(m_arrays <= MAX_LAYERS); // Read each array for (unsigned i = 0; i < m_arrays; ++i) { unsigned fsize = get_current_file_size(ar); m_array_size[i] = fsize; // size in bytes m_data[i] = new float[fsize/4]; read_current_file(ar, (void*)m_data[i], fsize); unzGoToNextFile(ar); } unzClose(ar); } Params::~Params() { for (unsigned i = 0; i < m_arrays; ++i) delete[] m_data[i]; } ================================================ FILE: BNN/cpp/utils/ParamIO.h ================================================ //------------------------------------------------------------------------ // Class to read the parameters from a .zip archive. // Requires zlib and minizip. //------------------------------------------------------------------------ #ifndef PARAM_IO_H #define PARAM_IO_H #include #include #include "../minizip/unzip.h" #include "Debug.h" /* Parameters are organized into arrays. A layer may have multiple arrays of * params. For example Weight and Bias are two arrays for a Conv layer */ struct Params { static const unsigned MAX_LAYERS = 64; std::string m_filename; unsigned m_arrays; unsigned m_array_size[MAX_LAYERS]; float* m_data[MAX_LAYERS]; public: // Read a zip archive containing NN params. We make the assumption // that each file in the archive is one array. The data is stored // as just an array of bytes Params(std::string zipfile); // Safely deletes params ~Params(); // Get the number of layers unsigned num_arrays() const { return m_arrays; } // Get the size of the params array in bytes unsigned array_size(unsigned i) const { return m_array_size[i]; } // Get a pointer to the params for layer float* array_data(unsigned i) const { return m_data[i]; } float* float_data(unsigned i) const { return array_data(i); } }; #endif ================================================ FILE: BNN/cpp/utils/SArray.h ================================================ #ifndef SARRAY_H #define SARRAY_H //------------------------------------------------------------------------ // Static array organized as N SxS images //------------------------------------------------------------------------ template struct SArray { typedef T ElemType; T data[SIZE]; static constexpr unsigned size() { return SIZE; } // get base ptr T* ptr() { return data; } const T* ptr() const { return data; } // array subscript T& operator[](unsigned i) { return data[i]; } const T& operator[](unsigned i) const { return data[i]; } void set(T x) { for (unsigned i = 0; i < size(); ++i) data[i] = x; } void clear() { set(0); } // copy data from another array or SArray template void copy_from(const A& other, unsigned siz=size()) { assert(siz <= size()); for (unsigned i = 0; i < siz; ++i) data[i] = other[i]; } // copy data and binarize template void binarize_from(const A& other, unsigned siz=size()) { assert(siz <= size()); for (unsigned i = 0; i < siz; ++i) data[i] = (other[i] >= 0) ? 0 : 1; } // print a subimage void print_sub(unsigned n, unsigned S, unsigned maxs=8, char fmt='f') const { maxs = (maxs >= S) ? S : maxs; assert(n*S*S < size()); for (unsigned r = 0; r < maxs; ++r) { for (unsigned c = 0; c < S; ++c) { if (fmt == 'f') printf ("%6.3f ", (float)data[n*S*S + r*S + c]); else printf ("%5d ", (int)data[n*S*S + r*S + c]); } printf ("\n"); } } // print an image void print(unsigned n=0, unsigned S=32, char fmt='f') const { print_sub(n, S, S, fmt); } }; #endif ================================================ FILE: BNN/cpp/utils/Timer.cpp ================================================ //--------------------------------------------------------- // Timer.cpp //--------------------------------------------------------- #include "Timer.h" #ifdef TIMER_ON //--------------------------------------------------------- // Timer is active //--------------------------------------------------------- Timer::Timer(const char* Name, bool On) { if (On) { // record the start time gettimeofday(&ts_start, NULL); nCalls = 1; } else { nCalls = 0; } totalTime = 0; strcpy(binName, Name); } Timer::~Timer() { // on being destroyed, print the average and total time if (nCalls > 0) { printf ("%-20s: ", binName); printf ("%6d calls; ", nCalls); if (totalTime < 1e-6) printf ("%6.3f usecs total time\n", 1e6*totalTime); else if (totalTime < 1e-3) printf ("%6.3f msecs total time\n", 1e3*totalTime); else printf ("%6.3f secs total time\n", totalTime); } } void Timer::start() { // record start time gettimeofday(&ts_start, NULL); nCalls++; } void Timer::stop() { // get current time, add elapsed time to totalTime timeval ts_curr; gettimeofday(&ts_curr, NULL); totalTime += float(ts_curr.tv_sec - ts_start.tv_sec) + float(ts_curr.tv_usec)*1e-6 - float(ts_start.tv_usec)*1e-6; } float Timer::get_time() { return totalTime; } #else //--------------------------------------------------------- // Timer turned off, methods do nothing //--------------------------------------------------------- Timer::Timer(const char* Name="", bool On=false) { } Timer::~Timer() { } void Timer::start() { } void Timer::stop() { } float Timer::get_time() { return 0; } #endif ================================================ FILE: BNN/cpp/utils/Timer.h ================================================ //--------------------------------------------------------- // Timer.h //--------------------------------------------------------- #ifndef __TIMER_H__ #define __TIMER_H__ #include #include #include #include #define TIMER_ON //--------------------------------------------------------- // Timer is an object which helps profile programs using // the clock() function. // - By default, a timer is stopped when you instantiate it // and must be started manually // - Passing True to the constructor starts the timer when // it is constructed // - When the timer is destructed it prints stats to stdout //--------------------------------------------------------- class Timer { #ifdef TIMER_ON char binName[50]; unsigned nCalls; timeval ts_start; float totalTime; #endif public: // constructor Timer(const char* Name="", bool On=false); // destructor ~Timer(); // start/stop timer void start(); void stop(); // returns time in seconds float get_time(); }; #endif ================================================ FILE: BNN/cpp/utils/Typedefs.h ================================================ #ifndef TYPEDEFS_H #define TYPEDEFS_H #include //#define USE_FLOAT #ifdef USE_FLOAT typedef float InputFixed; // Types for weights typedef ap_int<1> Bit; typedef ap_int<2> TwoBit; typedef float KType; typedef float HType; typedef float NormOutput; typedef ap_int<14> ConvOutput; #else // Quantized 32-bit input images in the range [-1,1] typedef ap_fixed<32,2, AP_RND> InputFixed; // Types for weights typedef ap_int<1> Bit; typedef ap_int<2> TwoBit; typedef ap_fixed<16,2> KType; typedef ap_fixed<16,4> HType; typedef ap_fixed<16,5> NormOutput; typedef ap_int<14> ConvOutput; #endif #endif ================================================ FILE: BNN/cpp/utils/ZipIO.cpp ================================================ #include #include "ZipIO.h" #include "Debug.h" //------------------------------------------------------------------------ unzFile open_unzip(const std::string filename) { unzFile ar = unzOpen(filename.c_str()); if (ar == NULL) { fprintf(stderr, "Error opening %s\n", filename.c_str()); exit(-1); } return ar; } //------------------------------------------------------------------------ unsigned get_nfiles_in_unzip(unzFile ar) { unz_global_info info; int err = unzGetGlobalInfo(ar, &info); assert(!err); return info.number_entry; } //------------------------------------------------------------------------ unsigned get_current_file_size(unzFile ar) { unz_file_info finfo; char fname[50]; int err = unzGetCurrentFileInfo(ar, &finfo, fname, 50, NULL, 0, NULL, 0); assert(!err); unsigned fsize = finfo.uncompressed_size; DB_PRINT(3, "Reading %10s, %u bytes\n", fname, fsize); assert(fsize > 0); return fsize; } //------------------------------------------------------------------------ void read_current_file(unzFile ar, void* buffer, unsigned bytes) { int err = unzOpenCurrentFile(ar); assert(!err); unsigned b = unzReadCurrentFile(ar, buffer, bytes); assert(b == bytes); unzCloseCurrentFile(ar); } //------------------------------------------------------------------------ void write_buffer_to_zip(zipFile zf, std::string fname, void* buf, unsigned len) { int err; DB_PRINT(3, "Writing %10s, %u bytes\n", fname.c_str(), len); // Open new file zip_fileinfo zi = {0}; err = zipOpenNewFileInZip(zf, fname.c_str(), &zi, NULL, 0, NULL, 0, NULL, 0, /* method */ Z_DEFAULT_COMPRESSION); /* level */ assert(err == ZIP_OK); // Write data err = zipWriteInFileInZip(zf, buf, len); assert(err == ZIP_OK); // Close file err = zipCloseFileInZip(zf); assert(err == ZIP_OK); } ================================================ FILE: BNN/cpp/utils/ZipIO.h ================================================ #ifndef ZIP_IO_H #define ZIP_IO_H #include #include #include #include "../minizip/zip.h" #include "../minizip/unzip.h" //------------------------------------------------------------------------ // Functions for reading a zip archive //------------------------------------------------------------------------ unzFile open_unzip(const std::string filename); unsigned get_nfiles_in_unzip(unzFile ar); unsigned get_current_file_size(unzFile ar); void read_current_file(unzFile ar, void* buffer, unsigned bytes); //------------------------------------------------------------------------ // Writes a buffer to a new file with name [fname] inside the // zip archive [zf]. //------------------------------------------------------------------------ void write_buffer_to_zip( zipFile zf, // zip archive handle std::string fname, // name of file instead archive to write void* buf, // buffer of data unsigned len // how many bytes to write ); //------------------------------------------------------------------------ // SArray to and from zipfile //------------------------------------------------------------------------ // Read zip archive to SArray, used when you know the archive contains // one array and it has an exact size template void unzip_to_sarray(std::string filename, Array &buf) { unzFile ar = open_unzip(filename); unsigned fsize = get_current_file_size(ar); assert(fsize == sizeof(buf.data)); read_current_file(ar, (void*)buf.ptr(), fsize); unzClose(ar); } // write an array to a zip archive containing one file template void sarray_to_zip(std::string filename, const Array &buf, unsigned n_elems=0) { zipFile ar = zipOpen(filename.c_str(), 0); n_elems = (n_elems == 0) ? Array::size() : n_elems; // copy the SArray data to an array of float float* data = new float[n_elems]; for (unsigned i = 0; i < n_elems; ++i) { data[i] = buf[i]; } // store the array of float write_buffer_to_zip(ar, "arr_0", (void*)data, n_elems*sizeof(float)); delete[] data; int err = zipClose(ar, NULL); assert(err == ZIP_OK); } //------------------------------------------------------------------------ // C Array to and from zipfile //------------------------------------------------------------------------ template void unzip_to_array(std::string filename, T buf[]) { unzFile ar = open_unzip(filename); unsigned fsize = get_current_file_size(ar); assert(fsize != 0 && fsize % 4 == 0); read_current_file(ar, (void*)buf, fsize); unzClose(ar); } template void bitarray_to_zip(std::string filename, T buf[], unsigned n_elems) { zipFile ar = zipOpen(filename.c_str(), 0); const unsigned elem_size = buf[0].length(); // copy the array data to an array of float float* data = new float[n_elems]; for (unsigned i = 0; i < n_elems; ++i) { data[i] = (buf[i/elem_size][i%elem_size] == 0) ? 1.0 : -1.0; } // store the array of float write_buffer_to_zip(ar, "arr_0", (void*)data, n_elems*sizeof(float)); delete[] data; int err = zipClose(ar, NULL); assert(err == ZIP_OK); } #endif ================================================ FILE: BNN/cpp/utils/open_zip.cpp ================================================ //------------------------------------------------------------------------ // Simple test program for minizip, it checks the contents (files) in // a zip archive and reports the size of each file // Requires zlib and minizip. //------------------------------------------------------------------------ #include #include #include #include "../minizip/unzip.h" int main(int argc, char** argv) { if (argc < 2) { printf("Usage: %s \n", argv[0]); return 0; } int err; // Open the zipfile // A "zipfile" means the zip archive, which can be a directory containing // many files. unzFile zipfile = unzOpen(argv[1]); if (zipfile == NULL) { printf("Could not open %s\n", argv[1]); return -1; } // Get the number of files (entries) inside unz_global_info info; err = unzGetGlobalInfo(zipfile, &info); assert (!err); unsigned entries = info.number_entry; printf ("Entries: %u\n", entries); float** data = new float*[entries]; for (unsigned i = 0; i < entries; ++i) { // Get some info on the file unz_file_info finfo; char filename[50]; err = unzGetCurrentFileInfo(zipfile, &finfo, filename, 50, NULL, 0, NULL, 0); assert (!err); printf (" File %s: size=%luKB, compsize=%luKB\n", filename, finfo.uncompressed_size>>10, finfo.compressed_size>>10); // The data is an array of floats packed into 4-byte chunks unsigned array_size = finfo.uncompressed_size/4; assert(finfo.uncompressed_size % 4 == 0); assert(array_size > 0); data[i] = new float[array_size]; // Read the data from the current file 4 bytes at a time, // convert the bytes to a float and store it unzOpenCurrentFile(zipfile); float f; for (unsigned j = 0; j < array_size; ++j) { // unzReadCurrentFile returns the number of bytes read // or 0 if end of file is reached err = unzReadCurrentFile(zipfile, (void*)&f, 4); assert((err == 4) || (j == array_size-1)); data[i][j] = f; if (j < 5) printf (" %5.2f", data[i][j]); } printf ("\n"); unzCloseCurrentFile(zipfile); unzGoToNextFile(zipfile); } unzClose(zipfile); return 0; } ================================================ FILE: BNN/data/get_data.sh ================================================ #!/usr/bin/env bash CURR_DIR=`pwd` DIR="$( cd "$( dirname "${BASH_ROUCE[0]}" )" && pwd )" cd $DIR declare -a files=("cifar10_test_inputs.zip" "cifar10_test_labels.zip" "cpp_conv1_maps.zip" "cpp_conv2_maps.zip" "cpp_conv3_maps.zip" "cpp_conv4_maps.zip" "cpp_conv5_maps.zip" "cpp_conv6_maps.zip" "cpp_dense0_maps.zip" "cpp_dense1_maps.zip" "cpp_dense2_maps.zip") for i in "${files[@]}" ; do if [ -f $i ] ; then echo "$i already exists" else wget "www.csl.cornell.edu/~rzhao/files/$i" fi done cd $CURR_DIR ================================================ FILE: BNN/params/get_params.sh ================================================ #!/usr/bin/env bash CURR_DIR=`pwd` DIR="$( cd "$( dirname "${BASH_ROUCE[0]}" )" && pwd )" cd $DIR declare -a files=("cifar10_parameters_nb.zip" "cifar10_parameters_nb.npz") for i in "${files[@]}" ; do if [ -f $i ] ; then echo "$i already exists" else wget "www.csl.cornell.edu/~rzhao/files/$i" fi done cd $CURR_DIR ================================================ FILE: BNN/setup.sh ================================================ #!/usr/bin/env bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" export CRAFT_BNN_ROOT=$DIR ================================================ FILE: LICENSE ================================================ BSD 3-Clause License Copyright (c) 2018-2019, cornell-zhang All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================ FILE: README.md ================================================ # Rosetta: A Realistic High-level Synthesis Benchmark Suite for Software Programmable FPGAs ## Publication ------------------------------------------------------------------------------------------- If you use Rosetta in your research, please cite [our FPGA'18 paper][1]: ``` @article{zhou-rosetta-fpga2018, title = "{Rosetta: A Realistic High-Level Synthesis Benchmark Suite for Software-Programmable FPGAs}", author = {Yuan Zhou and Udit Gupta and Steve Dai and Ritchie Zhao and Nitish Srivastava and Hanchen Jin and Joseph Featherston and Yi-Hsiang Lai and Gai Liu and Gustavo Angarita Velasquez and Wenping Wang and Zhiru Zhang}, journal = {Int'l Symp. on Field-Programmable Gate Arrays (FPGA)}, month = {Feb}, year = {2018}, } ``` [1]: http://www.csl.cornell.edu/~zhiruz/pdfs/rosetta-fpga2018.pdf ## Introduction ------------------------------------------------------------------------------------------- Rosetta is a set of realistic benchmarks for software programmable FPGAs. It contains six fully-developed applications from machine learning and image/video processing domains, where each benchmark consists multiple compute kernels that expose diverse sources of parallelism. These applications are developed under realistic design constraints, and are optimized at both kernel-level and application-level with the advanced features of HLS tools to meet these constraints. As a result, Rosetta is not only a practical benchmark suite for the HLS community, but also a design tutorial on how to build application-specific FPGA accelerators with state-of-the-art HLS tools and optimizations. We will continue to include more applications and optimize existing benchmarks. For each Rosetta benchmark, we provide an unoptimized software version which does not use any HLS-specific optimization, and optimized versions targeting cloud and embedded FPGA platforms. Rosetta currently supports Xilinx SDx 2017.1, which combines the previous Xilinx SDAccel and Xilinx SDSoC development environments. SDAccel is used for cloud FPGA platforms, and SDSoC is used for embedded FPGA platforms. Our designs have been tested on the AWS f1.2xlarge instance and a local ZC706 evaluation kit. Major results are as follows. For more results please refer to [our FPGA'18 paper][1]. ### Rosetta results on ZC706 | Benchmark | #LUTs | #FFs | #BRAMs | #DSPs | Runtime (ms) | Throughput | |:---------:|:-----:|:----:|:-----:|:------:|:------------:|:----------:| |3D Rendering|8893|12471|48|11|4.7|213 frames/s| |Digit Recognition1|41238|26468|338|1|10.6|189k digits/s| |Spam Filtering2|12678|22134|69|224|60.8|370k samples/s| |Optical Flow|42878|61078|54|454|24.3|41.2 frames/s| |BNN3|46899|46760|102|4|4995.2|200 images/s| |Face Detection|62688|83804|121|79|33.0|30.3 frames/s| 1: K=3, `PAR_FACTOR`=40. 2: Five epochs, `PAR_FACTOR`=32, `VDWIDTH`=64. 3: Eight convolvers, 1000 test images. ### Rosetta results on AWS F1 | Benchmark | #LUTs | #FFs | #BRAMs | #DSPs | Runtime (ms) | Throughput | Performance-cost Ratio | |:---------:|:-----:|:----:|:-----:|:------:|:------------:|:----------:|:----------------------:| |3D Rendering|6763|7916|36|11|4.4|227 frames/s|496k frames/$| |Digit Recognition1|39971|33853|207|0|11.1|180k digits/s|393M digits/$| |Spam Filtering2|7207|17434|90|224|25.1|728k samples/s|1.6G samples/$| |Optical Flow|38094|63438|55|484|8.4|119 frames/s|260k frames/$| |Face Detection|48217|54206|92|72|21.5|46.5 frames/s|101k frames/$| 1: K=3, `PAR_FACTOR`=40. 2: Five epochs, `PAR_FACTOR`=32, `VDWIDTH`=512. ## Applications ------------------------------------------------------------------------------------------- 1. 3D rendering; 2. Digit recognition; 3. Spam filtering; 4. Optical flow; 5. Binarized neural network, adopted from [our open-source BNN implementation][2]; 6. Face detection, adopted from [our open-source Haar face detection implementation][3]. [2]: https://github.com/cornell-zhang/bnn-fpga [3]: https://github.com/cornell-zhang/facedetect-fpga ## Code Structure ------------------------------------------------------------------------------------------- The `harness` directory contains the wrapper code for OpenCL APIs, as well as the main makefile. The `src` directory contains the source code for CPU host function (`host`), software implementation (`sw`), sdsoc hardware function implementation (`sdsoc`), and sdaccel hardware function implementation (`ocl`). Each benchmark has its own makefile specifying the paths to necessary source files. ## Usage ------------------------------------------------------------------------------------------- ### BNN The `BNN` folder is currently a copy of the original [BNN repo][2] by Zhao et.al. For instructions on how to simulate and compile the design please refer to the README file inside the folder. ### SDAccel compilation steps: 1. Figure out your target platform. SDAccel only supports a limited number of platforms. The code for your target platform can be found from the SDAccel user guide, or any other materials provided by the platform vendor. SDAccel also supports using custom platforms which are not integrated yet. A platform specification file (usually has the extension `.xpfm`) is needed to describe the target platform. 2. Go into any benchmark folder. 3. To compile for software emulation and get a quick latency estimate, do `make ocl OCL_TARGET=sw_emu`. The report `system_estimate.xtxt` shows latency and resource estimate after high-level synthesis. If only a software model is needed, comment out `--report estimate` from the local makefile. Compilation time will significantly decrease. 4. To compile for hardware emulation, do `make ocl OCL_TARGET=hw_emu`. 5. To compile for bitstream and actually execute on the board, do `make ocl OCL_TARGET=hw`. 6. Target platform can be specified with the `OCL_DEVICE` variable. Default is Alpha Data 7v3 board. For example, to target the Alpha Data KU3 board and generate bitstream, do `make ocl OCL_TARGET=hw OCL_DEVICE=xilinx:adm-pcie-ku3:2ddr-xpr:4.0`. To use a custom platform, specify its path with the `OCL_PLATFORM` variable. For example, to generate bitstream for a custom platform, do `make ocl OCL_TARGET=hw OCL_PLATFORM=`. Also remember to change the target device string in `host/typedefs.h`. 7. To run simulation, please run `make emu_setup OCL_PLATFORM=` to create the `.json` file used by the Xilinx OpenCL runtime. Then, set the `XCL_EMULATION_MODE` environment variable to `sw_emu` if you want to run software simulation, or `hw_emu` for hardware simulation. More details can be found from the Xilinx SDx Command and Utility Reference Guide (UG1279). 8. For instructions on how to run the applications, please refer to the READMEs in the benchmark folders. ### SDAccel on AWS After finishing the required setup steps on AWS, follow above steps with following differences: 1. Use the option `OCL_PLATFORM=$AWS_PLATFORM`. The environment variable `AWS_PLATFORM` specifies the location of the AWS platform file. 2. In `host/typedefs.h` set `TARGET_DEVICE = "xilinx:aws-vu9p-f1:4ddr-xpr-2pr:4.0"`. 3. When running the application, choose the `.awsxclbin` bitstream file instead of `.xclbin`. ### SDSoC compilation steps: 1. Go into any benchmark folder. 2. Do `make sdsoc`. 3. The target platform is now hard-coded in the makefiles. All benchmarks currently target the ZC706 platform. ### Software compilation steps: 1. Go into any benchmark folder. 2. Do `make sw`. ### Run the applications: Please refer to the README files in the corresponding application folder for instructions. ## Find compatible AMI on AWS ------------------------------------------------------------------------------------------- Our repo now supports the latest version of the AWS FPGA AWI (version 1.7.0). Please try it out. Bug reports are welcome. ================================================ FILE: digit-recognition/Makefile ================================================ # Set kernel name KERNEL_NAME = DigitRec # Set host source and headers HOST_SRC_CPP = ./src/host/digit_recognition.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/testing_data.h \ ./src/host/training_data.h DATA = ./196data/*.dat # Set host code include paths HOST_INC = HOST_LIB = # Set kernel file OCL_KERNEL_SRC = ./src/ocl/digitrec.cl OCL_KERNEL_H = ./src/host/typedefs.h SDSOC_KERNEL_SRC = ./src/sdsoc/digitrec.cpp SDSOC_KERNEL_H = ./src/host/typedefs.h SW_KERNEL_SRC = ./src/sw/digitrec_sw.cpp SW_KERNEL_H = ./src/host/typedefs.h ./src/sw/digitrec_sw.h # Set opencl kernel arguments OCL_KERNEL_ARGS = --max_memory_ports all --report system -I$(shell pwd)/src/ #------------------------- # Leave the rest to harness #------------------------- include ../harness/harness.mk ================================================ FILE: digit-recognition/README.md ================================================ # Digit Recognition ## Description This design classifies hand-written digits using the K-Nearest-Neighbor (KNN) algorithm. The hardware accelerator compares the test instance with all training instances, and votes between the K nearest neighbors to get a final classification result. The images of training and test instances are binarized so we can exploit bit-level parallelism on the FPGA. The `196data` directory contains a binarized, downsampled subset of the MNIST database. ## Major Optimizations This application only uses the basic loop unrolling, pipelining and array partitioning optimizations to improve performance. However, comparing with the software baseline, the code goes through significant restructuring to enable these optimization opportunities. A separate array is created to hold the results of the concurrent comparisons. ## Usage ### SDAccel To execute or simulate the design, do `./Digitrec_host.exe -f ` ### SDSoC To run design on the board, do `./DigitRec.elf` ### Software To run software model, do `./DigitRec_sw.exe` ## Known Issues 1. In `src/ocl/digitrec.cl`, the last `async_work_group_copy` can not be properly pipelined. 2. The `knn_vote` function must be manually inlined for the tool to correctly pipeline `TRAINING_LOOP` and not try to pipeline `TEST_LOOP`. ================================================ FILE: digit-recognition/outputs_golden.txt ================================================ Test 133: expected = 0, result = 6 Test 160: expected = 0, result = 6 Test 223: expected = 1, result = 4 Test 261: expected = 1, result = 2 Test 290: expected = 1, result = 8 Test 370: expected = 1, result = 6 Test 385: expected = 1, result = 6 Test 400: expected = 2, result = 8 Test 407: expected = 2, result = 3 Test 416: expected = 2, result = 1 Test 432: expected = 2, result = 0 Test 442: expected = 2, result = 1 Test 453: expected = 2, result = 7 Test 483: expected = 2, result = 7 Test 525: expected = 2, result = 8 Test 543: expected = 2, result = 1 Test 554: expected = 2, result = 1 Test 563: expected = 2, result = 1 Test 567: expected = 2, result = 6 Test 586: expected = 2, result = 3 Test 594: expected = 2, result = 8 Test 600: expected = 3, result = 5 Test 612: expected = 3, result = 2 Test 618: expected = 3, result = 7 Test 627: expected = 3, result = 5 Test 670: expected = 3, result = 5 Test 692: expected = 3, result = 5 Test 708: expected = 3, result = 9 Test 715: expected = 3, result = 6 Test 722: expected = 3, result = 1 Test 725: expected = 3, result = 8 Test 730: expected = 3, result = 1 Test 745: expected = 3, result = 9 Test 749: expected = 3, result = 5 Test 760: expected = 3, result = 5 Test 787: expected = 3, result = 1 Test 804: expected = 4, result = 9 Test 826: expected = 4, result = 8 Test 845: expected = 4, result = 9 Test 849: expected = 4, result = 9 Test 864: expected = 4, result = 9 Test 897: expected = 4, result = 1 Test 902: expected = 4, result = 9 Test 955: expected = 4, result = 9 Test 968: expected = 4, result = 6 Test 995: expected = 4, result = 9 Test 1008: expected = 5, result = 6 Test 1017: expected = 5, result = 1 Test 1030: expected = 5, result = 3 Test 1038: expected = 5, result = 8 Test 1040: expected = 5, result = 3 Test 1080: expected = 5, result = 3 Test 1098: expected = 5, result = 8 Test 1118: expected = 5, result = 1 Test 1119: expected = 5, result = 7 Test 1142: expected = 5, result = 1 Test 1147: expected = 5, result = 3 Test 1173: expected = 5, result = 9 Test 1177: expected = 5, result = 3 Test 1188: expected = 5, result = 6 Test 1206: expected = 6, result = 4 Test 1251: expected = 6, result = 0 Test 1253: expected = 6, result = 0 Test 1288: expected = 6, result = 0 Test 1425: expected = 7, result = 9 Test 1455: expected = 7, result = 1 Test 1488: expected = 7, result = 1 Test 1497: expected = 7, result = 9 Test 1514: expected = 7, result = 9 Test 1570: expected = 7, result = 9 Test 1594: expected = 7, result = 1 Test 1605: expected = 8, result = 5 Test 1608: expected = 8, result = 7 Test 1609: expected = 8, result = 1 Test 1612: expected = 8, result = 9 Test 1615: expected = 8, result = 2 Test 1628: expected = 8, result = 6 Test 1644: expected = 8, result = 1 Test 1646: expected = 8, result = 5 Test 1649: expected = 8, result = 3 Test 1654: expected = 8, result = 4 Test 1656: expected = 8, result = 5 Test 1671: expected = 8, result = 5 Test 1675: expected = 8, result = 5 Test 1677: expected = 8, result = 0 Test 1678: expected = 8, result = 7 Test 1684: expected = 8, result = 9 Test 1685: expected = 8, result = 3 Test 1692: expected = 8, result = 1 Test 1695: expected = 8, result = 5 Test 1704: expected = 8, result = 3 Test 1710: expected = 8, result = 9 Test 1714: expected = 8, result = 3 Test 1717: expected = 8, result = 1 Test 1725: expected = 8, result = 5 Test 1748: expected = 8, result = 4 Test 1751: expected = 8, result = 7 Test 1758: expected = 8, result = 9 Test 1766: expected = 8, result = 7 Test 1767: expected = 8, result = 4 Test 1768: expected = 8, result = 1 Test 1772: expected = 8, result = 9 Test 1780: expected = 8, result = 9 Test 1794: expected = 8, result = 3 Test 1797: expected = 8, result = 1 Test 1805: expected = 9, result = 3 Test 1813: expected = 9, result = 7 Test 1829: expected = 9, result = 4 Test 1865: expected = 9, result = 0 Test 1878: expected = 9, result = 8 Test 1885: expected = 9, result = 2 Test 1895: expected = 9, result = 7 Test 1901: expected = 9, result = 4 Test 1904: expected = 9, result = 5 Test 1924: expected = 9, result = 4 Test 1939: expected = 9, result = 4 Test 1941: expected = 9, result = 7 Test 1955: expected = 9, result = 4 Test 1966: expected = 9, result = 4 Test 1982: expected = 9, result = 3 Test 1989: expected = 9, result = 4 Test 1997: expected = 9, result = 7 1878 / 2000 correct! ================================================ FILE: digit-recognition/src/host/check_result.cpp ================================================ /*===============================================================*/ /* */ /* check_result.cpp */ /* */ /* Software evaluation of training and test error rate */ /* */ /*===============================================================*/ #include #include "typedefs.h" #include #include void check_results(LabelType* result, const LabelType* expected, int cnt) { int correct_cnt = 0; std::ofstream ofile; ofile.open("outputs.txt"); if (ofile.is_open()) { for (int i = 0; i < cnt; i ++ ) { if (result[i] != expected[i]) ofile << "Test " << i << ": expected = " << int(expected[i]) << ", result = " << int(result[i]) << std::endl; else correct_cnt ++; } ofile << "\n\t " << correct_cnt << " / " << cnt << " correct!" << std::endl; ofile.close(); } else { std::cout << "Failed to create output file!" << std::endl; } } ================================================ FILE: digit-recognition/src/host/check_result.h ================================================ /*===============================================================*/ /* */ /* check_result.h */ /* */ /* Compare result and expected label to get error rate */ /* */ /*===============================================================*/ void check_results(LabelType* result, const LabelType* expected, int cnt); ================================================ FILE: digit-recognition/src/host/digit_recognition.cpp ================================================ /*===============================================================*/ /* */ /* digit_recognition.cpp */ /* */ /* Main host function for the Digit Recognition application. */ /* */ /*===============================================================*/ // standard C/C++ headers #include #include #include #include #include #include #ifdef OCL // opencl 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/digitrec.h" #endif #ifdef SW # include "../sw/digitrec_sw.h" #endif // other headers #include "utils.h" #include "typedefs.h" #include "check_result.h" // data #include "training_data.h" #include "testing_data.h" int main(int argc, char ** argv) { printf("Digit Recognition Application\n"); #ifdef OCL // parse command line arguments for opencl version std::string kernelFile(""); parse_sdaccel_command_line_args(argc, argv, kernelFile); #endif // sw and sdsoc version have no additional command line arguments // for this benchmark, data is already included in arrays: // training_data: contains 18000 training samples, with 1800 samples for each digit class // testing_data: contains 2000 test samples // expected: contains labels for the test samples // timers struct timeval start, end; // opencl version host code #ifdef OCL // create space for the result LabelType* result = new LabelType[NUM_TEST]; // create OpenCL world CLWorld digit_rec_world = CLWorld(TARGET_DEVICE, CL_DEVICE_TYPE_ACCELERATOR); // add the bitstream file digit_rec_world.addProgram(kernelFile); // create kernels CLKernel DigitRec(digit_rec_world.getContext(), digit_rec_world.getProgram(), "DigitRec", digit_rec_world.getDevice()); // create mem objects CLMemObj training_mem ( (void*)training_data, sizeof(DigitType), NUM_TRAINING * DIGIT_WIDTH, CL_MEM_READ_ONLY); CLMemObj testing_mem ( (void*)testing_data , sizeof(DigitType), NUM_TEST * DIGIT_WIDTH, CL_MEM_READ_ONLY); CLMemObj result_mem ( (void*)result , sizeof(LabelType), NUM_TEST, 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 digit_rec_world.addMemObj(training_mem); digit_rec_world.addMemObj(testing_mem); digit_rec_world.addMemObj(result_mem); // set work size int global_size[3] = {1, 1, 1}; int local_size[3] = {1, 1, 1}; DigitRec.set_global(global_size); DigitRec.set_local(local_size); // add them to the world digit_rec_world.addKernel(DigitRec); // set kernel arguments digit_rec_world.setMemKernelArg(0, 0, 0); digit_rec_world.setMemKernelArg(0, 1, 1); digit_rec_world.setMemKernelArg(0, 2, 2); // run! digit_rec_world.runKernels(); // read the data back digit_rec_world.readMemObj(2); // end timer gettimeofday(&end, 0); #endif // sdsoc version host code #ifdef SDSOC // allocate space for hardware function WholeDigitType* training_in0 = (WholeDigitType*)sds_alloc(sizeof(WholeDigitType) * NUM_TRAINING / 2); WholeDigitType* training_in1 = (WholeDigitType*)sds_alloc(sizeof(WholeDigitType) * NUM_TRAINING / 2); WholeDigitType* test_in = (WholeDigitType*)sds_alloc(sizeof(WholeDigitType) * NUM_TEST); // pack the data into a wide datatype for (int i = 0; i < NUM_TRAINING / 2; i ++ ) { training_in0[i].range(63 , 0 ) = training_data[i*DIGIT_WIDTH+0]; training_in0[i].range(127, 64 ) = training_data[i*DIGIT_WIDTH+1]; training_in0[i].range(191, 128) = training_data[i*DIGIT_WIDTH+2]; training_in0[i].range(255, 192) = training_data[i*DIGIT_WIDTH+3]; } for (int i = 0; i < NUM_TRAINING / 2; i ++ ) { training_in1[i].range(63 , 0 ) = training_data[(NUM_TRAINING / 2 + i)*DIGIT_WIDTH+0]; training_in1[i].range(127, 64 ) = training_data[(NUM_TRAINING / 2 + i)*DIGIT_WIDTH+1]; training_in1[i].range(191, 128) = training_data[(NUM_TRAINING / 2 + i)*DIGIT_WIDTH+2]; training_in1[i].range(255, 192) = training_data[(NUM_TRAINING / 2 + i)*DIGIT_WIDTH+3]; } for (int i = 0; i < NUM_TEST; i ++ ) { test_in[i].range(63 , 0 ) = testing_data[i*DIGIT_WIDTH+0]; test_in[i].range(127, 64 ) = testing_data[i*DIGIT_WIDTH+1]; test_in[i].range(191, 128) = testing_data[i*DIGIT_WIDTH+2]; test_in[i].range(255, 192) = testing_data[i*DIGIT_WIDTH+3]; } // create space for result LabelType* result = (LabelType*)sds_alloc(sizeof(LabelType) * NUM_TEST); // run the hardware function // first call: transfer data DigitRec(training_in0, test_in, result, 0); // second call: execute gettimeofday(&start, NULL); DigitRec(training_in1, test_in, result, 1); gettimeofday(&end, NULL); #endif // sw version host code #ifdef SW // create space for the result LabelType* result = new LabelType[NUM_TEST]; // software version gettimeofday(&start, NULL); DigitRec_sw(training_data, testing_data, result); gettimeofday(&end, NULL); #endif // check results printf("Checking results:\n"); check_results( result, expected, NUM_TEST ); // 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 digit_rec_world.releaseWorld(); delete []result; #endif #ifdef SDSOC sds_free(training_in0); sds_free(training_in1); sds_free(test_in); sds_free(result); #endif #ifdef SW delete []result; #endif return EXIT_SUCCESS; } ================================================ FILE: digit-recognition/src/host/testing_data.h ================================================ /*===============================================================*/ /* */ /* testing_data.h */ /* */ /* Constant array for test instances. */ /* */ /*===============================================================*/ #ifndef TESTING_DATA_H #define TESTING_DATA_H const DigitType testing_data[NUM_TEST * DIGIT_WIDTH] = { #include "../../196data/test_set.dat" }; const LabelType expected[NUM_TEST] = { #include "../../196data/expected.dat" }; #endif ================================================ FILE: digit-recognition/src/host/training_data.h ================================================ /*===============================================================*/ /* */ /* training_data.h */ /* */ /* Constant array for training instances. */ /* */ /*===============================================================*/ #ifndef TRAINING_DATA_H #define TRAINING_DATA_H const DigitType training_data[NUM_TRAINING * DIGIT_WIDTH] = { #include "../../196data/training_set_0.dat" #include "../../196data/training_set_1.dat" #include "../../196data/training_set_2.dat" #include "../../196data/training_set_3.dat" #include "../../196data/training_set_4.dat" #include "../../196data/training_set_5.dat" #include "../../196data/training_set_6.dat" #include "../../196data/training_set_7.dat" #include "../../196data/training_set_8.dat" #include "../../196data/training_set_9.dat" }; #endif ================================================ FILE: digit-recognition/src/host/typedefs.h ================================================ /*===============================================================*/ /* */ /* typedefs.h */ /* */ /* Constant definitions and typedefs for host. */ /* */ /*===============================================================*/ #ifndef __TYPEDEFS_H__ #define __TYPEDEFS_H__ // dataset information #define NUM_TRAINING 18000 #define CLASS_SIZE 1800 #define NUM_TEST 2000 #define DIGIT_WIDTH 4 // typedefs typedef unsigned long long DigitType; typedef unsigned char LabelType; #ifdef OCL #include // target device // change here to map to a different device const std::string TARGET_DEVICE = "xilinx_aws-vu9p-f1-04261818_dynamic_5_0"; #endif #ifdef SDSOC #include "ap_int.h" // sdsoc wide vector type typedef ap_uint<256> WholeDigitType; #endif // parameters #define K_CONST 3 #define PAR_FACTOR 40 #endif ================================================ FILE: digit-recognition/src/host/utils.cpp ================================================ /*===============================================================*/ /* */ /* utils.cpp */ /* */ /* Utility functions */ /* */ /*===============================================================*/ #include #include #include #include #include "utils.h" void print_usage(char* filename) { printf("usage: %s \n", filename); printf(" -f [kernel file]\n"); } void parse_sdaccel_command_line_args( int argc, char** argv, std::string& kernelFile) { int c = 0; while ((c = getopt(argc, argv, "f:")) != -1) { switch (c) { case 'f': kernelFile = optarg; break; default: { print_usage(argv[0]); exit(-1); } } // matching on arguments } // while args present } ================================================ FILE: digit-recognition/src/host/utils.h ================================================ /*===============================================================*/ /* */ /* utils.h */ /* */ /* Utility functions */ /* */ /*===============================================================*/ void print_usage(char* filename); void parse_sdaccel_command_line_args( int argc, char** argv, std::string& kernelFile); ================================================ FILE: digit-recognition/src/ocl/digitrec.cl ================================================ /*===============================================================*/ /* */ /* digitrec.cl */ /* */ /* Hardware function for digit recognition */ /* */ /*===============================================================*/ #include "host/typedefs.h" // ocl wide vector type typedef ulong4 WholeDigitType; // 64-bit popcount function int popcount64(unsigned long x) { // most straightforward implementation // actually not bad on FPGA int cnt = 0; unsigned long number = x; for (int i = 0; i < 64; i ++ ) { cnt = cnt + (number & 0x1); number = number >> 1; } return cnt; } // Given the test instance and a (new) training instance, this // function maintains/updates an array of K minimum // distances per training set. void update_knn( WholeDigitType test_inst, WholeDigitType train_inst, int min_distances[K_CONST] ) { // Compute the difference using XOR WholeDigitType diff = test_inst ^ train_inst; int dist = 0; // call popcount functions to compute hamming distance dist = popcount64(diff.x) + popcount64(diff.y) + popcount64(diff.z) + popcount64(diff.w); int max_dist = 0; int max_dist_id = K_CONST+1; int k = 0; // Find the max distance FIND_MAX_DIST: for ( int k = 0; k < K_CONST; ++k ) { if ( min_distances[k] > max_dist ) { max_dist = min_distances[k]; max_dist_id = k; } } // Replace the entry with the max distance if ( dist < max_dist ) min_distances[max_dist_id] = dist; return; } // Given 10xK minimum distance values, this function // finds the actual K nearest neighbors and determines the // final output based on the most common int represented by // these nearest neighbors (i.e., a vote among KNNs). LabelType knn_vote( int knn_set[PAR_FACTOR * K_CONST] ) { // local buffers // final K nearest neighbors int min_distance_list[K_CONST] __attribute__((xcl_array_partition(complete, 1))); // labels of the final K nearest neighbors int label_list[K_CONST] __attribute__((xcl_array_partition(complete, 1))); // voting boxes int vote_list[10] __attribute__((xcl_array_partition(complete, 1))); int pos = 1000; // initialize __attribute__((opencl_unroll_hint)) INIT_1: for (int i = 0;i < K_CONST; i ++ ) { min_distance_list[i] = 256; label_list[i] = 9; } __attribute__((opencl_unroll_hint)) INIT_2: for (int i = 0;i < 10; i ++ ) { vote_list[i] = 0; } // go through all the lanes // do an insertion sort to keep a sorted neighbor list LANES: for (int i = 0; i < PAR_FACTOR; i ++ ) { INSERTION_SORT_OUTER: for (int j = 0; j < K_CONST; j ++ ) { pos = 1000; INSERTION_SORT_INNER: for (int r = 0; r < K_CONST; r ++ ) { pos = ((knn_set[i*K_CONST+j] < min_distance_list[r]) && (pos > K_CONST)) ? r : pos; } INSERT: for (int r = K_CONST ;r > 0; r -- ) { if(r-1 > pos) { min_distance_list[r-1] = min_distance_list[r-2]; label_list[r-1] = label_list[r-2]; } else if (r-1 == pos) { min_distance_list[r-1] = knn_set[i*K_CONST+j]; label_list[r-1] = i / (PAR_FACTOR / 10); } } } } // vote INCREMENT: for (int i = 0;i < K_CONST; i ++ ) vote_list[label_list[i]] += 1; LabelType max_vote; max_vote = 0; // find the maximum value __attribute__((opencl_unroll_hint)) VOTE: for (int i = 0;i < 10; i ++ ) { if(vote_list[i] >= vote_list[max_vote]) { max_vote = i; } } return max_vote; } // top-level function __attribute__ ((reqd_work_group_size(1, 1, 1))) __kernel void DigitRec(__global WholeDigitType * global_training_set, __global WholeDigitType * global_test_set, __global LabelType* global_results) { event_t results_copy; event_t data_copy[2]; // This array stores K minimum distances per training set int knn_set[PAR_FACTOR * K_CONST] __attribute__((xcl_array_partition(complete, 1))); // local copies of arrays __local WholeDigitType training_set [NUM_TRAINING] __attribute__((xcl_array_partition(block, PAR_FACTOR, 1))); __local WholeDigitType test_set [NUM_TEST]; __local LabelType results [NUM_TEST]; data_copy[0] = async_work_group_copy(training_set, global_training_set, NUM_TRAINING, 0); data_copy[1] = async_work_group_copy(test_set, global_test_set, NUM_TEST, 0); wait_group_events(2, data_copy); // loop through test set TEST_LOOP: for (int t = 0; t < NUM_TEST; ++t) { // fetch one instance WholeDigitType test_instance = test_set[t]; // Initialize the knn set __attribute__((opencl_unroll_hint)) SET_KNN_SET: for ( int i = 0; i < K_CONST * PAR_FACTOR ; ++i ) { // Note that the max distance is 256 knn_set[i] = 256; } __attribute__((xcl_pipeline_loop)) TRAINING_LOOP : for ( int i = 0; i < NUM_TRAINING / PAR_FACTOR; ++i ) { __attribute__((opencl_unroll_hint)) LANES1 : for ( int j = 0; j < PAR_FACTOR; j++ ) { // Read a new instance from the training set WholeDigitType training_instance = training_set[j * NUM_TRAINING / PAR_FACTOR + i]; // Update the KNN set update_knn( test_instance, training_instance, &knn_set[j * K_CONST] ); } } //START INLINED KNN_VOTE // local buffers // final K nearest neighbors int min_distance_list[K_CONST] __attribute__((xcl_array_partition(complete, 1))); // labels of the final K nearest neighbors int label_list[K_CONST] __attribute__((xcl_array_partition(complete, 1))); // voting boxes int vote_list[10] __attribute__((xcl_array_partition(complete, 1))); int pos = 1000; // initialize __attribute__((opencl_unroll_hint)) INIT_1: for (int i = 0;i < K_CONST; i ++ ) { min_distance_list[i] = 256; label_list[i] = 9; } __attribute__((opencl_unroll_hint)) INIT_2: for (int i = 0;i < 10; i ++ ) { vote_list[i] = 0; } // go through all the lanes // do an insertion sort to keep a sorted neighbor list LANES: for (int i = 0; i < PAR_FACTOR; i ++ ) { INSERTION_SORT_OUTER: for (int j = 0; j < K_CONST; j ++ ) { pos = 1000; INSERTION_SORT_INNER: for (int r = 0; r < K_CONST; r ++ ) { pos = ((knn_set[i*K_CONST+j] < min_distance_list[r]) && (pos > K_CONST)) ? r : pos; } INSERT: for (int r = K_CONST ;r > 0; r -- ) { if(r-1 > pos) { min_distance_list[r-1] = min_distance_list[r-2]; label_list[r-1] = label_list[r-2]; } else if (r-1 == pos) { min_distance_list[r-1] = knn_set[i*K_CONST+j]; label_list[r-1] = i / (PAR_FACTOR / 10); } } } } // vote INCREMENT: for (int i = 0;i < K_CONST; i ++ ) vote_list[label_list[i]] += 1; LabelType max_vote; max_vote = 0; // find the maximum value __attribute__((opencl_unroll_hint)) VOTE: for (int i = 0;i < 10; i ++ ) { if(vote_list[i] >= vote_list[max_vote]) { max_vote = i; } } //END INLINED KNN VOTE results[t] = max_vote; } // copy classification results back results_copy = async_work_group_copy(global_results, results, NUM_TEST, 0); wait_group_events(1, &results_copy); } ================================================ FILE: digit-recognition/src/sdsoc/digitrec.cpp ================================================ /*===============================================================*/ /* */ /* digitrec.cpp */ /* */ /* Hardware function for digit recognition */ /* */ /*===============================================================*/ #include "../host/typedefs.h" // popcount function int popcount(WholeDigitType x) { // most straightforward implementation // actually not bad on FPGA int cnt = 0; for (int i = 0; i < 256; i ++ ) cnt = cnt + x[i]; return cnt; } // Given the test instance and a (new) training instance, this // function maintains/updates an array of K minimum // distances per training set. void update_knn( WholeDigitType test_inst, WholeDigitType train_inst, int min_distances[K_CONST] ) { #pragma HLS inline // Compute the difference using XOR WholeDigitType diff = test_inst ^ train_inst; int dist = 0; dist = popcount(diff); int max_dist = 0; int max_dist_id = K_CONST+1; int k = 0; // Find the max distance FIND_MAX_DIST: for ( int k = 0; k < K_CONST; ++k ) { if ( min_distances[k] > max_dist ) { max_dist = min_distances[k]; max_dist_id = k; } } // Replace the entry with the max distance if ( dist < max_dist ) min_distances[max_dist_id] = dist; return; } // Given 10xK minimum distance values, this function // finds the actual K nearest neighbors and determines the // final output based on the most common int represented by // these nearest neighbors (i.e., a vote among KNNs). LabelType knn_vote( int knn_set[PAR_FACTOR * K_CONST] ) { #pragma HLS inline // local buffers // final K nearest neighbors int min_distance_list[K_CONST]; #pragma HLS array_partition variable=min_distance_list complete dim=0 // labels for the K nearest neighbors int label_list[K_CONST]; #pragma HLS array_partition variable=label_list complete dim=0 // voting boxes int vote_list[10]; #pragma HLS array_partition variable=vote_list complete dim=0 int pos = 1000; // initialize INIT_1: for (int i = 0;i < K_CONST; i ++ ) { #pragma HLS unroll min_distance_list[i] = 256; label_list[i] = 9; } INIT_2: for (int i = 0;i < 10; i ++ ) { #pragma HLS unroll vote_list[i] = 0; } // go through all the lanes // do an insertion sort to keep a sorted neighbor list LANES: for (int i = 0; i < PAR_FACTOR; i ++ ) { INSERTION_SORT_OUTER: for (int j = 0; j < K_CONST; j ++ ) { #pragma HLS pipeline pos = 1000; INSERTION_SORT_INNER: for (int r = 0; r < K_CONST; r ++ ) { #pragma HLS unroll pos = ((knn_set[i*K_CONST+j] < min_distance_list[r]) && (pos > K_CONST)) ? r : pos; } INSERT: for (int r = K_CONST ;r > 0; r -- ) { #pragma HLS unroll if(r-1 > pos) { min_distance_list[r-1] = min_distance_list[r-2]; label_list[r-1] = label_list[r-2]; } else if (r-1 == pos) { min_distance_list[r-1] = knn_set[i*K_CONST+j]; label_list[r-1] = i / (PAR_FACTOR / 10); } } } } // vote INCREMENT: for (int i = 0;i < K_CONST; i ++ ) { #pragma HLS pipeline vote_list[label_list[i]] += 1; } LabelType max_vote; max_vote = 0; // find the maximum value VOTE: for (int i = 0;i < 10; i ++ ) { #pragma HLS unroll if(vote_list[i] >= vote_list[max_vote]) { max_vote = i; } } return max_vote; } // top-level hardware function // since AXIDMA_SIMPLE interface does not support arrays with size more than 16384 on interface // we call this function twice to transfer data void DigitRec(WholeDigitType global_training_set[NUM_TRAINING / 2], WholeDigitType global_test_set[NUM_TEST], LabelType global_results[NUM_TEST], int run) { // This array stores K minimum distances per training set int knn_set[PAR_FACTOR * K_CONST]; #pragma HLS array_partition variable=knn_set complete dim=0 static WholeDigitType training_set [NUM_TRAINING]; // to be used in a pragma const int unroll_factor = PAR_FACTOR; #pragma HLS array_partition variable=training_set block factor=unroll_factor dim=0 static WholeDigitType test_set [NUM_TEST]; static LabelType results [NUM_TEST]; // the first time, just do data transfer and return if (run == 0) { // copy the training set for the first time for (int i = 0; i < NUM_TRAINING / 2; i ++ ) #pragma HLS pipeline training_set[i] = global_training_set[i]; return; } // for the second time for (int i = 0; i < NUM_TRAINING / 2; i ++ ) #pragma HLS pipeline training_set[i + NUM_TRAINING / 2] = global_training_set[i]; // copy the test set for (int i = 0; i < NUM_TEST; i ++ ) #pragma HLS pipeline test_set[i] = global_test_set[i]; // loop through test set TEST_LOOP: for (int t = 0; t < NUM_TEST; ++t) { // fetch one instance WholeDigitType test_instance = test_set[t]; // Initialize the knn set SET_KNN_SET: for ( int i = 0; i < K_CONST * PAR_FACTOR ; ++i ) { #pragma HLS unroll // Note that the max distance is 256 knn_set[i] = 256; } TRAINING_LOOP : for ( int i = 0; i < NUM_TRAINING / PAR_FACTOR; ++i ) { #pragma HLS pipeline LANES : for ( int j = 0; j < PAR_FACTOR; j++ ) { #pragma HLS unroll // Read a new instance from the training set WholeDigitType training_instance = training_set[j * NUM_TRAINING / PAR_FACTOR + i]; // Update the KNN set update_knn( test_instance, training_instance, &knn_set[j * K_CONST] ); } } // Compute the final output LabelType max_vote = knn_vote(knn_set); results[t] = max_vote; } // copy the results out for (int i = 0; i < NUM_TEST; i ++ ) #pragma HLS pipeline global_results[i] = results[i]; } ================================================ FILE: digit-recognition/src/sdsoc/digitrec.h ================================================ /*===============================================================*/ /* */ /* digitrec.h */ /* */ /* Hardware function for digit recognition */ /* */ /*===============================================================*/ #include "../host/typedefs.h" #pragma SDS data mem_attribute(global_training_set:PHYSICAL_CONTIGUOUS, global_test_set:PHYSICAL_CONTIGUOUS, global_results:PHYSICAL_CONTIGUOUS) #pragma SDS data data_mover(global_training_set:AXIDMA_SIMPLE, global_test_set:AXIDMA_SIMPLE, global_results:AXIDMA_SIMPLE) void DigitRec(WholeDigitType global_training_set[NUM_TRAINING / 2], WholeDigitType global_test_set[NUM_TEST], LabelType global_results[NUM_TEST], int run); ================================================ FILE: digit-recognition/src/sw/digitrec_sw.cpp ================================================ /*===============================================================*/ /* */ /* digitrec_sw.cpp */ /* */ /* Software version for digit recognition */ /* */ /*===============================================================*/ #include "digitrec_sw.h" // types and constants used in the functions below const unsigned long long m1 = 0x5555555555555555; //binary: 0101... const unsigned long long m2 = 0x3333333333333333; //binary: 00110011.. const unsigned long long m4 = 0x0f0f0f0f0f0f0f0f; //binary: 4 zeros, 4 ones ... // popcount function // source: wikipedia (https://en.wikipedia.org/wiki/Hamming_weight) int popcount(DigitType x) { x -= (x >> 1) & m1; //put count of each 2 bits into those 2 bits x = (x & m2) + ((x >> 2) & m2); //put count of each 4 bits into those 4 bits x = (x + (x >> 4)) & m4; //put count of each 8 bits into those 8 bits x += x >> 8; //put count of each 16 bits into their lowest 8 bits x += x >> 16; //put count of each 32 bits into their lowest 8 bits x += x >> 32; //put count of each 64 bits into their lowest 8 bits return x & 0x7f; } void update_knn( const DigitType* train_inst, const DigitType* test_inst, int dists[K_CONST], int labels[K_CONST], int label ) { int dist = 0; for (int i = 0; i < DIGIT_WIDTH; i ++ ) { DigitType diff = test_inst[i] ^ train_inst[i]; dist += popcount(diff); } int max_dist = 0; int max_dist_id = K_CONST+1; // Find the max distance FIND_MAX_DIST: for ( int k = 0; k < K_CONST; ++k ) { if ( dists[k] > max_dist ) { max_dist = dists[k]; max_dist_id = k; } } // Replace the entry with the max distance if ( dist < max_dist ) { dists[max_dist_id] = dist; labels[max_dist_id] = label; } return; } LabelType knn_vote(int labels[K_CONST]) { int max_vote = 0; LabelType max_label = 0; int votes[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; for (int i = 0; i < K_CONST; i ++ ) votes[labels[i]] ++; for (int i = 0; i < 10; i ++ ) { if (votes[i] > max_vote) { max_vote = votes[i]; max_label = i; } } return max_label; } // sw top function void DigitRec_sw(const DigitType training_set[NUM_TRAINING * DIGIT_WIDTH], const DigitType test_set[NUM_TEST * DIGIT_WIDTH], LabelType results[NUM_TEST]) { // nearest neighbor set int dists[K_CONST]; int labels[K_CONST]; // loop through test set TEST_LOOP: for (int t = 0; t < NUM_TEST; ++t) { // Initialize the neighbor set SET_KNN_SET: for ( int i = 0; i < K_CONST; ++i ) { // Note that the max distance is 256 dists[i] = 256; labels[i] = 0; } // for each training instance, compare it with the test instance, and update the nearest neighbor set TRAINING_LOOP : for ( int i = 0; i < NUM_TRAINING; ++i ) update_knn(&training_set[i * DIGIT_WIDTH], &test_set[t * DIGIT_WIDTH], dists, labels, i / CLASS_SIZE); // Compute the final output LabelType max_vote = knn_vote(labels); results[t] = max_vote; } } ================================================ FILE: digit-recognition/src/sw/digitrec_sw.h ================================================ /*===============================================================*/ /* */ /* digitrec_sw.h */ /* */ /* Software version for digit recognition */ /* */ /*===============================================================*/ #ifndef __DIGITREC_SW_H__ #define __DIGITREC_SW_H__ #include "../host/typedefs.h" void DigitRec_sw(const DigitType global_training_set[NUM_TRAINING * DIGIT_WIDTH], const DigitType global_test_set[NUM_TEST * DIGIT_WIDTH], LabelType global_results[NUM_TEST]); #endif ================================================ FILE: face-detection/Makefile ================================================ # Set kernel name KERNEL_NAME = face_detect # Set host source and headers HOST_SRC_CPP = ./src/host/face_detect_host.cpp ./src/host/utils.cpp ./src/host/check_result.cpp ./src/host/image.cpp HOST_SRC_H = ./src/host/utils.h ./src/host/check_result.h ./src/host/typedefs.h ./src/host/image0_320_240.h \ ./src/host/image.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/face_detect.cpp OCL_KERNEL_H = ./src/host/typedefs.h ./src/ocl/*.h SDSOC_KERNEL_SRC = ./src/sdsoc/face_detect.cpp SDSOC_KERNEL_H = ./src/host/typedefs.h ./src/sdsoc/*.h SW_KERNEL_SRC = ./src/sw/face_detect_sw.cpp SW_KERNEL_H = ./src/host/typedefs.h ./src/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: face-detection/README.md ================================================ # Face Detection ## Description This design detects human faces from an image using the Viola Jones algorithm. The SDSoC design is directly adopted from the "Parallel and Pipelined" implementation by N. Srivastava et al. We rewrote the host code so the accelerator can also be executed on Xilinx OpenCL platforms. If you use this benchmark in your research, please also cite the FPGA'17 paper by N.Srivastava et al.: ``` @inproceedings{srivastava-facedetect-fpga2017, title = {Accelerating Face Detection on Programmable SoC Using C-Based Synthesis}, author = {Nitish Srivastava and Steve Dai and Rajit Manohar and Zhiru Zhang}, booktitle = {25\textsuperscript{th} ACM/SIGDA International Symposium on Field-Programmable Gate Arrays}, month = {Feb}, year = {2017}, doi = {10.1145/3020078.3021753}, } ``` ## Major Optimizations This design takes advantage of advanced memory optimizations: 1. The Viola-Jones algorithm operates on a sliding window of the input image. We modify the common line buffer and window buffer to efficienty compute the integral image. For more details please refer to [N. Srivastava et al.'s paper][1]. 2. Classifiers of the Viola-Jones algorithm have different memory access patterns. In order to pipeline different classifier stages without too much resource overhead, we use a customized memory banking solution generated by a trace-based memory banking technique. For more details please refer to [Y. Zhou et al.'s paper][2]. [1]: http://www.csl.cornell.edu/~zhiruz/pdfs/facedetect-fpga2017.pdf [2]: http://www.csl.cornell.edu/~zhiruz/pdfs/tracebank-fpga2017.pdf ## Usage ### SDAccel To execute or simulate the design, do `./face_detect_host.exe -f -o ` ### SDSoC To run the SDSoC version on the board, do `./face_detect.elf -o ` ### SW To run the software version, do `./face_detect_sw.exe -o ` ================================================ FILE: face-detection/outputs_golden.txt ================================================ result_size = 43 [Test Bench (main) ] detected rects: 50 89 35 35 [Test Bench (main) ] detected rects: 48 91 35 35 [Test Bench (main) ] detected rects: 49 91 35 35 [Test Bench (main) ] detected rects: 50 91 35 35 [Test Bench (main) ] detected rects: 48 92 35 35 [Test Bench (main) ] detected rects: 98 94 35 35 [Test Bench (main) ] detected rects: 43 86 41 41 [Test Bench (main) ] detected rects: 45 86 41 41 [Test Bench (main) ] detected rects: 47 86 41 41 [Test Bench (main) ] detected rects: 48 86 41 41 [Test Bench (main) ] detected rects: 140 86 41 41 [Test Bench (main) ] detected rects: 173 86 41 41 [Test Bench (main) ] detected rects: 175 86 41 41 [Test Bench (main) ] detected rects: 176 86 41 41 [Test Bench (main) ] detected rects: 43 88 41 41 [Test Bench (main) ] detected rects: 45 88 41 41 [Test Bench (main) ] detected rects: 47 88 41 41 [Test Bench (main) ] detected rects: 48 88 41 41 [Test Bench (main) ] detected rects: 92 88 41 41 [Test Bench (main) ] detected rects: 93 88 41 41 [Test Bench (main) ] detected rects: 92 90 41 41 [Test Bench (main) ] detected rects: 41 81 50 50 [Test Bench (main) ] detected rects: 131 81 50 50 [Test Bench (main) ] detected rects: 133 81 50 50 [Test Bench (main) ] detected rects: 172 81 50 50 [Test Bench (main) ] detected rects: 41 83 50 50 [Test Bench (main) ] detected rects: 44 83 50 50 [Test Bench (main) ] detected rects: 131 83 50 50 [Test Bench (main) ] detected rects: 133 83 50 50 [Test Bench (main) ] detected rects: 135 83 50 50 [Test Bench (main) ] detected rects: 170 83 50 50 [Test Bench (main) ] detected rects: 89 85 50 50 [Test Bench (main) ] detected rects: 133 85 50 50 [Test Bench (main) ] detected rects: 127 75 60 60 [Test Bench (main) ] detected rects: 124 77 60 60 [Test Bench (main) ] detected rects: 127 77 60 60 [Test Bench (main) ] detected rects: 129 77 60 60 [Test Bench (main) ] detected rects: 124 80 60 60 [Test Bench (main) ] detected rects: 127 80 60 60 [Test Bench (main) ] detected rects: 129 80 60 60 [Test Bench (main) ] detected rects: 127 82 60 60 [Test Bench (main) ] detected rects: 129 82 60 60 [Test Bench (main) ] detected rects: 119 72 72 72 ================================================ FILE: face-detection/src/host/check_result.cpp ================================================ /*===============================================================*/ /* */ /* check_result.cpp */ /* */ /* Software evaluation of training and test error rate */ /* */ /*===============================================================*/ #include #include #include #include "image.h" #include "typedefs.h" #include void check_results(int &result_size, int result_x[RESULT_SIZE], int result_y[RESULT_SIZE], int result_w[RESULT_SIZE], int result_h[RESULT_SIZE], unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH], std::string outFile) { std::ofstream ofile; ofile.open("outputs.txt"); if (ofile.is_open()) { ofile << "\nresult_size = " << result_size << std::endl; MyRect result[RESULT_SIZE]; for (int j = 0; j < RESULT_SIZE; j++){ result[j].x = result_x[j]; result[j].y = result_y[j]; result[j].width = result_w[j]; result[j].height = result_h[j]; } for( int i=0 ; i < result_size ; i++ ) { ofile << "\n [Test Bench (main) ] detected rects: "; ofile << result[i].x << " " << result[i].y << " " << result[i].width << " " << result[i].height; ofile << std::endl; } ofile.close(); printf("\n-- saving output image [Start] --\r\n"); // Draw the rectangles onto the images and save the outputs. for(int i = 0; i < result_size ; i++ ) { MyRect r = result[i]; drawRectangle(Data, r); } int flag = writePgm(outFile.c_str(), Data); printf("\n-- saving output image [Done] --\r\n"); } else { std::cout << "Failed to create output file!" << std::endl; } } ================================================ FILE: face-detection/src/host/check_result.h ================================================ /*===============================================================*/ /* */ /* check_result.h */ /* */ /* Compare result and expected label to get error rate */ /* */ /*===============================================================*/ void check_results(int &result_size, int result_x[RESULT_SIZE], int result_y[RESULT_SIZE], int result_w[RESULT_SIZE], int result_h[RESULT_SIZE], unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH], std::string outFile); ================================================ FILE: face-detection/src/host/face_detect_host.cpp ================================================ /*===============================================================*/ /* */ /* face_detect.cpp */ /* */ /* Main host function for the Face Detection application. */ /* */ /*===============================================================*/ // standard C/C++ headers #include #include #include #include #include #include #ifdef OCL // opencl 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/face_detect.h" #endif #ifdef SW # include "../sw/face_detect_sw.h" #endif // other headers #include "utils.h" #include "typedefs.h" #include "check_result.h" // data #include "image0_320_240.h" int main(int argc, char ** argv) { printf("Face Detection Application\n"); std::string outFile(""); #ifdef OCL // parse command line arguments std::string kernelFile(""); parse_sdaccel_command_line_args(argc, argv, kernelFile, outFile); #else parse_sdsoc_command_line_args(argc, argv, outFile); #endif // for this benchmark, input data is included in array Data // these are outputs int result_x[RESULT_SIZE]; int result_y[RESULT_SIZE]; int result_w[RESULT_SIZE]; int result_h[RESULT_SIZE]; int res_size = 0; // timers struct timeval start, end; // opencl version host code #ifdef OCL // create OpenCL world CLWorld facedetect_world = CLWorld(TARGET_DEVICE, CL_DEVICE_TYPE_ACCELERATOR); // add the bitstream file facedetect_world.addProgram(kernelFile); // create kernels // this kernel is written in C++ CLKernel FaceDetect(facedetect_world.getContext(), facedetect_world.getProgram(), "face_detect", facedetect_world.getDevice()); // create mem objects CLMemObj input_mem ( (void*)Data, sizeof(unsigned char), IMAGE_HEIGHT * IMAGE_WIDTH, CL_MEM_READ_ONLY); CLMemObj res_x_mem ( (void*)result_x, sizeof(int), RESULT_SIZE, CL_MEM_WRITE_ONLY); CLMemObj res_y_mem ( (void*)result_y, sizeof(int), RESULT_SIZE, CL_MEM_WRITE_ONLY); CLMemObj res_w_mem ( (void*)result_w, sizeof(int), RESULT_SIZE, CL_MEM_WRITE_ONLY); CLMemObj res_h_mem ( (void*)result_h, sizeof(int), RESULT_SIZE, CL_MEM_WRITE_ONLY); CLMemObj res_size_mem( (void*)(&res_size), sizeof(int), 1, 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 facedetect_world.addMemObj(input_mem); facedetect_world.addMemObj(res_x_mem); facedetect_world.addMemObj(res_y_mem); facedetect_world.addMemObj(res_w_mem); facedetect_world.addMemObj(res_h_mem); facedetect_world.addMemObj(res_size_mem); // set work size int global_size[3] = {1, 1, 1}; int local_size[3] = {1, 1, 1}; FaceDetect.set_global(global_size); FaceDetect.set_local(local_size); // add them to the world facedetect_world.addKernel(FaceDetect); // set kernel arguments facedetect_world.setMemKernelArg(0, 0, 0); facedetect_world.setMemKernelArg(0, 1, 1); facedetect_world.setMemKernelArg(0, 2, 2); facedetect_world.setMemKernelArg(0, 3, 3); facedetect_world.setMemKernelArg(0, 4, 4); facedetect_world.setMemKernelArg(0, 5, 5); // run! facedetect_world.runKernels(); // read the data back facedetect_world.readMemObj(1); facedetect_world.readMemObj(2); facedetect_world.readMemObj(3); facedetect_world.readMemObj(4); facedetect_world.readMemObj(5); // end timer gettimeofday(&end, 0); #endif // sdsoc host code #ifdef SDSOC // As the SDSoC generated data motion network does not support sending 320 X 240 images at once // We needed to send all the 240 rows using 240 iterations. The last invokation of detectFaces() does the actual face detection for ( int i = 0; i < IMAGE_HEIGHT-1; i ++ ) face_detect(Data[i], result_x, result_y, result_w, result_h, &res_size); gettimeofday(&start, 0); face_detect(Data[IMAGE_HEIGHT-1], result_x, result_y, result_w, result_h, &res_size); gettimeofday(&end, 0); #endif // software version host code #ifdef SW // to be implemented gettimeofday(&start, 0); face_detect_sw(Data, result_x, result_y, result_w, result_h, &res_size); gettimeofday(&end, 0); #endif // check results printf("Checking results:\n"); check_results(res_size, result_x, result_y, result_w, result_h, Data, outFile); // 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 facedetect_world.releaseWorld(); #endif return EXIT_SUCCESS; } ================================================ FILE: face-detection/src/host/image.cpp ================================================ #include #include #include #include "image.h" #define MYDEBUG char* strrev(char* str) { char *p1, *p2; if (!str || !*str) return str; for (p1 = str, p2 = str + strlen(str) - 1; p2 > p1; ++p1, --p2) { *p1 ^= *p2; *p2 ^= *p1; *p1 ^= *p2; } return str; } void itochar(int x, char* szBuffer, int radix) { int i = 0, n, xx; n = x; while (n > 0) { xx = n%radix; n = n/radix; szBuffer[i++] = '0' + xx; } szBuffer[i] = '\0'; strrev(szBuffer); } /* Writes a Pgm file using the hex image */ int writePgm(const char *fileName, unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH] ) { char parameters_str[5]; int i; const char *format = "P5"; FILE *fp = fopen(fileName, "w"); if (!fp){ printf("Unable to open file %s\n", fileName); return -1; } fputs(format, fp); fputc('\n', fp); itochar(IMAGE_WIDTH, parameters_str, 10); fputs(parameters_str, fp); parameters_str[0] = 0; fputc(' ', fp); itochar(IMAGE_HEIGHT, parameters_str, 10); fputs(parameters_str, fp); parameters_str[0] = 0; fputc('\n', fp); itochar(IMAGE_MAXGREY, parameters_str, 10); fputs(parameters_str, fp); fputc('\n', fp); for (i = 0; i < IMAGE_HEIGHT; i++) for (int j = 0; j < IMAGE_WIDTH ; j++) fputc(Data[i][j], fp); fclose(fp); return 0; } /* draw white bounding boxes around detected faces */ void drawRectangle(unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH], MyRect r) { int i; int col = IMAGE_WIDTH; for (i = 0; i < r.width; i++) Data[r.y][r.x + i] = 255; for (i = 0; i < r.height; i++) Data[r.y+i][r.x + r.width] = 255; for (i = 0; i < r.width; i++) Data[r.y + r.height][r.x + r.width - i] = 255; for (i = 0; i < r.height; i++) Data[r.y + r.height - i][r.x] = 255; } ================================================ FILE: face-detection/src/host/image.h ================================================ #ifndef __IMAGE_H__ #define __IMAGE_H__ #include #include #include #include "typedefs.h" #ifdef __cplusplus extern "C" { #endif void drawRectangle ( unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH], MyRect r); int writePgm(const char *fileName, unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH] ); #ifdef __cplusplus } #endif #endif ================================================ FILE: face-detection/src/host/image0_320_240.h ================================================ unsigned char Data[240][320]={ {0xd4,0xd4,0xd4,0xd2,0xd4,0xd6,0xd4,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xd4,0xd4,0xd4,0xd4,0xd4,0xd2,0xd0,0xd2,0xd2,0xd2,0xd0,0xd4,0xd4,0xce,0xd6,0xd0,0xcc,0xd2,0xbf,0xd0,0xd2,0xd4,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xce,0xcc,0xce,0xd2,0xd4,0xd4,0xd2,0xc8,0xd6,0xd2,0x6a,0xd6,0xca,0xd4,0xd2,0xd4,0xd2,0xd2,0xd2,0xd4,0xd4,0xd4,0xd4,0xd2,0xd2,0xd0,0xd0,0xd2,0xce,0xce,0xd9,0xbd,0xca,0xd6,0xd4,0xd0,0xd0,0xd4,0xd4,0xd2,0xd0,0xce,0xce,0xd0,0xd2,0xd4,0xd9,0xce,0xd9,0xca,0xae,0x85,0xd2,0xd0,0xd0,0xd2,0xd2,0xd4,0xd6,0xd6,0xd6,0xd4,0xd4,0xd2,0xd9,0xd6,0xd2,0xd2,0xd0,0xd2,0xdb,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd2,0xd2,0xd4,0xd6,0xd6,0xd6,0xd4,0xd2,0xce,0xd0,0xd2,0xd2,0xd2,0xd4,0xd4,0xd2,0xd2,0xd4,0xd6,0xd4,0xd0,0xd0,0xd2,0xd2,0xd9,0xd6,0xd0,0xd6,0xd0,0xcc,0xd2,0xbf,0xd0,0xd4,0xd4,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xce,0xcc,0xce,0xd0,0xd4,0xd4,0xd2,0xcc,0xd2,0xd6,0x68,0xd4,0xce,0xd2,0xd4,0xd2,0xd2,0xd2,0xd4,0xd4,0xd6,0xd4,0xd4,0xd2,0xd2,0xce,0xd0,0xd4,0xd0,0xce,0xd4,0xbd,0xcc,0xd6,0xd4,0xce,0xd2,0xd4,0xd2,0xd4,0xd0,0xcc,0xcc,0xce,0xd0,0xd2,0xd4,0xcc,0xd6,0xce,0xb1,0x82,0xce,0xd2,0xd2,0xd2,0xd2,0xd2,0xd4,0xd4,0xd4,0xd4,0xd4,0xd0,0xd9,0xd9,0xd2,0xd0,0xd2,0xd4,0xd9,0xd2,0xd4,0xd4,0xd4,0xd4,0xd4,0xd2,0xd2,0xd2,0xd4,0xd4,0xd4,0xd4,0xd6,0xd6,0xd2,0xce,0xd2,0xd4,0xd2,0xd2,0xd2,0xd2,0xd2,0xd4,0xd4,0xd4,0xd2,0xd2,0xd2,0xd2,0xd0,0xd9,0xd6,0xd0,0xd6,0xd0,0xcc,0xd2,0xbf,0xd2,0xd0,0xd9,0xd0,0xce,0xd4,0xce,0xd4,0xd0,0xce,0xcc,0xce,0xd0,0xd4,0xd4,0xd2,0xcc,0xd0,0xd4,0x68,0xd4,0xcc,0xce,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd2,0xd2,0xd0,0xd2,0xd0,0xd2,0xd4,0xce,0xcc,0xd4,0xbf,0xc8,0xd2,0xd4,0xd2,0xd2,0xd2,0xd4}, {0xd2,0xd2,0xd2,0xd0,0xd2,0xd4,0xd2,0xce,0xd2,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xc8,0xd0,0xd6,0xd4,0xd0,0xd0,0xd4,0xd9,0xd2,0xce,0xcc,0xd0,0xce,0xd0,0xd6,0xcc,0xce,0xd0,0xd0,0xce,0xce,0xd0,0xd0,0xd0,0xce,0xce,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xd4,0xd4,0xcc,0xc6,0xd4,0xd2,0xca,0xd0,0xd4,0xd2,0xd2,0xd0,0xd0,0xd0,0xd0,0xce,0xd6,0xd4,0xd0,0xce,0xd0,0xce,0xce,0xd9,0xc8,0xd0,0xd4,0xd0,0xce,0xce,0xce,0xcc,0xd2,0xd0,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xce,0xce,0xd6,0xd6,0xc1,0xe1,0xce,0xc8,0xd2,0xd2,0xd2,0xd4,0xd2,0xd2,0xd0,0xd0,0xd0,0xd4,0xd4,0xd0,0xd2,0xd0,0xd2,0xd9,0xd2,0xd2,0xd4,0xd2,0xd2,0xd2,0xd2,0xd2,0xd4,0xd4,0xd4,0xd4,0xd2,0xd2,0xce,0xcc,0xd2,0xd2,0xd2,0xd2,0xd2,0xd4,0xd4,0xd2,0xcc,0xd0,0xd2,0xd2,0xd4,0xd6,0xd6,0xd4,0xd2,0xce,0xca,0xd0,0xcc,0xd0,0xd9,0xce,0xce,0xd0,0xd0,0xce,0xce,0xd0,0xd2,0xd0,0xd0,0xd0,0xd0,0xd2,0xd2,0xd4,0xd4,0xd2,0xd6,0xd4,0xce,0xc6,0xd4,0xd4,0xc8,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xce,0xd6,0xd4,0xce,0xce,0xd0,0xce,0xce,0xd9,0xc8,0xd0,0xd4,0xd2,0xce,0xce,0xce,0xcc,0xd0,0xd0,0xd0,0xd0,0xd2,0xd2,0xd4,0xd4,0xd2,0xcc,0xd2,0xd6,0xc2,0xe5,0xd4,0xc4,0xd0,0xd2,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xce,0xd6,0xd4,0xd0,0xd0,0xd2,0xd2,0xd6,0xd2,0xd2,0xd4,0xd4,0xd4,0xd2,0xd2,0xd2,0xd4,0xd4,0xd4,0xd2,0xd2,0xd2,0xd0,0xcc,0xd2,0xd4,0xd4,0xd2,0xd0,0xd2,0xd4,0xd2,0xc8,0xd0,0xd6,0xd6,0xd0,0xd0,0xd4,0xd9,0xd2,0xce,0xcc,0xd0,0xcc,0xd0,0xd9,0xce,0xd0,0xce,0xd4,0xce,0xce,0xd4,0xce,0xd2,0xd0,0xd0,0xd0,0xd2,0xd2,0xd4,0xd4,0xd2,0xd9,0xd2,0xce,0xc6,0xd4,0xd4,0xc8,0xd4,0xd4,0xd2,0xd2,0xd2,0xd2,0xd0,0xce,0xce,0xd4,0xd4,0xd0,0xce,0xd2,0xce,0xce,0xd9,0xc8,0xce,0xd2,0xd2,0xce,0xce,0xce,0xce}, {0xd2,0xd2,0xd2,0xd0,0xd2,0xd4,0xd2,0xd0,0xd2,0xd2,0xd0,0xce,0xce,0xd0,0xd2,0xd2,0xce,0xd0,0xd2,0xd2,0xd4,0xd4,0xd0,0xca,0xd4,0xd0,0xd6,0xd4,0xce,0xce,0xca,0xc6,0xd0,0xd0,0xd0,0xce,0xce,0xd2,0xd2,0xd0,0xcc,0xd0,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xca,0xc4,0xcc,0xdf,0xce,0xcc,0xd9,0xcc,0xd4,0xd4,0xd2,0xd2,0xd2,0xd0,0xd0,0xce,0xce,0xd2,0xd2,0xd4,0xd6,0xd0,0xca,0xcc,0xce,0xd2,0xd4,0xd0,0xce,0xd2,0xd2,0xd0,0xd0,0xd0,0xd0,0xd2,0xd4,0xd4,0xd2,0xd0,0xdb,0xca,0xc4,0xca,0xd4,0xd6,0xd0,0xcc,0xd2,0xd2,0xd2,0xd4,0xd2,0xd2,0xd0,0xd0,0xce,0xd4,0xd2,0xd0,0xd4,0xd2,0xd2,0xd6,0xd0,0xd2,0xd4,0xd4,0xd2,0xd0,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd4,0xd4,0xd2,0xd2,0xd2,0xd4,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd4,0xd4,0xd0,0xca,0xd4,0xd0,0xd6,0xd4,0xd0,0xd0,0xca,0xc8,0xd0,0xd2,0xd0,0xce,0xd0,0xd2,0xd2,0xd0,0xcc,0xce,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xca,0xc6,0xca,0xe1,0xce,0xcc,0xdb,0xcc,0xd4,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xce,0xd0,0xd2,0xd0,0xd2,0xd4,0xd0,0xcc,0xce,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xce,0xd0,0xd2,0xd4,0xd4,0xd4,0xd2,0xd2,0xd4,0xc8,0xca,0xd0,0xd0,0xce,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xd0,0xce,0xd4,0xd2,0xd0,0xd2,0xd4,0xd2,0xd4,0xd2,0xd2,0xd4,0xd4,0xd4,0xd2,0xd0,0xd0,0xd0,0xd2,0xd4,0xd4,0xd4,0xd4,0xd2,0xd0,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xd4,0xd4,0xd0,0xca,0xd4,0xd0,0xd6,0xd6,0xd0,0xd0,0xca,0xc6,0xd2,0xd0,0xd2,0xce,0xce,0xd4,0xd0,0xd2,0xcc,0xce,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xca,0xc6,0xc8,0xe1,0xd0,0xca,0xd9,0xcc,0xd4,0xd4,0xd2,0xd2,0xd2,0xd0,0xd0,0xce,0xce,0xd2,0xd2,0xd2,0xd6,0xd0,0xca,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0}, {0xd4,0xd4,0xd2,0xd2,0xd2,0xd6,0xd4,0xd2,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xd4,0xd2,0xd0,0xd0,0xd4,0xd4,0xcc,0xc2,0xd6,0xcc,0xd4,0xcc,0xca,0xd0,0xcc,0xd6,0xd2,0xd4,0xd2,0xd0,0xce,0xd0,0xd0,0xd0,0xce,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xd4,0xd9,0xce,0xd4,0xc6,0xd9,0xd2,0xcc,0xd4,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xd4,0xd6,0xd0,0xcc,0xd0,0xd0,0xce,0xd0,0xce,0xd2,0xd2,0xd0,0xd0,0xd2,0xd4,0xd4,0xce,0xce,0xce,0xce,0xd2,0xd4,0xd2,0xd0,0xca,0xd6,0xd4,0xd0,0xd4,0xc6,0xd2,0xd9,0xd0,0xd0,0xd2,0xd4,0xd4,0xd4,0xd2,0xd2,0xd0,0xd4,0xd2,0xd2,0xd6,0xd4,0xd2,0xd4,0xd2,0xd4,0xd4,0xd4,0xd4,0xd2,0xd0,0xd0,0xd2,0xd0,0xd2,0xd2,0xd4,0xd6,0xd6,0xd4,0xd0,0xd2,0xd0,0xce,0xce,0xd0,0xd2,0xd0,0xd4,0xd2,0xd0,0xd0,0xd2,0xd2,0xcc,0xc4,0xd9,0xce,0xd6,0xce,0xca,0xd2,0xce,0xd6,0xd2,0xd4,0xd4,0xd0,0xd0,0xd0,0xd0,0xd0,0xcc,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xce,0xd2,0xdf,0xca,0xd6,0xc8,0xd4,0xd6,0xca,0xd2,0xd2,0xd2,0xd2,0xd4,0xd2,0xd2,0xd0,0xd6,0xd6,0xd0,0xcc,0xd0,0xd0,0xce,0xd0,0xd0,0xd0,0xd0,0xd2,0xd2,0xd0,0xd2,0xd6,0xce,0xd0,0xd0,0xd0,0xd2,0xd2,0xd2,0xd0,0xca,0xd2,0xd2,0xd0,0xd2,0xc8,0xd4,0xd4,0xd0,0xd0,0xd2,0xd4,0xd4,0xd4,0xd2,0xd0,0xd0,0xd4,0xd2,0xd2,0xd6,0xd4,0xd2,0xd4,0xd2,0xd2,0xd4,0xd4,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xd2,0xd2,0xd4,0xd6,0xd6,0xd4,0xd0,0xd2,0xd2,0xce,0xce,0xd0,0xd2,0xd2,0xd9,0xd2,0xcc,0xce,0xd4,0xd6,0xcc,0xc2,0xd6,0xce,0xd6,0xce,0xcc,0xd2,0xcc,0xd6,0xd2,0xd2,0xd4,0xd0,0xd0,0xd2,0xd0,0xd2,0xcc,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xce,0xd2,0xdd,0xc8,0xd6,0xc6,0xd2,0xd4,0xca,0xd2,0xd2,0xd2,0xd2,0xd4,0xd2,0xd2,0xd0,0xd6,0xd6,0xd0,0xcc,0xd0,0xd0,0xcc,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2}, {0xd0,0xd2,0xd0,0xd0,0xd2,0xd4,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd4,0xd4,0xd2,0xcc,0xd2,0xd4,0xd2,0xd0,0xce,0xd0,0xd0,0xd2,0xcc,0xd4,0xd0,0xd2,0xd4,0xc8,0xd2,0xce,0xd0,0xd2,0xd0,0xce,0xce,0xd0,0xd0,0xd0,0xce,0xcc,0xce,0xd0,0xd2,0xd2,0xd2,0xd9,0xcc,0xd4,0xd0,0xd6,0xd6,0xc8,0xd4,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xce,0xd2,0xd6,0xd4,0xd0,0xd4,0xd4,0xce,0xca,0xcc,0xd0,0xd2,0xd0,0xce,0xce,0xce,0xce,0xd2,0xd0,0xce,0xcc,0xcc,0xd2,0xd2,0xd2,0xcc,0xdd,0xcc,0xd2,0xdb,0xd2,0xd2,0xce,0xce,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd0,0xd2,0xd4,0xd2,0xd2,0xd6,0xd4,0xd0,0xd2,0xd2,0xd2,0xd4,0xd4,0xd4,0xd2,0xd2,0xd0,0xd4,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xd2,0xd0,0xce,0xce,0xd2,0xd4,0xd0,0xcc,0xd2,0xcc,0xd4,0xd0,0xd0,0xd2,0xc8,0xd0,0xce,0xd2,0xd4,0xd0,0xce,0xce,0xd0,0xd0,0xd0,0xce,0xce,0xd0,0xd2,0xd4,0xd2,0xd2,0xd6,0xd0,0xce,0xd2,0xd9,0xd2,0xcc,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xd0,0xd0,0xd2,0xd9,0xd4,0xd2,0xd4,0xd4,0xcc,0xc8,0xce,0xce,0xd0,0xd2,0xd0,0xcc,0xcc,0xd0,0xd2,0xd0,0xce,0xcc,0xce,0xd2,0xd2,0xce,0xd0,0xdb,0xca,0xd4,0xdb,0xd4,0xd6,0xcc,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd0,0xce,0xd2,0xd4,0xd2,0xd2,0xd6,0xd4,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xd0,0xd4,0xd4,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xce,0xd0,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xd0,0xce,0xd0,0xcc,0xd6,0xd2,0xd2,0xd2,0xc8,0xd0,0xcc,0xd2,0xd2,0xd0,0xce,0xce,0xd2,0xd0,0xd0,0xce,0xce,0xd0,0xd2,0xd4,0xd2,0xd2,0xd6,0xd2,0xd0,0xd2,0xd9,0xd4,0xce,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xd0,0xd0,0xd2,0xd6,0xd4,0xd2,0xd6,0xd4,0xcc,0xc8,0xce,0xd2,0xd2,0xd0,0xce,0xcc,0xce,0xce}, {0xd2,0xd2,0xd2,0xd2,0xd2,0xd4,0xd2,0xce,0xd0,0xd0,0xd0,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd4,0xd4,0xd2,0xd4,0xd0,0xce,0xce,0xd0,0xcc,0xc2,0xc8,0xca,0xce,0xd2,0xd0,0xd0,0xd0,0xd2,0xd0,0xd2,0xce,0xcc,0xcc,0xd0,0xd2,0xd2,0xd2,0xce,0xb5,0xd9,0xcc,0xd2,0xcc,0xce,0xd4,0xd4,0xd4,0xd2,0xd2,0xd2,0xd2,0xce,0xce,0xce,0xd4,0xd0,0xca,0xd0,0xd2,0xcc,0xc6,0xca,0xce,0xd0,0xd0,0xd0,0xce,0xd0,0xd2,0xd2,0xd2,0xd0,0xcc,0xca,0xce,0xd2,0xd0,0xd9,0xd4,0xb7,0xca,0xd4,0xd2,0xca,0xca,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xce,0xd0,0xd4,0xd0,0xd0,0xd4,0xd2,0xcc,0xce,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xd0,0xd2,0xd6,0xd4,0xd0,0xd2,0xce,0xce,0xce,0xd2,0xce,0xc2,0xc8,0xca,0xce,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xce,0xcc,0xcc,0xd0,0xd2,0xd2,0xd0,0xce,0xb7,0xd6,0xcc,0xd2,0xca,0xd0,0xd4,0xd4,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xce,0xce,0xd4,0xd2,0xcc,0xd0,0xd2,0xca,0xc4,0xca,0xce,0xd0,0xd0,0xd0,0xce,0xd0,0xd2,0xd2,0xd2,0xd0,0xcc,0xce,0xd2,0xd4,0xd0,0xd6,0xd2,0xbd,0xce,0xd0,0xce,0xcc,0xce,0xd2,0xd4,0xd4,0xd4,0xd2,0xd0,0xd0,0xce,0xd2,0xd2,0xd0,0xd0,0xd4,0xd0,0xcc,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd4,0xd4,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xd0,0xd2,0xd0,0xd0,0xd2,0xd4,0xd4,0xd2,0xd2,0xce,0xce,0xce,0xd2,0xce,0xc2,0xc8,0xca,0xd0,0xd0,0xd2,0xd0,0xce,0xd4,0xd0,0xd2,0xce,0xcc,0xcc,0xd0,0xd2,0xd2,0xd0,0xcc,0xb9,0xd6,0xcc,0xd2,0xca,0xd0,0xd4,0xd4,0xd4,0xd2,0xd2,0xd2,0xd2,0xd0,0xce,0xce,0xd4,0xd0,0xcc,0xd0,0xd2,0xca,0xc4,0xca,0xce,0xd2,0xd0,0xce,0xce,0xd0,0xd0}, {0xd4,0xd4,0xd4,0xd2,0xd2,0xd2,0xce,0xca,0xd2,0xd0,0xce,0xca,0xc8,0xcc,0xce,0xd0,0xd2,0xd0,0xce,0xce,0xd2,0xd6,0xd2,0xcc,0xd9,0xd0,0xbd,0xbb,0xc6,0xca,0xd0,0xdb,0xcc,0xce,0xce,0xd0,0xd2,0xd4,0xd0,0xcc,0xd0,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xd4,0xd2,0xd2,0xdd,0xbd,0xd6,0xca,0xce,0xd4,0xd4,0xd4,0xd4,0xd4,0xd2,0xd0,0xce,0xdb,0xd9,0xc6,0xb9,0xc1,0xcc,0xd0,0xd0,0xce,0xcc,0xcc,0xd0,0xd2,0xd2,0xd2,0xd4,0xca,0xd0,0xd2,0xce,0xcc,0xd0,0xd0,0xce,0xc8,0xd2,0xd4,0xdf,0xd2,0xc6,0xc6,0xd6,0xd2,0xd2,0xd2,0xd4,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xd0,0xce,0xd2,0xd0,0xcc,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd4,0xd2,0xd0,0xd2,0xd2,0xd2,0xd2,0xd0,0xce,0xd0,0xd0,0xce,0xca,0xca,0xce,0xd0,0xd0,0xce,0xd0,0xd2,0xd0,0xd0,0xd2,0xd0,0xd0,0xd9,0xd0,0xbd,0xbf,0xca,0xcc,0xd2,0xdd,0xcc,0xce,0xd0,0xd0,0xd2,0xd4,0xd0,0xcc,0xd0,0xce,0xcc,0xcc,0xce,0xd0,0xd0,0xd0,0xd4,0xd0,0xd4,0xdb,0xbb,0xd6,0xc8,0xce,0xd4,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xd0,0xd9,0xd9,0xc8,0xbb,0xbf,0xcc,0xd0,0xd2,0xcc,0xce,0xce,0xce,0xd0,0xd4,0xd4,0xd2,0xca,0xd0,0xd2,0xce,0xcc,0xd0,0xd2,0xd0,0xce,0xcc,0xcc,0xdb,0xd4,0xcc,0xca,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xd0,0xd2,0xd0,0xd0,0xd4,0xce,0xcc,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd4,0xd4,0xd4,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xce,0xd0,0xd2,0xce,0xcc,0xca,0xcc,0xd0,0xd0,0xd2,0xd0,0xce,0xce,0xd2,0xd6,0xd2,0xcc,0xd9,0xd0,0xbd,0xbd,0xc8,0xcc,0xd4,0xdf,0xcc,0xd2,0xcc,0xd2,0xd4,0xd0,0xd4,0xca,0xd0,0xce,0xcc,0xcc,0xce,0xd0,0xd0,0xd0,0xd4,0xd0,0xd4,0xd9,0xb9,0xd6,0xca,0xcc,0xd4,0xd4,0xd4,0xd2,0xd2,0xd2,0xd0,0xce,0xdb,0xd9,0xc6,0xb9,0xbf,0xcc,0xd0,0xd2,0xca,0xce,0xd0,0xce,0xd0,0xd2,0xd4,0xd4}, {0xd2,0xd2,0xd2,0xd0,0xd0,0xce,0xca,0xc4,0xd2,0xd0,0xca,0xc4,0xc4,0xc8,0xcc,0xce,0xc4,0xcc,0xd0,0xd0,0xcc,0xcc,0xd0,0xd2,0xd0,0xd4,0xc2,0xce,0xdd,0xd0,0xcc,0xc8,0xce,0xcc,0xcc,0xcc,0xd0,0xd2,0xca,0xc2,0xce,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xd0,0xd0,0xd2,0xce,0xce,0xd9,0xd0,0xd0,0xce,0xce,0xce,0xd0,0xd0,0xd2,0xd2,0xd0,0xce,0xcc,0xd4,0xd0,0xca,0xd2,0xd6,0xce,0xc4,0xd4,0xd0,0xcc,0xcc,0xd0,0xd0,0xce,0xcc,0xc2,0xcc,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd4,0xd0,0xd0,0xd0,0xd0,0xd0,0xcc,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xce,0xd0,0xd4,0xd2,0xd0,0xd2,0xd2,0xd0,0xd2,0xd2,0xd2,0xd4,0xd4,0xd4,0xd4,0xd6,0xd6,0xd4,0xd2,0xd2,0xd0,0xce,0xca,0xc6,0xc4,0xd0,0xce,0xca,0xc4,0xc4,0xc8,0xcc,0xcc,0xc6,0xca,0xd0,0xd0,0xce,0xce,0xd0,0xce,0xd0,0xd4,0xc4,0xce,0xdd,0xd0,0xca,0xc6,0xce,0xcc,0xcc,0xce,0xd2,0xd2,0xcc,0xc4,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xd0,0xd0,0xd2,0xce,0xd2,0xcc,0xd4,0xd2,0xcc,0xd0,0xce,0xce,0xce,0xd0,0xd0,0xd2,0xd0,0xd0,0xca,0xd2,0xd0,0xca,0xd0,0xd6,0xd0,0xc8,0xd2,0xd2,0xce,0xca,0xcc,0xd4,0xd2,0xc8,0xc2,0xcc,0xd4,0xd0,0xcc,0xce,0xd0,0xd0,0xd2,0xd0,0xd4,0xd2,0xce,0xd0,0xd2,0xd2,0xcc,0xce,0xce,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xd2,0xd4,0xd0,0xce,0xd4,0xd2,0xd2,0xd2,0xd2,0xd2,0xd4,0xd6,0xd6,0xd2,0xd4,0xd4,0xd2,0xd0,0xce,0xc8,0xc4,0xd0,0xd0,0xca,0xc6,0xc4,0xc6,0xca,0xcc,0xc4,0xcc,0xd2,0xd0,0xcc,0xcc,0xce,0xd0,0xd2,0xd4,0xc2,0xce,0xdb,0xce,0xcc,0xc8,0xce,0xd2,0xc8,0xce,0xd2,0xce,0xce,0xc1,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xd0,0xd0,0xd2,0xd0,0xd4,0xcc,0xd4,0xd6,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xcc,0xd2,0xce,0xc8,0xd0,0xd6,0xd0,0xc6,0xd2,0xd0,0xce,0xcc,0xce,0xd0,0xd0,0xce}, {0xd6,0xcc,0xd4,0xd4,0xd2,0xce,0xc4,0xca,0xcc,0xcc,0xca,0xcc,0xcc,0xc6,0xc2,0xcc,0xd2,0xd4,0xd0,0xca,0xcc,0xd4,0xd9,0xd4,0xd2,0xd0,0xd0,0xd0,0xd0,0xd0,0xcc,0xca,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd2,0xd2,0xd0,0xd4,0xcc,0xd4,0xd0,0xd4,0xcc,0xd2,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd2,0xd2,0xd2,0xd4,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xd2,0xd4,0xd2,0xcc,0xcc,0xd0,0xca,0xce,0xd2,0xd4,0xd2,0xce,0xcc,0xce,0xd0,0xd4,0xce,0xcc,0xd2,0xd0,0xca,0xd0,0xd0,0xd0,0xce,0xd0,0xd0,0xd0,0xd0,0xce,0xd0,0xd6,0xd4,0xd0,0xd4,0xd6,0xd2,0xd0,0xd2,0xcc,0xd2,0xd6,0xce,0xd4,0xd6,0xc2,0xd2,0xd6,0xd6,0xd6,0xd9,0xd4,0xd0,0xd4,0xd2,0xd4,0xd4,0xd2,0xd0,0xd0,0xcc,0xc6,0xce,0xca,0xcc,0xce,0xca,0xc4,0xc4,0xc8,0xd4,0xd2,0xce,0xcc,0xce,0xd4,0xd6,0xd6,0xd6,0xd2,0xd0,0xd0,0xd2,0xd0,0xce,0xcc,0xd0,0xd0,0xd2,0xd0,0xd0,0xce,0xd0,0xd0,0xce,0xd4,0xcc,0xd2,0xce,0xd4,0xcc,0xd2,0xce,0xce,0xd0,0xd2,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd0,0xce,0xd0,0xd2,0xd2,0xd0,0xd2,0xd4,0xd2,0xcc,0xcc,0xd0,0xcc,0xcc,0xd0,0xd4,0xd4,0xce,0xcc,0xce,0xd2,0xd2,0xd0,0xc6,0xd4,0xcc,0xce,0xd2,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xd0,0xd6,0xd2,0xd6,0xce,0xd6,0xce,0xcc,0xce,0xce,0xd2,0xd2,0xd2,0xd9,0xd4,0xc8,0xd2,0xd4,0xd6,0xd6,0xd6,0xd9,0xd4,0xd2,0xd2,0xd4,0xd2,0xd0,0xd0,0xd0,0xcc,0xc4,0xca,0xce,0xcc,0xcc,0xce,0xc6,0xc2,0xc8,0xd6,0xd0,0xd0,0xca,0xcc,0xd4,0xd2,0xd4,0xd6,0xd0,0xce,0xce,0xce,0xce,0xcc,0xce,0xcc,0xd0,0xd4,0xd2,0xce,0xcc,0xd0,0xd4,0xce,0xd4,0xcc,0xd4,0xd0,0xd4,0xcc,0xd4,0xce,0xce,0xce,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd4,0xd2,0xd0,0xd0,0xd2,0xd4,0xd2,0xd2,0xd4,0xd2,0xcc,0xce,0xd0,0xcc,0xce,0xd2,0xd4,0xd2,0xcc,0xcc,0xd0}, {0xd2,0xd0,0xd6,0xce,0xce,0xd4,0xce,0xd2,0xce,0xce,0xce,0xd0,0xd2,0xcc,0xcc,0xd4,0xca,0xd0,0xd4,0xd2,0xd2,0xd4,0xd2,0xce,0xd6,0xd4,0xd0,0xcc,0xca,0xca,0xca,0xcc,0xd0,0xd2,0xd4,0xd2,0xce,0xce,0xce,0xd2,0xd2,0xd6,0xd2,0xd2,0xd0,0xd0,0xca,0xcc,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd2,0xd0,0xce,0xd2,0xd4,0xd2,0xd0,0xd0,0xd0,0xd0,0xd2,0xd2,0xce,0xca,0xcc,0xd0,0xc6,0xd4,0xd6,0xce,0xcc,0xd4,0xd6,0xcc,0xd0,0xd0,0xd9,0xce,0xdd,0xd0,0xd2,0xce,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd6,0xd2,0xcc,0xd0,0xd2,0xce,0xce,0xdb,0xd2,0xd2,0xc8,0xbb,0xc6,0xd9,0xd9,0xce,0xd2,0xd2,0xd2,0xd4,0xd2,0xce,0xd2,0xd2,0xd4,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xce,0xcc,0xce,0xd2,0xd0,0xcc,0xce,0xd2,0xca,0xce,0xd2,0xd2,0xd4,0xd4,0xd0,0xce,0xd4,0xd2,0xd0,0xce,0xcc,0xc8,0xc8,0xc8,0xd0,0xd2,0xd4,0xd2,0xce,0xcc,0xce,0xd0,0xd2,0xd9,0xd2,0xd0,0xd0,0xd2,0xcc,0xcc,0xce,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xd0,0xce,0xd0,0xd2,0xd2,0xd0,0xd2,0xd0,0xd0,0xd2,0xd2,0xce,0xca,0xcc,0xd0,0xc8,0xd2,0xd4,0xce,0xcc,0xd4,0xd4,0xcc,0xce,0xd2,0xd6,0xd2,0xd6,0xd0,0xcc,0xc8,0xce,0xce,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xce,0xd2,0xd2,0xd2,0xce,0xd6,0xd4,0xce,0xc2,0xbb,0xc4,0xd2,0xd6,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xd2,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xce,0xcc,0xce,0xce,0xce,0xd2,0xce,0xcc,0xd2,0xcc,0xcc,0xd4,0xd2,0xd4,0xd9,0xd0,0xd2,0xd4,0xd2,0xd0,0xce,0xcc,0xca,0xc8,0xca,0xd4,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xcc,0xd2,0xd6,0xd2,0xd2,0xd0,0xd2,0xca,0xcc,0xd0,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xce,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xce,0xd0,0xd0,0xce,0xca,0xca,0xce,0xc8,0xd2,0xd6,0xce,0xcc,0xd4,0xd4,0xce}, {0xd0,0xd6,0xdb,0xce,0xcc,0xd4,0xd0,0xcc,0xcc,0xce,0xce,0xd0,0xd4,0xd0,0xce,0xd4,0xca,0xd0,0xd4,0xd2,0xce,0xd0,0xd0,0xd0,0xd0,0xd2,0xd2,0xce,0xcc,0xcc,0xce,0xd2,0xcc,0xce,0xd0,0xd0,0xcc,0xca,0xce,0xd0,0xce,0xd4,0xd2,0xcc,0xd2,0xd2,0xd0,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd2,0xd4,0xce,0xcc,0xce,0xd4,0xd4,0xd2,0xd0,0xd2,0xd2,0xd2,0xd2,0xce,0xcc,0xce,0xd2,0xcc,0xce,0xce,0xce,0xcc,0xcc,0xce,0xd0,0xce,0xcc,0xd2,0xcc,0xcc,0xca,0xd2,0xce,0xcc,0xcc,0xce,0xd0,0xd0,0xd2,0xd0,0xd0,0xd0,0xd4,0xce,0xca,0xce,0xd0,0xce,0xd0,0xcc,0xce,0xd9,0xd9,0xcc,0xce,0xd4,0xcc,0xd0,0xd6,0xd4,0xd4,0xd6,0xd4,0xd2,0xd6,0xd2,0xd4,0xd4,0xd0,0xd0,0xd0,0xd0,0xce,0xcc,0xcc,0xce,0xd2,0xd2,0xd0,0xd0,0xd4,0xca,0xd0,0xd2,0xd2,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xd2,0xd2,0xce,0xcc,0xcc,0xd0,0xcc,0xce,0xd0,0xd0,0xcc,0xca,0xcc,0xd0,0xce,0xd4,0xd4,0xcc,0xd2,0xd2,0xd2,0xce,0xce,0xd0,0xd0,0xd2,0xd0,0xd0,0xd0,0xd0,0xd4,0xce,0xcc,0xd0,0xd4,0xd4,0xd2,0xd0,0xd2,0xd2,0xd2,0xd2,0xce,0xcc,0xce,0xd2,0xce,0xcc,0xcc,0xce,0xce,0xcc,0xce,0xd0,0xd0,0xd2,0xd2,0xd4,0xce,0xd2,0xd2,0xd0,0xcc,0xce,0xce,0xd0,0xd2,0xd2,0xd2,0xd2,0xd4,0xce,0xd0,0xc8,0xd4,0xd0,0xd6,0xce,0xce,0xd4,0xdb,0xd9,0xd0,0xd0,0xd4,0xd0,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd2,0xd4,0xd4,0xd2,0xd0,0xd0,0xd0,0xce,0xcc,0xce,0xcc,0xce,0xd2,0xd0,0xd0,0xd6,0xca,0xcc,0xd4,0xd0,0xce,0xd2,0xce,0xd2,0xd0,0xd0,0xd0,0xd0,0xce,0xcc,0xce,0xd0,0xca,0xce,0xd0,0xd0,0xcc,0xca,0xce,0xd2,0xce,0xd4,0xd4,0xcc,0xd2,0xd0,0xce,0xcc,0xd0,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd4,0xce,0xca,0xce,0xd4,0xd4,0xd2,0xce,0xd2,0xd2,0xd2,0xd2,0xd0,0xcc,0xce,0xd2,0xcc,0xcc,0xce,0xce,0xcc,0xcc,0xcc,0xd0}, {0xd0,0xd6,0xd9,0xd0,0xd0,0xd6,0xd0,0xc6,0xce,0xce,0xce,0xce,0xd2,0xce,0xcc,0xd0,0xc2,0xc8,0xce,0xce,0xcc,0xce,0xd2,0xd6,0xcc,0xce,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xcc,0xce,0xce,0xce,0xcc,0xca,0xca,0xcc,0xcc,0xd0,0xd2,0xc6,0xd2,0xd0,0xd2,0xce,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xd4,0xce,0xcc,0xce,0xd2,0xd4,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xce,0xce,0xd0,0xd2,0xcc,0xcc,0xd0,0xce,0xc8,0xc8,0xd0,0xd2,0xd6,0xd0,0xdd,0xc4,0xd9,0xd4,0xd4,0xca,0xcc,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xce,0xcc,0xd2,0xd2,0xd0,0xd4,0xd2,0xce,0xd2,0xd4,0xd4,0xd6,0xd4,0xc8,0xce,0xd4,0xd2,0xd0,0xd2,0xd2,0xd0,0xd2,0xd2,0xd4,0xd4,0xd4,0xd4,0xd2,0xce,0xca,0xce,0xcc,0xce,0xd0,0xd0,0xce,0xce,0xd0,0xc1,0xc8,0xce,0xce,0xcc,0xce,0xd2,0xd4,0xd0,0xd0,0xd0,0xd2,0xd0,0xce,0xd0,0xd2,0xcc,0xce,0xce,0xce,0xcc,0xca,0xcc,0xcc,0xcc,0xd2,0xd2,0xc6,0xd2,0xd0,0xd4,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xce,0xd0,0xd0,0xd4,0xd0,0xce,0xd0,0xd4,0xd4,0xd2,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xce,0xce,0xd0,0xd2,0xcc,0xca,0xd0,0xce,0xc6,0xc6,0xce,0xd0,0xd0,0xce,0xd2,0xc4,0xd0,0xd6,0xd4,0xcc,0xce,0xd0,0xd0,0xd0,0xd2,0xd2,0xd2,0xd4,0xce,0xce,0xca,0xd2,0xd2,0xd4,0xd0,0xd0,0xce,0xd0,0xd2,0xd4,0xd6,0xd4,0xca,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd4,0xd6,0xd6,0xd4,0xd0,0xce,0xca,0xcc,0xd0,0xce,0xcc,0xd0,0xce,0xcc,0xd2,0xc2,0xc6,0xd0,0xcc,0xca,0xce,0xce,0xd4,0xce,0xce,0xd0,0xd0,0xd0,0xce,0xd0,0xd2,0xc8,0xce,0xd2,0xd0,0xca,0xc8,0xca,0xd0,0xcc,0xd0,0xd2,0xc6,0xd2,0xd0,0xd2,0xcc,0xd0,0xd0,0xd2,0xd2,0xd2,0xd0,0xd0,0xd2,0xd6,0xd0,0xce,0xd0,0xd4,0xd4,0xd2,0xd0,0xd2,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xd0,0xd2,0xca,0xca,0xd2,0xce,0xc6,0xc6,0xce}, {0xd0,0xd0,0xce,0xd2,0xd6,0xd6,0xd2,0xcc,0xd0,0xd2,0xd0,0xce,0xd2,0xd0,0xcc,0xd0,0xb3,0xbf,0xca,0xd0,0xd2,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xca,0xc6,0xd4,0xd2,0xd0,0xce,0xce,0xcc,0xca,0xc8,0xd2,0xd2,0xd0,0xc4,0xce,0xcc,0xce,0xca,0xce,0xd0,0xd2,0xd2,0xd0,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd2,0xce,0xcc,0xcc,0xce,0xd0,0xce,0xca,0xce,0xd4,0xd4,0xce,0xcc,0xd0,0xd0,0xca,0xc6,0xcc,0xca,0xd6,0xbf,0xd0,0xc8,0xc6,0xcc,0xce,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xd0,0xd2,0xd0,0xd0,0xd4,0xd2,0xd0,0xd2,0xd6,0xd0,0xcc,0xce,0xd0,0xd6,0xd4,0xcc,0xd0,0xd6,0xd4,0xd0,0xd2,0xd2,0xd0,0xd2,0xd2,0xd0,0xd0,0xd4,0xd9,0xd6,0xd2,0xce,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xce,0xce,0xb1,0xbf,0xca,0xd0,0xd0,0xd0,0xd2,0xd2,0xd4,0xd0,0xce,0xce,0xce,0xcc,0xca,0xca,0xd4,0xd2,0xd0,0xce,0xce,0xcc,0xca,0xc8,0xd0,0xd2,0xd0,0xc2,0xce,0xcc,0xce,0xca,0xcc,0xce,0xd0,0xd0,0xce,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xce,0xcc,0xcc,0xce,0xd0,0xce,0xca,0xce,0xd4,0xd4,0xce,0xcc,0xce,0xce,0xca,0xce,0xd0,0xd0,0xd4,0xc4,0xce,0xce,0xc8,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xd2,0xce,0xd2,0xd0,0xd2,0xd4,0xcc,0xca,0xcc,0xd0,0xd6,0xd4,0xcc,0xce,0xd2,0xd4,0xd2,0xd2,0xd2,0xd2,0xd0,0xce,0xce,0xd0,0xd4,0xd6,0xd4,0xd0,0xce,0xce,0xd2,0xd0,0xd0,0xd2,0xd0,0xcc,0xce,0xb5,0xbf,0xce,0xd0,0xd0,0xd4,0xd0,0xd4,0xd2,0xd0,0xce,0xce,0xce,0xcc,0xca,0xca,0xd9,0xd2,0xcc,0xcc,0xd0,0xd0,0xcc,0xc6,0xd0,0xd0,0xd0,0xc4,0xd0,0xcc,0xce,0xca,0xce,0xd0,0xd0,0xd2,0xd0,0xce,0xd0,0xd4,0xd4,0xd2,0xd0,0xd2,0xd2,0xd2,0xd0,0xd2,0xd0,0xce,0xca,0xcc,0xce,0xd0,0xcc,0xc8,0xce,0xd2,0xd4,0xce,0xcc,0xd0,0xce,0xc8}, {0xd4,0xce,0xc6,0xce,0xd2,0xcc,0xce,0xce,0xce,0xd2,0xce,0xce,0xd2,0xd2,0xce,0xd0,0xc1,0xc6,0xce,0xd2,0xd2,0xd0,0xd0,0xd2,0xd4,0xd0,0xcc,0xcc,0xce,0xce,0xce,0xcc,0xd0,0xce,0xce,0xce,0xce,0xce,0xce,0xcc,0xd0,0xce,0xca,0xc6,0xce,0xcc,0xcc,0xce,0xcc,0xd0,0xd2,0xd0,0xce,0xce,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xce,0xce,0xd2,0xd2,0xd0,0xcc,0xcc,0xce,0xd2,0xd0,0xca,0xce,0xce,0xce,0xd0,0xd0,0xce,0xce,0xcc,0xd2,0xd2,0xd4,0xc8,0xc8,0xcc,0xd4,0xce,0xce,0xd0,0xd2,0xd2,0xd0,0xce,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xd4,0xd0,0xcc,0xd0,0xcc,0xd0,0xd4,0xd6,0xd6,0xd2,0xce,0xcc,0xd2,0xd9,0xd4,0xd0,0xd2,0xd4,0xd2,0xd4,0xd4,0xce,0xcc,0xce,0xd0,0xd0,0xce,0xce,0xd2,0xd2,0xd0,0xd2,0xd2,0xd2,0xd0,0xd0,0xc1,0xc8,0xce,0xd0,0xd0,0xd2,0xd2,0xd2,0xd4,0xd0,0xce,0xd0,0xd0,0xce,0xcc,0xcc,0xce,0xce,0xcc,0xce,0xce,0xce,0xce,0xcc,0xd0,0xce,0xca,0xc4,0xcc,0xcc,0xcc,0xcc,0xcc,0xce,0xd0,0xd0,0xce,0xce,0xd0,0xd2,0xd0,0xd2,0xd4,0xd4,0xd2,0xce,0xce,0xd2,0xd2,0xd0,0xcc,0xcc,0xce,0xd2,0xd0,0xca,0xce,0xce,0xce,0xd0,0xd0,0xcc,0xcc,0xce,0xcc,0xd0,0xce,0xcc,0xc4,0xcc,0xce,0xca,0xcc,0xce,0xd0,0xd0,0xce,0xcc,0xce,0xce,0xd0,0xd2,0xce,0xd9,0xce,0xd4,0xcc,0xd2,0xd0,0xd0,0xd6,0xdb,0xd6,0xd4,0xd2,0xce,0xd0,0xd2,0xd4,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xce,0xca,0xcc,0xd0,0xd0,0xce,0xcc,0xce,0xd2,0xd0,0xd0,0xd4,0xd2,0xce,0xce,0xc1,0xc4,0xd0,0xd0,0xd0,0xd4,0xd0,0xd4,0xd2,0xce,0xcc,0xce,0xd0,0xce,0xcc,0xcc,0xd0,0xce,0xcc,0xcc,0xce,0xd0,0xce,0xcc,0xd0,0xce,0xca,0xc6,0xce,0xcc,0xcc,0xce,0xce,0xce,0xd0,0xd2,0xd0,0xce,0xd0,0xd4,0xd0,0xd0,0xd2,0xd2,0xd0,0xce,0xce,0xd0,0xd0,0xce,0xcc,0xcc,0xd0,0xd2,0xce,0xca,0xce,0xce,0xce,0xd0,0xd0,0xce,0xcc,0xcc}, {0xd4,0xd2,0xc8,0xd0,0xce,0xc4,0xcc,0xcc,0xce,0xd0,0xce,0xcc,0xd2,0xd2,0xce,0xce,0xd4,0xd2,0xd0,0xd0,0xd0,0xd0,0xd2,0xd4,0xd0,0xd0,0xce,0xce,0xd0,0xd2,0xd4,0xd6,0xc8,0xca,0xcc,0xcc,0xcc,0xcc,0xce,0xd2,0xce,0xcc,0xc4,0xcc,0xd0,0xd0,0xcc,0xd2,0xcc,0xce,0xd0,0xd0,0xce,0xcc,0xce,0xd2,0xd0,0xd0,0xd2,0xd4,0xd2,0xd0,0xd0,0xd2,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xce,0xd0,0xc6,0xc6,0xd2,0xd2,0xc8,0xc6,0xd0,0xd0,0xd0,0xd0,0xbb,0xc8,0xc6,0xd0,0xce,0xcc,0xce,0xd0,0xd0,0xce,0xcc,0xce,0xce,0xd2,0xd2,0xce,0xd0,0xd4,0xd0,0xce,0xd2,0xd2,0xd4,0xd2,0xd0,0xce,0xce,0xd0,0xd9,0xca,0xd2,0xce,0xc8,0xca,0xce,0xcc,0xce,0xd6,0xd0,0xce,0xce,0xcc,0xca,0xca,0xcc,0xd0,0xd0,0xd0,0xd0,0xd0,0xd2,0xd0,0xce,0xd4,0xd4,0xd2,0xd0,0xce,0xd2,0xd4,0xd4,0xd2,0xd0,0xd0,0xd2,0xd4,0xd2,0xd4,0xd4,0xc6,0xca,0xcc,0xcc,0xcc,0xcc,0xd0,0xd2,0xce,0xcc,0xc6,0xca,0xce,0xd0,0xcc,0xd2,0xcc,0xce,0xd0,0xd0,0xce,0xcc,0xd0,0xd2,0xd0,0xd0,0xd2,0xd4,0xd2,0xce,0xd0,0xd2,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xce,0xd2,0xc8,0xc8,0xd4,0xd2,0xc6,0xc6,0xd2,0xcc,0xd0,0xcc,0xc2,0xc8,0xce,0xd2,0xd2,0xcc,0xce,0xd0,0xd0,0xcc,0xcc,0xcc,0xce,0xd2,0xd0,0xce,0xd4,0xd2,0xd2,0xd0,0xd2,0xd2,0xce,0xd2,0xd0,0xca,0xca,0xd2,0xd4,0xca,0xce,0xce,0xca,0xc8,0xca,0xcc,0xce,0xd4,0xd0,0xcc,0xcc,0xcc,0xca,0xca,0xcc,0xcc,0xd2,0xce,0xcc,0xd0,0xd2,0xce,0xce,0xd2,0xd0,0xd2,0xcc,0xcc,0xd2,0xd0,0xd4,0xd0,0xce,0xce,0xd0,0xd2,0xd2,0xd2,0xd4,0xc4,0xca,0xd0,0xce,0xca,0xc8,0xce,0xd4,0xce,0xcc,0xc4,0xcc,0xd0,0xd0,0xcc,0xd2,0xce,0xce,0xd0,0xd0,0xce,0xcc,0xce,0xd4,0xce,0xd0,0xd2,0xd4,0xd2,0xce,0xce,0xd0,0xd2,0xd4,0xd2,0xd0,0xd2,0xd4,0xd2,0xd0,0xd2,0xc6,0xc6,0xd2,0xd2,0xc8,0xc8,0xd2}, {0xd0,0xd4,0xd0,0xd6,0xd4,0xca,0xd2,0xd2,0xd0,0xd2,0xce,0xcc,0xd2,0xd0,0xcc,0xcc,0xcc,0xcc,0xce,0xd2,0xd4,0xd4,0xd2,0xd0,0xce,0xd0,0xd2,0xd2,0xd0,0xce,0xd0,0xd2,0xca,0xd0,0xd2,0xd0,0xca,0xc8,0xcc,0xd0,0xd2,0xce,0xc4,0xd2,0xd0,0xd0,0xc6,0xce,0xca,0xce,0xd0,0xd0,0xce,0xcc,0xce,0xd0,0xd0,0xd0,0xd2,0xd4,0xd4,0xd2,0xd2,0xd2,0xce,0xd2,0xd4,0xd0,0xce,0xd0,0xd0,0xce,0xce,0xce,0xce,0xcc,0xcc,0xcc,0xcc,0xca,0xc6,0xd2,0xd2,0xcc,0xd2,0xd4,0xcc,0xc8,0xcc,0xce,0xd0,0xce,0xcc,0xca,0xcc,0xce,0xd2,0xd0,0xce,0xd0,0xd4,0xd2,0xd2,0xd9,0xd0,0xd2,0xce,0xce,0xd2,0xd0,0xce,0xd2,0xd0,0xd9,0xd4,0xce,0xd0,0xd4,0xd4,0xd6,0xd0,0xd0,0xd2,0xd4,0xd2,0xce,0xce,0xd4,0xd0,0xd0,0xd0,0xd0,0xd0,0xd2,0xd0,0xce,0xcc,0xce,0xd0,0xd2,0xd4,0xd6,0xd4,0xd0,0xd0,0xd0,0xd0,0xd2,0xd0,0xcc,0xce,0xd2,0xca,0xd0,0xd2,0xd0,0xca,0xc8,0xcc,0xd0,0xd2,0xd0,0xc6,0xd2,0xd0,0xd2,0xc6,0xce,0xce,0xd0,0xd2,0xd0,0xcc,0xcc,0xce,0xd2,0xce,0xd0,0xd2,0xd4,0xd2,0xd0,0xd0,0xd2,0xce,0xd2,0xd4,0xd0,0xce,0xd0,0xd0,0xce,0xd0,0xd0,0xd0,0xce,0xcc,0xcc,0xcc,0xce,0xc8,0xd2,0xd4,0xc6,0xd4,0xd0,0xce,0xc8,0xca,0xce,0xd0,0xce,0xcc,0xca,0xcc,0xce,0xd6,0xcc,0xd0,0xce,0xd9,0xd0,0xd4,0xd0,0xd2,0xcc,0xd0,0xd2,0xd0,0xd0,0xd4,0xd4,0xd2,0xd4,0xd4,0xce,0xcc,0xce,0xd4,0xd6,0xd2,0xd0,0xd2,0xd4,0xd2,0xce,0xce,0xd2,0xce,0xd2,0xce,0xca,0xd0,0xd2,0xce,0xce,0xce,0xcc,0xd2,0xd0,0xd2,0xd9,0xd0,0xd0,0xd2,0xd0,0xd0,0xd0,0xce,0xce,0xd0,0xd4,0xce,0xd0,0xd0,0xce,0xcc,0xca,0xcc,0xcc,0xd2,0xd0,0xc6,0xd2,0xd2,0xd0,0xc4,0xce,0xce,0xce,0xd0,0xd0,0xcc,0xca,0xce,0xd2,0xce,0xd0,0xd2,0xd6,0xd4,0xd2,0xd0,0xd2,0xce,0xd2,0xd2,0xd0,0xce,0xd0,0xd0,0xd0,0xd2,0xd0,0xce,0xcc,0xcc,0xce,0xce,0xcc}, {0xd6,0xd0,0xd4,0xce,0xc8,0xce,0xd0,0xd2,0xd2,0xd2,0xd4,0xd2,0xd0,0xcc,0xce,0xd0,0xd0,0xd0,0xc8,0xd2,0xd0,0xdb,0xd0,0xce,0xd0,0xd2,0xd2,0xd0,0xce,0xce,0xce,0xce,0xd2,0xce,0xce,0xca,0xce,0xd4,0xcc,0xc6,0xc8,0xce,0xca,0xca,0xd0,0xcc,0xc8,0xd0,0xca,0xce,0xd0,0xce,0xcc,0xce,0xd0,0xd2,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd4,0xd4,0xd4,0xd2,0xd0,0xd0,0xce,0xcc,0xca,0xca,0xd2,0xce,0xcc,0xd0,0xd2,0xce,0xca,0xc8,0xc4,0xce,0xca,0xcc,0xd2,0xca,0xcc,0xd0,0xce,0xcc,0xcc,0xcc,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd2,0xd6,0xd9,0xd4,0xd2,0xd2,0xd2,0xd4,0xd2,0xd0,0xd2,0xce,0xd0,0xd4,0xd4,0xd0,0xce,0xd0,0xd6,0xd9,0xd0,0xd4,0xce,0xc8,0xce,0xd0,0xd4,0xd2,0xd2,0xd2,0xd4,0xd0,0xce,0xce,0xd2,0xd0,0xce,0xca,0xd6,0xd0,0xdb,0xd4,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xcc,0xce,0xd0,0xd0,0xce,0xd0,0xcc,0xd0,0xd4,0xcc,0xc6,0xcc,0xca,0xce,0xc8,0xce,0xd2,0xc4,0xd0,0xcc,0xce,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd2,0xd2,0xd2,0xd0,0xd2,0xd0,0xce,0xce,0xd0,0xd0,0xce,0xcc,0xcc,0xd0,0xce,0xcc,0xce,0xd2,0xd0,0xca,0xc6,0xc8,0xca,0xcc,0xce,0xce,0xce,0xca,0xce,0xd0,0xd0,0xce,0xcc,0xcc,0xce,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xd0,0xd4,0xd2,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xd2,0xd4,0xd4,0xd2,0xce,0xd0,0xd4,0xd6,0xce,0xd4,0xd0,0xca,0xd0,0xd0,0xd4,0xd4,0xd6,0xd4,0xd0,0xcc,0xce,0xd2,0xd4,0xd0,0xce,0xca,0xd2,0xcc,0xd6,0xd2,0xce,0xd2,0xd0,0xd0,0xd0,0xce,0xcc,0xcc,0xce,0xd2,0xc8,0xd9,0xc6,0xd0,0xd2,0xc8,0xc6,0xcc,0xc6,0xd0,0xcc,0xcc,0xd0,0xc8,0xd0,0xca,0xce,0xd0,0xce,0xcc,0xce,0xd0,0xd0,0xd2,0xd0,0xd2,0xd4,0xd4,0xd0,0xd0,0xd4,0xd4,0xd2,0xd0,0xce,0xce,0xce,0xce,0xce,0xcc,0xd0,0xd0,0xce,0xcc,0xd0,0xd0,0xce}, {0xcc,0xc8,0xd2,0xd0,0xce,0xd2,0xce,0xce,0xd0,0xd0,0xce,0xcc,0xca,0xca,0xcc,0xd2,0xd2,0xd2,0xd6,0xd2,0xd0,0xcc,0xd0,0xd6,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xce,0xce,0xca,0xce,0xce,0xd0,0xd2,0xc8,0xd0,0xc8,0xca,0xd0,0xcc,0xcc,0xd0,0xcc,0xc8,0xd0,0xd2,0xce,0xca,0xcc,0xd0,0xd2,0xca,0xc1,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xd4,0xd0,0xc8,0xce,0xce,0xcc,0xc8,0xd4,0xcc,0xca,0xd2,0xcc,0xcc,0xce,0xc6,0xc8,0xd0,0xd0,0xd0,0xd0,0xce,0xcc,0xc8,0xc6,0xca,0xce,0xd2,0xd6,0xd6,0xd2,0xd0,0xce,0xd4,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd0,0xd0,0xd2,0xd6,0xcc,0xc8,0xd4,0xd4,0xd0,0xd4,0xce,0xce,0xd2,0xd0,0xce,0xcc,0xca,0xca,0xce,0xd2,0xd4,0xd2,0xd9,0xd6,0xce,0xcc,0xd4,0xd4,0xd2,0xd0,0xce,0xd0,0xd0,0xce,0xce,0xd0,0xca,0xd0,0xd0,0xd2,0xd4,0xca,0xd0,0xca,0xcc,0xce,0xce,0xca,0xd0,0xce,0xc6,0xd0,0xd2,0xce,0xcc,0xcc,0xd2,0xd2,0xc8,0xbf,0xd0,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xd0,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xce,0xd6,0xce,0xca,0xd0,0xcc,0xcc,0xca,0xd2,0xcc,0xcc,0xd0,0xce,0xce,0xce,0xc8,0xc8,0xd0,0xcc,0xca,0xce,0xd2,0xd2,0xcc,0xc6,0xca,0xcc,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xd0,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd2,0xd0,0xce,0xce,0xd0,0xd2,0xce,0xca,0xd4,0xd2,0xce,0xd0,0xcc,0xcc,0xd0,0xd0,0xd0,0xcc,0xca,0xcc,0xce,0xd0,0xd0,0xd0,0xd9,0xd6,0xce,0xcc,0xd2,0xd4,0xd0,0xce,0xce,0xd0,0xd0,0xce,0xce,0xd0,0xc8,0xcc,0xd0,0xd0,0xd0,0xca,0xcc,0xcc,0xcc,0xca,0xd0,0xce,0xce,0xce,0xca,0xce,0xd2,0xce,0xcc,0xcc,0xd2,0xd2,0xca,0xc1,0xd0,0xd0,0xd2,0xd4,0xd2,0xd0,0xd2,0xd6,0xd2,0xd0,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xd2,0xce,0xca,0xd4,0xd0,0xcc,0xc8,0xce}, {0xd0,0xc8,0xd0,0xce,0xcc,0xd0,0xce,0xce,0xd0,0xd0,0xd0,0xce,0xcc,0xcc,0xd0,0xd2,0xcc,0xcc,0xd4,0xcc,0xcc,0xbf,0xca,0xd0,0xd0,0xce,0xce,0xce,0xce,0xd0,0xce,0xcc,0xce,0xd4,0xcc,0xd0,0xd6,0xc2,0xd4,0xca,0xcc,0xd0,0xd0,0xce,0xce,0xca,0xc8,0xd0,0xcc,0xce,0xd0,0xd0,0xd0,0xd0,0xcc,0xc8,0xce,0xd0,0xd2,0xd2,0xd0,0xce,0xd0,0xd2,0xd0,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xce,0xd0,0xd2,0xca,0xd4,0xd0,0xd0,0xc8,0xd2,0xcc,0xca,0xd0,0xce,0xce,0xce,0xc8,0xca,0xcc,0xcc,0xce,0xd0,0xd2,0xd0,0xce,0xcc,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xd0,0xd2,0xd0,0xce,0xd0,0xd2,0xd0,0xce,0xd0,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xd0,0xca,0xd2,0xd2,0xce,0xd2,0xce,0xce,0xd2,0xd2,0xd0,0xce,0xcc,0xcc,0xd0,0xd2,0xd0,0xca,0xd6,0xd0,0xcc,0xbf,0xcc,0xce,0xd2,0xd0,0xce,0xd0,0xd2,0xd0,0xce,0xce,0xce,0xd6,0xce,0xd2,0xd9,0xc2,0xd6,0xca,0xcc,0xd2,0xcc,0xce,0xd0,0xca,0xca,0xce,0xcc,0xce,0xd2,0xd2,0xd0,0xce,0xcc,0xc8,0xce,0xd2,0xd4,0xd2,0xce,0xce,0xce,0xd2,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xd0,0xd0,0xcc,0xd9,0xd0,0xd0,0xc8,0xd0,0xcc,0xc8,0xd2,0xce,0xce,0xd2,0xc8,0xcc,0xcc,0xce,0xd0,0xd2,0xd2,0xd0,0xce,0xcc,0xcc,0xce,0xd2,0xd4,0xd2,0xd0,0xce,0xce,0xd0,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xd0,0xc8,0xd0,0xce,0xcc,0xd2,0xce,0xce,0xd0,0xd2,0xd0,0xce,0xcc,0xce,0xd0,0xd0,0xcc,0xca,0xd9,0xd0,0xce,0xbf,0xcc,0xce,0xd0,0xce,0xcc,0xce,0xd0,0xd0,0xd0,0xd0,0xca,0xd4,0xca,0xd4,0xd0,0xc6,0xd0,0xcc,0xcc,0xd0,0xce,0xd2,0xce,0xc8,0xce,0xce,0xcc,0xce,0xd0,0xd0,0xd2,0xd2,0xce,0xca,0xd0,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd4,0xd0,0xd0,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xd4,0xd0,0xc8,0xd4,0xce,0xd0,0xca,0xd0}, {0xd2,0xca,0xd0,0xce,0xcc,0xd2,0xd0,0xd0,0xd0,0xd2,0xd4,0xd2,0xd2,0xd2,0xd2,0xd0,0xd2,0xcc,0xd0,0xd0,0xd4,0xca,0xcc,0xce,0xd2,0xce,0xcc,0xce,0xd0,0xd0,0xce,0xcc,0xd2,0xd2,0xca,0xc8,0xd4,0xc8,0xd9,0xca,0xce,0xd0,0xd0,0xd0,0xce,0xca,0xca,0xce,0xc8,0xce,0xd2,0xd0,0xce,0xd0,0xd2,0xd6,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xd0,0xd0,0xce,0xce,0xc6,0xd4,0xce,0xd0,0xc8,0xd4,0xcc,0xce,0xcc,0xcc,0xd0,0xd0,0xce,0xce,0xca,0xcc,0xcc,0xcc,0xcc,0xce,0xd2,0xd4,0xd4,0xd4,0xd2,0xd2,0xd2,0xd0,0xce,0xce,0xd2,0xd4,0xd2,0xd0,0xce,0xd0,0xd2,0xd0,0xd0,0xd0,0xcc,0xce,0xd0,0xd2,0xd2,0xd2,0xcc,0xc8,0xd4,0xcc,0xd0,0xce,0xcc,0xd4,0xd2,0xd2,0xd2,0xd2,0xd4,0xd2,0xd2,0xd2,0xd2,0xd0,0xd2,0xca,0xd0,0xd2,0xd4,0xcc,0xd0,0xce,0xd2,0xce,0xce,0xd0,0xd2,0xd0,0xd0,0xce,0xd0,0xd2,0xca,0xc8,0xd4,0xc8,0xd9,0xca,0xcc,0xd4,0xcc,0xd2,0xd0,0xc6,0xce,0xce,0xc8,0xce,0xd2,0xd0,0xcc,0xce,0xd2,0xd6,0xce,0xd0,0xd2,0xd0,0xd0,0xce,0xd0,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xce,0xce,0xce,0xc6,0xd2,0xd0,0xd2,0xc8,0xd4,0xce,0xcc,0xcc,0xc8,0xd4,0xce,0xce,0xd2,0xc8,0xce,0xcc,0xce,0xd2,0xd0,0xce,0xce,0xd2,0xd6,0xce,0xd2,0xd4,0xd4,0xd2,0xd0,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xcc,0xcc,0xce,0xd0,0xd0,0xd2,0xd0,0xcc,0xc8,0xd0,0xca,0xd0,0xd0,0xce,0xd4,0xd2,0xd2,0xd2,0xd4,0xd2,0xd0,0xd0,0xd0,0xd2,0xd0,0xd4,0xca,0xd0,0xd2,0xd2,0xca,0xd0,0xce,0xd2,0xce,0xcc,0xce,0xd0,0xd0,0xce,0xcc,0xd0,0xd2,0xca,0xca,0xd0,0xca,0xd6,0xcc,0xcc,0xd4,0xcc,0xd2,0xd0,0xc6,0xd0,0xcc,0xc8,0xce,0xd2,0xd0,0xce,0xd0,0xd4,0xd6,0xd0,0xd0,0xd0,0xd2,0xd0,0xd0,0xd0,0xd0,0xd2,0xd0,0xce,0xce,0xce,0xce,0xce,0xce,0xca,0xd4,0xcc,0xce,0xc4,0xd4,0xd0,0xce}, {0xce,0xc8,0xd0,0xd2,0xd0,0xd6,0xd0,0xce,0xce,0xd0,0xd2,0xd0,0xd0,0xd0,0xce,0xcc,0xd2,0xce,0xc8,0xd2,0xd0,0xd4,0xce,0xd2,0xd2,0xce,0xcc,0xce,0xd0,0xd0,0xce,0xce,0xca,0xcc,0xd0,0xc4,0xcc,0xd0,0xd4,0xcc,0xce,0xce,0xd0,0xd0,0xcc,0xca,0xcc,0xce,0xce,0xce,0xcc,0xcc,0xd0,0xd2,0xd2,0xce,0xcc,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xd2,0xd0,0xd0,0xce,0xce,0xd0,0xd0,0xce,0xce,0xc6,0xd4,0xcc,0xc6,0xc4,0xd0,0xce,0xd0,0xd2,0xd0,0xce,0xd0,0xce,0xca,0xc8,0xc8,0xce,0xce,0xcc,0xce,0xce,0xd0,0xd0,0xd0,0xcc,0xce,0xd2,0xd4,0xd2,0xd0,0xd0,0xd0,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xce,0xd0,0xd2,0xd2,0xd4,0xd4,0xd0,0xca,0xd0,0xc8,0xd0,0xd0,0xd0,0xd6,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd0,0xce,0xd4,0xcc,0xc8,0xd4,0xd2,0xd6,0xd2,0xd2,0xd2,0xce,0xce,0xd0,0xd2,0xd0,0xce,0xce,0xca,0xcc,0xd0,0xc4,0xca,0xce,0xd4,0xcc,0xcc,0xd2,0xcc,0xd2,0xce,0xc6,0xd0,0xcc,0xd0,0xce,0xcc,0xcc,0xd0,0xd2,0xd2,0xcc,0xce,0xce,0xce,0xce,0xd0,0xd2,0xd0,0xd0,0xd0,0xd0,0xd2,0xd0,0xd0,0xce,0xce,0xce,0xc8,0xd2,0xcc,0xc8,0xc2,0xd0,0xd0,0xce,0xd2,0xcc,0xd2,0xce,0xcc,0xce,0xc4,0xcc,0xd0,0xcc,0xc8,0xca,0xd0,0xd4,0xd2,0xce,0xcc,0xce,0xd0,0xd0,0xd0,0xd0,0xd2,0xd4,0xd2,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xcc,0xce,0xd0,0xd0,0xd0,0xd0,0xd2,0xce,0xc8,0xd0,0xca,0xd2,0xd2,0xd2,0xd4,0xd0,0xcc,0xd0,0xd2,0xd0,0xce,0xce,0xd0,0xce,0xcc,0xd4,0xcc,0xc8,0xd2,0xce,0xd2,0xd2,0xd2,0xd2,0xce,0xcc,0xce,0xd0,0xce,0xcc,0xcc,0xca,0xcc,0xd0,0xc1,0xce,0xcc,0xd6,0xcc,0xcc,0xd2,0xcc,0xd2,0xce,0xc6,0xd0,0xcc,0xd0,0xce,0xcc,0xcc,0xce,0xd2,0xd0,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xd0,0xd0,0xd0,0xce,0xc4,0xd0,0xce,0xcc,0xc4,0xd0,0xce,0xcc}, {0xd6,0xcc,0xce,0xca,0xc6,0xce,0xce,0xd0,0xd0,0xd2,0xd0,0xca,0xca,0xce,0xd0,0xcc,0xce,0xd0,0xc8,0xce,0xc4,0xd0,0xce,0xd4,0xd2,0xce,0xcc,0xd0,0xd0,0xce,0xcc,0xce,0xcc,0xd0,0xd9,0xce,0xca,0xd0,0xca,0xca,0xce,0xca,0xce,0xd0,0xcc,0xcc,0xce,0xcc,0xca,0xce,0xd2,0xd2,0xd0,0xd0,0xd0,0xce,0xcc,0xcc,0xce,0xce,0xd0,0xd0,0xd2,0xd2,0xce,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xce,0xca,0xcc,0xce,0xce,0xd2,0xcc,0xc8,0xcc,0xd0,0xce,0xca,0xce,0xd0,0xc8,0xcc,0xca,0xce,0xce,0xce,0xd0,0xd2,0xd0,0xce,0xce,0xce,0xce,0xcc,0xce,0xce,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xce,0xce,0xd2,0xd2,0xce,0xd4,0xcc,0xd0,0xcc,0xca,0xd0,0xce,0xce,0xd2,0xd2,0xd0,0xcc,0xce,0xd2,0xd2,0xd0,0xd2,0xd0,0xc8,0xd0,0xc6,0xd2,0xd0,0xd2,0xd2,0xd0,0xce,0xd0,0xd0,0xce,0xce,0xce,0xca,0xd0,0xd9,0xce,0xc8,0xce,0xca,0xcc,0xce,0xcc,0xcc,0xd0,0xcc,0xc8,0xd0,0xcc,0xce,0xd0,0xd0,0xd0,0xd2,0xd2,0xd0,0xcc,0xce,0xcc,0xca,0xce,0xd2,0xd2,0xd0,0xce,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xce,0xcc,0xcc,0xce,0xce,0xce,0xca,0xcc,0xcc,0xd0,0xcc,0xca,0xcc,0xce,0xca,0xca,0xcc,0xce,0xce,0xce,0xd0,0xd2,0xd2,0xce,0xcc,0xce,0xce,0xcc,0xcc,0xcc,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd2,0xce,0xcc,0xcc,0xd0,0xd0,0xcc,0xd6,0xcc,0xd0,0xca,0xc8,0xce,0xce,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xce,0xce,0xcc,0xcc,0xcc,0xc6,0xd0,0xc4,0xd0,0xce,0xd0,0xce,0xcc,0xcc,0xce,0xd0,0xce,0xcc,0xcc,0xca,0xce,0xd9,0xca,0xce,0xca,0xd0,0xca,0xcc,0xce,0xca,0xce,0xcc,0xc8,0xce,0xcc,0xcc,0xce,0xd2,0xd0,0xd0,0xd0,0xce,0xcc,0xca,0xcc,0xcc,0xce,0xd0,0xd2,0xd2,0xd0,0xce,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xce,0xca,0xcc,0xd0,0xd2,0xd0,0xca,0xca,0xcc}, {0xd6,0xcc,0xce,0xc8,0xc2,0xca,0xcc,0xd0,0xce,0xd0,0xd0,0xca,0xcc,0xd0,0xd2,0xce,0xd0,0xd4,0xd2,0xce,0xca,0xd0,0xd0,0xd0,0xd2,0xcc,0xcc,0xd0,0xce,0xca,0xc8,0xcc,0xd2,0xd2,0xc6,0xd4,0xca,0xce,0xc8,0xcc,0xce,0xc6,0xca,0xce,0xca,0xcc,0xd0,0xca,0xc8,0xce,0xd4,0xd2,0xce,0xd0,0xd2,0xd4,0xcc,0xcc,0xcc,0xce,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xce,0xce,0xce,0xcc,0xcc,0xcc,0xca,0xd0,0xca,0xd6,0xca,0xcc,0xca,0xcc,0xca,0xc2,0xcc,0xd0,0xca,0xd0,0xce,0xce,0xce,0xce,0xd0,0xd2,0xd2,0xd2,0xd0,0xd2,0xce,0xca,0xc8,0xcc,0xd0,0xd2,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xce,0xd0,0xd0,0xcc,0xce,0xd2,0xd2,0xcc,0xd6,0xce,0xd0,0xcc,0xc6,0xcc,0xce,0xd0,0xd2,0xd4,0xd2,0xce,0xce,0xd4,0xd4,0xd0,0xd6,0xd6,0xd4,0xd2,0xcc,0xd4,0xd4,0xce,0xd2,0xd0,0xce,0xd0,0xce,0xcc,0xcc,0xcc,0xd2,0xd2,0xc8,0xd4,0xca,0xce,0xc8,0xce,0xce,0xc4,0xcc,0xce,0xc8,0xcc,0xce,0xcc,0xc8,0xce,0xd4,0xd2,0xd0,0xd0,0xd2,0xd2,0xce,0xcc,0xcc,0xce,0xd0,0xd2,0xd0,0xce,0xd0,0xce,0xcc,0xcc,0xce,0xce,0xcc,0xca,0xcc,0xc8,0xd0,0xca,0xd4,0xca,0xce,0xca,0xcc,0xcc,0xc1,0xca,0xce,0xc8,0xd2,0xce,0xcc,0xd0,0xd4,0xd2,0xce,0xcc,0xce,0xd2,0xd2,0xd0,0xcc,0xcc,0xcc,0xce,0xce,0xcc,0xd0,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xce,0xd0,0xd0,0xcc,0xcc,0xd0,0xd0,0xcc,0xd4,0xca,0xce,0xc8,0xc4,0xcc,0xce,0xd2,0xd0,0xd0,0xce,0xce,0xce,0xd2,0xd0,0xce,0xd0,0xd2,0xd2,0xd0,0xcc,0xd2,0xd2,0xca,0xce,0xcc,0xcc,0xce,0xce,0xcc,0xca,0xca,0xd0,0xd4,0xc2,0xd2,0xcc,0xca,0xcc,0xca,0xcc,0xc8,0xca,0xca,0xca,0xce,0xca,0xce,0xc8,0xce,0xd4,0xd2,0xd0,0xd0,0xd2,0xd2,0xca,0xcc,0xcc,0xcc,0xce,0xd2,0xd2,0xd0,0xd0,0xce,0xce,0xce,0xce,0xce,0xcc,0xca,0xd0,0xca,0xd0,0xc8,0xd2,0xc8,0xd0,0xce}, {0xc2,0xc1,0xd0,0xd2,0xd0,0xd2,0xce,0xce,0xca,0xce,0xd0,0xcc,0xce,0xd2,0xd0,0xca,0xce,0xce,0xd2,0xc6,0xd0,0xce,0xcc,0xbd,0xd0,0xcc,0xcc,0xce,0xcc,0xc6,0xc6,0xca,0xd0,0xc6,0xa7,0xcc,0xcc,0xd0,0xd0,0xd0,0xcc,0xc2,0xc6,0xce,0xca,0xcc,0xd0,0xca,0xd4,0xce,0xc8,0xc6,0xce,0xd2,0xd0,0xca,0xcc,0xcc,0xcc,0xce,0xd0,0xd0,0xd0,0xce,0xd0,0xd0,0xce,0xcc,0xcc,0xca,0xc8,0xc8,0xce,0xce,0xcc,0xb1,0xc4,0xc6,0xd6,0xd0,0xd0,0xcc,0xc1,0xca,0xce,0xc8,0xce,0xca,0xd2,0xd0,0xcc,0xca,0xcc,0xce,0xce,0xd0,0xce,0xcc,0xcc,0xd0,0xd4,0xd4,0xd0,0xcc,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd2,0xc8,0xd0,0xd4,0xd2,0xd2,0xd4,0xd2,0xca,0xc6,0xc4,0xd2,0xd4,0xd2,0xd4,0xd2,0xd2,0xce,0xd2,0xd2,0xd0,0xd2,0xd6,0xd4,0xcc,0xd2,0xce,0xd2,0xca,0xd2,0xd4,0xd2,0xbd,0xd2,0xd0,0xd0,0xd0,0xce,0xca,0xca,0xcc,0xd2,0xca,0xaa,0xcc,0xcc,0xd0,0xd2,0xd4,0xcc,0xc1,0xcc,0xcc,0xc8,0xd0,0xcc,0xce,0xd4,0xce,0xca,0xc8,0xce,0xd2,0xce,0xca,0xcc,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xd2,0xd0,0xcc,0xcc,0xcc,0xca,0xc8,0xc4,0xce,0xcc,0xce,0xb3,0xc4,0xc6,0xd9,0xcc,0xce,0xd0,0xbd,0xca,0xce,0xc2,0xd2,0xca,0xd2,0xcc,0xc8,0xc8,0xcc,0xd0,0xd0,0xd0,0xd0,0xce,0xca,0xcc,0xd0,0xd2,0xd2,0xd0,0xd2,0xd0,0xce,0xce,0xce,0xce,0xce,0xcc,0xc6,0xce,0xd2,0xd0,0xd0,0xd2,0xce,0xc6,0xc4,0xc2,0xd0,0xd4,0xd0,0xd2,0xce,0xcc,0xce,0xce,0xcc,0xcc,0xce,0xd2,0xd2,0xd0,0xd2,0xce,0xd0,0xc6,0xce,0xce,0xd0,0xbb,0xd0,0xce,0xce,0xd0,0xcc,0xc8,0xc6,0xc8,0xd0,0xce,0xa1,0xce,0xc8,0xce,0xd0,0xce,0xcc,0xc2,0xca,0xc6,0xca,0xd0,0xc8,0xce,0xd4,0xce,0xc8,0xc8,0xd0,0xd4,0xd0,0xca,0xcc,0xce,0xce,0xcc,0xce,0xd2,0xd0,0xcc,0xd2,0xd0,0xce,0xce,0xcc,0xca,0xc6,0xc4,0xce,0xca,0xcc,0xb3,0xc4,0xc8,0xd6,0xca}, {0xcb,0xcd,0xd1,0xd1,0xd1,0xcd,0xcb,0xcb,0xcd,0xc9,0xc9,0xcd,0xcb,0xc9,0xcb,0xcf,0xcf,0xcf,0xcd,0xcd,0xd1,0xd1,0xc5,0xb8,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcf,0xd1,0xcf,0xcd,0xcd,0xcd,0xcd,0xd1,0xd1,0xcb,0xc5,0xc7,0xc7,0xc7,0xcd,0xcb,0xc7,0xc9,0xd1,0xd3,0xcd,0xc9,0xcb,0xcf,0xcd,0xcb,0xcd,0xd1,0xd3,0xd1,0xcf,0xd1,0xcd,0xc7,0xcf,0xd1,0xcb,0xcb,0xc9,0xcd,0xcd,0xcf,0xcf,0xcf,0xcd,0xcd,0xcb,0xce,0xd4,0xd2,0xca,0xc6,0xca,0xcc,0xca,0xcc,0xce,0xce,0xce,0xce,0xce,0xd0,0xd4,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd4,0xd0,0xd9,0xd4,0xd0,0xce,0xd0,0xd6,0xd0,0xd0,0xd4,0xd4,0xd2,0xd2,0xd4,0xd4,0xd2,0xce,0xce,0xd0,0xd4,0xd4,0xd0,0xce,0xd0,0xd4,0xd0,0xce,0xd0,0xd2,0xd0,0xd0,0xd2,0xd0,0xd2,0xd2,0xd2,0xd4,0xd4,0xc8,0xbd,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xd0,0xd0,0xd4,0xcc,0xc6,0xc8,0xca,0xcc,0xce,0xcc,0xcc,0xce,0xd2,0xd2,0xd0,0xce,0xcc,0xd0,0xd0,0xce,0xd0,0xd2,0xd4,0xd2,0xce,0xd0,0xce,0xcc,0xce,0xd0,0xd2,0xce,0xca,0xcd,0xcf,0xcf,0xcf,0xcf,0xcd,0xcb,0xcb,0xcd,0xd1,0xcf,0xc7,0xc1,0xc1,0xc7,0xc9,0xcb,0xcb,0xcb,0xcb,0xcd,0xcf,0xcf,0xd1,0xcd,0xcd,0xcd,0xcd,0xcf,0xcf,0xcf,0xd1,0xcd,0xd5,0xd1,0xd1,0xcf,0xcd,0xd1,0xcb,0xcd,0xcf,0xd1,0xcf,0xcf,0xd1,0xcf,0xcb,0xcb,0xcd,0xd1,0xd3,0xd1,0xcb,0xc9,0xcd,0xcf,0xcb,0xcb,0xcd,0xcf,0xcd,0xcd,0xd1,0xcd,0xcf,0xcf,0xcd,0xcf,0xcf,0xc5,0xba,0xcb,0xcd,0xcf,0xcf,0xcd,0xcd,0xcd,0xcf,0xcd,0xcd,0xcf,0xcf,0xcd,0xcb,0xcb,0xcd,0xcd,0xd1,0xc5,0xc7,0xc3,0xcb,0xc5,0xcf,0xcb,0xc7,0xcf,0xd3,0xcd,0xcd,0xd1,0xcb,0xcf,0xcd,0xcd,0xcf,0xd1,0xd1,0xcf,0xcd,0xd1,0xcf,0xcb,0xcb,0xcd,0xcf,0xcf,0xcb,0xcd,0xcd,0xcd,0xcf,0xcf,0xcd,0xcb,0xcb}, {0xcf,0xcd,0xcd,0xcb,0xcb,0xcd,0xcd,0xcf,0xcf,0xcd,0xcd,0xcf,0xcf,0xcb,0xcd,0xcf,0xcb,0xd1,0xd1,0xcf,0xcb,0xcd,0xcd,0xcb,0xcf,0xcd,0xcd,0xcd,0xcd,0xcb,0xcb,0xcb,0xc9,0xcb,0xcd,0xcb,0xcb,0xc9,0xcb,0xcb,0xcf,0xcf,0xcb,0xc7,0xc9,0xc9,0xc7,0xcd,0xd1,0xd1,0xcd,0xc9,0xc9,0xcb,0xcd,0xcf,0xcb,0xc9,0xc7,0xc9,0xcb,0xcf,0xcf,0xcd,0xcf,0xd1,0xcd,0xd1,0xcf,0xc5,0xcb,0xcd,0xc7,0xc9,0xcb,0xcd,0xcd,0xcd,0xcd,0xcd,0xce,0xd2,0xd2,0xca,0xc8,0xca,0xcc,0xca,0xd0,0xd0,0xd0,0xd0,0xce,0xcc,0xcc,0xcc,0xce,0xce,0xce,0xcc,0xca,0xca,0xce,0xd2,0xcc,0xd0,0xcc,0xd2,0xd9,0xd2,0xcc,0xbd,0xd0,0xd4,0xd4,0xd2,0xd2,0xd4,0xd4,0xd2,0xd4,0xd0,0xce,0xce,0xd0,0xce,0xd0,0xd4,0xd4,0xd0,0xce,0xd0,0xd0,0xce,0xce,0xd0,0xd4,0xd2,0xd0,0xce,0xd2,0xd4,0xd0,0xca,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xcc,0xce,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xd0,0xce,0xd2,0xce,0xc8,0xca,0xcc,0xcc,0xce,0xd4,0xd2,0xd0,0xcc,0xcc,0xcc,0xce,0xd0,0xd0,0xcc,0xca,0xc8,0xca,0xce,0xd0,0xd0,0xce,0xd0,0xd2,0xd0,0xce,0xcc,0xce,0xce,0xc7,0xc9,0xc9,0xcb,0xcd,0xcd,0xcd,0xcd,0xcd,0xcf,0xcd,0xc9,0xc7,0xc9,0xcb,0xcb,0xcd,0xcf,0xcf,0xcd,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcb,0xc9,0xc7,0xc9,0xcd,0xcf,0xcd,0xcd,0xc7,0xcd,0xd1,0xcb,0xc7,0xbc,0xcf,0xd1,0xd1,0xcf,0xcf,0xd1,0xcf,0xcb,0xd1,0xcd,0xcb,0xcb,0xcd,0xcb,0xcd,0xcf,0xcf,0xcd,0xcb,0xcd,0xcd,0xcb,0xcb,0xcd,0xcf,0xcf,0xcd,0xcb,0xcf,0xd1,0xcf,0xc9,0xcd,0xcd,0xcd,0xcd,0xcd,0xcb,0xcd,0xcd,0xc9,0xcb,0xcd,0xcd,0xcb,0xcb,0xcb,0xcd,0xcb,0xcf,0xc7,0xc7,0xc7,0xcb,0xc7,0xcd,0xd3,0xcf,0xcf,0xcd,0xc7,0xc9,0xcd,0xcf,0xcd,0xcb,0xc9,0xc7,0xc9,0xcd,0xcf,0xcf,0xcd,0xd1,0xd1,0xcf,0xcb,0xcb,0xcb,0xcd,0xc7,0xc9,0xcb,0xcb,0xcd,0xcd,0xcd,0xcd}, {0xd1,0xcd,0xc9,0xc9,0xc9,0xcd,0xcf,0xcf,0xcf,0xcd,0xcd,0xcf,0xcd,0xcb,0xc9,0xcb,0xcf,0xcb,0xc7,0xc7,0xcb,0xcf,0xcf,0xcf,0xcf,0xcd,0xcd,0xcb,0xcb,0xcb,0xc9,0xcb,0xc9,0xcb,0xcd,0xcd,0xcb,0xcb,0xcd,0xcd,0xcb,0xcf,0xcb,0xc9,0xcb,0xcb,0xc9,0xcd,0xc1,0xc9,0xcf,0xcd,0xcd,0xd1,0xcf,0xcb,0xcd,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcf,0xcd,0xcf,0xc9,0xcf,0xcd,0xc7,0xcd,0xcd,0xcb,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcc,0xd0,0xd0,0xca,0xc8,0xcc,0xcc,0xcc,0xca,0xca,0xcc,0xce,0xd0,0xd0,0xd0,0xce,0xd0,0xd0,0xd0,0xce,0xcc,0xcc,0xd0,0xd2,0xd2,0xd4,0xd2,0xd6,0xd4,0xcc,0xce,0xcc,0xd0,0xd2,0xd4,0xd2,0xd2,0xd2,0xd2,0xd2,0xd6,0xd0,0xcc,0xcc,0xce,0xd0,0xd2,0xd6,0xd2,0xd0,0xd0,0xd0,0xd0,0xce,0xcc,0xcc,0xd2,0xce,0xca,0xcc,0xce,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xd0,0xce,0xcc,0xce,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xd0,0xcc,0xd0,0xce,0xca,0xce,0xce,0xcc,0xce,0xc6,0xca,0xce,0xd0,0xd0,0xd0,0xce,0xce,0xd0,0xce,0xcc,0xca,0xca,0xcc,0xd0,0xd2,0xce,0xce,0xce,0xce,0xcc,0xcc,0xcc,0xcc,0xc9,0xcb,0xcb,0xcd,0xcd,0xcd,0xcd,0xcd,0xcb,0xcd,0xcd,0xcb,0xcb,0xcd,0xcb,0xc9,0xc7,0xc9,0xcd,0xcd,0xcd,0xcb,0xcd,0xcd,0xcd,0xcd,0xcf,0xcd,0xc9,0xc9,0xcd,0xd1,0xcf,0xd1,0xcd,0xd3,0xd1,0xc7,0xc9,0xc7,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcd,0xd3,0xcd,0xc7,0xc7,0xcb,0xcd,0xcd,0xcf,0xcf,0xcd,0xcd,0xcd,0xcd,0xcb,0xcb,0xcb,0xcd,0xcb,0xc9,0xc9,0xcb,0xcf,0xd1,0xd1,0xcd,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xc9,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcb,0xcd,0xcb,0xc7,0xcd,0xc9,0xcb,0xcd,0xc3,0xc9,0xcd,0xcf,0xcf,0xcd,0xcb,0xcd,0xcf,0xcd,0xcb,0xc9,0xc9,0xcb,0xcf,0xd1,0xcb,0xcd,0xcf,0xcf,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb}, {0xcf,0xcd,0xcd,0xcd,0xcf,0xcf,0xcd,0xcb,0xcd,0xcb,0xcb,0xcd,0xcb,0xcb,0xc9,0xc7,0xcf,0xc7,0xc3,0xc5,0xcb,0xcd,0xcd,0xcb,0xcf,0xcd,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcd,0xcd,0xcd,0xcf,0xcf,0xcf,0xcb,0xcf,0xcb,0xc9,0xcd,0xcb,0xc9,0xcd,0xb6,0xc1,0xcd,0xd1,0xd1,0xd1,0xcd,0xc9,0xcf,0xcf,0xd1,0xcf,0xcd,0xcd,0xcd,0xcd,0xcd,0xc7,0xbf,0xc7,0xcf,0xcd,0xcf,0xc9,0xcf,0xcf,0xcd,0xcd,0xcd,0xcd,0xcb,0xcb,0xcc,0xd0,0xce,0xcc,0xca,0xcc,0xcc,0xcc,0xc4,0xc6,0xc8,0xce,0xd2,0xd4,0xd2,0xd0,0xce,0xd0,0xd2,0xd4,0xd2,0xd2,0xd0,0xd0,0xce,0xce,0xc8,0xcc,0xc8,0xc2,0xce,0xd9,0xd0,0xd0,0xd2,0xd2,0xd0,0xd2,0xd2,0xd2,0xd4,0xd2,0xd0,0xd2,0xd4,0xd4,0xd2,0xd0,0xd2,0xd2,0xd0,0xd2,0xd2,0xd0,0xce,0xcc,0xd0,0xcc,0xca,0xcc,0xce,0xce,0xd0,0xd2,0xd4,0xd2,0xd0,0xd0,0xd0,0xd0,0xce,0xcc,0xce,0xce,0xd0,0xd0,0xce,0xce,0xd0,0xd0,0xce,0xd2,0xce,0xcc,0xce,0xce,0xcc,0xd0,0xbb,0xc2,0xce,0xd4,0xd4,0xd0,0xcc,0xca,0xce,0xd0,0xd2,0xd2,0xd0,0xce,0xce,0xce,0xd0,0xca,0xc6,0xc8,0xd0,0xd0,0xcc,0xc8,0xcd,0xcd,0xcd,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcb,0xcb,0xcb,0xc9,0xc7,0xc3,0xc5,0xc9,0xcd,0xcf,0xcf,0xcf,0xcd,0xcb,0xcd,0xd1,0xd1,0xcf,0xcd,0xcd,0xcd,0xcb,0xcb,0xc7,0xcd,0xc9,0xbf,0xc9,0xd3,0xcd,0xcf,0xcf,0xcd,0xcd,0xcd,0xcf,0xcf,0xd1,0xcd,0xcb,0xcd,0xcf,0xd1,0xcd,0xcb,0xcf,0xcf,0xcd,0xcd,0xcd,0xcd,0xcb,0xc9,0xcb,0xc9,0xc7,0xc9,0xcb,0xcb,0xcd,0xcf,0xcf,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcb,0xcb,0xcd,0xc5,0xcf,0xc9,0xcb,0xcd,0xb6,0xc5,0xcb,0xd1,0xd7,0xcf,0xc7,0xcb,0xcd,0xcf,0xd1,0xd1,0xcf,0xcd,0xcd,0xcd,0xcd,0xc7,0xc3,0xc7,0xcf,0xd1,0xcb,0xc7,0xcd,0xcd,0xcd,0xcd,0xcd,0xcb,0xcb,0xcb}, {0xd1,0xcf,0xcf,0xd1,0xd3,0xd1,0xcf,0xcb,0xcf,0xcf,0xcd,0xcd,0xcf,0xcf,0xcd,0xcb,0xcb,0xcd,0xcd,0xcb,0xc9,0xc9,0xcd,0xd1,0xcf,0xcd,0xcd,0xcb,0xcb,0xcb,0xcd,0xcd,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcd,0xcf,0xcb,0xc7,0xcb,0xcb,0xc9,0xcd,0xc7,0xc7,0xc9,0xcd,0xcb,0xc7,0xc9,0xcd,0xc9,0xcb,0xcf,0xcf,0xcd,0xcb,0xcb,0xcb,0xcd,0xc7,0xbe,0xc7,0xcf,0xcd,0xcf,0xc9,0xc9,0xc9,0xc9,0xc9,0xcb,0xcd,0xcd,0xcf,0xce,0xce,0xce,0xcc,0xcc,0xcc,0xcc,0xcc,0xca,0xca,0xcc,0xce,0xd2,0xd0,0xce,0xca,0xcc,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xce,0xd0,0xc8,0xc1,0xcc,0xd2,0xce,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xce,0xce,0xce,0xd6,0xd4,0xd4,0xd4,0xd6,0xd6,0xd2,0xce,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xd0,0xd4,0xd0,0xce,0xce,0xd0,0xd2,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd2,0xce,0xcc,0xce,0xce,0xcc,0xd0,0xc8,0xcc,0xce,0xce,0xcc,0xca,0xca,0xcc,0xc8,0xcc,0xd2,0xd2,0xd0,0xce,0xcc,0xcc,0xd0,0xc8,0xc4,0xca,0xd0,0xd2,0xce,0xca,0xc9,0xc9,0xc9,0xc9,0xc9,0xcb,0xcb,0xcd,0xcb,0xcd,0xcd,0xcb,0xc7,0xc9,0xc9,0xc9,0xcb,0xc9,0xc9,0xcd,0xcf,0xcf,0xc9,0xc5,0xc9,0xc9,0xcb,0xcd,0xcf,0xcf,0xcd,0xc9,0xd1,0xc7,0xbe,0xc5,0xcb,0xc9,0xcf,0xd1,0xcf,0xcf,0xcf,0xcd,0xcb,0xcb,0xcb,0xcb,0xcf,0xcf,0xd1,0xd1,0xd1,0xd1,0xcf,0xcb,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcd,0xcb,0xcf,0xcd,0xcb,0xcb,0xcd,0xcd,0xcd,0xcd,0xd1,0xcd,0xcb,0xcb,0xcb,0xcd,0xcb,0xcb,0xcd,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xc5,0xcf,0xc7,0xcb,0xcd,0xc5,0xcd,0xcb,0xc9,0xcf,0xcb,0xc7,0xcd,0xc7,0xcb,0xcf,0xd1,0xcf,0xcb,0xcb,0xcb,0xcf,0xc7,0xc3,0xc7,0xcf,0xcf,0xcd,0xc9,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcf,0xcf}, {0xd1,0xd1,0xcf,0xcf,0xd1,0xd1,0xcf,0xcd,0xcf,0xcf,0xcf,0xcd,0xcf,0xd1,0xcf,0xcd,0xcd,0xcf,0xcb,0xc7,0xc9,0xcd,0xcf,0xcd,0xcd,0xcd,0xcd,0xcb,0xcb,0xcb,0xcd,0xcd,0xcb,0xcb,0xc9,0xc9,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xc9,0xc7,0xcb,0xc9,0xc9,0xcd,0xd1,0xcb,0xcb,0xcd,0xcb,0xc7,0xc9,0xcf,0xc5,0xc7,0xcb,0xcd,0xcd,0xcd,0xcd,0xcd,0xcb,0xcb,0xc7,0xcd,0xcd,0xc5,0xcb,0xcd,0xcb,0xcb,0xcb,0xc9,0xcb,0xcb,0xcd,0xcd,0xce,0xce,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xce,0xcc,0xce,0xce,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xd6,0xd2,0xcc,0xd6,0xdb,0xd4,0xd9,0xd9,0xd6,0xd4,0xd4,0xd4,0xd0,0xcc,0xcc,0xce,0xd6,0xd6,0xd4,0xd4,0xd4,0xd6,0xd4,0xd2,0xd2,0xd4,0xd4,0xd2,0xd4,0xd4,0xd4,0xd2,0xd4,0xd4,0xd0,0xcc,0xce,0xd4,0xd4,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd2,0xcc,0xcc,0xce,0xcc,0xcc,0xd0,0xd2,0xd2,0xd0,0xce,0xcc,0xca,0xcc,0xce,0xc8,0xcc,0xce,0xce,0xce,0xce,0xce,0xd2,0xce,0xcc,0xcc,0xce,0xce,0xcc,0xce,0xd2,0xcb,0xcb,0xc9,0xc9,0xc9,0xcb,0xcb,0xcd,0xcb,0xcd,0xcd,0xcb,0xc9,0xc9,0xcd,0xcd,0xcd,0xcb,0xcb,0xcd,0xcf,0xcd,0xc9,0xc5,0xcd,0xc9,0xc7,0xc9,0xcd,0xcf,0xcd,0xcb,0xd3,0xcf,0xc9,0xd1,0xd3,0xd1,0xd3,0xd3,0xd1,0xd1,0xd1,0xcf,0xcb,0xc7,0xc7,0xc9,0xcf,0xd1,0xd3,0xd1,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcd,0xcf,0xd1,0xcf,0xcd,0xd1,0xd1,0xcd,0xc9,0xc9,0xcf,0xcf,0xcb,0xcf,0xcd,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xc9,0xc9,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcb,0xc5,0xcd,0xc9,0xc9,0xcd,0xcf,0xd1,0xcd,0xcb,0xcd,0xcb,0xcb,0xcf,0xc7,0xc9,0xcb,0xcd,0xcb,0xcb,0xcd,0xcf,0xcf,0xcb,0xcb,0xcd,0xcb,0xc9,0xcb,0xcf,0xcb,0xc9,0xc9,0xc9,0xc9,0xcb,0xcb,0xcd}, {0xcd,0xcd,0xcd,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcd,0xcb,0xcd,0xd1,0xcf,0xcb,0xcd,0xcd,0xc7,0xc3,0xcb,0xd3,0xcd,0xbe,0xcd,0xcd,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcb,0xc9,0xc9,0xcb,0xcd,0xcd,0xcd,0xc7,0xcb,0xc9,0xc7,0xcb,0xcb,0xc9,0xcb,0xcb,0xcb,0xcd,0xcf,0xcf,0xcd,0xcd,0xcd,0xc7,0xc9,0xcb,0xcd,0xcd,0xcd,0xcf,0xcf,0xcb,0xcd,0xc9,0xcf,0xcd,0xc5,0xcb,0xcd,0xd1,0xcf,0xcd,0xcb,0xcb,0xcb,0xcb,0xcd,0xce,0xcc,0xcc,0xcc,0xce,0xcc,0xcc,0xcc,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xd0,0xd0,0xd2,0xd2,0xd2,0xd4,0xce,0xd2,0xd2,0xcc,0xd4,0xd4,0xd6,0xd4,0xd4,0xd4,0xd4,0xd0,0xce,0xd2,0xd4,0xd6,0xd4,0xd2,0xd2,0xd6,0xd6,0xd4,0xd2,0xd4,0xd4,0xd2,0xd2,0xd6,0xd6,0xd2,0xd0,0xd4,0xd0,0xca,0xce,0xd6,0xd2,0xc6,0xd2,0xd2,0xd2,0xd2,0xce,0xce,0xd0,0xd2,0xce,0xce,0xcc,0xce,0xd0,0xd2,0xd0,0xd0,0xce,0xce,0xcc,0xce,0xd0,0xcc,0xca,0xd0,0xce,0xd0,0xd0,0xd2,0xd2,0xd0,0xd0,0xce,0xcc,0xcc,0xce,0xce,0xcc,0xce,0xd0,0xd2,0xce,0xcc,0xcc,0xd0,0xce,0xca,0xcc,0xd2,0xcf,0xcf,0xcd,0xcb,0xc9,0xcb,0xcb,0xcd,0xc9,0xcb,0xcb,0xc9,0xcb,0xcd,0xcd,0xcb,0xcb,0xcb,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcb,0xc9,0xc9,0xcd,0xcd,0xcd,0xcd,0xc9,0xcf,0xcd,0xcf,0xcf,0xc9,0xcd,0xc9,0xcf,0xcf,0xd1,0xd1,0xcd,0xc9,0xc9,0xcd,0xcd,0xcf,0xcf,0xcd,0xcd,0xd1,0xd1,0xcf,0xcf,0xcf,0xcf,0xcd,0xcd,0xcf,0xcf,0xcd,0xcb,0xcf,0xcd,0xc5,0xc7,0xcf,0xcb,0xc1,0xcb,0xcb,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xc9,0xc7,0xc9,0xcb,0xcb,0xcb,0xcb,0xc9,0xcd,0xc9,0xc9,0xcb,0xcd,0xc7,0xcd,0xcd,0xcb,0xcd,0xcf,0xcf,0xcf,0xcf,0xcb,0xcb,0xcb,0xcd,0xcb,0xcb,0xcb,0xcd,0xd1,0xcd,0xcb,0xcb,0xcf,0xcb,0xc7,0xc9,0xcf,0xcd,0xcd,0xcb,0xc9,0xc7,0xc9,0xc9,0xcb}, {0xc7,0xc9,0xcd,0xcf,0xcf,0xcf,0xcd,0xcd,0xcf,0xcf,0xcd,0xc9,0xcb,0xcf,0xcf,0xc9,0xc3,0xcf,0xd1,0xcb,0xc9,0xcd,0xc7,0xb8,0xcd,0xcd,0xcd,0xcb,0xcb,0xc9,0xc9,0xc7,0xcb,0xc9,0xc9,0xc9,0xcb,0xcd,0xcf,0xcd,0xc5,0xc9,0xc9,0xc9,0xcd,0xcb,0xc9,0xcb,0xcb,0xcf,0xcd,0xc9,0xcb,0xcf,0xcf,0xc9,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcb,0xc9,0xc3,0xcb,0xcf,0xc9,0xcb,0xc7,0xcb,0xc9,0xc9,0xc9,0xc9,0xcb,0xcd,0xcf,0xcc,0xca,0xca,0xcc,0xce,0xce,0xce,0xce,0xd0,0xd2,0xd2,0xd0,0xce,0xce,0xd0,0xd2,0xce,0xce,0xd0,0xd0,0xd2,0xd2,0xd0,0xce,0xd0,0xce,0xc8,0xd0,0xd9,0xd4,0xd0,0xc4,0xd2,0xd0,0xd2,0xd6,0xd6,0xd4,0xd4,0xd9,0xce,0xd2,0xd6,0xd4,0xd4,0xd6,0xd6,0xd2,0xd4,0xd4,0xd4,0xd0,0xd2,0xd6,0xd6,0xd2,0xcc,0xd4,0xd4,0xce,0xd2,0xd6,0xcc,0xbb,0xd2,0xd4,0xd4,0xd2,0xce,0xcc,0xce,0xd2,0xce,0xce,0xcc,0xce,0xd0,0xd2,0xd0,0xd0,0xcc,0xcc,0xcc,0xce,0xd2,0xce,0xca,0xd0,0xd2,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xcc,0xce,0xce,0xce,0xcc,0xcc,0xcc,0xcc,0xd2,0xca,0xc6,0xcc,0xce,0xcc,0xca,0xcc,0xcb,0xc9,0xc9,0xc9,0xc9,0xcb,0xcf,0xcf,0xc9,0xc9,0xc7,0xc7,0xcb,0xcd,0xcb,0xc7,0xcd,0xcf,0xd1,0xcf,0xcb,0xc9,0xcd,0xcf,0xcb,0xcb,0xcd,0xcd,0xcd,0xcd,0xcb,0xcb,0xcd,0xcd,0xc5,0xc9,0xcf,0xd1,0xcd,0xc1,0xcb,0xcb,0xcf,0xd3,0xd1,0xcd,0xcd,0xd1,0xc7,0xcb,0xcd,0xcd,0xcf,0xd1,0xcf,0xcb,0xcf,0xcf,0xcf,0xcb,0xcb,0xcf,0xcf,0xcd,0xc5,0xcf,0xcf,0xc9,0xc9,0xcf,0xc7,0xb6,0xc9,0xcb,0xcd,0xcb,0xcb,0xc9,0xcb,0xcb,0xcb,0xc9,0xc9,0xc9,0xcb,0xcd,0xcf,0xcf,0xc5,0xcb,0xc7,0xcd,0xc9,0xcf,0xc7,0xcb,0xd3,0xc9,0xcb,0xcd,0xc9,0xcd,0xcf,0xc7,0xcb,0xcd,0xcd,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xc5,0xc5,0xcb,0xcf,0xcb,0xc9,0xc9,0xcb,0xcb,0xc9,0xc9,0xc9,0xcb,0xcf,0xcf}, {0xcd,0xcb,0xc9,0xc9,0xcb,0xcd,0xcf,0xd1,0xcf,0xd1,0xc9,0xc9,0xd1,0xcd,0xc9,0xd1,0xc9,0xd1,0xc7,0xcf,0xd1,0xc9,0xcd,0xc9,0xc9,0xcd,0xd3,0xc7,0xc7,0xbe,0xc9,0xcf,0xcb,0xcb,0xc9,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xc9,0xc9,0xc5,0xd1,0xc7,0xc7,0xcf,0xc7,0xc3,0xc9,0xcd,0xcd,0xcb,0xcb,0xcf,0xcd,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcd,0xcb,0xcd,0xcf,0xcb,0xc5,0xc3,0xc7,0xc9,0xcd,0xcd,0xcb,0xc9,0xcb,0xcd,0xcd,0xd3,0xc7,0xcf,0xc7,0xd5,0xc7,0xcf,0xc7,0xd2,0xd0,0xce,0xca,0xca,0xce,0xd0,0xd2,0xcc,0xd2,0xd6,0xd4,0xd0,0xd0,0xd0,0xd0,0xd2,0xd0,0xd2,0xd6,0xd6,0xd4,0xd2,0xd4,0xd8,0xda,0xd8,0xd4,0xd4,0xd8,0xd6,0xd0,0xd4,0xd0,0xce,0xd2,0xd2,0xd2,0xd4,0xd8,0xd9,0xd9,0xd0,0xd0,0xd9,0xd4,0xce,0xd6,0xce,0xd9,0xce,0xd6,0xd9,0xce,0xd4,0xd0,0xd0,0xd0,0xd9,0xcc,0xcc,0xc4,0xd0,0xd4,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xca,0xcc,0xcc,0xdb,0xce,0xca,0xd4,0xcc,0xc8,0xcc,0xd2,0xd0,0xce,0xce,0xd2,0xd2,0xd0,0xce,0xce,0xce,0xce,0xd0,0xce,0xcc,0xce,0xd0,0xcc,0xc6,0xc4,0xc6,0xcb,0xcd,0xcd,0xcb,0xc9,0xcb,0xcb,0xc9,0xd1,0xc5,0xcf,0xc5,0xd1,0xc3,0xcd,0xc7,0xcd,0xcd,0xcb,0xc7,0xc7,0xc9,0xcb,0xcb,0xc7,0xcd,0xd1,0xcf,0xcb,0xc9,0xcd,0xcf,0xcd,0xc9,0xcb,0xd1,0xd1,0xcd,0xcd,0xcf,0xcf,0xd3,0xd3,0xcd,0xcb,0xcd,0xcd,0xc9,0xcf,0xcd,0xcb,0xc9,0xcb,0xcd,0xcf,0xcf,0xcf,0xd1,0xc9,0xc9,0xd1,0xcd,0xc9,0xd1,0xcb,0xcd,0xcb,0xcb,0xd1,0xcf,0xc9,0xc9,0xc9,0xcd,0xcf,0xcb,0xc3,0xc1,0xc7,0xcd,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcf,0xc1,0xc9,0xc7,0xcf,0xcf,0xc9,0xd1,0xc9,0xc5,0xc9,0xcb,0xcb,0xcb,0xcd,0xcf,0xcf,0xcd,0xcd,0xcb,0xcb,0xcd,0xcf,0xcb,0xcd,0xcf,0xcd,0xc9,0xc7,0xc5,0xc5,0xc9,0xc9,0xcb,0xcb,0xc9,0xc9,0xc7,0xc7}, {0xcf,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcb,0xcd,0xc7,0xc7,0xcd,0xcb,0xc7,0xcd,0xcd,0xd1,0xcb,0xcd,0xc9,0xcb,0xbf,0xc1,0xcd,0xc7,0xc7,0xc3,0xc9,0xc9,0xcb,0xc7,0xcd,0xcd,0xcb,0xcd,0xcd,0xcd,0xcd,0xcb,0xc7,0xd1,0xd1,0xd3,0xc5,0xc7,0xc7,0xcf,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xd1,0xcd,0xcf,0xcd,0xcb,0xc9,0xc9,0xc9,0xcd,0xcd,0xc9,0xc7,0xc7,0xc7,0xc7,0xc9,0xcf,0xcb,0xcd,0xcd,0xcb,0xcd,0xcf,0xcf,0xcf,0xc1,0xd1,0xcd,0xdb,0xc9,0xd7,0xc9,0xcf,0xd0,0xd2,0xd0,0xce,0xce,0xd0,0xd2,0xd2,0xd4,0xd2,0xd0,0xce,0xd0,0xd2,0xd0,0xcc,0xd4,0xd2,0xd0,0xce,0xce,0xd2,0xd4,0xd8,0xca,0xd0,0xd4,0xd0,0xd0,0xd6,0xd8,0xd6,0xd6,0xd4,0xd2,0xd6,0xd6,0xd4,0xd4,0xd6,0xd4,0xd6,0xd0,0xce,0xd6,0xd4,0xd0,0xd4,0xd4,0xd6,0xd2,0xd4,0xce,0xd2,0xc6,0xc8,0xd4,0xce,0xcc,0xca,0xd0,0xd0,0xd2,0xce,0xd4,0xd4,0xd4,0xd2,0xd2,0xd2,0xd0,0xd0,0xca,0xd4,0xd4,0xd9,0xcc,0xce,0xce,0xd4,0xd2,0xd0,0xd0,0xd0,0xd0,0xce,0xd0,0xd4,0xce,0xd0,0xd0,0xce,0xcc,0xca,0xcc,0xd0,0xd2,0xce,0xca,0xca,0xc8,0xc6,0xca,0xce,0xcb,0xcd,0xcd,0xcd,0xcd,0xcf,0xcd,0xcd,0xc1,0xd1,0xcb,0xd9,0xc7,0xd5,0xc7,0xcd,0xcd,0xcd,0xcd,0xcb,0xc9,0xcb,0xcd,0xcb,0xcf,0xcf,0xcd,0xcb,0xcb,0xcb,0xcb,0xc7,0xd1,0xcd,0xc9,0xc9,0xc9,0xcb,0xcf,0xd3,0xc5,0xcd,0xcf,0xcd,0xcd,0xd1,0xd3,0xcf,0xcf,0xcf,0xcd,0xcd,0xcd,0xcf,0xcf,0xcd,0xcb,0xcd,0xc7,0xc7,0xcd,0xcb,0xc7,0xcd,0xcf,0xd1,0xcb,0xcf,0xc9,0xcb,0xbf,0xc1,0xcd,0xc9,0xc5,0xc7,0xc9,0xcb,0xcb,0xc9,0xcd,0xcd,0xcd,0xcd,0xcd,0xcb,0xcb,0xcb,0xc5,0xd3,0xcf,0xd5,0xc7,0xc7,0xcb,0xd1,0xcf,0xcb,0xc9,0xcb,0xcf,0xcf,0xcd,0xcb,0xcd,0xcf,0xcf,0xcd,0xc9,0xc7,0xc9,0xcd,0xcd,0xcb,0xc7,0xc5,0xc3,0xc5,0xc9,0xcb,0xcb,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd}, {0xcb,0xcb,0xcb,0xcd,0xcd,0xcd,0xcb,0xc9,0xc9,0xcd,0xc9,0xc7,0xcd,0xcd,0xc9,0xc9,0xc7,0xc3,0xcf,0xc5,0xcb,0xd5,0xc9,0xc9,0xcb,0xc7,0xbf,0xc5,0xcb,0xd1,0xcb,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc5,0xc5,0xc7,0xba,0xc9,0xc9,0xc9,0xcd,0xcd,0xcb,0xcd,0xcf,0xcd,0xcd,0xcd,0xcd,0xcb,0xcb,0xcd,0xcd,0xcb,0xc9,0xc7,0xc9,0xcd,0xcd,0xc9,0xc5,0xc5,0xc7,0xc9,0xcd,0xd1,0xc7,0xc7,0xc7,0xc7,0xc9,0xcd,0xcb,0xc7,0xc7,0xcd,0xc7,0xbc,0xcb,0xcf,0xd1,0xcd,0xce,0xd0,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xce,0xce,0xce,0xce,0xce,0xd0,0xd0,0xcc,0xd0,0xd4,0xd4,0xd2,0xd2,0xd6,0xd6,0xd4,0xc2,0xcc,0xd2,0xd0,0xce,0xd2,0xd6,0xd8,0xd4,0xd2,0xd2,0xd6,0xd6,0xd4,0xd2,0xd2,0xd2,0xd4,0xd0,0xce,0xd4,0xd4,0xd0,0xd0,0xce,0xca,0xd4,0xcc,0xd0,0xdb,0xce,0xd0,0xd4,0xce,0xc8,0xcc,0xd2,0xd9,0xd2,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xcc,0xcc,0xcc,0xce,0xc1,0xd0,0xce,0xce,0xd2,0xd2,0xd0,0xd2,0xd2,0xd2,0xd0,0xd2,0xd0,0xce,0xca,0xce,0xd0,0xce,0xca,0xc8,0xcc,0xd0,0xd2,0xcc,0xc8,0xc8,0xc8,0xca,0xce,0xd2,0xc7,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc7,0xc7,0xcb,0xc5,0xba,0xc9,0xcf,0xcd,0xc9,0xcb,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xc7,0xcb,0xcb,0xcb,0xcb,0xcb,0xc9,0xc5,0xcd,0xcf,0xcf,0xcd,0xcd,0xcf,0xcf,0xcd,0xbc,0xc1,0xc7,0xc7,0xc7,0xcb,0xcd,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcd,0xcb,0xcb,0xc9,0xcd,0xc9,0xc7,0xcd,0xcd,0xc9,0xc9,0xc7,0xc7,0xc9,0xcb,0xcd,0xcb,0xcb,0xc9,0xcb,0xc7,0xc3,0xc5,0xcb,0xcf,0xcd,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc5,0xc5,0xc7,0xbf,0xcd,0xc9,0xcb,0xcb,0xcd,0xcb,0xcd,0xcd,0xcd,0xcf,0xcf,0xcb,0xc5,0xc9,0xcb,0xcd,0xcb,0xc7,0xc5,0xc9,0xcb,0xcf,0xcb,0xc7,0xc3,0xc5,0xc9,0xcd,0xcf,0xc5,0xc7,0xc7,0xc9,0xc9,0xc9,0xc7,0xc7}, {0xc9,0xc9,0xc9,0xcb,0xcb,0xcb,0xcb,0xc9,0xc9,0xcd,0xcb,0xc9,0xcb,0xcf,0xcb,0xc7,0xcf,0xc5,0xd3,0xc1,0xcd,0xcb,0xcd,0xc3,0xc9,0xc9,0xc3,0xcd,0xc7,0xcf,0xc9,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcb,0xc9,0xc9,0xc1,0xa7,0xbf,0xc9,0xc9,0xcf,0xc5,0xcb,0xcb,0xc9,0xc9,0xcf,0xd1,0xc9,0xbc,0xc7,0xc9,0xcb,0xcb,0xc9,0xc9,0xcb,0xcd,0xcd,0xcb,0xc9,0xc9,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcd,0xcd,0xcf,0xcf,0xcb,0xd3,0xc7,0xc7,0xa2,0xd1,0xbf,0xd3,0xcb,0xce,0xd0,0xd0,0xd0,0xd0,0xd2,0xd2,0xd0,0xbe,0xca,0xd2,0xd4,0xce,0xcc,0xce,0xd0,0xce,0xd6,0xd8,0xd4,0xd4,0xd8,0xd6,0xd0,0xcc,0xd2,0xd6,0xd2,0xd0,0xd0,0xd2,0xd4,0xd2,0xd2,0xd2,0xd4,0xd4,0xd4,0xd2,0xd2,0xd2,0xd4,0xd2,0xce,0xd2,0xd6,0xd2,0xce,0xd6,0xcc,0xdb,0xc8,0xd4,0xd2,0xd4,0xca,0xce,0xd2,0xcc,0xd4,0xce,0xd4,0xd0,0xd2,0xd0,0xd2,0xd2,0xd4,0xd4,0xd2,0xd2,0xd0,0xd2,0xca,0xae,0xc4,0xcc,0xce,0xd4,0xcc,0xd0,0xd0,0xce,0xce,0xd4,0xd6,0xcc,0xc0,0xca,0xcc,0xce,0xce,0xcc,0xca,0xcc,0xce,0xd0,0xcc,0xca,0xcc,0xcc,0xce,0xce,0xce,0xcb,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcb,0xd1,0xc5,0xc5,0xa0,0xcf,0xbe,0xcf,0xc7,0xcb,0xcb,0xcd,0xcb,0xcb,0xcd,0xcd,0xcd,0xb8,0xc3,0xcd,0xcf,0xc9,0xc7,0xc9,0xcb,0xc9,0xcf,0xd1,0xcf,0xcd,0xd1,0xcf,0xc9,0xc5,0xcb,0xcd,0xcb,0xc9,0xcb,0xcb,0xcb,0xc7,0xc9,0xc9,0xcb,0xcd,0xcd,0xcb,0xcb,0xc9,0xcd,0xcb,0xc9,0xcb,0xcf,0xcb,0xc7,0xd1,0xc7,0xcf,0xc5,0xd1,0xc5,0xcd,0xc3,0xc7,0xc7,0xc9,0xc9,0xc9,0xc9,0xcb,0xcb,0xc9,0xc9,0xcb,0xcd,0xcd,0xcd,0xcb,0xcb,0xcb,0xbf,0xad,0xbf,0xc7,0xcd,0xc9,0xc7,0xc9,0xcd,0xcd,0xc9,0xcb,0xcb,0xc7,0xbf,0xc7,0xc9,0xcb,0xcb,0xc9,0xc9,0xcb,0xcd,0xcd,0xcb,0xc9,0xc9,0xcb,0xcb,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb}, {0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcd,0xc9,0xc9,0xcb,0xc9,0xc9,0xcb,0xc9,0xc3,0xcf,0xcd,0xc7,0xc7,0xc7,0xc7,0xcf,0xbf,0xc9,0xcb,0xc7,0xcf,0xc7,0xcd,0xc7,0xcb,0xc9,0xc9,0xc9,0xcb,0xcd,0xcd,0xcb,0xcb,0xc9,0xcb,0xb8,0xcb,0xc7,0xc1,0xcb,0xc9,0xc9,0xc9,0xc7,0xc5,0xcb,0xcf,0xc7,0xbc,0xc9,0xc9,0xc7,0xc9,0xcb,0xcd,0xcd,0xcb,0xcd,0xcd,0xcb,0xcb,0xcd,0xcd,0xcb,0xc7,0xc7,0xcb,0xcd,0xcd,0xcb,0xcd,0xcd,0xcd,0xc9,0xcd,0xcb,0xbe,0xcf,0xc3,0xc7,0xd1,0xce,0xce,0xce,0xcc,0xce,0xd0,0xd2,0xd0,0xc0,0xca,0xd4,0xd4,0xd0,0xd0,0xd2,0xd4,0xd4,0xd6,0xd4,0xca,0xca,0xd2,0xd6,0xd2,0xd6,0xd6,0xd6,0xd2,0xd0,0xd2,0xd2,0xd2,0xd6,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd2,0xd4,0xd2,0xd2,0xd2,0xd2,0xd4,0xd2,0xcc,0xd6,0xd4,0xd0,0xce,0xce,0xce,0xd9,0xc8,0xce,0xd4,0xd0,0xd6,0xce,0xd4,0xd0,0xd4,0xd0,0xd0,0xd2,0xd4,0xd4,0xd4,0xd2,0xd2,0xd2,0xd2,0xbd,0xce,0xcc,0xc6,0xd0,0xce,0xd0,0xd0,0xcc,0xcc,0xd0,0xd4,0xcc,0xc0,0xce,0xcc,0xcc,0xce,0xce,0xd0,0xd0,0xce,0xd0,0xd0,0xce,0xce,0xce,0xce,0xcc,0xc8,0xc9,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcb,0xc7,0xcb,0xcb,0xbc,0xcd,0xbf,0xc5,0xcf,0xc9,0xcb,0xc9,0xc7,0xc9,0xcb,0xcd,0xcb,0xba,0xc3,0xcd,0xcd,0xc9,0xc9,0xcd,0xcf,0xcd,0xcf,0xcb,0xc5,0xc5,0xcb,0xcd,0xcd,0xcf,0xcf,0xcf,0xcd,0xc9,0xc9,0xc9,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcb,0xcb,0xc9,0xc9,0xcb,0xc9,0xc9,0xcb,0xc9,0xc3,0xd3,0xc7,0xc7,0xc7,0xc9,0xc9,0xcb,0xc1,0xc7,0xc9,0xcb,0xcb,0xc9,0xc7,0xc9,0xcb,0xc7,0xc9,0xcb,0xcb,0xcd,0xcd,0xcd,0xcd,0xcd,0xc7,0xba,0xc7,0xc5,0xc5,0xc5,0xc9,0xc9,0xcb,0xcb,0xc7,0xc7,0xc9,0xc7,0xc1,0xc9,0xc9,0xc9,0xcb,0xcd,0xcd,0xcd,0xcd,0xcb,0xcb,0xc9,0xc9,0xcb,0xcb,0xc9,0xc7,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcd}, {0xcf,0xcd,0xcb,0xc9,0xc9,0xcb,0xcb,0xcb,0xcd,0xc7,0xc9,0xcd,0xcb,0xc9,0xc9,0xc5,0xc9,0xcd,0xbc,0xd5,0xc1,0xcd,0xd1,0xc7,0xcb,0xc9,0xc5,0xc9,0xc9,0xcb,0xc7,0xc5,0xc5,0xc5,0xc5,0xc7,0xc7,0xc9,0xc9,0xc7,0xc5,0xcf,0xc7,0xd5,0xcb,0xc5,0xc9,0xcb,0xc7,0xc9,0xc9,0xc7,0xc5,0xc7,0xc9,0xcb,0xcd,0xcb,0xc7,0xc9,0xcb,0xcd,0xcb,0xc9,0xcd,0xcf,0xcd,0xc9,0xcb,0xcd,0xcd,0xcb,0xc1,0xc5,0xc9,0xc7,0xc7,0xc9,0xcb,0xcb,0xcd,0xcf,0xc9,0xcd,0xd3,0xcf,0xcb,0xd3,0xce,0xce,0xce,0xcc,0xcc,0xce,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd2,0xd6,0xd6,0xd4,0xd4,0xd6,0xd4,0xce,0xce,0xd2,0xd4,0xd2,0xd8,0xd6,0xd2,0xd2,0xd2,0xd4,0xd4,0xd4,0xd8,0xd8,0xd4,0xd2,0xd2,0xd2,0xd2,0xd0,0xd6,0xd0,0xd2,0xd6,0xd4,0xd4,0xd4,0xce,0xd2,0xd6,0xc4,0xdf,0xca,0xd6,0xdb,0xd0,0xd4,0xd4,0xd0,0xd2,0xd2,0xd6,0xd2,0xd0,0xcc,0xcc,0xce,0xce,0xd0,0xd0,0xd0,0xce,0xcc,0xd4,0xca,0xdb,0xd2,0xcc,0xd0,0xd2,0xce,0xd0,0xd0,0xcc,0xca,0xcc,0xd0,0xd0,0xd0,0xce,0xcc,0xce,0xd0,0xd2,0xd0,0xce,0xd2,0xd2,0xd0,0xcc,0xcc,0xcc,0xcc,0xca,0xc3,0xc5,0xc5,0xc5,0xc7,0xc9,0xcb,0xcb,0xc9,0xcd,0xc9,0xcb,0xd1,0xcb,0xc7,0xd1,0xc9,0xcb,0xc9,0xc7,0xc7,0xc9,0xcb,0xcb,0xcd,0xcb,0xc9,0xc7,0xc9,0xcd,0xcd,0xcb,0xcb,0xcb,0xcb,0xc9,0xc9,0xcb,0xcb,0xcb,0xcd,0xcb,0xc9,0xc7,0xc7,0xc7,0xc9,0xc9,0xcf,0xcd,0xcb,0xc9,0xc9,0xc9,0xc9,0xc9,0xcd,0xc7,0xc9,0xcd,0xcb,0xc9,0xc9,0xc5,0xcd,0xc7,0xbe,0xd1,0xbf,0xd5,0xcb,0xc7,0xcb,0xc9,0xc9,0xc9,0xcb,0xc9,0xc7,0xc5,0xc3,0xc3,0xc5,0xc7,0xc7,0xc9,0xc9,0xc9,0xc7,0xcb,0xc5,0xd1,0xc9,0xc7,0xc7,0xcb,0xc9,0xcb,0xc9,0xc7,0xc9,0xcb,0xc9,0xc7,0xcd,0xcb,0xc9,0xc9,0xcb,0xcd,0xcb,0xc9,0xcf,0xcd,0xcb,0xc9,0xc9,0xc9,0xc9,0xc9,0xc3,0xc3,0xc3,0xc5,0xc7,0xc7,0xc9,0xc9}, {0xcd,0xcd,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xcd,0xc1,0xc5,0xcf,0xcb,0xc9,0xcb,0xc9,0xcf,0xc7,0xc5,0xd7,0xc5,0xc9,0xc9,0xc5,0xcb,0xc7,0xc7,0xc5,0xcb,0xc9,0xc9,0xc5,0xcb,0xc9,0xc9,0xcb,0xcb,0xcd,0xcd,0xcd,0xc5,0xc9,0xc5,0xcf,0xcb,0xd1,0xcb,0xc9,0xc9,0xcb,0xcb,0xc9,0xc7,0xc5,0xc9,0xcf,0xcd,0xcb,0xc7,0xc7,0xc9,0xcb,0xc9,0xc9,0xcb,0xcd,0xcd,0xc9,0xc9,0xcb,0xcd,0xcb,0xcb,0xcd,0xcd,0xcb,0xcd,0xcf,0xcf,0xcf,0xd3,0xcb,0xcb,0xc5,0xd3,0xd1,0xd3,0xcd,0xce,0xd0,0xd0,0xce,0xce,0xd0,0xd0,0xd0,0xd4,0xd4,0xd0,0xce,0xd0,0xd4,0xd4,0xd2,0xd2,0xd2,0xd4,0xd6,0xd6,0xd6,0xd4,0xd2,0xd8,0xd4,0xd2,0xd4,0xd4,0xd6,0xd6,0xd6,0xd6,0xd6,0xd4,0xd2,0xd2,0xd4,0xd4,0xd2,0xd8,0xcc,0xce,0xd8,0xd4,0xd2,0xd4,0xd2,0xd8,0xd0,0xce,0xe0,0xce,0xd4,0xd2,0xce,0xd6,0xd2,0xd2,0xd0,0xd6,0xd4,0xd4,0xd0,0xd2,0xd2,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xcc,0xd0,0xce,0xd6,0xd2,0xd6,0xd0,0xd0,0xd0,0xd2,0xd2,0xd0,0xcc,0xca,0xce,0xd4,0xd0,0xce,0xcc,0xcc,0xce,0xd0,0xd0,0xd0,0xd0,0xd2,0xd0,0xcc,0xca,0xcc,0xcc,0xcc,0xcb,0xcb,0xcb,0xcb,0xcb,0xcf,0xcf,0xcf,0xd1,0xc9,0xc9,0xc1,0xd1,0xcd,0xd1,0xcb,0xc9,0xcb,0xcb,0xc9,0xc9,0xcb,0xcb,0xc9,0xd1,0xcf,0xc9,0xc7,0xc9,0xcd,0xcb,0xc7,0xc9,0xc9,0xcb,0xcf,0xcf,0xcd,0xcb,0xcb,0xd1,0xcf,0xcd,0xcd,0xcf,0xcf,0xcd,0xcf,0xcd,0xcb,0xc9,0xc9,0xc9,0xc9,0xc9,0xc7,0xcd,0xc1,0xc5,0xcf,0xcb,0xc9,0xcb,0xc9,0xcf,0xc9,0xc7,0xd3,0xc3,0xcd,0xc9,0xc1,0xcb,0xc9,0xc7,0xc9,0xc9,0xcb,0xc9,0xc7,0xc9,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xc5,0xcb,0xc3,0xcf,0xcb,0xcd,0xcb,0xc7,0xcb,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xcb,0xcb,0xcb,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xcd,0xcd,0xcb,0xc9,0xc9,0xc7,0xc9,0xcb,0xc7,0xc7,0xc7,0xc9,0xc9,0xcb,0xcb,0xcd}, {0xcd,0xcb,0xcb,0xcb,0xcd,0xcd,0xcd,0xcb,0xcb,0xbe,0xc1,0xcd,0xc9,0xc5,0xc9,0xc9,0xc3,0xad,0xcb,0xc9,0xd1,0xc7,0xcf,0xcd,0xc7,0xc7,0xcf,0xc7,0xcb,0xc3,0xcd,0xcd,0xcb,0xc9,0xc9,0xc9,0xc9,0xcb,0xcb,0xcb,0xcb,0xcb,0xc9,0xc9,0xc3,0xcf,0xc7,0xc9,0xcf,0xc9,0xc9,0xcd,0xcd,0xc9,0xc5,0xc7,0xc9,0xc9,0xc7,0xc7,0xc7,0xc9,0xcb,0xcb,0xc7,0xcb,0xcd,0xcb,0xc9,0xc9,0xc9,0xc7,0xcf,0xcf,0xcd,0xcb,0xcb,0xcd,0xcd,0xc9,0xc7,0xcd,0xd3,0xcf,0xc9,0xcd,0xcf,0xc9,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd0,0xce,0xd2,0xd4,0xd0,0xce,0xce,0xd0,0xd2,0xd6,0xd2,0xce,0xd0,0xd0,0xd2,0xd6,0xda,0xda,0xd8,0xd6,0xd8,0xd6,0xd6,0xd4,0xd4,0xd4,0xd6,0xd6,0xd4,0xd6,0xda,0xda,0xd6,0xd8,0xc8,0xcc,0xd8,0xd6,0xd2,0xd4,0xd6,0xce,0xb7,0xd6,0xd4,0xdc,0xd2,0xda,0xd6,0xd2,0xd2,0xd9,0xd0,0xd6,0xce,0xd4,0xd4,0xd4,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd0,0xd4,0xd6,0xd4,0xca,0xd4,0xcc,0xd2,0xd6,0xd0,0xd0,0xd4,0xd4,0xce,0xcc,0xcc,0xce,0xce,0xce,0xcc,0xcc,0xcc,0xce,0xd0,0xca,0xd0,0xd2,0xce,0xcc,0xce,0xcc,0xca,0xcf,0xcf,0xcd,0xc9,0xc9,0xcb,0xcd,0xcb,0xc7,0xcd,0xcf,0xcb,0xc7,0xcd,0xcf,0xc7,0xcb,0xcd,0xcd,0xcd,0xcb,0xcd,0xcb,0xc9,0xc7,0xc9,0xcb,0xcb,0xc9,0xc9,0xc9,0xc7,0xcd,0xc9,0xc7,0xc9,0xcb,0xc9,0xcb,0xd1,0xd1,0xcd,0xcb,0xcd,0xcd,0xcd,0xc9,0xc9,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcb,0xcb,0xbe,0xc1,0xcd,0xc9,0xc5,0xc9,0xc9,0xbf,0xb6,0xcd,0xc7,0xcf,0xc5,0xd7,0xc7,0xc7,0xc9,0xcb,0xc9,0xc7,0xc7,0xc9,0xcd,0xcb,0xcb,0xc9,0xc9,0xc9,0xc9,0xc9,0xcb,0xc7,0xcf,0xc7,0xcd,0xc5,0xc9,0xc9,0xc5,0xcf,0xcb,0xc9,0xcb,0xcb,0xc5,0xc5,0xc9,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc9,0xcb,0xc7,0xc9,0xc9,0xc9,0xc7,0xc7,0xc7,0xc7,0xcb,0xcb,0xcb,0xc9,0xc9,0xc9,0xc9,0xc9}, {0xce,0xce,0xcc,0xce,0xce,0xce,0xcc,0xca,0xca,0xca,0xcc,0xcc,0xcc,0xca,0xc8,0xc6,0xca,0xcc,0xcc,0xcc,0xce,0xce,0xcc,0xca,0xc8,0xc6,0xcc,0xca,0xca,0xcc,0xc6,0xc8,0xca,0xcc,0xca,0xca,0xca,0xce,0xce,0xcc,0xc2,0xcc,0xc6,0xc8,0xcc,0xcc,0xd0,0xc4,0xcb,0xc7,0xd3,0xc9,0xbc,0xb2,0xc7,0xd1,0xc9,0xc7,0xc9,0xcb,0xcb,0xc9,0xc9,0xc9,0xcf,0xcb,0xc9,0xc9,0xcd,0xcd,0xcb,0xc9,0xc9,0xcf,0xcb,0xd1,0xc9,0xd1,0xcd,0xcf,0xcd,0xc7,0xcf,0xcd,0xcb,0xd3,0xcf,0xcd,0xd2,0xc8,0xd4,0xdb,0xd9,0xbd,0xc1,0xce,0xd0,0xd0,0xd2,0xd2,0xd4,0xd2,0xd0,0xd0,0xce,0xd8,0xd4,0xc8,0xce,0xd8,0xd8,0xd2,0xda,0xd4,0xd8,0xd6,0xd6,0xd0,0xcc,0xdc,0xda,0xd8,0xd6,0xd6,0xd8,0xd8,0xd6,0xd6,0xd1,0xd3,0xd3,0xd3,0xd1,0xcf,0xcd,0xcf,0xd3,0xd5,0xd5,0xd5,0xd7,0xd7,0xd5,0xd3,0xd4,0xd2,0xd6,0xd2,0xd4,0xd6,0xd0,0xd2,0xd4,0xd4,0xd4,0xd4,0xd6,0xd8,0xd6,0xd2,0xc8,0xd8,0xd0,0xd0,0xd2,0xd0,0xd6,0xd0,0xd2,0xd0,0xd9,0xce,0xca,0xb7,0xd2,0xd0,0xce,0xce,0xd0,0xd0,0xce,0xce,0xcc,0xcc,0xd2,0xce,0xca,0xcc,0xce,0xd0,0xce,0xcc,0xcc,0xd0,0xcc,0xd2,0xc8,0xd2,0xcc,0xd0,0xcc,0xc6,0xce,0xcc,0xca,0xd0,0xcc,0xca,0xc7,0xc7,0xcd,0xd1,0xc9,0xbe,0xbc,0xc3,0xc9,0xc9,0xc9,0xcb,0xcb,0xcb,0xc9,0xc7,0xc9,0xcd,0xc9,0xc1,0xc5,0xc9,0xc9,0xcd,0xcf,0xcb,0xcd,0xc9,0xc9,0xc7,0xc1,0xcd,0xce,0xce,0xce,0xce,0xce,0xce,0xcc,0xcc,0xca,0xc8,0xca,0xcc,0xca,0xc8,0xc6,0xc6,0xcc,0xcc,0xca,0xca,0xca,0xcc,0xcc,0xca,0xca,0xc6,0xc6,0xca,0xc8,0xcc,0xcc,0xc8,0xc8,0xca,0xcc,0xcc,0xca,0xcc,0xcc,0xcc,0xc2,0xcc,0xc6,0xc8,0xc8,0xca,0xd0,0xc6,0xc6,0xd2,0xd2,0xc6,0xbe,0xb1,0xca,0xce,0xcc,0xca,0xc8,0xca,0xcc,0xca,0xca,0xca,0xd0,0xce,0xc6,0xca,0xcc,0xca,0xcc,0xc6,0xc8,0xcc,0xd0,0xcc,0xca,0xcc,0xcc,0xcc}, {0xca,0xcc,0xce,0xce,0xce,0xcc,0xcc,0xcc,0xc4,0xc4,0xc6,0xc8,0xca,0xca,0xca,0xca,0xcc,0xcc,0xca,0xc8,0xc8,0xcc,0xcc,0xcc,0xcc,0xc8,0xce,0xca,0xcc,0xce,0xc8,0xca,0xca,0xca,0xca,0xca,0xca,0xcc,0xca,0xc6,0xce,0xce,0xc8,0xd2,0xd2,0xc8,0xcc,0xca,0xc9,0xc5,0xbf,0xcd,0xc9,0xcf,0xc5,0xc1,0xcb,0xc9,0xc7,0xc9,0xcb,0xcb,0xcd,0xcf,0xd1,0xcf,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xc9,0xcf,0xcb,0xd3,0xcd,0xcd,0xcf,0xc9,0xd1,0xd1,0xcd,0xd1,0xcf,0xcf,0xd0,0xd0,0xcc,0xc2,0xc8,0xd0,0xd4,0xd0,0xd4,0xd2,0xd2,0xd2,0xd2,0xd4,0xd6,0xd6,0xdc,0xd8,0xd0,0xd4,0xda,0xd6,0xd2,0xd6,0xd8,0xd6,0xda,0xda,0xdc,0xd8,0xd2,0xdc,0xd6,0xd8,0xda,0xda,0xda,0xda,0xd8,0xd8,0xcf,0xd1,0xd3,0xd3,0xd3,0xd3,0xd5,0xd5,0xd5,0xd5,0xd5,0xd3,0xd3,0xd5,0xd7,0xd5,0xd8,0xd4,0xd8,0xd4,0xd6,0xd8,0xd2,0xd6,0xd4,0xd4,0xd2,0xd2,0xd4,0xd6,0xd2,0xce,0xd0,0xd4,0xce,0xd6,0xd6,0xcc,0xd0,0xd4,0xce,0xd6,0xc1,0xdb,0xc2,0xd0,0xcc,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xd2,0xd2,0xd4,0xd2,0xd0,0xce,0xcc,0xcc,0xce,0xd0,0xcc,0xd0,0xca,0xd0,0xca,0xd2,0xce,0xce,0xce,0xc8,0xd0,0xce,0xca,0xce,0xcc,0xcc,0xd1,0xd1,0xc9,0xc1,0xc3,0xcb,0xcf,0xc9,0xcd,0xcd,0xcb,0xc9,0xc9,0xcb,0xcb,0xcb,0xcf,0xd1,0xc9,0xc5,0xcb,0xcf,0xcb,0xc9,0xcb,0xcb,0xcf,0xcd,0xcd,0xcb,0xc5,0xcf,0xca,0xca,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xc4,0xc4,0xc6,0xca,0xcc,0xca,0xca,0xcc,0xc8,0xca,0xca,0xca,0xca,0xcc,0xcc,0xca,0xcc,0xc8,0xca,0xcc,0xca,0xcc,0xce,0xca,0xca,0xca,0xca,0xca,0xca,0xcc,0xca,0xc6,0xce,0xce,0xc8,0xd2,0xd0,0xc8,0xcc,0xcc,0xcc,0xc6,0xba,0xd2,0xd0,0xc8,0xc4,0xc6,0xce,0xca,0xc8,0xca,0xca,0xcc,0xce,0xd0,0xca,0xcc,0xc6,0xca,0xca,0xca,0xd0,0xce,0xc6,0xca,0xca,0xca,0xca,0xcc,0xcc,0xca}, {0xcc,0xce,0xd0,0xd0,0xce,0xcc,0xcc,0xcc,0xca,0xca,0xca,0xca,0xca,0xcc,0xcc,0xcc,0xca,0xcc,0xcc,0xca,0xca,0xcc,0xce,0xce,0xce,0xc8,0xcc,0xca,0xca,0xcc,0xc8,0xca,0xca,0xca,0xca,0xca,0xcc,0xce,0xcc,0xc8,0xc4,0xc6,0xc4,0xcc,0xca,0xc2,0xc6,0xc6,0xca,0xcc,0xc4,0xce,0xcc,0xd2,0xc8,0xcc,0xca,0xc8,0xc8,0xc8,0xca,0xca,0xca,0xcc,0xc7,0xc9,0xcb,0xcb,0xc9,0xc9,0xcb,0xcf,0xcb,0xcb,0xc7,0xcd,0xcd,0xd3,0xcd,0xcd,0xce,0xc6,0xd0,0xd2,0xce,0xce,0xce,0xd2,0xc6,0xd0,0xd4,0xd6,0xd0,0xd4,0xd2,0xd0,0xd4,0xd2,0xd0,0xd0,0xd2,0xd4,0xd4,0xd4,0xd2,0xd8,0xd4,0xce,0xd4,0xda,0xda,0xda,0xd5,0xd5,0xd5,0xd1,0xd5,0xd5,0xcd,0xd3,0xd3,0xd7,0xdc,0xdc,0xdc,0xda,0xd7,0xd7,0xd3,0xd5,0xd7,0xd7,0xd5,0xd5,0xd5,0xd5,0xd5,0xd7,0xd7,0xd5,0xd5,0xd7,0xda,0xda,0xda,0xd5,0xd7,0xd3,0xd3,0xd7,0xd1,0xd3,0xd5,0xd3,0xd3,0xd1,0xd3,0xd5,0xd3,0xcf,0xcd,0xd1,0xcd,0xd3,0xd5,0xcb,0xcd,0xd1,0xcc,0xce,0xd0,0xd4,0xe0,0xd4,0xd4,0xcc,0xd0,0xd0,0xce,0xce,0xce,0xce,0xd0,0xd0,0xca,0xcc,0xce,0xce,0xcc,0xcc,0xce,0xd2,0xce,0xcc,0xc8,0xce,0xcc,0xd2,0xce,0xce,0xcc,0xc4,0xcc,0xce,0xca,0xca,0xca,0xd0,0xc3,0xc5,0xc9,0xcf,0xcd,0xc7,0xc7,0xc9,0xcd,0xcb,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xcb,0xcd,0xc7,0xc3,0xc9,0xcd,0xcd,0xd1,0xcb,0xcd,0xcf,0xcb,0xcb,0xc9,0xc3,0xcd,0xca,0xcc,0xce,0xce,0xce,0xcc,0xcc,0xce,0xca,0xca,0xca,0xcc,0xcc,0xcc,0xcc,0xce,0xc8,0xcc,0xce,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xc8,0xca,0xca,0xc8,0xc8,0xcc,0xca,0xca,0xca,0xca,0xc8,0xcc,0xce,0xcc,0xc8,0xc6,0xc6,0xc4,0xcc,0xca,0xc2,0xc6,0xc6,0xca,0xce,0xc4,0xd0,0xcc,0xd0,0xce,0xca,0xcc,0xca,0xc8,0xc8,0xca,0xca,0xca,0xcc,0xc6,0xcc,0xca,0xcc,0xc8,0xc4,0xca,0xca,0xc8,0xca,0xc8,0xc8,0xca,0xce,0xcc,0xca}, {0xce,0xce,0xce,0xce,0xce,0xcc,0xca,0xc8,0xce,0xce,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xc4,0xc8,0xcc,0xce,0xcc,0xce,0xcc,0xcc,0xce,0xc8,0xcc,0xc8,0xc8,0xca,0xc6,0xc8,0xc4,0xc8,0xca,0xca,0xca,0xcc,0xce,0xcc,0xba,0xc8,0xcc,0xc8,0xc6,0xca,0xcc,0xc4,0xc2,0xca,0xce,0xc2,0xca,0xbe,0xc4,0xce,0xc8,0xc8,0xca,0xcc,0xcc,0xc8,0xc6,0xc6,0xbf,0xc5,0xcb,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xc9,0xc9,0xcd,0xcd,0xcf,0xcd,0xcf,0xcc,0xc2,0xcc,0xd0,0xce,0xce,0xcc,0xd0,0xc8,0xce,0xce,0xd6,0xca,0xce,0xcc,0xd4,0xd2,0xd2,0xd4,0xd4,0xd4,0xd2,0xd0,0xce,0xb7,0xd0,0xde,0xd8,0xd6,0xd6,0xd4,0xd2,0xe0,0xde,0xdc,0xd1,0xd7,0xe0,0xda,0xde,0xd5,0xd7,0xda,0xdc,0xda,0xd7,0xd5,0xd3,0xd7,0xd7,0xda,0xd7,0xd7,0xd7,0xd5,0xd5,0xcf,0xd5,0xda,0xda,0xda,0xd7,0xd7,0xd7,0xda,0xd5,0xd7,0xd3,0xd3,0xd5,0xd1,0xd3,0xcf,0xd1,0xd1,0xd1,0xd3,0xd5,0xd7,0xd5,0xc3,0xd1,0xd3,0xcd,0xcf,0xd3,0xd1,0xcb,0xce,0xd4,0xce,0xca,0xd0,0xcc,0xce,0xd6,0xd0,0xd0,0xd0,0xd2,0xd0,0xce,0xcc,0xca,0xc4,0xc8,0xce,0xd0,0xce,0xce,0xce,0xce,0xcc,0xca,0xc8,0xcc,0xcc,0xce,0xcc,0xce,0xca,0xc1,0xc8,0xcc,0xca,0xca,0xca,0xce,0xc5,0xc1,0xc5,0xcd,0xc9,0xc1,0xc5,0xd1,0xc9,0xc9,0xc9,0xcb,0xcb,0xcb,0xc7,0xc5,0xb4,0xc3,0xcd,0xd1,0xcf,0xc7,0xc3,0xc7,0xcf,0xcd,0xcb,0xc5,0xc7,0xcb,0xc7,0xcf,0xce,0xce,0xd0,0xd0,0xce,0xce,0xcc,0xca,0xce,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xce,0xc4,0xca,0xcc,0xcc,0xca,0xcc,0xcc,0xce,0xcc,0xca,0xca,0xca,0xc6,0xc6,0xca,0xc8,0xc6,0xc8,0xc8,0xc8,0xca,0xce,0xce,0xcc,0xbc,0xc8,0xca,0xc8,0xc8,0xcc,0xce,0xc4,0xc0,0xca,0xd2,0xc2,0xc4,0xc0,0xcc,0xca,0xca,0xca,0xca,0xcc,0xcc,0xc8,0xc6,0xc6,0xba,0xc4,0xc6,0xcc,0xcc,0xc8,0xce,0xcc,0xc8,0xc8,0xc8,0xc8,0xca,0xcc,0xcc,0xcc}, {0xcc,0xca,0xca,0xcc,0xcc,0xcc,0xca,0xc6,0xc8,0xc8,0xc8,0xc8,0xca,0xca,0xcc,0xce,0xbe,0xc4,0xc8,0xca,0xca,0xca,0xca,0xc8,0xce,0xca,0xcc,0xc8,0xc8,0xcc,0xc6,0xca,0xbe,0xc4,0xc8,0xc6,0xc4,0xc6,0xca,0xce,0xbc,0xc8,0xd0,0xca,0xc6,0xce,0xcc,0xc4,0xc6,0xca,0xce,0xc4,0xd2,0xc8,0xc6,0xc6,0xcc,0xcc,0xcc,0xce,0xce,0xcc,0xca,0xca,0xc9,0xcb,0xcd,0xcd,0xcb,0xcb,0xc9,0xc9,0xc9,0xc9,0xcb,0xcb,0xcb,0xc9,0xcb,0xd1,0xd0,0xc6,0xce,0xd0,0xd0,0xd2,0xce,0xd0,0xcc,0xd4,0xcc,0xd0,0xce,0xdc,0xd6,0xd0,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd2,0xd0,0xd8,0xd8,0xd0,0xca,0xc4,0xc2,0xce,0xe7,0xd3,0xd5,0xd3,0xc9,0xd1,0xdc,0xd7,0xda,0xda,0xd7,0xd7,0xd7,0xda,0xda,0xd7,0xd5,0xd5,0xd5,0xd7,0xd7,0xda,0xda,0xda,0xda,0xcb,0xd1,0xd5,0xd7,0xd5,0xd7,0xd7,0xd5,0xdc,0xd5,0xda,0xd3,0xd3,0xd7,0xd3,0xd5,0xc9,0xcf,0xd1,0xd1,0xcf,0xd1,0xd5,0xd7,0xc5,0xd5,0xd7,0xcf,0xd1,0xd7,0xcf,0xcb,0xcb,0xd3,0xd8,0xd0,0xd4,0xce,0xcc,0xd6,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xce,0xcc,0xce,0xce,0xd0,0xd0,0xd0,0xce,0xcc,0xca,0xca,0xc8,0xcc,0xcc,0xcc,0xc8,0xca,0xd0,0xcc,0xc2,0xca,0xce,0xce,0xce,0xca,0xcc,0xcb,0xcb,0xc9,0xc5,0xc9,0xd1,0xcd,0xc5,0xcb,0xcb,0xcb,0xcd,0xcd,0xcd,0xc9,0xc7,0xcd,0xcf,0xc7,0xbc,0xb8,0xba,0xc3,0xd5,0xcf,0xcb,0xc9,0xc3,0xcb,0xd1,0xcd,0xd1,0xce,0xcc,0xcc,0xcc,0xce,0xcc,0xca,0xc6,0xca,0xc8,0xc8,0xca,0xca,0xca,0xcc,0xce,0xc0,0xc6,0xc8,0xc8,0xc8,0xc8,0xca,0xcc,0xce,0xcc,0xcc,0xcc,0xc6,0xc8,0xcc,0xca,0xc0,0xc4,0xc6,0xc6,0xc6,0xc8,0xcc,0xcc,0xbc,0xca,0xd0,0xca,0xc8,0xd0,0xcc,0xc4,0xca,0xc2,0xca,0xca,0xd2,0xc4,0xc6,0xc8,0xcc,0xca,0xcc,0xce,0xce,0xca,0xc8,0xc6,0xc6,0xca,0xc8,0xcc,0xcc,0xc8,0xca,0xc6,0xc4,0xc4,0xc6,0xc6,0xc6,0xc6,0xc8,0xca}, {0xca,0xca,0xca,0xca,0xcc,0xce,0xcc,0xcc,0xca,0xc8,0xc8,0xc8,0xc8,0xc8,0xca,0xca,0xc4,0xc6,0xc8,0xc6,0xc6,0xca,0xcc,0xcc,0xcc,0xc8,0xca,0xc6,0xc6,0xca,0xc6,0xca,0xc2,0xc6,0xca,0xc6,0xc4,0xc4,0xc8,0xcc,0xc6,0xc8,0xd0,0xcc,0xc8,0xc6,0xc2,0xc6,0xca,0xce,0xc4,0xc8,0xc6,0xd0,0xca,0xcc,0xcc,0xca,0xca,0xca,0xca,0xca,0xcc,0xd0,0xcd,0xcb,0xc7,0xc7,0xc9,0xcb,0xcb,0xcb,0xc9,0xc7,0xcd,0xcb,0xcb,0xc5,0xcb,0xd1,0xd6,0xce,0xd4,0xd2,0xd0,0xd4,0xd0,0xd0,0xd0,0xd0,0xd0,0xd8,0xd4,0xd2,0xce,0xd2,0xd6,0xd4,0xd2,0xd2,0xd2,0xd4,0xd6,0xd6,0xd8,0xd8,0xd4,0xd4,0xd8,0xd2,0xd0,0xd2,0xdc,0xde,0xde,0xd7,0xdc,0xe0,0xd5,0xd7,0xda,0xd7,0xd7,0xd7,0xda,0xda,0xda,0xda,0xd7,0xd7,0xd7,0xd7,0xda,0xda,0xda,0xda,0xd1,0xd5,0xd5,0xd5,0xd5,0xd7,0xda,0xda,0xda,0xd5,0xd7,0xd3,0xd3,0xd7,0xd1,0xd5,0xcd,0xd3,0xd5,0xd3,0xcf,0xcf,0xd3,0xd5,0xd1,0xd5,0xda,0xd5,0xd7,0xd5,0xcb,0xd1,0xcf,0xcf,0xd6,0xce,0xd6,0xd4,0xd0,0xce,0xd4,0xd2,0xce,0xce,0xd0,0xd2,0xd2,0xd2,0xd2,0xd0,0xcc,0xcc,0xcc,0xce,0xce,0xce,0xca,0xc8,0xce,0xcc,0xcc,0xc4,0xca,0xd0,0xd2,0xca,0xd2,0xd0,0xce,0xd2,0xcc,0xca,0xc9,0xc9,0xcb,0xcb,0xc9,0xc9,0xc7,0xc5,0xcd,0xcb,0xc9,0xc7,0xc9,0xc9,0xcb,0xcb,0xc9,0xcb,0xc7,0xc7,0xcb,0xc9,0xc3,0xc7,0xcd,0xcd,0xcb,0xc7,0xcd,0xd1,0xc5,0xc5,0xca,0xca,0xca,0xca,0xcc,0xcc,0xca,0xc8,0xcc,0xca,0xc8,0xca,0xca,0xc8,0xca,0xcc,0xc2,0xc6,0xc8,0xc8,0xc8,0xca,0xcc,0xcc,0xce,0xca,0xca,0xca,0xc6,0xc8,0xca,0xc8,0xc2,0xc6,0xca,0xc8,0xc4,0xc6,0xca,0xcc,0xc6,0xc8,0xd0,0xcc,0xca,0xc8,0xc2,0xc6,0xcc,0xca,0xc6,0xc8,0xc4,0xd0,0xc6,0xcc,0xcc,0xca,0xc8,0xc8,0xca,0xca,0xca,0xcc,0xd0,0xd0,0xc6,0xc8,0xc6,0xc4,0xc6,0xc2,0xc4,0xc6,0xc8,0xc8,0xc6,0xc4,0xc8,0xcc}, {0xc8,0xca,0xcc,0xca,0xc8,0xc8,0xca,0xcc,0xcc,0xcc,0xca,0xca,0xca,0xc8,0xc8,0xc8,0xcc,0xcc,0xca,0xc8,0xca,0xcc,0xce,0xcc,0xca,0xc6,0xca,0xc6,0xc6,0xca,0xc6,0xc8,0xc6,0xca,0xcc,0xc8,0xc6,0xc8,0xc8,0xc8,0xcc,0xca,0xd0,0xca,0xc6,0xca,0xc6,0xcc,0xc6,0xc8,0xc0,0xc0,0xb3,0xc2,0xc8,0xce,0xcc,0xc8,0xc6,0xc6,0xc8,0xc8,0xcc,0xd0,0xc9,0xc7,0xc5,0xc5,0xc9,0xcb,0xcd,0xcd,0xcd,0xc9,0xcf,0xcb,0xcf,0xc5,0xcb,0xd1,0xce,0xce,0xd6,0xce,0xc8,0xd0,0xd0,0xce,0xd8,0xcc,0xcc,0xcc,0xc6,0xb8,0xc4,0xdc,0xd6,0xd4,0xd0,0xd0,0xd2,0xd4,0xd6,0xd8,0xd6,0xdc,0xd6,0xce,0xd8,0xe0,0xdc,0xd6,0xda,0xda,0xdc,0xd5,0xd7,0xd7,0xcb,0xcd,0xd7,0xd7,0xda,0xd7,0xd5,0xd5,0xd5,0xda,0xdc,0xda,0xd7,0xd7,0xda,0xda,0xd7,0xd7,0xda,0xdc,0xda,0xd7,0xd7,0xdc,0xdc,0xdc,0xd7,0xd3,0xd7,0xd3,0xd5,0xd7,0xd1,0xd5,0xd5,0xd7,0xd7,0xd5,0xd3,0xd3,0xd5,0xd5,0xd3,0xd3,0xd7,0xcf,0xd1,0xd3,0xcb,0xd3,0xda,0xd3,0xc0,0xc6,0xb3,0xd4,0xca,0xd8,0xd4,0xd0,0xcc,0xcc,0xce,0xd2,0xd2,0xd2,0xce,0xcc,0xca,0xca,0xcc,0xce,0xd0,0xd0,0xce,0xca,0xd0,0xcc,0xd0,0xc4,0xcc,0xd0,0xcc,0xcc,0xd4,0xcc,0xc6,0xcc,0xcc,0xca,0xd1,0xc9,0xc7,0xc7,0xbf,0xb8,0xc3,0xd7,0xcd,0xcb,0xc7,0xc5,0xc7,0xc7,0xc9,0xcb,0xcb,0xc9,0xc5,0xc7,0xcf,0xcf,0xcb,0xcf,0xcd,0xcf,0xcf,0xc9,0xcb,0xcb,0xbf,0xbf,0xc8,0xca,0xcc,0xca,0xc8,0xc6,0xc8,0xcc,0xce,0xcc,0xca,0xcc,0xca,0xc8,0xc8,0xca,0xca,0xcc,0xcc,0xca,0xcc,0xcc,0xce,0xcc,0xcc,0xc6,0xc8,0xc8,0xc6,0xc8,0xca,0xc4,0xc8,0xca,0xcc,0xc8,0xc6,0xc8,0xca,0xca,0xca,0xca,0xd0,0xca,0xc6,0xca,0xc6,0xcc,0xc4,0xca,0xc6,0xba,0xaf,0xc8,0xc4,0xca,0xca,0xc8,0xc6,0xc6,0xc8,0xc8,0xca,0xcc,0xc2,0xc4,0xc0,0xc6,0xc8,0xc8,0xd0,0xcc,0xca,0xc8,0xc8,0xca,0xc8,0xc8,0xca,0xce}, {0xc4,0xc8,0xcc,0xc8,0xc0,0xbe,0xc2,0xc8,0xc8,0xc8,0xc8,0xca,0xca,0xcc,0xcc,0xce,0xcc,0xcc,0xcc,0xcc,0xcc,0xce,0xcc,0xc8,0xcc,0xc8,0xcc,0xc8,0xca,0xcc,0xc8,0xca,0xc6,0xc8,0xc8,0xc8,0xc8,0xca,0xc8,0xc4,0xbe,0xc2,0xc8,0xb7,0xb7,0xca,0xc8,0xc6,0xce,0xc6,0xce,0xc4,0xc6,0xc6,0xd2,0xc8,0xcc,0xca,0xca,0xca,0xca,0xca,0xca,0xcc,0xc9,0xcb,0xcd,0xcd,0xcd,0xcb,0xcb,0xc9,0xd1,0xc9,0xcd,0xc9,0xd1,0xc5,0xcd,0xcf,0xc2,0xc8,0xd2,0xc8,0xc0,0xca,0xce,0xce,0xd2,0xd2,0xda,0xd0,0xd6,0xd2,0xd8,0xd2,0xd6,0xd6,0xd4,0xd4,0xd6,0xd6,0xd6,0xd6,0xd6,0xd4,0xd2,0xd8,0xde,0xd8,0xd6,0xde,0xda,0xd7,0xda,0xd5,0xda,0xda,0xd1,0xd7,0xd3,0xda,0xdc,0xd7,0xd1,0xcd,0xcf,0xd3,0xd7,0xd5,0xd5,0xd7,0xda,0xde,0xde,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdd,0xdb,0xd9,0xda,0xd5,0xda,0xd9,0xd9,0xdd,0xd6,0xd8,0xd9,0xd8,0xd5,0xd4,0xd5,0xd8,0xd6,0xd4,0xc9,0xd1,0xd5,0xc1,0xc3,0xd3,0xce,0xcf,0xd9,0xce,0xe5,0xd0,0xd2,0xd0,0xd7,0xd2,0xd6,0xd2,0xd0,0xd0,0xd2,0xd4,0xd2,0xd0,0xce,0xd0,0xd2,0xd2,0xd2,0xd0,0xcc,0xcc,0xd2,0xca,0xd0,0xcc,0xd2,0xc6,0xcc,0xce,0xc2,0xc6,0xd0,0xc4,0xbb,0xc6,0xca,0xca,0xcb,0xcf,0xcf,0xcb,0xc9,0xcb,0xcb,0xc7,0xcd,0xcb,0xcb,0xc9,0xcb,0xcb,0xcb,0xc9,0xc9,0xcb,0xc9,0xcb,0xcf,0xc9,0xc7,0xcd,0xc9,0xcd,0xd1,0xc7,0xc9,0xcb,0xc5,0xc9,0xc6,0xca,0xcc,0xc8,0xc2,0xbe,0xc2,0xc8,0xc6,0xc6,0xc6,0xc8,0xca,0xca,0xca,0xcc,0xce,0xce,0xcc,0xca,0xcc,0xcc,0xcc,0xca,0xcc,0xc6,0xc8,0xca,0xc8,0xca,0xca,0xc4,0xc8,0xca,0xca,0xc6,0xc6,0xc8,0xca,0xc8,0xba,0xc2,0xca,0xb8,0xb7,0xc8,0xc6,0xc6,0xd2,0xc6,0xd0,0xc4,0xca,0xc6,0xc6,0xcc,0xca,0xc8,0xc8,0xca,0xcc,0xca,0xc8,0xca,0xc6,0xcc,0xca,0xce,0xcc,0xc6,0xc8,0xc4,0xcc,0xc8,0xc6,0xc8,0xca,0xc8,0xc8,0xcc}, {0xca,0xca,0xcc,0xce,0xce,0xcc,0xca,0xca,0xc6,0xca,0xcc,0xca,0xca,0xca,0xca,0xca,0xca,0xce,0xd0,0xca,0xc6,0xc6,0xca,0xce,0xcc,0xd0,0xc4,0xca,0xca,0xd0,0xc4,0xc6,0xca,0xc8,0xc8,0xc8,0xc8,0xc6,0xc4,0xc6,0xc6,0xc6,0xc6,0xc8,0xc6,0xc6,0xca,0xd0,0xcc,0xce,0xce,0xcc,0xca,0xca,0xcc,0xce,0xcc,0xcc,0xcd,0xcf,0xcb,0xc9,0xcb,0xcd,0xcc,0xcc,0xca,0xcc,0xd0,0xcc,0xca,0xce,0xc9,0xcf,0xcf,0xcd,0xcd,0xc9,0xc7,0xcb,0xc9,0xd1,0xd6,0xd0,0xc4,0xd6,0xce,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd8,0xd4,0xd4,0xd6,0xd8,0xd8,0xd8,0xd8,0xdc,0xd6,0xd2,0xd6,0xd8,0xd8,0xd8,0xdc,0xda,0xd3,0xd7,0xdc,0xda,0xd7,0xd7,0xd3,0xd7,0xd7,0xda,0xdc,0xde,0xdc,0xda,0xda,0xd6,0xd9,0xdd,0xdd,0xdc,0xda,0xd7,0xd7,0xda,0xde,0xdf,0xdd,0xd9,0xd8,0xda,0xdc,0xdb,0xdc,0xdb,0xd2,0xd8,0xdc,0xd6,0xd6,0xd8,0xde,0xd6,0xde,0xd4,0xc7,0xd7,0xcf,0xd8,0xd0,0xd3,0xcf,0xd4,0xda,0xd2,0xd6,0xd8,0xd6,0xd6,0xd6,0xd6,0xd4,0xd4,0xd4,0xd9,0xd4,0xd2,0xd6,0xd6,0xd2,0xd2,0xd8,0xd0,0xd4,0xd0,0xce,0xd1,0xd1,0xce,0xce,0xd0,0xd4,0xd2,0xce,0xcc,0xc8,0xc6,0xca,0xc8,0xce,0xce,0xca,0xc2,0xd4,0xca,0xce,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xce,0xce,0xd1,0xcb,0xc9,0xcb,0xcd,0xcb,0xc9,0xcb,0xcf,0xc7,0xc5,0xc9,0xcd,0xcb,0xcb,0xcd,0xc5,0xc5,0xcc,0xd0,0xca,0xc8,0xc8,0xc8,0xc7,0xc9,0xcb,0xcd,0xcd,0xcb,0xca,0xcc,0xc8,0xcc,0xcc,0xca,0xc8,0xc8,0xc8,0xc8,0xca,0xca,0xd0,0xce,0xc6,0xc8,0xce,0xce,0xcc,0xce,0xc8,0xc6,0xcc,0xce,0xc8,0xc4,0xca,0xc8,0xc8,0xc8,0xc4,0xc2,0xc6,0xc8,0xc8,0xc6,0xc6,0xc8,0xc8,0xc8,0xca,0xce,0xcc,0xcc,0xcc,0xca,0xca,0xca,0xc8,0xc8,0xcc,0xca,0xcc,0xce,0xcc,0xca,0xca,0xcc,0xca,0xc8,0xc6,0xca,0xca,0xc8,0xc8,0xc8,0xc8,0xcc,0xca,0xc8,0xc8,0xc4,0xc2,0xc8}, {0xca,0xca,0xcc,0xca,0xc8,0xc4,0xc6,0xca,0xc8,0xca,0xca,0xca,0xca,0xcc,0xcc,0xca,0xd0,0xce,0xc8,0xc0,0xbc,0xc2,0xcc,0xd2,0xd0,0xce,0xc2,0xc2,0xc6,0xcc,0xc8,0xca,0xcc,0xca,0xca,0xca,0xca,0xc8,0xc8,0xca,0xc8,0xc2,0xbe,0xc0,0xc8,0xca,0xc6,0xc4,0xca,0xca,0xcc,0xca,0xca,0xc8,0xca,0xca,0xca,0xca,0xcb,0xcb,0xc9,0xc7,0xc9,0xcd,0xca,0xcc,0xc8,0xc2,0xc8,0xce,0xce,0xd2,0xcd,0xcf,0xcd,0xcb,0xcf,0xcf,0xcd,0xd1,0xcf,0xd1,0xbc,0xd2,0xd2,0xce,0xd4,0xcc,0xd4,0xd4,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd8,0xd8,0xd8,0xda,0xd8,0xd4,0xd4,0xd6,0xd6,0xd4,0xd2,0xd6,0xd8,0xd8,0xda,0xde,0xdc,0xd7,0xda,0xde,0xdc,0xdc,0xdc,0xd7,0xde,0xde,0xde,0xde,0xda,0xd5,0xd5,0xd7,0xdd,0xd9,0xdb,0xda,0xda,0xda,0xda,0xda,0xe4,0xe0,0xd5,0xce,0xcc,0xd4,0xde,0xe4,0xe2,0xe0,0xdb,0xd4,0xd8,0xdf,0xdb,0xde,0xde,0xdf,0xd2,0xdd,0xe0,0xdc,0xe2,0xd8,0xd4,0xcc,0xd1,0xce,0xd1,0xd6,0xd0,0xd4,0xd6,0xd6,0xd6,0xd4,0xd4,0xd4,0xd4,0xd4,0xda,0xd6,0xd4,0xd6,0xd4,0xd0,0xcc,0xca,0xd0,0xd2,0xcb,0xc7,0xcb,0xcf,0xd1,0xd3,0xce,0xd0,0xce,0xce,0xd2,0xd0,0xce,0xd0,0xce,0xd0,0xb9,0xce,0xce,0xca,0xd0,0xc8,0xce,0xce,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcd,0xcb,0xcb,0xcd,0xcd,0xc9,0xc9,0xcb,0xc9,0xc7,0xc5,0xc7,0xc9,0xc9,0xcb,0xcf,0xcb,0xc9,0xce,0xd0,0xcc,0xca,0xcc,0xca,0xc7,0xc7,0xc9,0xc9,0xc5,0xc3,0xc6,0xca,0xc8,0xca,0xca,0xca,0xca,0xcc,0xcc,0xca,0xd0,0xcc,0xc8,0xc2,0xbc,0xc2,0xce,0xd0,0xd0,0xce,0xc6,0xc0,0xc6,0xcc,0xca,0xca,0xcc,0xc8,0xc6,0xc8,0xc8,0xc6,0xc6,0xc8,0xca,0xc0,0xbc,0xc2,0xca,0xcc,0xc8,0xc4,0xcc,0xca,0xca,0xca,0xca,0xca,0xca,0xc8,0xc8,0xc8,0xca,0xcc,0xca,0xc6,0xc8,0xca,0xc6,0xc6,0xc4,0xc0,0xc2,0xc8,0xcc,0xca,0xc8,0xca,0xc8,0xc6,0xca,0xca,0xc6,0xca}, {0xca,0xca,0xcc,0xca,0xc4,0xc0,0xc4,0xca,0xcc,0xcc,0xcc,0xca,0xcc,0xce,0xce,0xcc,0xcc,0xce,0xcc,0xc8,0xc6,0xc8,0xca,0xcc,0xd0,0xcc,0xc4,0xbe,0xc8,0xc8,0xca,0xcc,0xcc,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xc8,0xca,0xca,0xca,0xc8,0xc8,0xc8,0xca,0xc8,0xc8,0xca,0xcc,0xca,0xca,0xca,0xca,0xcc,0xcc,0xcb,0xcb,0xc9,0xc7,0xc9,0xcd,0xc7,0xcd,0xc7,0xc0,0xc5,0xcf,0xd1,0xd1,0xd0,0xd2,0xce,0xcc,0xd2,0xd2,0xd0,0xd4,0xdc,0xcc,0xd6,0xd4,0xd0,0xda,0xc8,0xd6,0xd2,0xd4,0xd4,0xd6,0xd6,0xd6,0xd6,0xd6,0xd4,0xd6,0xda,0xdc,0xd8,0xd4,0xd6,0xda,0xd6,0xd8,0xd8,0xd6,0xd6,0xda,0xde,0xde,0xdc,0xd7,0xdc,0xde,0xdc,0xde,0xde,0xda,0xdc,0xde,0xde,0xdc,0xd5,0xd3,0xd7,0xde,0xe1,0xdf,0xdc,0xdc,0xdc,0xde,0xde,0xde,0xd6,0xda,0xde,0xe0,0xe0,0xdf,0xdd,0xd7,0xdc,0xdc,0xd3,0xcf,0xd6,0xda,0xda,0xdc,0xde,0xe1,0xdc,0xd7,0xd4,0xd0,0xd4,0xdc,0xdc,0xd7,0xda,0xd8,0xd7,0xd8,0xd2,0xd4,0xd6,0xd5,0xd5,0xd6,0xd5,0xd6,0xd6,0xd5,0xce,0xd3,0xd8,0xd8,0xd4,0xd2,0xd4,0xd8,0xcf,0xd1,0xcc,0xc8,0xcb,0xd1,0xd1,0xd5,0xd4,0xd4,0xd0,0xce,0xd4,0xd4,0xd0,0xd0,0xd9,0xca,0xd4,0xd2,0xcc,0xd6,0xc2,0xd2,0xcc,0xcc,0xcc,0xcc,0xce,0xcc,0xcc,0xcc,0xcc,0xcc,0xcd,0xcf,0xcb,0xc7,0xc7,0xc9,0xc5,0xc9,0xcb,0xc9,0xc7,0xc9,0xcd,0xcf,0xcd,0xcb,0xce,0xce,0xca,0xcc,0xce,0xcc,0xc9,0xcb,0xcb,0xc9,0xc6,0xc2,0xc6,0xcc,0xca,0xcc,0xca,0xca,0xcc,0xd0,0xd0,0xce,0xce,0xcc,0xcc,0xca,0xc4,0xc8,0xcc,0xca,0xd0,0xce,0xc4,0xbe,0xc4,0xca,0xca,0xcc,0xcc,0xc8,0xc6,0xc8,0xca,0xca,0xc8,0xca,0xcc,0xca,0xca,0xcc,0xcc,0xca,0xc8,0xca,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xca,0xca,0xcc,0xcc,0xc8,0xc4,0xc6,0xc8,0xc4,0xc8,0xc6,0xbe,0xc0,0xca,0xce,0xca,0xc8,0xca,0xc6,0xc6,0xcc,0xcc,0xc8,0xca}, {0xce,0xcc,0xcc,0xcc,0xc8,0xc6,0xc8,0xcc,0xcc,0xcc,0xcc,0xca,0xcc,0xce,0xce,0xcc,0xc8,0xcc,0xd0,0xd2,0xd2,0xd0,0xcc,0xc6,0xcc,0xca,0xc8,0xc0,0xce,0xc8,0xca,0xc8,0xc8,0xc8,0xc8,0xc8,0xca,0xc8,0xc8,0xca,0xc4,0xca,0xce,0xcc,0xc6,0xc4,0xc6,0xca,0xca,0xca,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xd0,0xce,0xcb,0xcb,0xc9,0xc7,0xc7,0xcb,0xc9,0xcf,0xcd,0xc7,0xcd,0xd1,0xcf,0xcd,0xd0,0xd4,0xd0,0xce,0xd2,0xd2,0xd0,0xd4,0xce,0xd8,0xd2,0xd4,0xce,0xce,0xd4,0xce,0xd4,0xd4,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd8,0xd8,0xda,0xda,0xd8,0xd4,0xd6,0xd8,0xd8,0xdc,0xdc,0xd6,0xd6,0xda,0xdc,0xda,0xdc,0xd7,0xdc,0xde,0xda,0xde,0xe0,0xdc,0xdc,0xde,0xde,0xde,0xda,0xd7,0xdc,0xe2,0xdf,0xde,0xde,0xe0,0xe0,0xde,0xde,0xde,0xde,0xe0,0xe0,0xe0,0xe2,0xe2,0xe0,0xdc,0xe0,0xe3,0xda,0xd8,0xdf,0xdc,0xde,0xdc,0xda,0xda,0xde,0xde,0xe4,0xe2,0xd8,0xdd,0xda,0xda,0xdc,0xda,0xd7,0xd8,0xd6,0xd3,0xd8,0xd8,0xd8,0xd6,0xd6,0xd6,0xd6,0xd8,0xd6,0xda,0xda,0xd3,0xcd,0xce,0xcf,0xd2,0xd1,0xd5,0xd2,0xd0,0xd3,0xd3,0xd1,0xd3,0xd6,0xd8,0xd4,0xd0,0xd4,0xd2,0xce,0xce,0xcc,0xd6,0xd2,0xd0,0xcc,0xca,0xd0,0xca,0xce,0xce,0xce,0xd0,0xd0,0xce,0xce,0xce,0xcc,0xce,0xcd,0xcd,0xcb,0xc9,0xc7,0xc9,0xc7,0xcd,0xcd,0xc7,0xc5,0xc7,0xcb,0xc9,0xcd,0xc9,0xcc,0xcc,0xca,0xce,0xd0,0xca,0xcd,0xcd,0xcd,0xcb,0xca,0xc8,0xca,0xce,0xcc,0xcc,0xcc,0xcc,0xcc,0xce,0xce,0xcc,0xca,0xca,0xd0,0xd4,0xd0,0xd0,0xcc,0xc4,0xcc,0xcc,0xc6,0xc4,0xca,0xca,0xc8,0xca,0xca,0xc8,0xc6,0xc8,0xca,0xca,0xca,0xca,0xc6,0xca,0xce,0xcc,0xc8,0xc4,0xc6,0xca,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xcc,0xcc,0xcc,0xcc,0xc8,0xc4,0xc4,0xc8,0xc6,0xca,0xca,0xc4,0xc6,0xca,0xcc,0xc6,0xca,0xcc,0xc8,0xc6,0xcc,0xca,0xc8,0xca}, {0xce,0xcc,0xcc,0xce,0xce,0xce,0xce,0xce,0xc8,0xcc,0xcc,0xca,0xc8,0xca,0xcc,0xcc,0xcc,0xcc,0xcc,0xca,0xcc,0xce,0xcc,0xca,0xcc,0xca,0xca,0xc4,0xd0,0xc8,0xc8,0xc8,0xc8,0xc6,0xc6,0xc8,0xc8,0xc8,0xc8,0xca,0xcc,0xca,0xc8,0xc8,0xca,0xce,0xca,0xc6,0xcc,0xca,0xca,0xca,0xca,0xcc,0xcc,0xcc,0xcc,0xca,0xc7,0xc7,0xc7,0xc5,0xc7,0xc9,0xcd,0xcf,0xcd,0xcd,0xd3,0xcf,0xcc,0xd0,0xcc,0xd2,0xd2,0xd0,0xd2,0xd0,0xce,0xd4,0xce,0xd4,0xce,0xd0,0xd6,0xd6,0xdc,0xd2,0xd6,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd6,0xde,0xda,0xd8,0xd8,0xd6,0xd4,0xd4,0xd4,0xd8,0xdc,0xde,0xd8,0xd6,0xd8,0xda,0xd8,0xdc,0xdc,0xde,0xde,0xdc,0xe0,0xe2,0xde,0xe2,0xe0,0xe0,0xe2,0xe0,0xde,0xde,0xe0,0xdc,0xde,0xe0,0xe0,0xde,0xdc,0xdc,0xde,0xe4,0xe4,0xe0,0xdc,0xdc,0xde,0xe2,0xe2,0xe2,0xe7,0xda,0xdd,0xe0,0xdc,0xde,0xdc,0xdc,0xda,0xdd,0xd9,0xd8,0xda,0xd8,0xe0,0xd5,0xda,0xdc,0xdc,0xda,0xda,0xde,0xdc,0xd8,0xd8,0xd8,0xd6,0xd7,0xd6,0xd7,0xd6,0xd9,0xd7,0xd0,0xd0,0xd2,0xd1,0xcf,0xcb,0xd3,0xd7,0xd6,0xd4,0xd7,0xd5,0xd2,0xd2,0xd0,0xd4,0xd2,0xd0,0xd4,0xd2,0xd0,0xd4,0xd0,0xd2,0xca,0xce,0xd4,0xd4,0xd9,0xcc,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xcc,0xd0,0xce,0xcc,0xca,0xcb,0xcb,0xcb,0xc9,0xc9,0xcd,0xcb,0xc7,0xc5,0xc9,0xc9,0xc5,0xcb,0xc9,0xce,0xce,0xcc,0xd0,0xd2,0xcc,0xcd,0xcb,0xca,0xcc,0xce,0xcc,0xcc,0xce,0xc8,0xcc,0xcc,0xca,0xca,0xca,0xcc,0xcc,0xce,0xcc,0xcc,0xcc,0xca,0xcc,0xce,0xc8,0xca,0xcc,0xc8,0xc8,0xcc,0xca,0xc6,0xc8,0xc8,0xc8,0xc8,0xca,0xc8,0xc8,0xca,0xcc,0xc6,0xc4,0xc4,0xc6,0xca,0xcc,0xca,0xc8,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xc8,0xc8,0xc8,0xc8,0xc6,0xc4,0xc4,0xc8,0xcc,0xca,0xc8,0xca,0xca,0xc8,0xc8,0xc8,0xc6,0xca,0xca,0xc8,0xca,0xc8,0xc6,0xca}, {0xcc,0xca,0xca,0xcc,0xd0,0xd0,0xce,0xcc,0xca,0xcc,0xce,0xcc,0xca,0xcc,0xce,0xcc,0xcc,0xcc,0xca,0xc8,0xca,0xcc,0xcc,0xca,0xcc,0xcc,0xca,0xc4,0xcc,0xc8,0xc8,0xca,0xca,0xc8,0xc8,0xca,0xca,0xca,0xca,0xcc,0xc8,0xcc,0xcc,0xc8,0xc6,0xca,0xca,0xc8,0xcc,0xca,0xc8,0xc8,0xca,0xca,0xcc,0xcc,0xca,0xc8,0xc7,0xc9,0xc9,0xc9,0xcb,0xcd,0xcd,0xcd,0xc9,0xcb,0xd1,0xcd,0xce,0xd4,0xca,0xd0,0xd2,0xd2,0xd4,0xd2,0xd0,0xd6,0xda,0xc8,0xde,0xd6,0xd6,0xd2,0xca,0xde,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xda,0xd8,0xd6,0xd6,0xd8,0xd8,0xd8,0xda,0xdc,0xde,0xde,0xdc,0xdc,0xde,0xde,0xde,0xdc,0xdc,0xe0,0xde,0xda,0xde,0xe2,0xde,0xe0,0xde,0xde,0xe2,0xe4,0xe4,0xe2,0xe0,0xe0,0xe2,0xe0,0xe0,0xde,0xde,0xe0,0xe3,0xdc,0xe0,0xe4,0xe4,0xe4,0xe2,0xde,0xda,0xde,0xe2,0xd3,0xdc,0xe2,0xdc,0xe2,0xe1,0xe0,0xda,0xdd,0xe2,0xde,0xde,0xe0,0xdc,0xd8,0xe0,0xde,0xda,0xd8,0xd6,0xdc,0xd7,0xd9,0xd9,0xd7,0xd5,0xd6,0xd6,0xd5,0xd6,0xd0,0xcf,0xd4,0xd8,0xd8,0xd7,0xd7,0xdc,0xd3,0xd7,0xd4,0xd0,0xd3,0xd5,0xd4,0xd4,0xce,0xd4,0xd2,0xd2,0xd2,0xd2,0xd0,0xd6,0xda,0xc6,0xd9,0xd0,0xd4,0xd0,0xc6,0xd6,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xcc,0xcc,0xd0,0xce,0xcc,0xca,0xcb,0xcd,0xcd,0xc9,0xcb,0xcd,0xcb,0xc9,0xcb,0xcd,0xcd,0xc9,0xc9,0xc9,0xce,0xcc,0xc8,0xce,0xd0,0xca,0xcb,0xc9,0xca,0xcc,0xd0,0xce,0xcc,0xcc,0xc8,0xca,0xcc,0xcc,0xcc,0xce,0xce,0xce,0xce,0xca,0xcc,0xca,0xc6,0xca,0xce,0xc8,0xcc,0xcc,0xc8,0xc6,0xcc,0xca,0xc6,0xca,0xc8,0xc8,0xca,0xca,0xc8,0xc6,0xc8,0xcc,0xc8,0xca,0xca,0xc8,0xc6,0xc6,0xc8,0xc8,0xca,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc6,0xc6,0xc6,0xc8,0xc8,0xc8,0xca,0xcc,0xce,0xc8,0xc4,0xc6,0xc8,0xc6,0xc8,0xcc,0xc4,0xca,0xca,0xc8,0xca,0xc8,0xc8,0xce}, {0xca,0xc8,0xc8,0xcc,0xcc,0xcc,0xca,0xca,0xcc,0xcc,0xca,0xca,0xce,0xd0,0xce,0xca,0xc8,0xcc,0xce,0xce,0xce,0xce,0xcc,0xc8,0xca,0xcc,0xc6,0xc8,0xc8,0xcc,0xc6,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xcc,0xc0,0xc8,0xcc,0xc2,0xbc,0xbe,0xc4,0xc8,0xcc,0xcc,0xca,0xca,0xcc,0xcc,0xcc,0xca,0xcc,0xca,0xc9,0xcb,0xcd,0xcd,0xcd,0xcf,0xcb,0xcf,0xcb,0xc9,0xd0,0xd0,0xd0,0xd4,0xce,0xd4,0xd2,0xd2,0xd4,0xd4,0xd2,0xd8,0xce,0xd6,0xd2,0xd8,0xd2,0xb7,0xd0,0xd4,0xd8,0xd6,0xd6,0xd6,0xd6,0xd6,0xd8,0xd8,0xd4,0xd4,0xd6,0xda,0xdc,0xdc,0xdc,0xde,0xde,0xdc,0xdc,0xde,0xe1,0xde,0xe1,0xe1,0xdc,0xde,0xe0,0xdc,0xd7,0xde,0xe2,0xde,0xde,0xdc,0xdc,0xe0,0xe4,0xe4,0xe2,0xe2,0xe4,0xe2,0xde,0xde,0xe2,0xe2,0xe2,0xe0,0xe2,0xe4,0xe4,0xe0,0xe0,0xe0,0xe2,0xe3,0xde,0xe7,0xda,0xe4,0xe9,0xda,0xdf,0xd8,0xda,0xd4,0xd4,0xe4,0xda,0xd9,0xea,0xd8,0xd8,0xe1,0xda,0xd6,0xd0,0xcc,0xd4,0xd0,0xdc,0xda,0xda,0xd8,0xd9,0xd6,0xd6,0xd6,0xda,0xd2,0xd2,0xd6,0xd6,0xd0,0xd2,0xdc,0xd4,0xd8,0xd2,0xd0,0xd4,0xd6,0xd4,0xd6,0xd3,0xd7,0xd4,0xd2,0xd4,0xd2,0xd0,0xd2,0xce,0xd4,0xce,0xd4,0xd0,0xb3,0xca,0xce,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xce,0xcc,0xce,0xce,0xcc,0xcc,0xce,0xce,0xcc,0xce,0xcc,0xcc,0xce,0xcf,0xcd,0xcd,0xcd,0xc9,0xc9,0xcc,0xca,0xc4,0xca,0xce,0xc8,0xce,0xcc,0xcc,0xce,0xce,0xcc,0xcc,0xcc,0xca,0xca,0xca,0xcc,0xce,0xd0,0xce,0xca,0xca,0xca,0xce,0xce,0xca,0xcc,0xce,0xc8,0xcc,0xca,0xc6,0xc6,0xcc,0xc8,0xc6,0xcc,0xca,0xc8,0xca,0xcc,0xca,0xca,0xca,0xcc,0xc2,0xcc,0xce,0xc6,0xbb,0xbb,0xc0,0xc6,0xca,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc6,0xca,0xc8,0xc6,0xc8,0xca,0xca,0xcc,0xcc,0xca,0xc8,0xc6,0xc6,0xc6,0xc8,0xca,0xca,0xc6,0xca,0xc8,0xc8,0xcc,0xca,0xc8,0xcc}, {0xcc,0xca,0xca,0xca,0xca,0xc6,0xc8,0xca,0xca,0xc8,0xc4,0xc6,0xcc,0xd0,0xca,0xc2,0xca,0xcc,0xcc,0xca,0xca,0xcc,0xcc,0xcc,0xc4,0xca,0xc4,0xcc,0xc8,0xce,0xc4,0xca,0xca,0xc8,0xc8,0xca,0xca,0xc8,0xc8,0xca,0xd0,0xd0,0xce,0xc6,0xc6,0xcc,0xce,0xcc,0xce,0xce,0xcc,0xce,0xce,0xce,0xcc,0xca,0xce,0xcc,0xcb,0xcd,0xcd,0xcd,0xcb,0xcb,0xc9,0xd1,0xcf,0xc9,0xd0,0xd4,0xd2,0xd0,0xd6,0xd8,0xd4,0xd2,0xd6,0xd6,0xd4,0xd6,0xd8,0xd2,0xde,0xd0,0xd6,0xd4,0xd6,0xda,0xdc,0xda,0xda,0xda,0xda,0xdc,0xde,0xde,0xd6,0xda,0xdc,0xde,0xdc,0xd8,0xd8,0xdc,0xdc,0xd8,0xd6,0xdc,0xde,0xda,0xda,0xdc,0xe0,0xe2,0xe4,0xde,0xda,0xe0,0xe4,0xe0,0xe2,0xe0,0xe0,0xe0,0xe0,0xde,0xdc,0xdc,0xe0,0xdc,0xda,0xde,0xe4,0xe5,0xdf,0xd6,0xe1,0xe5,0xe5,0xe2,0xe0,0xe1,0xe4,0xe4,0xdc,0xe7,0xd8,0xe3,0xe0,0xc6,0xc0,0xb3,0xd2,0xd6,0xca,0xab,0x75,0x73,0xba,0xe5,0xdd,0xe7,0xe0,0xdc,0xd8,0xd6,0xe3,0xde,0xde,0xdf,0xdc,0xdc,0xda,0xda,0xd9,0xd8,0xde,0xbf,0xaf,0xbc,0xd4,0xda,0xd6,0xd4,0xd4,0xd8,0xd6,0xd2,0xd6,0xd6,0xd2,0xd4,0xd5,0xd7,0xd4,0xd2,0xd8,0xd6,0xd2,0xd4,0xd4,0xd0,0xdc,0xcc,0xd2,0xce,0xd0,0xd4,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xd2,0xd2,0xca,0xce,0xd2,0xce,0xcc,0xce,0xce,0xce,0xcc,0xc8,0xc8,0xcc,0xcb,0xc7,0xc7,0xcb,0xcd,0xcd,0xd0,0xca,0xc4,0xc8,0xce,0xcc,0xce,0xcc,0xcc,0xcc,0xca,0xc8,0xc8,0xca,0xca,0xc8,0xc6,0xc8,0xcc,0xce,0xc8,0xc0,0xcc,0xca,0xcc,0xcc,0xc8,0xca,0xce,0xcc,0xc6,0xc8,0xc6,0xc8,0xce,0xca,0xc6,0xca,0xcc,0xca,0xc8,0xcc,0xcc,0xcc,0xca,0xca,0xca,0xcc,0xca,0xc4,0xc4,0xc8,0xca,0xca,0xce,0xcc,0xcc,0xcc,0xcc,0xca,0xca,0xca,0xce,0xca,0xc6,0xc8,0xca,0xca,0xc8,0xc8,0xc6,0xcc,0xcc,0xc8,0xc8,0xcc,0xca,0xc2,0xcc,0xcc,0xc8,0xc8,0xcc,0xcc,0xc8,0xca}, {0xc8,0xc8,0xca,0xcc,0xca,0xc8,0xc8,0xcc,0xca,0xcc,0xcc,0xcc,0xd0,0xd0,0xc8,0xbb,0xce,0xca,0xc2,0xd4,0xc6,0xce,0xc8,0xce,0xc6,0xc8,0xca,0xca,0xca,0xca,0xca,0xca,0xcc,0xd2,0xc8,0xcc,0xcc,0xc6,0xd0,0xca,0xcc,0xca,0xc2,0xba,0xc0,0xce,0xd2,0xcc,0xc8,0xca,0xce,0xd0,0xcc,0xc8,0xca,0xd2,0xc6,0xce,0xd1,0xc7,0xc5,0xc7,0x91,0xd1,0xcc,0xd0,0xd2,0xd2,0xd0,0xd0,0xd2,0xd6,0xda,0xd0,0xd4,0xdc,0xd8,0xd4,0xd8,0xd8,0xd4,0xd4,0xd8,0xd8,0xbe,0xd2,0xdc,0xd6,0xda,0xd8,0xd8,0xdc,0xdc,0xd8,0xd8,0xda,0xd6,0xdc,0xe0,0xda,0xd8,0xe2,0xc0,0xab,0xde,0xe1,0xde,0xdc,0xdc,0xde,0xde,0xde,0xd7,0xe0,0xe4,0xe2,0xe4,0xe8,0xe6,0xe0,0xda,0xe0,0xe4,0xe2,0xe0,0xde,0xe0,0xe0,0xe0,0xe0,0xe4,0xe2,0xe7,0xe0,0xed,0xd4,0xe2,0xed,0xd0,0xeb,0xe8,0xe6,0xe4,0xe4,0xda,0xe3,0xdf,0xd4,0xb8,0xd5,0xe7,0xdc,0xe5,0xdf,0xd0,0x79,0xbb,0xa0,0x5c,0xd6,0xe0,0xe5,0xdd,0xc4,0xe2,0xde,0xe8,0xdd,0xd9,0xdf,0xe0,0xdc,0xd4,0xdc,0xda,0xe0,0x9d,0x73,0xc2,0xba,0xdc,0xd4,0x96,0xde,0xd2,0xd6,0xd8,0xd8,0xd6,0xd6,0xd6,0xd8,0xd9,0xcf,0xd3,0xde,0xd7,0xd3,0xd5,0xd3,0xd4,0xd6,0xd2,0xd6,0xb7,0xd2,0xd8,0xd2,0xd4,0xd0,0xd0,0xd4,0xd2,0xd0,0xce,0xd0,0xca,0xca,0xd6,0xc8,0xc8,0xd4,0xbb,0x9a,0xce,0xd0,0xce,0xca,0xc8,0xcc,0xcd,0xcb,0xcb,0xcb,0xcc,0xcc,0xce,0xd0,0xce,0xca,0xc8,0xcc,0xd0,0xce,0xcc,0xca,0xca,0xcc,0xca,0xca,0xc8,0xca,0xce,0xce,0xc8,0xbf,0xd0,0xc6,0xc0,0xce,0xca,0xce,0xca,0xcc,0xc4,0xc8,0xca,0xca,0xc8,0xc8,0xca,0xcc,0xcc,0xd0,0xce,0xc6,0xc6,0xcc,0xce,0xc8,0xc8,0xca,0xc8,0xb7,0xc2,0xcc,0xd4,0xc8,0xc6,0xc8,0xcc,0xce,0xca,0xc4,0xc6,0xca,0xc2,0xc8,0xd4,0xc2,0xc0,0xc8,0x8d,0xca,0xc4,0xc8,0xca,0xca,0xc8,0xc8,0xca,0xcc,0xce,0xc8,0xcc,0xd0,0xca,0xca,0xce,0xca}, {0xc8,0xc6,0xc6,0xca,0xca,0xc8,0xc8,0xc8,0xc8,0xca,0xc8,0xc8,0xca,0xce,0xc6,0xbd,0xcc,0xc8,0xd0,0xca,0xcc,0xc8,0xd0,0xc6,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xca,0xca,0xc2,0xcc,0xca,0xba,0xb8,0xc6,0xc6,0xbe,0xca,0xc8,0xc6,0xc6,0xca,0xd0,0xd0,0xcc,0xd0,0xcc,0xca,0xce,0xd0,0xce,0xca,0xca,0xd0,0xd8,0xbe,0xd1,0xd3,0x93,0xb2,0xd3,0xd0,0xd0,0xd2,0xd2,0xd0,0xd2,0xd4,0xd4,0xce,0xd2,0xd8,0xd0,0xc2,0xc2,0xcc,0xd6,0xd0,0xd6,0xd6,0xd4,0xd0,0xda,0xde,0xde,0xda,0xda,0xda,0xde,0xde,0xdc,0xda,0xdc,0xd8,0xe0,0xd4,0xdc,0xe4,0xd4,0x98,0xcf,0xdc,0xde,0xde,0xde,0xde,0xe1,0xe1,0xe1,0xe8,0xde,0xda,0xde,0xe2,0xe2,0xe4,0xeb,0xe0,0xe2,0xe4,0xe4,0xe4,0xe4,0xe2,0xe0,0xe4,0xe0,0xe0,0xe0,0xe4,0xdc,0xe0,0xc8,0xe0,0xe1,0xe8,0xda,0xdd,0xde,0xe3,0xe5,0xe3,0xdc,0xb2,0x90,0x9a,0xb4,0xd9,0xce,0xe4,0xaa,0x49,0xa5,0xc9,0xd7,0x3a,0x9d,0xdc,0xde,0xe5,0xd0,0xd8,0xe6,0xda,0xe9,0xe3,0xda,0xd8,0xe1,0xf3,0xd0,0xd9,0x8f,0x5d,0xc2,0xb4,0xba,0xd2,0x9a,0xc1,0xd7,0xd6,0xd6,0xd8,0xd8,0xd6,0xd6,0xd8,0xd8,0xd3,0xd3,0xd5,0xcd,0xbf,0xbf,0xcb,0xd5,0xce,0xd4,0xce,0xd0,0xc6,0xd8,0xd8,0xd8,0xd4,0xd2,0xd2,0xd6,0xd4,0xd2,0xd0,0xd2,0xd4,0xd0,0xc6,0xd2,0xe1,0xc4,0x8f,0xc6,0xcc,0xce,0xce,0xcc,0xcc,0xce,0xcd,0xcb,0xcf,0xcd,0xca,0xc6,0xca,0xd2,0xd2,0xcc,0xc8,0xc8,0xca,0xca,0xca,0xca,0xca,0xc8,0xca,0xca,0xc8,0xca,0xcc,0xcc,0xc6,0xbf,0xce,0xce,0xca,0xce,0xc6,0xce,0xca,0xc4,0xc8,0xc8,0xca,0xca,0xc8,0xc8,0xca,0xcc,0xc8,0xc6,0xc8,0xbd,0xbb,0xc2,0xc0,0xc2,0xca,0xc6,0xc8,0xc0,0xca,0xca,0xce,0xc6,0xcc,0xc8,0xc8,0xcc,0xce,0xcc,0xc8,0xc6,0xcc,0xd2,0xbf,0xce,0xd0,0x94,0xac,0xce,0xc6,0xc8,0xca,0xc8,0xc8,0xc8,0xca,0xcc,0xc6,0xc8,0xcc,0xc6,0xb9,0xb7,0xc0,0xc8}, {0xca,0xc8,0xc6,0xca,0xcc,0xcc,0xca,0xc8,0xc8,0xca,0xca,0xc8,0xca,0xcc,0xca,0xc4,0xc8,0xd2,0xbf,0xc2,0xac,0xcc,0xca,0xcc,0xc8,0xc8,0xc8,0xc8,0xc6,0xc8,0xca,0xcc,0xd6,0xc6,0xce,0xcc,0xcc,0xcc,0xc4,0xd4,0xca,0xc8,0xca,0xce,0xd0,0xce,0xcc,0xcc,0xd0,0xcc,0xca,0xce,0xd2,0xd0,0xcc,0xc8,0xc2,0xce,0xcb,0xd3,0xd1,0xa4,0xcf,0xcd,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd4,0xd4,0xdc,0xde,0xd8,0xd0,0xd4,0xda,0xda,0xd8,0xd6,0xda,0xd8,0xd4,0xde,0xda,0xd8,0xdc,0xdc,0xda,0xdc,0xde,0xde,0xdc,0xdc,0xdc,0xda,0xd8,0xe4,0xe0,0xda,0xe4,0xba,0xe0,0xdc,0xdc,0xde,0xe1,0xe1,0xe1,0xe1,0xe1,0xe0,0xe6,0xe0,0xcf,0xd3,0xe6,0xe8,0xda,0xe6,0xe4,0xe2,0xe4,0xe6,0xe6,0xe4,0xe0,0xe2,0xe0,0xe2,0xe5,0xe7,0xe0,0xe9,0xe1,0xed,0xe2,0xd9,0xf7,0xb2,0xe3,0xa1,0x99,0x98,0x8f,0x70,0x71,0x6a,0x80,0x7a,0xb8,0x89,0x40,0xab,0xe6,0xe2,0x92,0x3a,0xae,0xe2,0xdf,0xe3,0xf0,0xe6,0xe5,0xdf,0xe0,0xdf,0xe2,0xe2,0xda,0xd6,0xdb,0x7a,0x4b,0xc1,0xb6,0xad,0xdc,0xd8,0xbc,0xe0,0xd1,0xd8,0xd8,0xd6,0xd6,0xd6,0xd6,0xd8,0xd8,0xd7,0xde,0xd9,0xd5,0xd9,0xde,0xd5,0xcf,0xd3,0xd7,0xd1,0xcd,0xd6,0xd8,0xd2,0xd6,0xd3,0xd1,0xd3,0xd5,0xd4,0xd2,0xd0,0xd0,0xcc,0xca,0xd8,0xcc,0xce,0xd2,0xab,0xce,0xce,0xce,0xce,0xce,0xd0,0xd0,0xce,0xca,0xcd,0xcb,0xc6,0xc0,0xc4,0xcc,0xce,0xc8,0xcc,0xca,0xc8,0xca,0xcc,0xce,0xcc,0xc8,0xca,0xcc,0xca,0xca,0xcc,0xcc,0xc8,0xc4,0xc8,0xcc,0xc4,0xbb,0xb1,0xc6,0xce,0xca,0xcc,0xca,0xca,0xc8,0xc8,0xc8,0xca,0xca,0xd0,0xce,0xd2,0xc8,0xc6,0xce,0xca,0xce,0xcc,0xc6,0xca,0xca,0xce,0xc6,0xc8,0xc8,0xce,0xc8,0xc6,0xca,0xce,0xce,0xc8,0xc4,0xc0,0xc6,0xc8,0xce,0xce,0xa1,0xc6,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xca,0xca,0xd6,0xd0,0xc8,0xc6,0xce,0xce,0xca,0xca}, {0xca,0xc8,0xc8,0xcc,0xce,0xcc,0xca,0xca,0xca,0xcc,0xcc,0xca,0xca,0xcc,0xcc,0xca,0xc2,0xca,0xce,0xc8,0xc0,0xcc,0xd0,0xc6,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xca,0xcc,0xcc,0xca,0xd0,0xc8,0xca,0xd2,0xca,0xc8,0xca,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xce,0xce,0xcc,0xcc,0xcc,0xce,0xba,0xca,0xd5,0xd1,0xc9,0xd7,0xd5,0xc9,0xd2,0xd2,0xd2,0xd4,0xd4,0xd4,0xd4,0xd4,0xce,0xdc,0xdc,0xd6,0xd8,0xd8,0xd6,0xdc,0xde,0xd8,0xda,0xd6,0xe2,0xd6,0xd8,0xd8,0xdc,0xda,0xda,0xdc,0xdc,0xda,0xda,0xda,0xe4,0xba,0xe2,0xe2,0xdc,0xe0,0xe2,0xde,0xde,0xde,0xe1,0xe3,0xe3,0xe1,0xe1,0xe1,0xe8,0xe2,0xe0,0xe4,0xe6,0xe4,0xe0,0xe2,0xe6,0xe4,0xe2,0xe4,0xe6,0xe6,0xe4,0xe2,0xe2,0xe0,0xe2,0xe4,0xe7,0xe3,0xe6,0xe6,0xd5,0xe5,0xde,0xd4,0xc9,0xbd,0x93,0x9a,0x98,0x7b,0x8d,0x85,0x7f,0x6a,0x5e,0x6e,0x41,0x46,0x96,0xc1,0x99,0x40,0x7a,0xdc,0xe4,0xe2,0xde,0xdc,0xdc,0xe4,0xe2,0xde,0xe9,0xda,0xe5,0xdf,0xde,0x79,0x3f,0xac,0x95,0xc2,0xd4,0xdc,0xde,0xde,0xcf,0xd9,0xd9,0xd8,0xd6,0xd8,0xd8,0xd8,0xd7,0xd8,0xd5,0xe0,0xd9,0xd1,0xd3,0xd5,0xd5,0xde,0xd9,0xd5,0xd5,0xd1,0xda,0xd4,0xd4,0xd4,0xd3,0xd3,0xd1,0xd1,0xd2,0xd0,0xd0,0xd0,0xd4,0xb5,0xda,0xcc,0xd0,0xd2,0xd6,0xce,0xd0,0xd0,0xce,0xce,0xd0,0xd0,0xce,0xca,0xd1,0xcf,0xcc,0xca,0xcc,0xce,0xcc,0xca,0xd0,0xcc,0xca,0xcc,0xce,0xcc,0xca,0xc8,0xc8,0xca,0xcc,0xca,0xca,0xcc,0xca,0xc8,0xbf,0xca,0xcc,0xca,0xbf,0xce,0xd0,0xca,0xcc,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xcc,0xce,0xca,0xcc,0xcc,0xcc,0xcc,0xc8,0xcc,0xc8,0xca,0xcc,0xcc,0xc8,0xca,0xce,0xca,0xca,0xca,0xca,0xc8,0xc6,0xc6,0xc6,0xb9,0xc0,0xd2,0xcc,0xc6,0xd2,0xca,0xc4,0xc8,0xc8,0xc6,0xc8,0xc8,0xca,0xca,0xc8,0xc6,0xd0,0xce,0xcc,0xd0,0xcc,0xc6,0xcc}, {0xc8,0xc8,0xca,0xcc,0xca,0xc8,0xc8,0xca,0xc6,0xc8,0xca,0xca,0xc8,0xc8,0xc6,0xc6,0xc4,0xc8,0xce,0xcc,0xc6,0xca,0xcc,0xc6,0xc8,0xc8,0xca,0xca,0xca,0xca,0xca,0xcc,0xce,0xce,0xc6,0xca,0xd0,0xce,0xd0,0xc6,0xc4,0xcc,0xcc,0xc6,0xc6,0xcc,0xce,0xca,0xcc,0xce,0xce,0xcc,0xca,0xca,0xcc,0xcc,0xc6,0xda,0xc3,0xd3,0xcf,0xd3,0xd3,0xd1,0xd0,0xd0,0xd2,0xd6,0xd6,0xd6,0xd4,0xd2,0xd6,0xda,0xd6,0xd4,0xdc,0xda,0xd6,0xde,0xda,0xcc,0xd8,0xda,0xda,0xd4,0xe2,0xdc,0xdc,0xdc,0xda,0xda,0xda,0xda,0xda,0xda,0xde,0xd4,0xdc,0xda,0xe6,0xde,0xe2,0xdc,0xe1,0xde,0xde,0xe3,0xe3,0xe1,0xe1,0xe5,0xe8,0xe0,0xe0,0xeb,0xeb,0xe0,0xde,0xe6,0xe6,0xe4,0xe4,0xe6,0xe6,0xe4,0xe4,0xe4,0xe6,0xe0,0xde,0xe0,0xe2,0xe0,0xd6,0xd6,0xe6,0xe0,0xe6,0xe0,0xbf,0xb1,0xb2,0x88,0x70,0x7c,0x8a,0x62,0x4f,0x5d,0x58,0x3c,0x49,0xbf,0xa4,0x52,0x68,0x9d,0x93,0xaf,0xa1,0xb0,0xb8,0xe2,0xe2,0xe2,0xe6,0xe1,0xdc,0xdf,0xe7,0xd1,0x87,0x33,0x76,0xb3,0xce,0xe3,0xd6,0xe5,0xda,0xd8,0xdb,0xdc,0xd7,0xd9,0xd8,0xda,0xda,0xda,0xd8,0xd5,0xd3,0xdb,0xdb,0xdd,0xe4,0xde,0xd1,0xd3,0xd7,0xc9,0xd5,0xd5,0xd5,0xcf,0xde,0xd5,0xd5,0xd3,0xd3,0xcf,0xcf,0xcf,0xd0,0xd0,0xd4,0xc6,0xd0,0xca,0xe0,0xca,0xce,0xd2,0xd2,0xce,0xce,0xce,0xd0,0xd0,0xce,0xcc,0xd0,0xcc,0xcc,0xd0,0xce,0xca,0xca,0xd0,0xce,0xca,0xca,0xcc,0xcc,0xca,0xc8,0xca,0xc8,0xca,0xca,0xc8,0xc6,0xc8,0xc8,0xc6,0xc4,0xcc,0xce,0xd0,0xc2,0xca,0xc8,0xc6,0xca,0xca,0xca,0xca,0xca,0xca,0xc8,0xc8,0xce,0xd2,0xc0,0xcc,0xd2,0xc8,0xd2,0xc6,0xc4,0xc8,0xca,0xca,0xc8,0xcc,0xcc,0xcc,0xca,0xcc,0xca,0xc8,0xc6,0xc6,0xc6,0xc6,0xc4,0xd0,0xbd,0xce,0xca,0xce,0xc6,0xcc,0xc6,0xc6,0xc8,0xc8,0xca,0xca,0xc8,0xc6,0xc8,0xd0,0xcc,0xc8,0xce,0xcc,0xc8,0xcc}, {0xc8,0xca,0xcc,0xcc,0xca,0xc6,0xc6,0xc8,0xc6,0xc8,0xca,0xca,0xc6,0xc4,0xc4,0xc4,0xcc,0xce,0xbf,0xcc,0xb3,0xc8,0xc2,0xcc,0xc8,0xc8,0xca,0xca,0xc8,0xc8,0xca,0xca,0xc8,0xbc,0xaf,0xc6,0xce,0xbe,0xc8,0xcc,0xbe,0xc8,0xcc,0xc6,0xc8,0xd0,0xd0,0xc8,0xd0,0xce,0xca,0xca,0xce,0xd0,0xcc,0xc6,0xc8,0xd8,0xc7,0xcd,0xd5,0xc7,0xcd,0xd7,0xce,0xd2,0xd4,0xd6,0xd6,0xd4,0xd2,0xd2,0xda,0xcc,0xc0,0xc4,0xd4,0xdc,0xd8,0xd4,0xd8,0xca,0xd8,0xde,0xd4,0xd6,0xe4,0xdc,0xda,0xdc,0xdc,0xda,0xdc,0xde,0xde,0xdc,0xd6,0xef,0xde,0xe2,0xde,0xe4,0xda,0xde,0xe1,0xdc,0xde,0xe3,0xe3,0xe1,0xe3,0xe7,0xe2,0xe6,0xe4,0xde,0xde,0xe4,0xe8,0xe6,0xe6,0xe6,0xe6,0xe8,0xe6,0xe2,0xe2,0xe6,0xe0,0xe4,0xe4,0xe0,0xdc,0xe4,0xe0,0xef,0xe4,0xca,0x98,0x85,0x5d,0x7b,0x7e,0x62,0x7e,0x5f,0x78,0x7f,0xac,0x94,0x46,0x45,0xc0,0xd4,0x6c,0x37,0xb3,0xa2,0x8a,0xb9,0x8b,0x57,0x40,0x60,0x80,0xde,0xbc,0x5d,0x55,0x66,0xcd,0x8e,0x2f,0x8b,0xc3,0x78,0x78,0xde,0xe6,0xd0,0xdc,0xe7,0xd8,0xe1,0xd5,0xd9,0xda,0xdc,0xdc,0xda,0xd8,0xd5,0xe5,0xd2,0xbf,0xc1,0xcf,0xd9,0xd7,0xd7,0xd3,0xc5,0xd5,0xd5,0xcf,0xcd,0xe0,0xd5,0xd3,0xd5,0xd3,0xd1,0xd1,0xd3,0xd4,0xd2,0xc6,0xde,0xd0,0xce,0xd0,0xce,0xc8,0xce,0xd0,0xcc,0xcc,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xc8,0xc8,0xcc,0xcc,0xc8,0xca,0xd0,0xca,0xca,0xcc,0xce,0xcc,0xc8,0xc8,0xcc,0xca,0xcc,0xca,0xc8,0xc6,0xc8,0xc6,0xc4,0xcc,0xca,0xc4,0xc6,0xb9,0xc2,0xc6,0xcc,0xc8,0xc8,0xca,0xca,0xc8,0xc8,0xc8,0xc6,0xc2,0xc4,0xb3,0xc0,0xc8,0xc0,0xce,0xc4,0xbd,0xc6,0xc8,0xca,0xc6,0xce,0xca,0xc4,0xce,0xca,0xc6,0xc6,0xca,0xcc,0xc8,0xc2,0xc4,0xce,0xc2,0xc6,0xce,0xc2,0xc2,0xd0,0xc4,0xc6,0xc8,0xca,0xca,0xc8,0xc6,0xc6,0xca,0xc2,0xb7,0xb5,0xc2,0xce,0xca,0xc4}, {0xca,0xca,0xca,0xca,0xc8,0xc6,0xc4,0xc6,0xc8,0xc8,0xca,0xca,0xc8,0xc6,0xc6,0xc8,0xca,0xc6,0xd0,0xcc,0xce,0xc8,0xcc,0xc4,0xca,0xca,0xca,0xc8,0xc6,0xc6,0xc6,0xc8,0xc8,0xca,0xc8,0xc8,0xcc,0xd0,0xd0,0xca,0xc4,0xca,0xcc,0xca,0xcc,0xd0,0xce,0xc8,0xc8,0xcc,0xcc,0xce,0xd0,0xd2,0xcc,0xc6,0xc6,0xca,0xd5,0xcb,0xd3,0xcf,0xcb,0xd5,0xd2,0xd4,0xd6,0xd6,0xd4,0xd1,0xcf,0xd1,0xd6,0xd6,0xda,0xd8,0xd6,0xda,0xde,0xdc,0xda,0xd6,0xd8,0xde,0xd6,0xdc,0xde,0xdc,0xd6,0xda,0xdc,0xde,0xde,0xe1,0xe0,0xdc,0xdc,0xd8,0xd1,0xef,0xd8,0xda,0xcf,0xe4,0xe1,0xde,0xde,0xe5,0xe5,0xe1,0xde,0xe3,0xef,0xe6,0xe4,0xed,0xed,0xe6,0xe4,0xeb,0xe8,0xe6,0xe6,0xeb,0xe6,0xe0,0xe0,0xe4,0xdc,0xe6,0xe8,0xe4,0xde,0xe5,0xd4,0xdd,0xde,0xa2,0x68,0x86,0x58,0xb3,0x72,0x57,0x64,0x6e,0x97,0x7f,0x4c,0x45,0x39,0xa0,0xd6,0xa4,0x35,0x5a,0xc6,0xc3,0xb4,0x77,0x39,0x3d,0xad,0x4c,0x48,0xa5,0x3a,0x45,0x91,0x40,0x91,0x37,0x6c,0xc4,0x90,0x65,0x5a,0xe1,0xe0,0xd6,0xe3,0xce,0xda,0xdf,0xd7,0xdb,0xdc,0xdc,0xda,0xd8,0xd6,0xd5,0xd9,0xdb,0xdd,0xdd,0xd9,0xdd,0xdc,0xd5,0xd3,0xd1,0xd9,0xd7,0xd3,0xd3,0xd9,0xd5,0xcd,0xd1,0xd5,0xd3,0xd5,0xd5,0xd5,0xd1,0xce,0xcc,0xce,0xdc,0xc8,0xce,0xca,0xd2,0xce,0xce,0xce,0xd2,0xd2,0xce,0xcc,0xcc,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xce,0xc8,0xcc,0xca,0xcc,0xd0,0xce,0xc8,0xc6,0xca,0xcc,0xcc,0xca,0xca,0xca,0xca,0xca,0xc6,0xc6,0xc8,0xca,0xd2,0xc8,0xce,0xca,0xc8,0xca,0xca,0xc8,0xc6,0xc4,0xc4,0xc6,0xc8,0xcc,0xc4,0xc4,0xca,0xce,0xcc,0xca,0xcc,0xbf,0xca,0xc8,0xca,0xc4,0xd0,0xc8,0xc4,0xc6,0xc6,0xc6,0xc8,0xcc,0xce,0xc8,0xc2,0xc0,0xc2,0xd2,0xc0,0xca,0xca,0xc0,0xcc,0xc6,0xc8,0xca,0xca,0xc8,0xc6,0xc4,0xc4,0xc8,0xca,0xca,0xc8,0xc6,0xcc,0xd0,0xcc}, {0xca,0xc6,0xc4,0xc6,0xc6,0xc4,0xc0,0xc0,0xca,0xc8,0xc8,0xca,0xc8,0xc6,0xc8,0xca,0xc6,0xca,0xc4,0xcc,0xbf,0xd0,0xcc,0xca,0xcc,0xca,0xc8,0xc4,0xc2,0xc2,0xc4,0xc6,0xd2,0xc4,0xce,0xd2,0xce,0xc2,0xb3,0xbe,0xd0,0xce,0xcc,0xce,0xce,0xcc,0xcc,0xcc,0xbc,0xc8,0xd2,0xd4,0xd0,0xd0,0xce,0xce,0xd2,0xce,0xcb,0xd3,0xd1,0xcb,0xd0,0xd1,0xd4,0xd5,0xd5,0xd4,0xcf,0xcd,0xcf,0xd1,0xd6,0xd6,0xdc,0xdc,0xda,0xde,0xd1,0xb6,0xd6,0xde,0xd6,0xdc,0xdc,0xe4,0xda,0xe0,0xd0,0xd6,0xdc,0xde,0xe1,0xe3,0xe1,0xdc,0xde,0xe1,0xe5,0xdc,0xd8,0xef,0xdc,0xde,0xe5,0xe1,0xe3,0xe7,0xe5,0xdc,0xda,0xdc,0xda,0xeb,0xed,0xe4,0xe6,0xed,0xe3,0xca,0xe9,0xe5,0xe5,0xe9,0xe7,0xdf,0xdd,0xde,0xe5,0xe7,0xe0,0xe2,0xe6,0xdf,0xa3,0x8b,0x91,0x84,0xae,0x81,0x7c,0x7b,0x50,0x6a,0x7b,0x67,0xb4,0xb2,0x5b,0x37,0x8f,0xce,0xd1,0x4b,0x49,0xbf,0xc9,0xcc,0x65,0x35,0x3a,0xab,0xb9,0x5a,0x6e,0x3a,0x3c,0xc6,0xc4,0xa9,0x2f,0x4a,0x8e,0x5e,0xd0,0xd8,0xb7,0xdf,0xd9,0xdc,0xe2,0xd6,0xe0,0xd8,0xdc,0xde,0xdf,0xdc,0xd8,0xd6,0xd6,0xd6,0xdc,0xdd,0xdf,0xdb,0xd9,0xdd,0xd2,0xb8,0xd1,0xdc,0xdb,0xd9,0xdc,0xdc,0xdb,0xdb,0xc8,0xcd,0xd3,0xd6,0xd5,0xd9,0xd7,0xd0,0xd2,0xca,0xd8,0xce,0xca,0xd6,0xd0,0xce,0xd0,0xd0,0xd2,0xd4,0xd2,0xca,0xc6,0xc6,0xca,0xd0,0xd0,0xca,0xcc,0xd2,0xc6,0xb3,0xce,0xca,0xca,0xce,0xca,0xc4,0xc0,0xc2,0xc8,0xc8,0xc8,0xc8,0xca,0xcc,0xcc,0xc8,0xca,0xca,0xc6,0xca,0xc2,0xce,0xcc,0xc8,0xcc,0xca,0xc8,0xc4,0xc0,0xc0,0xc4,0xc8,0xd0,0xc0,0xd2,0xcc,0xc8,0xc6,0xb0,0xbb,0xc8,0xce,0xc8,0xcc,0xc4,0xce,0xca,0xc8,0xbb,0xc4,0xcc,0xcc,0xc8,0xc8,0xc6,0xc4,0xca,0xc6,0xc6,0xc8,0xc6,0xc8,0xc6,0xc6,0xc8,0xca,0xcc,0xca,0xc6,0xc4,0xc4,0xc4,0xcc,0xc6,0xc8,0xcc,0xcc,0xce,0xc2,0xaa}, {0xc6,0xc8,0xca,0xc6,0xc6,0xc8,0xcc,0xce,0xc4,0xbb,0xca,0xc8,0xbf,0xca,0xcc,0xc8,0xc4,0xc4,0xc6,0xcc,0xca,0xc4,0xc6,0xcc,0xcc,0xca,0xc8,0xc2,0xca,0xca,0xc2,0xcc,0xc8,0xca,0xcc,0xbc,0xd8,0xca,0xc6,0xc2,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcb,0xcd,0xcd,0xc9,0xcb,0xcf,0xcb,0xcd,0xd1,0xcf,0xcd,0xcd,0xd0,0xd2,0xd2,0xd2,0xd2,0xcf,0xd3,0xd4,0xd8,0xd3,0xd5,0xcf,0xde,0xd4,0xd2,0xda,0xd3,0xe0,0xd1,0xe4,0xd7,0xd4,0xda,0xda,0xdc,0xdc,0xde,0xdc,0xdc,0xdc,0xe0,0xde,0xd9,0xe0,0xe2,0xde,0xe0,0xdc,0xde,0xe0,0xe2,0xe0,0xe0,0xe1,0xe0,0xde,0xde,0xe2,0xe5,0xe5,0xe2,0xe6,0xe9,0xe7,0xe6,0xe5,0xeb,0xe9,0xe8,0xeb,0xe5,0xe7,0xea,0xed,0xe9,0xe1,0xe3,0xe7,0xe7,0xe9,0xe2,0xda,0xdc,0xe4,0xe2,0xdd,0x8e,0x77,0x8c,0x7a,0xb7,0x93,0x71,0x63,0x45,0x54,0x64,0x80,0xb7,0x7a,0x3d,0x67,0xc3,0xb7,0xc4,0x40,0x5e,0xa1,0xc6,0x74,0x37,0x2f,0x61,0xbb,0x92,0x74,0x6e,0x2f,0x61,0x71,0x90,0x31,0x46,0xc5,0x49,0x36,0xcf,0x99,0x9c,0xa4,0xaa,0xe1,0xbb,0xa8,0xb3,0xc8,0xb6,0x9d,0xb1,0xd8,0xd6,0xd4,0xe5,0xd4,0xd2,0xe6,0xd4,0xd8,0xe0,0xd8,0xde,0xd0,0xd9,0xd3,0xde,0xd2,0xd9,0xd7,0xd8,0xda,0xdc,0xd4,0xd8,0xd9,0xd6,0xdd,0xd0,0xd6,0xd4,0xd2,0xd2,0xd1,0xd2,0xd1,0xd0,0xcd,0xd0,0xd2,0xd2,0xd0,0xd2,0xd4,0xd2,0xce,0xd2,0xd0,0xd0,0xce,0xce,0xcc,0xca,0xc6,0xc8,0xca,0xca,0xc8,0xc8,0xca,0xcc,0xce,0xc8,0xbd,0xca,0xc6,0xbe,0xca,0xcc,0xc8,0xc6,0xc6,0xc8,0xc8,0xc6,0xc4,0xc6,0xca,0xcc,0xc8,0xc4,0xc0,0xca,0xca,0xc0,0xc6,0xc6,0xc6,0xc8,0xc2,0xd2,0xca,0xc8,0xc2,0xca,0xcc,0xca,0xc8,0xc8,0xc8,0xca,0xc8,0xc8,0xc6,0xc6,0xc8,0xca,0xca,0xca,0xca,0xc8,0xc8,0xc8,0xca,0xca,0xca,0xc8,0xc6,0xcc,0xc8,0xca,0xc4,0xca,0xc4,0xd0,0xc4,0xc4,0xca,0xc2,0xce,0xc0,0xd2,0xc8,0xc2}, {0xc2,0xc6,0xca,0xca,0xc8,0xc6,0xc4,0xc2,0xd2,0xc8,0xd0,0xca,0xc0,0xc6,0xc6,0xc8,0xca,0xc6,0xc6,0xca,0xca,0xc4,0xc4,0xc6,0xc8,0xca,0xcc,0xc8,0xc8,0xca,0xc6,0xcc,0xc8,0xc6,0xc2,0xb1,0xca,0xc2,0xc8,0xca,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcb,0xcb,0xcf,0xcb,0xcf,0xd3,0xcd,0xcb,0xcb,0xc9,0xcd,0xcf,0xcf,0xd2,0xd4,0xd4,0xd4,0xd1,0xd8,0xd8,0xce,0xd9,0xcf,0xd6,0xd6,0xce,0xd6,0xdc,0xd4,0xd5,0xc0,0xd2,0xd4,0xda,0xda,0xdc,0xdc,0xdc,0xde,0xde,0xde,0xdc,0xe3,0xe0,0xdc,0xe0,0xe2,0xde,0xe3,0xde,0xdc,0xe0,0xe0,0xe0,0xe2,0xe4,0xe4,0xe2,0xe0,0xe2,0xe5,0xe5,0xe5,0xe5,0xe7,0xe9,0xe8,0xe4,0xeb,0xe7,0xe9,0xeb,0xe7,0xe9,0xe0,0xe5,0xe7,0xee,0xef,0xeb,0xe9,0xe3,0xf1,0xe4,0xef,0xe0,0xe2,0xbe,0xa9,0x9e,0x98,0x76,0x6e,0x67,0x82,0x93,0x68,0x62,0x5e,0x6b,0x48,0x43,0x77,0x45,0x6d,0x5d,0x67,0x6e,0x42,0x75,0x69,0x72,0x86,0x53,0x9a,0x84,0x85,0x93,0x85,0x31,0x8f,0x45,0x36,0x3a,0xaa,0xba,0x31,0x6e,0x63,0xa4,0x64,0x90,0xa7,0x9f,0xb7,0xe3,0xd9,0x96,0x6d,0xb8,0xa7,0xda,0xd8,0xdc,0xd8,0xda,0xe1,0xd4,0xe0,0xdc,0xaa,0xe6,0xde,0xd4,0xd5,0xe3,0xda,0xdc,0xde,0xd7,0xe0,0xd3,0xdc,0xd8,0xce,0xe4,0xdb,0xd0,0xd6,0xcc,0xd0,0xd0,0xd0,0xd1,0xd2,0xd2,0xcf,0xcf,0xd1,0xd1,0xd2,0xd2,0xd2,0xd4,0xd2,0xd2,0xd0,0xce,0xce,0xcc,0xcc,0xcc,0xca,0xca,0xc6,0xca,0xcc,0xcc,0xca,0xca,0xc8,0xc4,0xd0,0xc6,0xd2,0xce,0xc4,0xc8,0xc4,0xc2,0xca,0xc8,0xc6,0xc8,0xc8,0xc6,0xc6,0xc6,0xc8,0xc8,0xca,0xc4,0xc8,0xca,0xc2,0xc6,0xc6,0xc2,0xbf,0xb5,0xc2,0xc2,0xc8,0xc8,0xca,0xca,0xca,0xc8,0xc6,0xc8,0xc8,0xc8,0xca,0xc8,0xc8,0xca,0xca,0xc6,0xc4,0xc4,0xc6,0xc6,0xc6,0xc8,0xc8,0xc8,0xc6,0xc6,0xc8,0xcc,0xc2,0xcc,0xc0,0xc4,0xc6,0xc2,0xc6,0xcc,0xc2,0xc4,0xb1,0xc2,0xc2,0xc8}, {0xc4,0xc6,0xc8,0xca,0xc8,0xc8,0xc4,0xbf,0xc6,0xc4,0xcc,0xcc,0xca,0xca,0xc8,0xcc,0xcc,0xc6,0xc4,0xc8,0xca,0xc8,0xc4,0xc2,0xc8,0xc8,0xd0,0xc8,0xc2,0xc8,0xc8,0xca,0xca,0xcc,0xcc,0xbe,0xd2,0xca,0xce,0xd0,0xce,0xce,0xce,0xce,0xce,0xce,0xcd,0xcd,0xce,0xca,0xce,0xd2,0xcd,0xcb,0xce,0xca,0xce,0xce,0xd0,0xd1,0xd3,0xd3,0xd3,0xd4,0xd7,0xd7,0xcf,0xe0,0xd6,0xd8,0xda,0xd8,0xd6,0xde,0xda,0xe0,0xce,0xdc,0xdc,0xe0,0xdc,0xdc,0xdc,0xde,0xde,0xde,0xe0,0xe0,0xe0,0xe0,0xda,0xe0,0xe0,0xdc,0xe0,0xdc,0xde,0xde,0xe0,0xe0,0xe3,0xe6,0xe5,0xe2,0xe5,0xe0,0xe2,0xe5,0xe7,0xe3,0xe5,0xec,0xeb,0xe7,0xec,0xe6,0xe9,0xed,0xe6,0xeb,0xe8,0xeb,0xe5,0xef,0xeb,0xe0,0xe5,0xda,0xe1,0xc8,0xa4,0xba,0xa0,0xa7,0xa5,0xaa,0x85,0x85,0xab,0x64,0xa5,0x5d,0x69,0x77,0x76,0x7c,0x73,0x7b,0x68,0x72,0x6a,0x49,0x5c,0x90,0x3b,0x9b,0x7f,0x57,0x7e,0x63,0x72,0x8e,0x9b,0x75,0x43,0x5c,0x72,0x46,0x9a,0xab,0xb0,0xc1,0xa2,0x45,0x84,0x4b,0x6f,0xac,0xe0,0xaa,0xac,0xd9,0x89,0x42,0x7e,0x47,0xc6,0xe5,0xe1,0xda,0xe0,0xd9,0xdc,0xe0,0xdc,0xe3,0xde,0xe4,0xd2,0xde,0xde,0xd6,0xda,0xdc,0xd8,0xd8,0xd3,0xde,0xd8,0xdd,0xde,0xcc,0xd9,0xe0,0xd5,0xd7,0xd2,0xd2,0xd2,0xd2,0xd3,0xd4,0xd2,0xd2,0xd3,0xcd,0xce,0xd2,0xd2,0xd0,0xd0,0xd2,0xd0,0xce,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xc8,0xca,0xcc,0xcc,0xcc,0xca,0xc6,0xc0,0xc6,0xc4,0xca,0xcc,0xca,0xcc,0xc8,0xce,0xcc,0xc6,0xc4,0xc6,0xca,0xca,0xc6,0xc4,0xcc,0xca,0xd0,0xc8,0xc2,0xc8,0xc8,0xc8,0xc6,0xc8,0xc8,0xc2,0xca,0xc8,0xca,0xcc,0xca,0xca,0xca,0xc8,0xc8,0xca,0xc8,0xc8,0xc6,0xc4,0xc4,0xc6,0xc8,0xc6,0xc4,0xc4,0xc6,0xc6,0xc6,0xc6,0xc8,0xc8,0xc8,0xc6,0xca,0xcc,0xc6,0xd4,0xc6,0xc6,0xca,0xca,0xc4,0xcc,0xc8,0xce,0xbf,0xcc,0xca,0xcc}, {0xca,0xc8,0xc8,0xc6,0xc8,0xcc,0xca,0xc6,0xca,0xca,0xcc,0xca,0xcc,0xc8,0xc2,0xc8,0xca,0xc6,0xc4,0xc6,0xca,0xca,0xc6,0xc6,0xce,0xc8,0xce,0xc4,0xb8,0xc4,0xc8,0xc6,0xc4,0xca,0xd0,0xc6,0xd2,0xc8,0xc8,0xc6,0xca,0xcc,0xcc,0xcc,0xce,0xce,0xcd,0xcd,0xd2,0xcc,0xcc,0xce,0xcb,0xcd,0xd2,0xd2,0xd0,0xd0,0xd2,0xd1,0xd4,0xd6,0xd6,0xd6,0xd1,0xcd,0xd6,0xd9,0xd6,0xc6,0xd6,0xda,0xd2,0xd6,0xd6,0xe0,0xd9,0xe3,0xdd,0xd5,0xdc,0xdc,0xdc,0xdc,0xdc,0xde,0xe0,0xe2,0xde,0xe0,0xdc,0xe0,0xe0,0xdc,0xe1,0xde,0xe3,0xe3,0xe1,0xe1,0xe5,0xe6,0xe5,0xe1,0xe6,0xe1,0xe0,0xe7,0xe7,0xe3,0xe4,0xeb,0xeb,0xe7,0xeb,0xe8,0xe8,0xee,0xe8,0xeb,0xed,0xf0,0xe7,0xee,0xea,0xe7,0xf6,0xe7,0xe7,0xc2,0x9f,0x9f,0x80,0x83,0x87,0x8b,0x73,0x72,0x84,0x70,0x63,0x66,0x6f,0x66,0x5c,0x70,0x61,0x62,0x60,0x67,0x7d,0x50,0x5b,0x8f,0x3a,0x89,0x76,0x79,0x66,0x67,0x66,0x65,0x66,0x3e,0x54,0x78,0x50,0x79,0x8b,0x60,0x74,0x90,0x3f,0x75,0x57,0x52,0xae,0xdb,0xe1,0xdd,0xbe,0x6f,0x36,0x81,0x3c,0x8d,0x9e,0x87,0xc1,0x97,0x9e,0xa6,0xd4,0xd8,0xd8,0xda,0xe2,0xd6,0xe5,0xda,0xde,0xd4,0xe0,0xda,0xdc,0xdc,0xd6,0xe0,0xdc,0xda,0xd8,0xd6,0xe3,0xca,0xd4,0xd3,0xd5,0xd5,0xd3,0xd4,0xd4,0xd4,0xd4,0xd2,0xd3,0xcb,0xcc,0xd0,0xd2,0xce,0xce,0xd2,0xd0,0xd0,0xce,0xcc,0xcc,0xcc,0xcc,0xca,0xce,0xcc,0xca,0xc8,0xca,0xcc,0xca,0xc8,0xcc,0xcc,0xca,0xc8,0xca,0xc8,0xc4,0xcc,0xca,0xc6,0xc4,0xc6,0xca,0xca,0xc8,0xc8,0xd0,0xca,0xce,0xc2,0xbb,0xc4,0xca,0xc8,0xc0,0xc8,0xcc,0xc8,0xcc,0xc8,0xc4,0xc4,0xc6,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc6,0xca,0xc6,0xc4,0xc4,0xc6,0xc6,0xc8,0xca,0xc6,0xc6,0xc6,0xc8,0xca,0xca,0xca,0xc8,0xc6,0xc0,0xc6,0xc6,0xc8,0xb9,0xc8,0xc6,0xc0,0xc2,0xc4,0xce,0xc8,0xd0,0xc8,0xc0}, {0xcc,0xca,0xc8,0xc6,0xca,0xce,0xcc,0xca,0xce,0xce,0xc8,0xc6,0xc8,0xc6,0xc8,0xc8,0xca,0xc8,0xc6,0xc8,0xca,0xca,0xca,0xca,0xce,0xc6,0xca,0xc2,0xbc,0xc6,0xca,0xc6,0xca,0xcc,0xcc,0xc4,0xc8,0xc4,0xca,0xcc,0xc8,0xc8,0xc8,0xca,0xcc,0xcc,0xcd,0xcd,0xd6,0xd0,0xd0,0xd2,0xcd,0xcd,0xd1,0xd1,0xd1,0xd1,0xd4,0xd3,0xd5,0xd7,0xd7,0xd7,0xd6,0xd1,0xd6,0xd6,0xd4,0xc4,0xd6,0xd8,0xda,0xd7,0xd6,0xdd,0xd7,0xdc,0xdb,0xd6,0xdc,0xdb,0xda,0xda,0xda,0xdd,0xdf,0xe0,0xe0,0xe2,0xde,0xe2,0xe4,0xe0,0xe4,0xe5,0xe4,0xe4,0xe2,0xe2,0xe4,0xea,0xe6,0xe2,0xe7,0xe0,0xe0,0xe6,0xe6,0xe2,0xe4,0xec,0xe7,0xe4,0xec,0xe9,0xec,0xf0,0xe8,0xeb,0xe8,0xf2,0xe8,0xe9,0xeb,0xed,0xf4,0xe5,0xeb,0xe5,0xe6,0xc5,0x8a,0x7d,0x81,0x81,0x6a,0x77,0x6a,0x7e,0x5e,0x59,0x59,0x5c,0x75,0x6a,0x6f,0x81,0x54,0x79,0x6d,0x57,0x6c,0x79,0x56,0x74,0x6b,0x6f,0x56,0x53,0x61,0x7a,0x50,0x49,0x78,0x36,0x71,0x75,0x39,0x54,0x48,0x37,0x58,0x73,0x42,0xc6,0xe5,0xc0,0xbf,0xe4,0xd9,0x40,0x75,0x39,0x6e,0x3f,0x74,0x4b,0x8a,0x3c,0x72,0xaf,0xe3,0xd8,0xe4,0xe4,0xd7,0xdc,0xd2,0xde,0xd4,0xdb,0xe0,0xd1,0xde,0xda,0xe5,0xd4,0xe1,0xd6,0xdd,0xdc,0xd0,0xd6,0xe3,0xd8,0xd6,0xd6,0xd4,0xd4,0xd4,0xd4,0xd2,0xd2,0xd5,0xcd,0xcd,0xd1,0xd4,0xce,0xd0,0xd4,0xce,0xce,0xce,0xce,0xce,0xce,0xcc,0xcc,0xd0,0xce,0xca,0xc8,0xca,0xce,0xce,0xcc,0xcc,0xce,0xca,0xc8,0xcc,0xca,0xc6,0xc6,0xc8,0xc6,0xc6,0xc8,0xca,0xca,0xc8,0xca,0xce,0xc4,0xc8,0xc0,0xb9,0xc4,0xc8,0xc4,0xc4,0xcc,0xc8,0xc4,0xc4,0xc4,0xc4,0xca,0xc2,0xc4,0xc6,0xc6,0xc6,0xc8,0xc8,0xc6,0xce,0xca,0xc8,0xca,0xc8,0xc8,0xc6,0xc6,0xc8,0xc6,0xc6,0xc8,0xca,0xca,0xca,0xca,0xca,0xc2,0xc6,0xc6,0xc6,0xb7,0xc4,0xc4,0xca,0xc8,0xc4,0xc8,0xc2,0xc8,0xc6,0xc0}, {0xca,0xca,0xca,0xc8,0xca,0xcc,0xc8,0xc4,0xc2,0xc8,0xc6,0xc8,0xcc,0xcc,0xc8,0xbb,0xca,0xca,0xca,0xca,0xc8,0xc8,0xc8,0xca,0xca,0xc2,0xc8,0xc6,0xc6,0xcc,0xc8,0xc8,0xce,0xce,0xce,0xca,0xc8,0xca,0xd0,0xd2,0xca,0xca,0xca,0xcc,0xcc,0xce,0xcf,0xd1,0xce,0xca,0xce,0xd2,0xcf,0xcf,0xd1,0xcf,0xcf,0xd1,0xd1,0xd3,0xd3,0xd6,0xd6,0xd7,0xd9,0xd8,0xcd,0xdc,0xd6,0xda,0xdc,0xdc,0xdc,0xdc,0xe2,0xe2,0xda,0xda,0xe0,0xe2,0xde,0xdf,0xde,0xdd,0xde,0xe1,0xe1,0xe2,0xe0,0xe2,0xdc,0xe2,0xe4,0xe1,0xe7,0xe5,0xe1,0xe3,0xe0,0xe1,0xe2,0xe7,0xe6,0xe5,0xe7,0xe3,0xe3,0xe6,0xe6,0xe4,0xe6,0xe9,0xe4,0xe3,0xe8,0xe8,0xeb,0xef,0xe8,0xeb,0xec,0xf2,0xeb,0xe2,0xeb,0xf0,0xec,0xe8,0xe4,0xe8,0xf2,0xcd,0x9a,0x94,0x8b,0x7b,0x8e,0x8c,0x68,0x8e,0x6e,0x65,0x7b,0x74,0x6f,0x6d,0x62,0x5f,0x4a,0x6d,0x80,0x66,0x5d,0x50,0x5b,0x5b,0x73,0x74,0x8a,0x43,0x85,0x4d,0x44,0x56,0x5b,0x46,0x5e,0x43,0x36,0x67,0x59,0x44,0x7e,0x49,0x93,0x90,0xbf,0x66,0x79,0xaa,0x5a,0x8d,0x46,0x82,0x65,0x9d,0x43,0x82,0x44,0xd4,0xc5,0xdf,0xd8,0xd8,0xde,0xd8,0xe7,0xe5,0xd6,0xde,0xe9,0xd8,0xde,0xd1,0xde,0xde,0xe1,0xe7,0xd2,0xe3,0xd4,0xdb,0xde,0xdf,0xd8,0xd4,0xd4,0xd4,0xd2,0xd2,0xd4,0xd3,0xd4,0xd2,0xd3,0xcf,0xcd,0xd1,0xd2,0xd0,0xd0,0xd2,0xca,0xca,0xcc,0xce,0xd0,0xd0,0xce,0xce,0xd0,0xd0,0xce,0xcc,0xce,0xce,0xcc,0xc8,0xc2,0xc8,0xc6,0xca,0xce,0xcc,0xc8,0xb8,0xca,0xca,0xca,0xca,0xc8,0xc6,0xc6,0xc8,0xca,0xc2,0xc6,0xc4,0xc4,0xca,0xc6,0xc6,0xc8,0xd0,0xca,0xc8,0xc6,0xca,0xca,0xd2,0xc6,0xc8,0xc8,0xc6,0xc8,0xca,0xca,0xc8,0xc6,0xc4,0xc6,0xca,0xcc,0xc8,0xc4,0xc4,0xc6,0xc6,0xc6,0xc6,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc0,0xce,0xc4,0xc6,0xca,0xcc,0xca,0xca,0xce,0xce,0xc4,0xc6,0xca,0xcc}, {0xc8,0xca,0xca,0xca,0xca,0xca,0xc6,0xc2,0xc4,0xca,0xcc,0xce,0xca,0xc8,0xc0,0xa1,0xcc,0xcc,0xcc,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc2,0xc6,0xc8,0xce,0xcc,0xc5,0xca,0xc6,0xc8,0xcc,0xcc,0xc8,0xca,0xcc,0xca,0xd0,0xce,0xce,0xce,0xce,0xd0,0xd1,0xd3,0xc8,0xc6,0xcc,0xd2,0xcf,0xd1,0xd3,0xd1,0xd2,0xd2,0xd1,0xd3,0xd3,0xd5,0xd5,0xd5,0xd3,0xd3,0xc7,0xd7,0xd6,0xde,0xde,0xd6,0xd4,0xd6,0xe0,0xe3,0xdc,0xda,0xde,0xde,0xe3,0xe3,0xe0,0xe1,0xe0,0xe3,0xe3,0xe4,0xe2,0xe0,0xdb,0xe0,0xe2,0xe0,0xe5,0xe3,0xe0,0xe2,0xe2,0xe1,0xe3,0xe5,0xe4,0xe5,0xe5,0xe5,0xe5,0xe4,0xe6,0xe9,0xe7,0xe7,0xe4,0xe3,0xea,0xe7,0xe9,0xeb,0xe6,0xe9,0xee,0xeb,0xee,0xe4,0xf4,0xf1,0xda,0xeb,0xe8,0xe5,0xe0,0xb6,0xb0,0xa4,0xa3,0x75,0x84,0x9e,0x87,0x7d,0x82,0x7a,0x7e,0x66,0x89,0x7e,0x5d,0x74,0x83,0x92,0x90,0x6a,0x75,0x68,0x6b,0x7f,0x5b,0x5c,0x7d,0x50,0x4c,0x51,0x5b,0x48,0x5e,0x71,0x47,0x64,0x4a,0x4e,0x52,0x57,0x59,0x58,0x4d,0x3e,0x5d,0x4d,0x45,0x9b,0x4d,0x3e,0x4a,0x47,0xa0,0xd1,0xc3,0xc4,0xd8,0xdc,0xe4,0xe0,0xe0,0xde,0xe8,0xda,0xdf,0xd9,0xd2,0xdf,0xd5,0xdd,0xc3,0xd7,0xd5,0xd0,0xdf,0xcc,0xdc,0xb9,0xcd,0xb8,0xdc,0xce,0xd7,0xd8,0xd6,0xd7,0xd4,0xd4,0xd4,0xd4,0xd4,0xd2,0xcf,0xcf,0xcf,0xcf,0xd0,0xd2,0xd0,0xd0,0xca,0xca,0xca,0xcc,0xcc,0xce,0xcc,0xcc,0xcc,0xce,0xce,0xce,0xcc,0xcc,0xca,0xc6,0xc8,0xce,0xca,0xcc,0xc8,0xc8,0xc4,0xa4,0xcc,0xca,0xca,0xca,0xca,0xc6,0xc6,0xc8,0xc8,0xc2,0xc6,0xc8,0xcc,0xcc,0xc2,0xca,0xc0,0xca,0xc6,0xca,0xc4,0xca,0xc4,0xca,0xc8,0xca,0xca,0xc8,0xc8,0xca,0xcc,0xca,0xc0,0xc0,0xc2,0xc6,0xc8,0xc8,0xc6,0xc6,0xc8,0xc6,0xc6,0xc6,0xc6,0xc8,0xc8,0xc6,0xc0,0xc2,0xba,0xc8,0xc2,0xc8,0xca,0xc4,0xc2,0xc2,0xca,0xcc,0xc6,0xc4,0xc8,0xc8}, {0xc8,0xca,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0xc6,0xca,0xc6,0xc6,0xc2,0xcc,0xce,0xaa,0xcc,0xca,0xc8,0xc6,0xc8,0xca,0xc8,0xc6,0xcc,0xc6,0xc5,0xc5,0xcc,0xc6,0xbf,0xcc,0xcc,0xcc,0xcc,0xcc,0xc6,0xca,0xce,0xcc,0xd0,0xce,0xcc,0xcc,0xcc,0xcc,0xcf,0xcf,0xd2,0xce,0xd0,0xd4,0xcf,0xd1,0xd5,0xd3,0xd5,0xd6,0xd6,0xd8,0xd8,0xda,0xda,0xd9,0xdb,0xdb,0xdd,0xd9,0xde,0xd6,0xe1,0xd0,0xe4,0xdc,0xde,0xde,0xdd,0xdd,0xe1,0xdc,0xe1,0xe1,0xe0,0xe0,0xe1,0xe1,0xe1,0xe3,0xe5,0xe3,0xda,0xe1,0xe4,0xe2,0xe4,0xe0,0xe9,0xe8,0xe9,0xe7,0xe4,0xe7,0xe7,0xe7,0xe5,0xe4,0xe5,0xe4,0xe7,0xe8,0xe8,0xe4,0xe6,0xe3,0xe7,0xe5,0xe5,0xe9,0xe5,0xe6,0xee,0xe6,0xef,0xe9,0xef,0xd6,0xa4,0xb7,0x9a,0xb8,0x96,0x9d,0x78,0x8a,0x7d,0x61,0x84,0x75,0x84,0x79,0x69,0x6c,0x66,0x6d,0x64,0x65,0x53,0x78,0x74,0x74,0x50,0x56,0x5c,0x50,0x51,0x7b,0x5e,0x62,0x5c,0x3c,0x3e,0x45,0x4d,0x4e,0x61,0x6a,0x4b,0x44,0x3d,0x41,0x35,0x53,0x38,0x44,0x3f,0x49,0x43,0x4a,0x50,0x8b,0x6f,0x54,0x57,0x47,0x6f,0xc3,0xe1,0xde,0xdb,0xe4,0xe1,0xce,0xe0,0xd5,0xdc,0xe6,0xd1,0x8b,0x3e,0xbf,0x50,0xa9,0x5a,0x8c,0x7f,0x6a,0x9c,0x4b,0xc4,0x3f,0xc3,0x36,0x50,0xd1,0xd2,0xdc,0xdc,0xda,0xd8,0xd6,0xd6,0xd4,0xd4,0xd2,0xd0,0xd1,0xd3,0xd1,0xd2,0xd4,0xd4,0xd0,0xce,0xcc,0xca,0xca,0xca,0xca,0xca,0xc8,0xc8,0xcc,0xcc,0xca,0xca,0xca,0xca,0xc8,0xc4,0xc8,0xc8,0xca,0xc6,0xce,0xd0,0xaa,0xcc,0xca,0xc8,0xca,0xca,0xc8,0xc8,0xc8,0xc8,0xc4,0xc4,0xc4,0xca,0xc4,0xba,0xca,0xc6,0xce,0xc8,0xca,0xc2,0xc8,0xc2,0xca,0xc8,0xc8,0xc8,0xc4,0xc4,0xc6,0xc8,0xc6,0xca,0xc6,0xc4,0xc4,0xc6,0xc6,0xc8,0xca,0xca,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xca,0xc6,0xc6,0xc4,0xcc,0xc4,0xca,0xb8,0xce,0xc6,0xc8,0xc8,0xca,0xc8,0xca,0xc6}, {0xca,0xca,0xc8,0xc8,0xc6,0xc6,0xc6,0xc6,0xc6,0xc8,0xca,0xc8,0xc8,0xc8,0xc8,0xc6,0xab,0xc2,0xca,0xc6,0xc8,0xc8,0xc6,0xcc,0xc6,0xcc,0xce,0xcc,0xce,0xcc,0xca,0xca,0xcc,0xca,0xca,0xca,0xcc,0xce,0xce,0xcc,0xcc,0xcc,0xcc,0xce,0xca,0xc6,0xc9,0xd1,0xcf,0xd6,0xcb,0xc9,0xd6,0xce,0xd6,0xd6,0xcf,0xd0,0xd4,0xdc,0xd4,0xe0,0xd2,0xdc,0xca,0xd3,0xde,0xd3,0xe1,0xe4,0xd9,0xe7,0xde,0xe0,0xdc,0xd8,0xda,0xe0,0xe0,0xdc,0xe0,0xdf,0xe0,0xe5,0xe0,0xe7,0xd8,0xe3,0xe7,0xda,0xe9,0xe5,0xdc,0xdc,0xeb,0xe5,0xe6,0xe5,0xe2,0xe4,0xf2,0xe9,0xdd,0xd2,0xe3,0xb3,0xef,0xe9,0xde,0xda,0xf4,0xdc,0xe5,0xee,0xe7,0xeb,0xe9,0xef,0xeb,0xeb,0xed,0xe8,0xeb,0xef,0xf2,0xc8,0x87,0x9b,0x87,0x72,0x84,0x62,0x96,0x8b,0x56,0x93,0x72,0x61,0x8c,0x7c,0x74,0x71,0x71,0x65,0x77,0x71,0x5b,0x7c,0x6b,0x68,0x72,0x7a,0x7b,0x5b,0x5f,0x58,0x4f,0x54,0x45,0x53,0x52,0x5f,0x44,0x55,0x47,0x3f,0x42,0x43,0x40,0x4c,0x3f,0x50,0x4c,0x4b,0x65,0x62,0x6b,0x51,0x7a,0x6c,0x86,0x75,0x6f,0x79,0x89,0xbc,0xe1,0xe6,0xdf,0xe0,0xd2,0xd7,0x84,0x68,0xaa,0x56,0x67,0x28,0x25,0x66,0x26,0x68,0x25,0x3b,0x35,0x42,0x65,0x21,0x5b,0x1e,0x90,0x20,0x37,0xcc,0xd4,0xdc,0xdb,0xd0,0xd4,0xde,0xd6,0xd6,0xd4,0xd4,0xce,0xc1,0xcf,0xd1,0xcc,0xc6,0xd2,0xca,0xd0,0xce,0xce,0xce,0xd0,0xce,0xce,0xcc,0xd0,0xcc,0xca,0xca,0xca,0xca,0xca,0xcc,0xca,0xcc,0xca,0xc8,0xc8,0xc8,0xc8,0xc8,0xaa,0xc0,0xc8,0xc4,0xc8,0xc8,0xc6,0xca,0xca,0xca,0xc6,0xc6,0xca,0xc8,0xc6,0xca,0xca,0xc8,0xc6,0xc6,0xc8,0xca,0xca,0xc8,0xc8,0xc8,0xc8,0xca,0xc6,0xc2,0xc6,0xcc,0xc0,0xd0,0xc2,0xc0,0xc6,0xca,0xca,0xc6,0xc4,0xc8,0xca,0xca,0xc8,0xc8,0xc8,0xc6,0xbc,0xbe,0xc4,0xc8,0xcc,0xca,0xcc,0xce,0xc8,0xc8,0xc6,0xc4,0xc6,0xca,0xca,0xca}, {0xca,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc6,0xc6,0xc8,0xc8,0xc8,0xba,0xc8,0xca,0xc6,0xca,0xc8,0xc4,0xc8,0xc8,0xc8,0xca,0xc8,0xc6,0xc8,0xca,0xc8,0xca,0xca,0xc8,0xca,0xca,0xcc,0xcc,0xcc,0xce,0xca,0xca,0xcc,0xce,0xcc,0xcd,0xd1,0xd6,0xc9,0xd4,0xd6,0xca,0xd0,0xca,0xd2,0xd3,0xd7,0xdb,0xd9,0xd2,0xe2,0xd7,0xda,0xda,0xdd,0xda,0xdc,0xd5,0xe2,0xd6,0xda,0xd9,0xdf,0xe3,0xe1,0xdf,0xe1,0xe5,0xe7,0xe5,0xdc,0xe3,0xe2,0xda,0xe2,0xde,0xe5,0xed,0xd9,0xde,0xe6,0xdc,0xe7,0xd8,0xe7,0xe1,0xdc,0xeb,0xf2,0xde,0xe3,0x95,0x82,0x7e,0x84,0xac,0xe0,0xf2,0xd6,0xe1,0xe7,0xeb,0xe5,0xe7,0xf2,0xd5,0xe8,0xdd,0xe7,0xeb,0xed,0xeb,0xd9,0xe0,0xb3,0xa6,0x7e,0x76,0x94,0x92,0x80,0x6c,0x8b,0x6b,0x67,0x6b,0x54,0x62,0x63,0x59,0x57,0x5c,0x51,0x56,0x5e,0x5a,0x54,0x48,0x53,0x5a,0x5f,0x5d,0x56,0x5d,0x4d,0x4f,0x62,0x50,0x5c,0x5d,0x55,0x43,0x51,0x4d,0x46,0x43,0x54,0x42,0x3a,0x3d,0x45,0x2f,0x36,0x3f,0x33,0x43,0x45,0x4b,0x55,0x86,0xb7,0xba,0xbe,0xc4,0xdb,0xe0,0xde,0xa8,0x4d,0x4d,0x78,0x47,0x59,0x55,0x5a,0x55,0x26,0x2f,0x6e,0x28,0x71,0x2a,0x36,0x2b,0x4f,0x7e,0x1d,0x32,0x21,0x9a,0x22,0x40,0xc3,0xd3,0xde,0xd4,0xd6,0xda,0xd6,0xd2,0xdc,0xd6,0xda,0xd5,0xc7,0xd3,0xd1,0xce,0xca,0xd6,0xce,0xcc,0xcc,0xcc,0xcc,0xce,0xce,0xcc,0xca,0xce,0xca,0xca,0xcc,0xcc,0xca,0xc8,0xca,0xca,0xca,0xca,0xc8,0xc8,0xca,0xca,0xc8,0xba,0xc8,0xca,0xc6,0xca,0xca,0xc6,0xc8,0xc8,0xc6,0xc6,0xc8,0xc4,0xc4,0xc4,0xc6,0xc8,0xc8,0xc6,0xc8,0xc8,0xc8,0xca,0xca,0xc8,0xc4,0xc4,0xc6,0xc6,0xc6,0xc6,0xca,0xca,0xc6,0xcc,0xd0,0xbe,0xcc,0xc0,0xc6,0xc4,0xc6,0xc8,0xc6,0xc6,0xc8,0xc8,0xc6,0xc2,0xc4,0xc6,0xc8,0xc6,0xc4,0xc2,0xc4,0xc6,0xc8,0xc8,0xc6,0xc6,0xc8,0xc8,0xc8}, {0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xca,0xca,0xc8,0xc8,0xc8,0xc6,0xc6,0xc8,0xca,0xca,0xc8,0xcc,0xc8,0xc8,0xca,0xc8,0xc6,0xc8,0xcc,0xc6,0xc8,0xca,0xc5,0xc8,0xcc,0xc5,0xca,0xca,0xcc,0xcc,0xcc,0xcc,0xcc,0xce,0xce,0xca,0xc8,0xcc,0xd0,0xd0,0xcf,0xcf,0xcb,0xd3,0xd4,0xcb,0xde,0xd0,0xd1,0xd5,0xd2,0xd0,0xd8,0xe0,0xd5,0xd6,0xd4,0xe9,0xce,0xd7,0xd4,0xeb,0xd8,0xe3,0xdc,0xd7,0xde,0xde,0xde,0xdc,0xdc,0xdc,0xde,0xe1,0xe3,0xdc,0xe3,0xde,0xda,0xe1,0xe6,0xe7,0xd8,0xee,0xeb,0xda,0xed,0xe0,0xe9,0xe3,0xed,0xde,0xe5,0xe4,0xc5,0xd9,0x9a,0x95,0x95,0x89,0x9c,0xb8,0xad,0xb9,0xb2,0xdb,0xb7,0xcf,0xcb,0xba,0x97,0xae,0x8f,0xe1,0xd4,0xeb,0xbf,0x7a,0x8c,0x8a,0x7c,0x7b,0x6c,0x95,0x5e,0x73,0x6f,0x65,0x6e,0x75,0x67,0x63,0x43,0x57,0x73,0x44,0x42,0x48,0x39,0x5e,0x45,0x44,0x66,0x39,0x42,0x5b,0x51,0x5c,0x53,0x55,0x5d,0x54,0x44,0x4a,0x40,0x43,0x44,0x45,0x3d,0x36,0x4d,0x48,0x4b,0x3d,0x45,0x36,0x3b,0x31,0x3e,0x41,0x4a,0x4a,0x4d,0x47,0x58,0x5a,0x68,0xaa,0x61,0x61,0x59,0x63,0x52,0x50,0x2d,0x9b,0x62,0x30,0x3f,0x4c,0x87,0x26,0x5c,0x96,0x25,0x64,0x31,0x25,0x36,0x45,0x74,0x2b,0x1e,0x23,0x98,0x1d,0x65,0xe0,0xe1,0xd2,0xd6,0xd8,0xd8,0xe1,0xdb,0xdc,0xd0,0xd0,0xd6,0xca,0xd0,0xcc,0xca,0xc6,0xd2,0xcc,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xcc,0xcc,0xce,0xce,0xcc,0xca,0xca,0xc8,0xca,0xca,0xc8,0xc8,0xca,0xca,0xca,0xc8,0xca,0xc6,0xc6,0xca,0xca,0xc6,0xc8,0xc8,0xc4,0xc8,0xca,0xc2,0xc2,0xc6,0xc4,0xc8,0xc8,0xc8,0xc8,0xc6,0xc8,0xc8,0xca,0xc8,0xc4,0xc2,0xc4,0xc8,0xca,0xc8,0xc8,0xbe,0xc8,0xc6,0xc2,0xce,0xc2,0xc0,0xc6,0xc4,0xc6,0xc6,0xc6,0xc8,0xca,0xca,0xc8,0xc2,0xc2,0xc4,0xc6,0xc6,0xc4,0xc4,0xc4,0xc4,0xc8,0xca,0xc8,0xc8,0xc8,0xc8,0xc8}, {0xca,0xca,0xca,0xca,0xca,0xca,0xc8,0xc8,0xc8,0xca,0xc8,0xc6,0xc6,0xc8,0xca,0xca,0xca,0xc8,0xc6,0xc8,0xcc,0xca,0xc8,0xcc,0xcc,0xc2,0xca,0xd0,0xc8,0xc8,0xca,0xc1,0xca,0xcc,0xce,0xcc,0xcc,0xcc,0xcc,0xce,0xcc,0xca,0xc8,0xca,0xd0,0xd2,0xd1,0xcf,0xd4,0xde,0xcf,0x5e,0xd4,0xde,0xcf,0xd7,0xdd,0xda,0xd7,0xd8,0xde,0xe9,0xe3,0xda,0xdf,0xea,0xd9,0xe7,0xd8,0xda,0xde,0xe7,0xdc,0xdc,0xe1,0xe2,0xe0,0xde,0xe0,0xe4,0xdf,0xe0,0xe1,0xda,0xe1,0xe2,0xe2,0xe5,0xed,0xdc,0xde,0xb6,0x8b,0xe0,0xee,0xce,0xaf,0xc5,0xc8,0xa8,0x89,0x9b,0x80,0x6c,0x70,0x74,0x8e,0x7f,0x83,0x84,0x73,0x8e,0x95,0x95,0xa1,0x99,0x8d,0xa1,0xb9,0xa9,0x8a,0xe6,0xc4,0x7d,0x9a,0x6e,0x83,0xaf,0x6f,0xc0,0x5b,0x90,0x75,0x50,0x5c,0x57,0x86,0x8b,0x43,0x61,0x74,0x4c,0x7b,0x94,0x3a,0x84,0x49,0x4d,0x55,0x35,0x3b,0x5c,0x6e,0x62,0x63,0x68,0x41,0x68,0x5f,0x4b,0x5b,0x70,0x35,0x5b,0x51,0x43,0x4d,0x35,0x3b,0x41,0x36,0x19,0x34,0x2f,0x3a,0x2e,0x50,0x3f,0x4d,0x61,0x67,0x35,0xad,0xd2,0x52,0x29,0x3b,0x36,0x37,0x5e,0x42,0x4d,0xa5,0x42,0x2f,0x31,0x4f,0x2d,0x3a,0x79,0x21,0x72,0x29,0x20,0x4c,0x4a,0x70,0x37,0x1f,0x2c,0x95,0x18,0x3c,0x94,0xa2,0xd2,0xe9,0xd0,0xce,0xdc,0xd1,0xdc,0xe3,0xd8,0xd9,0xd0,0xd6,0xd0,0xd0,0xce,0xd8,0xd2,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xd0,0xce,0xce,0xd0,0xd0,0xce,0xcc,0xcc,0xca,0xca,0xca,0xc8,0xc8,0xca,0xca,0xca,0xc8,0xc6,0xc4,0xc6,0xca,0xca,0xc8,0xca,0xcc,0xc2,0xc8,0xcc,0xc2,0xc4,0xc8,0xc0,0xc6,0xc8,0xc8,0xc8,0xc6,0xc6,0xc8,0xca,0xc6,0xc4,0xc2,0xc4,0xc8,0xca,0xca,0xc8,0xca,0xd2,0xc2,0x58,0xca,0xd0,0xc0,0xcc,0xc8,0xc8,0xc8,0xc8,0xc8,0xcc,0xca,0xc8,0xc4,0xc4,0xc4,0xc8,0xc8,0xc6,0xc8,0xca,0xbe,0xc4,0xc8,0xc8,0xc6,0xc8,0xc8,0xc8}, {0xca,0xca,0xca,0xca,0xca,0xc8,0xc8,0xc8,0xc8,0xca,0xca,0xc8,0xc8,0xc8,0xc8,0xc6,0xc8,0xc4,0xc6,0xca,0xc8,0xc8,0xc8,0xca,0xcc,0xc2,0xc8,0xd0,0xc6,0xc6,0xc8,0xbf,0xca,0xca,0xcc,0xca,0xca,0xca,0xca,0xcc,0xcc,0xcc,0xcc,0xce,0xce,0xd0,0xd1,0xd1,0xd1,0xcf,0xcf,0xd4,0xd2,0xd2,0xd4,0xdc,0xde,0xda,0xda,0xdc,0xde,0xda,0xdd,0xde,0xda,0xe6,0xd5,0xde,0xe8,0xde,0xde,0xe9,0xcd,0xd7,0xe3,0xe7,0xe1,0xdf,0xe0,0xe7,0xdc,0xe7,0xde,0xda,0xe5,0xe9,0xe4,0xe7,0xda,0xe8,0xe0,0xe9,0xdf,0xde,0xbf,0x8f,0x83,0x7e,0x85,0x98,0x8a,0x88,0x78,0x87,0x6a,0x91,0x8a,0x70,0xa8,0x85,0x76,0x7a,0x8d,0x8c,0x9e,0x8a,0x7d,0xa7,0xaa,0x94,0x8c,0xe8,0xda,0xa9,0x79,0x7c,0x78,0x69,0x86,0x85,0x6c,0x6f,0x62,0x63,0x6a,0x68,0x83,0xae,0x7c,0x85,0x7f,0x5a,0x5f,0x56,0x6c,0x5c,0x55,0x4b,0x4f,0x5b,0x56,0x49,0x5a,0x54,0x5a,0x4e,0x5c,0x60,0x93,0x64,0x4c,0x44,0x50,0x53,0x47,0x4c,0x4d,0x3d,0x42,0x3b,0x39,0x2b,0x37,0x33,0x3a,0x2f,0x41,0x3b,0x3b,0x3c,0x54,0x34,0xb4,0xc9,0x8d,0x5b,0x39,0x3f,0x89,0x63,0x48,0x2f,0x9f,0x50,0x4a,0x40,0x3e,0x2b,0x34,0x67,0x23,0x68,0x2d,0x26,0x61,0x46,0x6d,0x53,0x35,0x29,0x95,0x1d,0x2d,0x41,0x40,0x52,0xbe,0xd7,0xdb,0xda,0xd8,0xce,0xd7,0xd2,0xd8,0xd4,0xd8,0xd2,0xd6,0xd2,0xd8,0xd4,0xd0,0xd0,0xd2,0xd0,0xce,0xcc,0xcc,0xcc,0xd0,0xce,0xcc,0xcc,0xcc,0xca,0xca,0xca,0xca,0xcc,0xca,0xc8,0xc8,0xca,0xca,0xc8,0xc8,0xc4,0xc6,0xca,0xca,0xc8,0xc8,0xca,0xce,0xc0,0xc4,0xca,0xc2,0xc4,0xc8,0xbc,0xc6,0xc8,0xc8,0xc6,0xc6,0xc4,0xc6,0xc8,0xc6,0xc6,0xc6,0xc6,0xc8,0xc8,0xca,0xc8,0xca,0xc2,0xc4,0xca,0xc8,0xc2,0xc4,0xd0,0xca,0xca,0xc8,0xc8,0xc8,0xca,0xca,0xc6,0xca,0xc8,0xc8,0xc8,0xc8,0xc4,0xc4,0xc6,0xbc,0xc2,0xc6,0xc6,0xc6,0xc6,0xc6,0xc4}, {0xca,0xca,0xca,0xca,0xca,0xc8,0xc8,0xc6,0xc6,0xc8,0xca,0xc8,0xc8,0xc8,0xc6,0xc4,0xc8,0xc6,0xca,0xca,0xc6,0xc4,0xc6,0xc2,0xd0,0xc6,0xc8,0xcc,0xc6,0xc5,0xca,0xc6,0xca,0xcc,0xcc,0xcc,0xca,0xca,0xcc,0xcc,0xcc,0xd0,0xd2,0xd0,0xd0,0xd2,0xd3,0xd3,0xd4,0xc7,0xde,0xd1,0xd6,0xeb,0xd2,0xcd,0xd1,0xda,0xde,0xdc,0xe0,0xdb,0xe3,0xdd,0xe3,0xe3,0xd7,0xdc,0xef,0xde,0xd6,0xd8,0xe4,0xe5,0xe0,0xdd,0xde,0xe0,0xe0,0xdc,0xde,0xea,0xe1,0xe3,0xda,0xe8,0xe8,0xe3,0xee,0xd5,0xdc,0x90,0x9d,0xa0,0xa3,0x8b,0x86,0x8d,0x91,0x95,0x81,0x90,0x62,0x61,0x74,0x90,0x79,0x6f,0x6c,0x6b,0x6a,0x7c,0x79,0x72,0x70,0x79,0x79,0x85,0x7b,0x85,0x72,0xec,0xea,0xe5,0xb3,0x78,0xa6,0x70,0x86,0x9e,0x66,0xa9,0xbc,0x81,0x6a,0xaa,0x94,0x8f,0x62,0x63,0x66,0x8b,0x54,0x51,0x82,0x52,0x74,0x59,0xb7,0xb3,0xa7,0xac,0xcb,0xb1,0xc8,0xd1,0xc3,0xce,0xd5,0xb4,0x62,0x6f,0x70,0x6d,0x70,0x7d,0x62,0x47,0x42,0x39,0x4b,0x3a,0x32,0x37,0x3c,0x2e,0x2c,0x35,0x56,0x5d,0x73,0x7d,0xa9,0x94,0x8d,0x76,0x4b,0x50,0x7c,0x63,0x47,0x42,0x7b,0x6d,0x33,0x5b,0x36,0x20,0x2b,0x55,0x20,0x5a,0x23,0x1e,0x58,0x1f,0x52,0x54,0x34,0x1e,0x75,0x18,0x23,0x79,0x74,0x35,0x8b,0x90,0x3d,0x9a,0xdc,0x62,0xb9,0xd6,0xd3,0xd2,0xd6,0xd0,0xd6,0xd2,0xd4,0xd0,0xd0,0xd2,0xd4,0xd2,0xce,0xcc,0xcc,0xce,0xd2,0xce,0xcc,0xce,0xce,0xcc,0xca,0xcc,0xca,0xcc,0xca,0xc8,0xc8,0xc8,0xc8,0xc6,0xca,0xc6,0xc8,0xca,0xc6,0xc6,0xc6,0xc0,0xce,0xc4,0xc6,0xca,0xc4,0xc6,0xc6,0xc0,0xc6,0xc8,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc4,0xc8,0xc8,0xc8,0xc6,0xc8,0xc8,0xc8,0xc8,0xb6,0xd0,0xc2,0xc8,0xd4,0xbe,0xbc,0xc8,0xc8,0xc8,0xc6,0xc6,0xc8,0xc6,0xc4,0xca,0xc8,0xc8,0xc8,0xc6,0xc4,0xc2,0xc4,0xc4,0xc8,0xca,0xc8,0xc6,0xc6,0xc6,0xc4}, {0xc8,0xc8,0xca,0xca,0xca,0xc8,0xc8,0xc6,0xc6,0xc8,0xc8,0xc6,0xc6,0xc8,0xc8,0xc6,0xc8,0xc6,0xca,0xca,0xc4,0xc8,0xca,0xc0,0xd0,0xca,0xc8,0xca,0xc8,0xc5,0xc8,0xcc,0xce,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xca,0xce,0xd0,0xce,0xd0,0xd2,0xd3,0xd1,0xd4,0xd2,0xcc,0xe0,0xce,0xd4,0xdc,0xdc,0xd7,0xe8,0xe2,0xd0,0xe3,0xeb,0xd8,0x9e,0xbb,0xae,0xb5,0xc5,0xbf,0xc6,0xcb,0xd5,0xdd,0xe3,0xe5,0xdf,0xe3,0xeb,0xe6,0xdd,0xe2,0xe2,0xe0,0xe9,0xb2,0xbd,0xc0,0xa7,0xa2,0xa3,0x9c,0xb3,0xad,0x79,0x6a,0x94,0x76,0x7c,0x6f,0x6d,0x67,0x76,0x6c,0x84,0x7a,0x89,0xa1,0xa2,0x62,0x6f,0x8a,0x92,0x70,0xbb,0x8a,0x95,0xcc,0x76,0xa7,0xd4,0xeb,0xe8,0xe6,0xef,0xa5,0x5c,0x7e,0x65,0x6b,0x6a,0x75,0xc7,0xd0,0x58,0x6f,0x99,0x9b,0x54,0x88,0x53,0x5b,0x6e,0x7f,0x78,0x66,0x6c,0xca,0xdc,0xe2,0xdc,0xf0,0xed,0xde,0xf3,0xe8,0xe3,0xed,0xeb,0xf0,0xda,0xe3,0xc6,0xe2,0xe2,0xeb,0xde,0xcf,0xa7,0xa2,0x7c,0x81,0x73,0x4d,0x46,0x45,0x3b,0x3c,0x4c,0x42,0x46,0x60,0x63,0x6e,0x6e,0x94,0x3f,0x37,0x2e,0x4a,0x3f,0x30,0x43,0x2d,0x49,0x34,0x56,0x31,0x46,0x25,0x7a,0x3e,0x8b,0x1f,0x2b,0x4f,0x16,0x42,0x27,0x1e,0x1e,0x45,0x31,0x2e,0x78,0x28,0x1c,0x30,0x77,0x23,0x35,0xa1,0x2b,0x33,0x90,0xd8,0xd8,0xdc,0xd4,0xdc,0xd6,0xd8,0xd2,0xd0,0xd2,0xd4,0xd2,0xd0,0xcc,0xce,0xce,0xd2,0xd0,0xce,0xd0,0xd0,0xcc,0xca,0xca,0xc8,0xca,0xca,0xc8,0xc6,0xc8,0xc8,0xc6,0xc8,0xc6,0xc8,0xc8,0xc2,0xc6,0xc8,0xbc,0xca,0xc8,0xc8,0xc8,0xc6,0xc4,0xc4,0xc6,0xc8,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc2,0xc6,0xc8,0xc6,0xc4,0xc6,0xc8,0xc6,0xca,0xc4,0xc2,0xd0,0xc2,0xc2,0xce,0xca,0xc6,0xc8,0xc8,0xc8,0xc6,0xc6,0xc6,0xc4,0xc6,0xc6,0xc6,0xc8,0xc6,0xc4,0xc4,0xc6,0xc8,0xca,0xca,0xc8,0xc8,0xc8,0xc8,0xc6}, {0xc6,0xc8,0xc8,0xca,0xca,0xc8,0xc8,0xc6,0xc6,0xc6,0xc6,0xc4,0xc4,0xc6,0xc8,0xc8,0xc8,0xc4,0xc8,0xc6,0xc4,0xce,0xd0,0xc2,0xc8,0xc8,0xc8,0xca,0xca,0xc5,0xc3,0xca,0xcc,0xcc,0xca,0xca,0xcc,0xcc,0xcc,0xca,0xc8,0xcc,0xcc,0xcc,0xce,0xd2,0xd1,0xcd,0xd3,0xdc,0xd6,0xda,0xd8,0xe0,0xdc,0xd5,0xdc,0xd8,0xdc,0xe5,0xda,0x9f,0x88,0x76,0x8c,0x88,0xa4,0xba,0x89,0x83,0x75,0x74,0x96,0xbc,0xe0,0xe6,0xe0,0xe1,0xe2,0xe0,0xe4,0xda,0xdc,0xe4,0x88,0x8a,0x88,0x66,0x62,0x5c,0x69,0x7c,0x69,0x5d,0x5c,0x7e,0x59,0x71,0x65,0x5e,0x5d,0x56,0x75,0x98,0x9a,0x8c,0x93,0x7f,0x78,0x61,0xa4,0x68,0x98,0xd1,0x87,0x7b,0x76,0x6f,0x7e,0xa8,0x65,0x91,0x90,0x66,0x9c,0x61,0x6b,0x79,0x64,0x58,0x65,0xb1,0xda,0x54,0x74,0x84,0xa8,0x51,0x64,0x53,0x70,0xd2,0xe1,0xd8,0xdd,0xd2,0xe7,0xf1,0xe2,0xe7,0xe0,0xe4,0xf2,0xe3,0xe9,0xeb,0xe9,0xdc,0xe4,0xed,0xd8,0xe6,0xe3,0xe9,0xde,0xed,0xeb,0xe5,0xe8,0xe9,0xcd,0xbc,0x41,0x3b,0x43,0x37,0x31,0x35,0x41,0x43,0x4e,0x38,0x39,0x3d,0x63,0x77,0x91,0x60,0x79,0x54,0x42,0x2e,0x38,0x2f,0x29,0x3f,0x30,0x41,0x3c,0x39,0x3d,0x41,0x25,0x3b,0x60,0x28,0x53,0x36,0x4b,0x25,0x49,0x53,0x3f,0x7f,0x3e,0x28,0x3b,0x87,0x2a,0x49,0xbf,0x37,0x4b,0x83,0xd4,0xd6,0xd8,0xce,0xd8,0xd2,0xd2,0xcc,0xcc,0xce,0xd0,0xd0,0xcc,0xca,0xcc,0xcc,0xce,0xcc,0xce,0xd0,0xce,0xcc,0xc8,0xc6,0xc8,0xc8,0xc8,0xc6,0xc6,0xc8,0xc8,0xc8,0xc8,0xc6,0xc8,0xc6,0xc4,0xce,0xd0,0xc0,0xc6,0xc8,0xc8,0xc6,0xc4,0xc0,0xc0,0xc8,0xc8,0xc6,0xc4,0xc4,0xc6,0xc6,0xc6,0xc4,0xc2,0xc4,0xc6,0xc4,0xc4,0xc8,0xc6,0xc4,0xc6,0xca,0xc8,0xc2,0xc8,0xc8,0xc8,0xc0,0xc4,0xc8,0xca,0xca,0xc8,0xc8,0xc8,0xc6,0xca,0xca,0xca,0xca,0xc8,0xc4,0xc2,0xc4,0xc6,0xc6,0xc6,0xc4,0xc4,0xc6,0xc6,0xc4}, {0xc6,0xc8,0xc8,0xc6,0xc8,0xca,0xc8,0xc6,0xc2,0xc4,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc7,0xc9,0xc4,0xc6,0xcc,0xca,0xc6,0xc8,0xc8,0xca,0xc4,0xc6,0xd0,0xc4,0xbd,0xc6,0xca,0xce,0xc8,0xca,0xca,0xc8,0xce,0xcc,0xcf,0xcb,0xcb,0xcf,0xd2,0xd2,0xd2,0xd3,0xd4,0xc2,0xd8,0xdc,0xd9,0xde,0xd1,0xe0,0xe7,0xcd,0xb7,0x94,0x73,0x71,0x7d,0xb6,0xca,0xd0,0xd0,0xc2,0xc8,0xbf,0x9e,0x97,0x6e,0x69,0xa1,0xd3,0xe2,0xdb,0xdc,0xe8,0xe4,0xe4,0xe5,0xde,0xcc,0x88,0x6d,0xa0,0x91,0x89,0x88,0x94,0x74,0x92,0x8b,0x89,0xaa,0x95,0x9c,0x81,0x82,0x8c,0x6f,0x7a,0x76,0x80,0x98,0x67,0x82,0x61,0x78,0x7c,0x9d,0xe0,0x84,0x83,0x60,0x6f,0x9a,0xa7,0x59,0x8e,0x76,0x65,0x71,0x77,0x8a,0x7c,0x6f,0x77,0x5e,0x92,0xb8,0x9f,0x77,0x78,0x69,0x7d,0x8a,0x8c,0x97,0xdd,0xef,0xe4,0xf1,0xee,0xeb,0xe4,0xe9,0xe5,0xd8,0xe4,0xe8,0xe7,0xe5,0xe3,0xe5,0xe6,0xe9,0xe9,0xec,0xe7,0xe5,0xe7,0xe8,0xeb,0xe9,0xe9,0xe9,0xd4,0xe4,0xda,0x53,0x54,0x32,0x3e,0x2c,0x3d,0x26,0x2c,0x3a,0x33,0x31,0x2c,0x4c,0x58,0x68,0x38,0x42,0x42,0x4c,0x3b,0x33,0x47,0x41,0x3d,0x2f,0x39,0x35,0x3d,0x35,0x3b,0x1a,0x3f,0x83,0x2a,0x43,0x34,0x50,0x2e,0x75,0x50,0x3e,0xb4,0x7b,0x25,0x94,0xb1,0x28,0x7d,0xc1,0x35,0x4c,0x73,0xd0,0xe0,0xd8,0xd0,0xdd,0xd8,0xcc,0xd4,0xd2,0xd0,0xd0,0xce,0xce,0xce,0xcc,0xcc,0xcc,0xcc,0xcc,0xce,0xce,0xcc,0xca,0xc8,0xc4,0xca,0xc8,0xc8,0xca,0xc6,0xc4,0xc6,0xca,0xc8,0xc8,0xca,0xca,0xc8,0xc6,0xc4,0xca,0xcc,0xc4,0xc2,0xca,0xbf,0xb7,0xc2,0xc2,0xc4,0xc6,0xc6,0xc4,0xc4,0xc4,0xc6,0xc8,0xc8,0xbf,0xc6,0xc8,0xc2,0xc8,0xc6,0xc4,0xbb,0xc8,0xca,0xc1,0xc6,0xca,0xc4,0xcc,0xca,0xc8,0xc8,0xca,0xc8,0xc4,0xc1,0xc8,0xca,0xc8,0xc4,0xc6,0xc8,0xc1,0xb7,0xc2,0xc1,0xc8,0xc2,0xc2,0xc8,0xc2,0xca}, {0xc6,0xc8,0xca,0xc8,0xc8,0xc8,0xc6,0xc2,0xcc,0xca,0xc8,0xc4,0xc2,0xc2,0xc4,0xc6,0xc1,0xc5,0xc2,0xc4,0xc8,0xc6,0xc4,0xc8,0xcc,0xc8,0xbc,0xba,0xc4,0xc6,0xc6,0xd0,0xc5,0xc8,0xc5,0xca,0xce,0xcc,0xce,0xca,0xcf,0xcb,0xcb,0xcf,0xd2,0xd2,0xd4,0xd5,0xd8,0xd8,0xde,0xda,0xce,0xd8,0xe5,0xd4,0xbf,0x84,0x77,0x82,0xac,0xc9,0xbf,0xd6,0xdc,0xd4,0xc4,0xb1,0xbd,0xc9,0xbf,0xc7,0xb9,0x86,0x71,0x6d,0x96,0xdd,0xf0,0xe1,0xe9,0xda,0xe0,0xda,0xcc,0x6f,0x60,0x96,0x82,0x83,0x99,0x84,0x83,0x78,0x8a,0x79,0x88,0x78,0x79,0x6f,0xad,0x6e,0x74,0x77,0x72,0x7f,0x74,0x6a,0x7e,0x56,0x67,0x88,0xc3,0xcb,0x84,0x83,0x61,0x70,0x77,0x74,0x65,0x79,0x76,0x5e,0x88,0x8f,0xe8,0xb9,0x85,0x7f,0x6b,0x80,0x82,0x69,0x8c,0x8d,0x6a,0xa1,0xb9,0xd7,0xe8,0xe4,0xe7,0xed,0xe7,0xe0,0xd6,0xd6,0xe2,0xe9,0xe5,0xeb,0xde,0xde,0xe2,0xe9,0xed,0xea,0xe5,0xe1,0xe9,0xe7,0xe5,0xe4,0xe7,0xe7,0xe7,0xe9,0xe5,0xee,0xec,0xe3,0xa8,0xaa,0x6e,0x47,0x47,0x31,0x33,0x25,0x38,0x30,0x31,0x25,0x45,0x49,0x37,0x24,0x32,0x4c,0x49,0x4a,0x38,0x43,0x42,0x4a,0x33,0x41,0x41,0x45,0x38,0x2c,0x43,0x1c,0x6b,0x28,0x27,0x30,0x51,0x1b,0x90,0x51,0x3a,0x9e,0xa1,0x24,0xb9,0xb4,0x24,0x73,0xc2,0x32,0x33,0x7d,0xd8,0xdc,0xd4,0xd0,0xd8,0xd4,0xce,0xd6,0xd2,0xd2,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xce,0xce,0xce,0xcc,0xca,0xc8,0xc6,0xc8,0xca,0xc6,0xc2,0xc4,0xc4,0xc6,0xcc,0xbf,0xc1,0xc2,0xc6,0xc6,0xc6,0xc6,0xc8,0xca,0xc2,0xb5,0xb7,0xc6,0xca,0xc4,0xca,0xbf,0xc1,0xc2,0xc4,0xc6,0xc6,0xc6,0xc4,0xc6,0xc6,0xbf,0xc4,0xc6,0xc2,0xc8,0xc6,0xc8,0xbf,0xca,0xca,0xc1,0xc6,0xc8,0xc2,0xc8,0xc6,0xc6,0xc6,0xca,0xca,0xc8,0xc6,0xd0,0xca,0xbd,0xb3,0xb7,0xc2,0xc8,0xc8,0xc2,0xbf,0xc4,0xc2,0xc4,0xca,0xc4,0xca}, {0xc6,0xc8,0xc8,0xc8,0xc6,0xc6,0xc1,0xbd,0xbd,0xbd,0xb9,0xb9,0xb9,0xbd,0xc2,0xc6,0xbf,0xc3,0xc2,0xc2,0xc6,0xc6,0xc6,0xca,0xca,0xc6,0xc0,0xc0,0xc8,0xcc,0xcc,0xca,0xc6,0xc8,0xc6,0xcc,0xd0,0xca,0xca,0xc0,0xcd,0xcd,0xcd,0xcf,0xd2,0xd2,0xd4,0xd8,0xd0,0xde,0xd8,0xe1,0xda,0xd4,0xda,0xc7,0x8c,0x81,0x7f,0x9f,0xd9,0xdb,0xe0,0xd1,0xdc,0xde,0xda,0xd2,0xd9,0xd6,0xc1,0xbf,0xbe,0xb6,0xa5,0x81,0x70,0x8c,0xad,0xd7,0xd0,0xe4,0xed,0xdc,0xcd,0x6f,0x65,0x9e,0x83,0x8c,0x9e,0x8f,0x80,0x79,0x80,0x8a,0x95,0x84,0x90,0x7f,0xaa,0x79,0x76,0x6d,0x7e,0x73,0x75,0x76,0x55,0x74,0x83,0x60,0xaa,0xdf,0x8b,0x63,0x93,0x75,0x5a,0x64,0x58,0x61,0x67,0x64,0x64,0x5b,0x65,0x94,0x7a,0x71,0x70,0x64,0x63,0x63,0x68,0x77,0x6f,0xa0,0xa0,0x8a,0xdc,0xe7,0xe4,0xde,0xeb,0xef,0xe6,0xe7,0xef,0xed,0xe7,0xe0,0xe4,0xe3,0xe3,0xe5,0xea,0xe8,0xe2,0xdc,0xe6,0xe6,0xe4,0xe4,0xe5,0xe7,0xe7,0xe9,0xea,0xe2,0xed,0xe3,0xbd,0xbd,0xa5,0x37,0x37,0x29,0x33,0x2f,0x2f,0x2d,0x27,0x2f,0x32,0x38,0x29,0x33,0x2d,0x35,0x35,0x33,0x3e,0x2c,0x2b,0x34,0x34,0x2b,0x2c,0x2d,0x29,0x32,0x1d,0x2a,0x52,0x29,0x44,0x2f,0x44,0x2d,0x3f,0x4d,0x27,0x23,0x98,0x24,0xb0,0xa9,0x26,0x40,0xb6,0x33,0x45,0x7f,0xda,0xd6,0xd4,0xda,0xdc,0xd4,0xd0,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xd0,0xd0,0xce,0xce,0xcc,0xca,0xc8,0xc6,0xc4,0xc2,0xc0,0xc2,0xbc,0xb6,0xba,0xba,0xbc,0xc2,0xbf,0xc2,0xc4,0xc4,0xc4,0xc2,0xc4,0xc6,0xca,0xc8,0xc2,0xc2,0xc4,0xc4,0xc2,0xc1,0xc2,0xc2,0xc2,0xc4,0xc6,0xc4,0xc1,0xbd,0xc4,0xc6,0xc1,0xc4,0xc4,0xc2,0xc8,0xc8,0xcc,0xc2,0xca,0xc8,0xc1,0xc6,0xc8,0xc4,0xc4,0xc4,0xc4,0xc6,0xc6,0xc8,0xc8,0xc8,0xc1,0xc2,0xc2,0xc2,0xc6,0xca,0xc6,0xbf,0xc4,0xc1,0xc4,0xc2,0xc4,0xc8,0xc2,0xc2}, {0xc6,0xc6,0xc6,0xc6,0xc4,0xc4,0xc1,0xbd,0xc4,0xc2,0xc2,0xc1,0xbf,0xbd,0xbd,0xbf,0xc3,0xc7,0xc4,0xc2,0xc8,0xc8,0xc8,0xcc,0xc8,0xc8,0xca,0xca,0xca,0xcc,0xca,0xc1,0xca,0xce,0xca,0xd0,0xd0,0xcc,0xcc,0xc6,0xcb,0xcd,0xd1,0xd3,0xd4,0xd4,0xd4,0xd7,0xde,0xde,0xcc,0xde,0xd8,0xdb,0xce,0x6e,0x86,0xab,0xd8,0xda,0xdc,0xda,0xda,0xe3,0xdc,0xe4,0xe6,0xe5,0xe6,0xde,0xcc,0xc8,0xc8,0xcc,0xc7,0xb3,0x8c,0x78,0x6e,0x82,0xdb,0xde,0xe4,0xe4,0x90,0x69,0x67,0x5f,0x60,0x5e,0x60,0x78,0x65,0x72,0x54,0x6c,0x5c,0x65,0x60,0x5e,0x88,0x4d,0x6e,0x66,0x66,0x6c,0x6d,0x6a,0x6d,0x8c,0x90,0x6b,0x97,0x8a,0x92,0x88,0x9c,0x7b,0x67,0x76,0x6b,0x85,0x83,0x77,0x9d,0x94,0x66,0x85,0x81,0x99,0xa4,0x8a,0x7e,0x8f,0x65,0x7f,0x69,0x7c,0x66,0x6e,0xd0,0xe4,0xe7,0xf6,0xe4,0xef,0xe7,0xe5,0xe5,0xe4,0xec,0xe5,0xed,0xe8,0xe7,0xe5,0xe7,0xe7,0xe4,0xe2,0xe6,0xe8,0xe8,0xea,0xe9,0xea,0xe9,0xe9,0xef,0xeb,0xe3,0xe5,0xe1,0xc5,0xa7,0x37,0x47,0x2d,0x40,0x43,0x39,0x2d,0x3a,0x39,0x43,0x46,0x54,0x45,0x30,0x32,0x2e,0x2a,0x3d,0x39,0x35,0x2b,0x34,0x33,0x3e,0x49,0x4a,0x3e,0x1c,0x2a,0x4a,0x21,0x43,0x2c,0x4e,0x1d,0x3c,0x48,0x2b,0x1d,0x94,0x1f,0xb0,0xad,0x21,0x3a,0x9c,0x2a,0x42,0x88,0xdc,0xd4,0xd6,0xd9,0xd2,0xd0,0xd4,0xd2,0xd2,0xd2,0xd0,0xd0,0xd2,0xd2,0xd2,0xd0,0xce,0xcc,0xca,0xc8,0xc6,0xc4,0xc2,0xc0,0xc2,0xc6,0xc2,0xc0,0xc0,0xc0,0xbe,0xc2,0xc4,0xc6,0xc6,0xc4,0xc4,0xc4,0xc6,0xc6,0xc4,0xc6,0xca,0xc8,0xc2,0xc4,0xc6,0xc2,0xc6,0xc6,0xc6,0xc6,0xc6,0xc4,0xc2,0xc1,0xc4,0xc4,0xc4,0xc6,0xc6,0xc4,0xc6,0xc6,0xc8,0xc1,0xca,0xc8,0xc2,0xc8,0xc8,0xc8,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc8,0xc2,0xc6,0xc6,0xc6,0xc6,0xc6,0xc4,0xc1,0xc4,0xc2,0xc4,0xc4,0xc6,0xc6,0xc2,0xc2}, {0xc8,0xca,0xc8,0xc6,0xc6,0xc6,0xc4,0xc1,0xc6,0xc6,0xc6,0xc6,0xc4,0xc2,0xc2,0xc2,0xc7,0xcb,0xc6,0xc2,0xc8,0xca,0xc8,0xca,0xcc,0xca,0xc8,0xc4,0xc2,0xc6,0xc8,0xc5,0xc8,0xce,0xcc,0xd0,0xd0,0xce,0xd4,0xd2,0xcb,0xcf,0xd3,0xd3,0xd4,0xd4,0xd4,0xd4,0xdf,0xc0,0xe9,0xe4,0xd7,0xb9,0x78,0x89,0xad,0xe5,0xe3,0xf2,0xe6,0xdd,0xf5,0xe9,0xea,0xee,0xe8,0xe3,0xe3,0xde,0xde,0xe1,0xca,0xd4,0xce,0xd1,0xc3,0xaa,0x7e,0x71,0xc5,0xbe,0xa7,0xda,0x83,0x8b,0x84,0x69,0x68,0x65,0x66,0x74,0x6b,0x6b,0x6f,0x88,0x52,0x7f,0x5a,0x58,0x70,0x57,0x69,0x7b,0x70,0x74,0x72,0x98,0x66,0x7f,0x89,0x6c,0x70,0x88,0x7d,0xad,0x89,0x6a,0x62,0x6d,0x62,0x54,0x67,0x4f,0x7c,0xaa,0x78,0x79,0x6c,0x72,0x7c,0x76,0x6e,0x69,0x5c,0x5b,0x89,0xda,0xd9,0xe9,0xe9,0xe9,0xe0,0xe6,0xea,0xf0,0xed,0xe9,0xe3,0xe2,0xe7,0xde,0xe5,0xe9,0xeb,0xed,0xec,0xec,0xeb,0xeb,0xe5,0xea,0xeb,0xeb,0xe9,0xeb,0xe9,0xe7,0xe5,0xe7,0xe4,0xf2,0xd0,0xc3,0xba,0x5f,0x2f,0x2e,0x31,0x36,0x3a,0x33,0x33,0x37,0x38,0x32,0x34,0x3a,0x4d,0x3c,0x3b,0x3a,0x55,0x4e,0x41,0x4e,0x50,0x4e,0x41,0x49,0x39,0x3d,0x1d,0x17,0x45,0x23,0x2d,0x2b,0x39,0x1d,0x35,0x3f,0x17,0x3b,0x65,0x1b,0x62,0x73,0x18,0x2e,0x65,0x27,0x3e,0x81,0xde,0xd9,0xd9,0xce,0xc2,0xcc,0xdb,0xd6,0xd2,0xd2,0xd0,0xd0,0xd0,0xd2,0xd0,0xd0,0xd0,0xce,0xcc,0xcc,0xca,0xc8,0xc6,0xc4,0xc6,0xca,0xc8,0xc6,0xc8,0xc6,0xc2,0xc6,0xc2,0xc4,0xc4,0xc4,0xc4,0xc8,0xca,0xca,0xcc,0xc6,0xc2,0xbf,0xbf,0xc4,0xc6,0xc1,0xc4,0xc6,0xc6,0xc6,0xc6,0xc6,0xc8,0xca,0xc4,0xc4,0xc8,0xc8,0xc6,0xc6,0xc4,0xc2,0xc4,0xc1,0xc8,0xc8,0xc6,0xca,0xc6,0xc8,0xca,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc6,0xc2,0xbf,0xc1,0xc2,0xc4,0xc1,0xc2,0xc4,0xc6,0xc6,0xc6,0xc8,0xc8}, {0xc8,0xc8,0xc8,0xc6,0xc6,0xc6,0xc6,0xc2,0xbf,0xbf,0xc1,0xc2,0xc2,0xc6,0xc8,0xcc,0xbf,0xc7,0xc4,0xc2,0xc6,0xc8,0xc6,0xc6,0xc8,0xc8,0xc6,0xc4,0xc4,0xc6,0xc8,0xce,0xc8,0xcc,0xc8,0xca,0xc8,0xc6,0xd0,0xd2,0xcd,0xd1,0xd3,0xd3,0xd4,0xd6,0xd6,0xd4,0xcc,0xe7,0xd8,0xda,0xc5,0x92,0x9a,0xb2,0xe0,0xe3,0xdb,0xe3,0xe5,0xef,0xe1,0xe7,0xed,0xf2,0xef,0xf0,0xeb,0xe2,0xe2,0xde,0xe6,0xe1,0xce,0xca,0xc8,0xb1,0x86,0x6f,0x70,0x4a,0x4a,0x9e,0x4a,0x5a,0x76,0x55,0x5e,0x62,0x53,0x52,0x45,0x43,0x65,0x69,0x44,0x66,0x4e,0x4e,0x47,0x66,0x5d,0x75,0x6c,0x60,0x98,0x79,0x8a,0x89,0x9c,0x8d,0x93,0x92,0x60,0x5f,0x5e,0x73,0x5d,0x61,0x5c,0x71,0x5e,0x62,0x72,0xbe,0x9e,0x4f,0x5c,0x55,0x61,0x54,0x8a,0x5d,0x56,0x67,0x93,0x8e,0xcb,0xd4,0xe3,0xee,0xda,0xf0,0xe9,0xe1,0xe5,0xe2,0xe0,0xe8,0xe7,0xe4,0xe7,0xe9,0xe8,0xe5,0xe3,0xe3,0xe7,0xe9,0xe5,0xea,0xe9,0xe7,0xe7,0xe9,0xe7,0xe3,0xe9,0xe5,0xeb,0xe4,0x95,0x9b,0xa6,0x5f,0x4a,0x3f,0x4c,0x3d,0x43,0x46,0x48,0x3c,0x3d,0x45,0x4f,0x3a,0x43,0x52,0x54,0x4d,0x4a,0x47,0x40,0x41,0x40,0x56,0x53,0x41,0x49,0x57,0x4d,0x3a,0x31,0x3c,0x41,0x30,0x41,0x3b,0x4a,0x43,0x31,0x43,0x43,0x3c,0x3b,0x44,0x35,0x52,0x50,0x31,0x7e,0xd4,0xda,0xdd,0xdf,0xd4,0xca,0xd4,0xdd,0xd2,0xd2,0xd2,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xcc,0xcc,0xca,0xca,0xc6,0xc4,0xc2,0xc6,0xc2,0xc0,0xc4,0xc4,0xc2,0xc8,0xbf,0xc2,0xc4,0xc2,0xc2,0xc6,0xc8,0xc6,0xc8,0xca,0xc6,0xc4,0xc1,0xc1,0xc1,0xc2,0xc2,0xc2,0xc4,0xc2,0xc1,0xc1,0xc4,0xc6,0xc4,0xc4,0xca,0xc6,0xc6,0xc8,0xc2,0xc2,0xc4,0xc2,0xc8,0xc6,0xc6,0xc8,0xc2,0xc6,0xc6,0xc4,0xc4,0xc4,0xc6,0xc6,0xc6,0xc6,0xc4,0xc6,0xc8,0xc8,0xc6,0xc2,0xc1,0xc1,0xc1,0xc6,0xc4,0xc6,0xc2,0xbf,0xc4,0xc2}, {0xc6,0xc6,0xc6,0xc6,0xc6,0xc8,0xc4,0xc2,0xca,0xca,0xc8,0xc6,0xc4,0xc4,0xc4,0xc6,0xb0,0xbf,0xc4,0xc4,0xc6,0xc6,0xc6,0xc8,0xc4,0xc8,0xc6,0xc8,0xce,0xc8,0xc5,0xcc,0xc8,0xcc,0xc8,0xca,0xc8,0xc4,0xca,0xca,0xcf,0xd1,0xd1,0xcf,0xd2,0xd6,0xd8,0xd6,0xe4,0xd9,0xdb,0xdd,0x84,0x74,0xce,0xda,0xe0,0xe7,0xda,0xeb,0xf4,0xeb,0xef,0xef,0xed,0xed,0xe5,0xee,0xed,0xeb,0xf0,0xe8,0xe6,0xe3,0xd9,0xd0,0xc3,0xa9,0xa9,0xb5,0x8f,0x68,0x62,0x9e,0x73,0x60,0x82,0x64,0x7a,0x7a,0x5c,0x7d,0x55,0x6b,0x66,0x52,0x66,0x59,0x59,0x63,0x52,0x51,0x6a,0x71,0x69,0x58,0x7c,0x5f,0x95,0x93,0x88,0x95,0x69,0x7b,0x62,0x60,0x67,0x59,0x5e,0x6d,0x5f,0x5d,0x5a,0x5a,0x59,0x70,0x91,0x7a,0x5d,0x42,0x65,0x64,0x78,0x52,0x5d,0x6d,0x5f,0x46,0xae,0xc1,0xe5,0xe4,0xd9,0xea,0xec,0xde,0xf5,0xed,0xe1,0xe9,0xe0,0xeb,0xed,0xec,0xe6,0xe0,0xdf,0xdf,0xe3,0xe5,0xe7,0xe8,0xe7,0xe3,0xe2,0xe8,0xe6,0xe2,0xdf,0xf2,0xeb,0xe7,0xdc,0xe7,0xc3,0x6c,0x4f,0x48,0x3f,0x39,0x3f,0x54,0x46,0x49,0x42,0x4f,0x45,0x48,0x4d,0x53,0x76,0x64,0x73,0x4e,0x3a,0x36,0x46,0x58,0x69,0x61,0x68,0x4d,0x3c,0x43,0x4d,0x31,0x37,0x37,0x4a,0x3a,0x2e,0x36,0x34,0x32,0x43,0x51,0x55,0x43,0x49,0x5d,0x4d,0x54,0xd9,0xd8,0xd6,0xda,0xdf,0xdd,0xd9,0xdb,0xd6,0xcc,0xd4,0xd2,0xd0,0xd0,0xd0,0xd0,0xd0,0xce,0xcc,0xcc,0xcc,0xcc,0xcc,0xca,0xc6,0xc4,0xc6,0xc8,0xc6,0xc4,0xc6,0xc6,0xc6,0xca,0xb3,0xbf,0xc6,0xc4,0xc1,0xc2,0xc4,0xc4,0xbb,0xc2,0xc6,0xc8,0xca,0xc2,0xc1,0xcc,0xc4,0xc4,0xc2,0xc1,0xc1,0xbf,0xbf,0xbf,0xc6,0xc2,0xc8,0xc1,0xc2,0xc8,0xc2,0xc2,0xc4,0xc2,0xc6,0xc2,0xc4,0xc6,0xc1,0xc6,0xc4,0xc2,0xc2,0xc4,0xc6,0xc8,0xc6,0xc4,0xcc,0xc6,0xc1,0xc1,0xc2,0xc4,0xc4,0xc4,0xc4,0xc8,0xc1,0xc4,0xc2,0xbd,0xc1,0xbd}, {0xc6,0xc8,0xca,0xca,0xca,0xca,0xc6,0xc2,0xc2,0xc2,0xc4,0xc4,0xc4,0xc2,0xc2,0xc2,0xa5,0xb9,0xc6,0xc6,0xc8,0xc8,0xc8,0xcc,0xca,0xca,0xc2,0xc2,0xce,0xc6,0xbf,0xca,0xc8,0xcc,0xca,0xce,0xd0,0xcc,0xd0,0xcc,0xd1,0xd1,0xcf,0xcb,0xd0,0xd6,0xda,0xd8,0xd5,0xdc,0xc7,0x8f,0x6a,0x93,0xdd,0xe3,0xe3,0xe5,0xed,0xe0,0xee,0xed,0xef,0xf1,0xf3,0xed,0xe2,0xeb,0xed,0xeb,0xf0,0xe3,0xed,0xe4,0xe2,0xd8,0xd4,0xbb,0xb6,0xae,0x8a,0x66,0x6a,0x8b,0x9f,0x80,0xb5,0x74,0x7f,0x7a,0x70,0xa7,0x5a,0x86,0x59,0x54,0x7e,0x5a,0x72,0x6c,0x53,0x58,0x5c,0x73,0x59,0x68,0x52,0x54,0x78,0x77,0x78,0x65,0x5d,0x66,0x6e,0x6a,0x60,0x63,0x60,0x66,0x58,0x43,0x43,0x46,0x4a,0x5a,0x9a,0x85,0x78,0x8a,0x60,0x6a,0x88,0x62,0x58,0x79,0x91,0x44,0x58,0xb0,0xbd,0x89,0x92,0xb4,0x72,0x81,0xca,0xe8,0xe9,0xef,0xda,0xe9,0xe7,0xe7,0xea,0xed,0xee,0xea,0xe5,0xe1,0xea,0xea,0xe5,0xe0,0xe0,0xe8,0xe8,0xe5,0xe9,0xe5,0xe8,0xe4,0xe2,0xe3,0xbe,0x4d,0x30,0x2c,0x40,0x38,0x3b,0x2a,0x32,0x2e,0x2a,0x56,0x63,0x6d,0x55,0x25,0x26,0x26,0x1b,0x20,0x1f,0x20,0x23,0x24,0x1f,0x21,0x1e,0x41,0x4e,0x49,0x2a,0x4b,0x58,0x36,0x34,0x38,0x31,0x43,0x34,0x5f,0x52,0x4b,0x5b,0x2b,0x35,0x3c,0x60,0x2e,0xc8,0xe5,0xdf,0xda,0xd4,0xd2,0xd4,0xd6,0xd4,0xd0,0xd4,0xd4,0xd2,0xd0,0xd0,0xd0,0xd0,0xce,0xcc,0xcc,0xce,0xce,0xce,0xcc,0xc8,0xc6,0xc4,0xc8,0xc6,0xc6,0xc6,0xc4,0xc0,0xc2,0xa5,0xb5,0xc4,0xc6,0xc2,0xc2,0xc6,0xc8,0xce,0xca,0xbb,0xbd,0xca,0xc2,0xb9,0xc2,0xc4,0xc4,0xc2,0xc4,0xc6,0xc6,0xc4,0xc1,0xc6,0xc1,0xc4,0xbd,0xbf,0xc8,0xc2,0xc4,0xc2,0xc2,0xc4,0xc1,0xc2,0xc6,0xc1,0xc8,0xc8,0xc6,0xc4,0xc6,0xca,0xca,0xc8,0xc4,0xca,0xc2,0xbd,0xc1,0xc6,0xc6,0xc1,0xbb,0xc4,0xc6,0xbf,0xc4,0xc6,0xc2,0xca,0xc2}, {0xc8,0xbf,0xbd,0xc4,0xc8,0xc2,0xc2,0xc8,0xc4,0xc4,0xc6,0xc6,0xc6,0xc4,0xc2,0xc2,0xc1,0xc1,0xc1,0xc2,0xc4,0xc4,0xc6,0xca,0xca,0xca,0xc8,0xc6,0xc6,0xc6,0xc6,0xc8,0xcc,0xce,0xce,0xca,0xc6,0xc8,0xca,0xcc,0xd1,0xcf,0xc9,0xcb,0xd2,0xd4,0xd4,0xda,0xd9,0xe0,0x84,0x7f,0x76,0x98,0xe2,0xdc,0xe3,0xe3,0xe8,0xec,0xe9,0xe2,0xe6,0xf2,0xef,0xef,0xee,0xeb,0xed,0xf0,0xf0,0xf0,0xef,0xe9,0xeb,0xeb,0xd4,0xbb,0xb0,0xaf,0x7e,0x66,0x89,0x91,0x96,0x72,0xbe,0x5f,0x6c,0x61,0x62,0xa2,0x49,0x5d,0x57,0x4f,0x6f,0x4e,0x75,0x50,0x4a,0x74,0x59,0x59,0x66,0x6c,0x5c,0x66,0x73,0x50,0x65,0x66,0x64,0x5f,0x78,0x61,0x50,0x59,0x57,0x64,0x52,0x42,0x3b,0x51,0x42,0x49,0x7e,0x5e,0x64,0xca,0x5b,0x4d,0x4f,0x99,0x45,0x6d,0x77,0x4f,0x48,0x4c,0x91,0x2d,0x4a,0x7b,0x4c,0x4d,0x56,0xe9,0xf0,0xe9,0xe5,0xec,0xee,0xee,0xea,0xe8,0xe8,0xe8,0xe8,0xe6,0xe8,0xe4,0xe0,0xe2,0xe4,0xe5,0xe4,0xe9,0xe4,0xe4,0xee,0xdc,0xeb,0xdc,0xda,0x76,0x3a,0x2e,0x43,0x3f,0x3a,0x3f,0x3b,0x3c,0x3f,0x6f,0x6b,0x20,0x25,0x27,0x23,0x2f,0x25,0x1f,0x20,0x21,0x38,0x33,0x2d,0x20,0x23,0x21,0x3c,0x56,0x64,0x5b,0x4e,0x46,0x6a,0x40,0x31,0x3e,0x43,0x51,0x4c,0x3f,0x3f,0x47,0x47,0x40,0x4c,0x59,0xa5,0xcc,0xdd,0xd8,0xda,0xda,0xd8,0xce,0xd6,0xd4,0xcc,0xd6,0xd8,0xce,0xcc,0xd6,0xd4,0xcc,0xd0,0xc6,0xc4,0xca,0xcc,0xc6,0xc4,0xca,0xc6,0xc6,0xc6,0xc8,0xca,0xc8,0xc7,0xc5,0xc1,0xc1,0xc2,0xc4,0xc4,0xc2,0xc4,0xc6,0xca,0xc6,0xc4,0xc4,0xc4,0xc6,0xc4,0xc2,0xc6,0xc1,0xc6,0xbf,0xc1,0xc8,0xbf,0xc1,0xc4,0xbf,0xbb,0xbd,0xc1,0xc2,0xc4,0xc4,0xbf,0xc6,0xc2,0xc1,0xc8,0xc6,0xc1,0xc4,0xc4,0xc2,0xc6,0xca,0xc6,0xc1,0xc1,0xc6,0xc4,0xc4,0xc4,0xc2,0xc2,0xc4,0xc4,0xc2,0xc6,0xc1,0xc4,0xc6,0xbf,0xbf,0xc2,0xbf}, {0xc8,0xc1,0xbf,0xc2,0xc4,0xc1,0xbf,0xc2,0xc2,0xc2,0xc4,0xc4,0xc6,0xc6,0xc4,0xc2,0xc7,0xc5,0xc2,0xc4,0xc6,0xc8,0xc8,0xca,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xca,0xcc,0xc5,0xc8,0xca,0xca,0xca,0xcc,0xd0,0xd0,0xcd,0xcd,0xc9,0xcb,0xd6,0xd8,0xd8,0xde,0xda,0xc6,0x75,0x64,0x5a,0x9f,0xdc,0xe5,0xe0,0xe3,0xe8,0xf0,0xef,0xe9,0xeb,0xf2,0xf1,0xf2,0xf2,0xf0,0xef,0xf2,0xef,0xed,0xef,0xe9,0xeb,0xe9,0xd3,0xba,0xb0,0xad,0x74,0x88,0x84,0x64,0x9a,0x7f,0xb3,0x67,0x6d,0x5f,0x60,0x98,0x55,0x6c,0x48,0x4a,0x67,0x50,0x70,0x45,0x4d,0x5a,0x73,0x6f,0x6c,0x67,0x63,0x61,0x73,0x66,0x67,0x59,0x52,0x63,0x5e,0x4f,0x4b,0x52,0x57,0x48,0x4f,0x53,0x46,0x61,0x50,0x53,0x85,0x7e,0x62,0xa3,0x64,0x5f,0x75,0xaf,0x6b,0x7d,0x69,0x75,0x53,0x5f,0x6f,0x3f,0x9c,0x64,0x84,0x41,0x6f,0xe9,0xe7,0xea,0xf4,0xe5,0xdf,0xe5,0xea,0xe8,0xe4,0xe4,0xe8,0xed,0xed,0xe4,0xe0,0xe4,0xe7,0xe7,0xe4,0xe6,0xe9,0xef,0xec,0xe1,0xe3,0xd4,0xd3,0xa6,0x43,0x48,0x50,0x47,0x43,0x44,0x44,0x52,0x4c,0x44,0x37,0x46,0x35,0x35,0x34,0x31,0x51,0x30,0x25,0x30,0x30,0x29,0x2e,0x1a,0x2e,0x1d,0x2d,0x23,0x26,0x47,0x83,0x57,0x49,0x64,0x77,0x4b,0x36,0x4e,0x2a,0x2f,0x3a,0x48,0x3a,0x31,0x3c,0x46,0x4a,0xcd,0xdf,0xe1,0xd8,0xe5,0xd2,0xda,0xd0,0xce,0xce,0xd2,0xce,0xc2,0xc0,0xca,0xce,0xcc,0xce,0xc8,0xc4,0xc8,0xc8,0xc4,0xc2,0xc6,0xc4,0xc4,0xc4,0xc4,0xc6,0xc6,0xc7,0xc5,0xc6,0xc4,0xc4,0xc6,0xc6,0xc6,0xc4,0xc6,0xc8,0xc6,0xc4,0xc4,0xc4,0xc6,0xc4,0xc4,0xbd,0xbd,0xc6,0xc1,0xbf,0xc2,0xc1,0xc6,0xc6,0xc1,0xbd,0xbf,0xc2,0xc2,0xc2,0xc2,0xc2,0xc8,0xc6,0xbf,0xbb,0xbd,0xc2,0xcc,0xc6,0xc4,0xc6,0xca,0xca,0xc4,0xc4,0xc8,0xc6,0xc6,0xc6,0xc4,0xc4,0xc6,0xc6,0xc4,0xc2,0xbf,0xc2,0xc4,0xbf,0xc1,0xc4,0xc1}, {0xc8,0xc6,0xc4,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc4,0xc6,0xc6,0xc4,0xc3,0xc6,0xc4,0xc2,0xc4,0xc8,0xc8,0xc8,0xc8,0xc6,0xc6,0xc8,0xc8,0xc6,0xc8,0xca,0xcc,0xc3,0xc8,0xcc,0xce,0xce,0xce,0xce,0xcc,0xd1,0xd3,0xcf,0xd1,0xd8,0xd8,0xd6,0xdc,0xd8,0x84,0x5f,0x66,0x80,0xd4,0xdf,0xd8,0xe0,0xe0,0xea,0xf2,0xf3,0xef,0xef,0xf1,0xf2,0xf1,0xf1,0xf0,0xef,0xef,0xed,0xe9,0xef,0xeb,0xee,0xeb,0xd6,0xc2,0xb8,0xb2,0x86,0x79,0x72,0x7c,0x8b,0x74,0xb7,0x63,0x60,0x5e,0x5b,0x8e,0x4f,0x70,0x4a,0x4e,0x5f,0x49,0x69,0x53,0x50,0x69,0x59,0x5c,0x6b,0x63,0x71,0x58,0x57,0x56,0x52,0x57,0x4b,0x50,0x3f,0x54,0x58,0x9b,0xbc,0x9f,0x84,0x53,0x42,0x5c,0x4a,0x4b,0x50,0x3c,0x61,0x57,0x63,0x66,0x67,0x63,0x62,0x55,0x53,0x6a,0x5c,0x65,0x6e,0x57,0x45,0x6b,0x6b,0x97,0xea,0xe1,0xed,0xf4,0xe0,0xf6,0xe2,0xe8,0xef,0xed,0xe6,0xe6,0xe9,0xec,0xef,0xe9,0xe5,0xe6,0xeb,0xe9,0xe6,0xe4,0xef,0xdb,0xe9,0xed,0xf0,0xd4,0x75,0x63,0x5a,0x36,0x38,0x4f,0x57,0x42,0x32,0x44,0x45,0x23,0x2d,0x40,0x2a,0x45,0x2f,0x22,0x1c,0x43,0x19,0x1a,0x3b,0x32,0x23,0x1a,0x1b,0x1d,0x34,0x1f,0x23,0x24,0x2f,0x52,0x84,0x69,0x41,0x4e,0x3d,0x36,0x27,0x2d,0x42,0x3e,0x42,0x35,0x41,0x50,0x91,0xe4,0xdc,0xd6,0xdd,0xcc,0xd4,0xd2,0xd8,0xd8,0xd2,0xd6,0xd4,0xd0,0xcc,0xce,0xd0,0xd0,0xce,0xcc,0xca,0xca,0xc8,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc5,0xc5,0xc7,0xc7,0xc6,0xc4,0xc4,0xc6,0xc6,0xc6,0xc4,0xc6,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xbf,0xc1,0xc8,0xc3,0xc1,0xc3,0xc1,0xc4,0xc6,0xc3,0xc1,0xc3,0xc4,0xc4,0xc3,0xc3,0xb9,0xc1,0xcc,0xcc,0xc3,0xc1,0xc4,0xc3,0xc6,0xc4,0xc6,0xca,0xca,0xc6,0xc6,0xc8,0xc6,0xc6,0xc6,0xc4,0xc3,0xc4,0xc4,0xc3,0xc3,0xc1,0xc4,0xc6,0xc3,0xc3,0xc6,0xc4}, {0xc6,0xc8,0xc8,0xc6,0xc4,0xc6,0xc6,0xc6,0xc6,0xc4,0xc4,0xc3,0xc3,0xc3,0xc3,0xc3,0xc2,0xc2,0xc2,0xc4,0xc6,0xc6,0xc6,0xc8,0xc6,0xc8,0xc8,0xc8,0xc6,0xc6,0xc8,0xca,0xc6,0xca,0xce,0xce,0xce,0xce,0xcc,0xca,0xd1,0xd3,0xd1,0xd3,0xd8,0xd6,0xd4,0xd8,0xc9,0x7f,0x90,0x83,0x9a,0xd0,0xe3,0xdc,0xde,0xe3,0xe8,0xf1,0xf2,0xef,0xee,0xf0,0xf2,0xf1,0xf2,0xf0,0xef,0xef,0xed,0xe9,0xef,0xeb,0xed,0xe9,0xdd,0xd0,0xc5,0xb7,0x7d,0x40,0x47,0x82,0x42,0x41,0xac,0x6d,0x63,0x5b,0x6a,0x67,0x41,0x3d,0x4d,0x40,0x40,0x41,0x56,0x38,0x43,0x5e,0x7d,0x78,0x75,0x58,0x59,0x4d,0x61,0x67,0x53,0x5d,0x5b,0x4a,0x51,0x61,0xb2,0xe5,0xee,0xe3,0xaf,0x4f,0x3f,0x3b,0x35,0x53,0x55,0x50,0x55,0x55,0x5e,0x65,0x61,0x67,0x56,0x5d,0x6e,0x71,0x78,0x98,0xc6,0xa8,0xb6,0xd0,0xb1,0xbd,0xe9,0xf8,0xe5,0xe5,0xe7,0xe6,0xed,0xef,0xf0,0xed,0xed,0xed,0xe9,0xe3,0xed,0xe7,0xe7,0xe9,0xeb,0xe7,0xe5,0xe4,0xd8,0xf4,0xeb,0xe3,0xe3,0xe5,0x9e,0x7b,0x3d,0x2b,0x32,0x35,0x48,0x4f,0x45,0x49,0x4e,0x40,0x4f,0x38,0x3a,0x4b,0x44,0x49,0x6a,0x58,0x51,0x54,0x4f,0x52,0x44,0x41,0x2f,0x29,0x45,0x31,0x40,0x4d,0x4e,0x42,0x4f,0x51,0x74,0x4e,0x30,0x27,0x2a,0x29,0x25,0x29,0x2e,0x42,0x30,0x2c,0x71,0x9e,0xde,0xdf,0xe1,0xdc,0xdc,0xd4,0xce,0xd2,0xd0,0xd2,0xd4,0xd4,0xd0,0xce,0xce,0xd0,0xcc,0xce,0xce,0xcc,0xca,0xca,0xca,0xca,0xca,0xca,0xc8,0xc6,0xc3,0xc3,0xc5,0xc7,0xc3,0xc3,0xc4,0xc4,0xc4,0xc3,0xc4,0xc6,0xc3,0xc3,0xc3,0xc3,0xc3,0xc1,0xc3,0xc3,0xc4,0xc3,0xc4,0xc3,0xc4,0xc6,0xc1,0xbf,0xc4,0xc3,0xc3,0xc4,0xc4,0xc3,0xc1,0xc1,0xc6,0xc1,0xc1,0xc3,0xbf,0xc4,0xc8,0xc1,0xc4,0xc3,0xc4,0xc6,0xc8,0xc6,0xc4,0xc4,0xc4,0xc6,0xc6,0xc3,0xc3,0xc3,0xc3,0xc1,0xc3,0xc3,0xc4,0xc4,0xc4,0xc4,0xc6,0xc4}, {0xc3,0xc4,0xc4,0xc4,0xc3,0xc4,0xc4,0xc4,0xc6,0xc8,0xc6,0xc3,0xbf,0xbf,0xc1,0xc4,0xc2,0xc4,0xc6,0xc8,0xc6,0xc4,0xc6,0xca,0xc8,0xc8,0xca,0xca,0xc8,0xc8,0xca,0xca,0xc6,0xca,0xcc,0xcc,0xce,0xd0,0xd0,0xce,0xcb,0xcf,0xcf,0xd1,0xd6,0xd4,0xd4,0xda,0xd0,0x6d,0x91,0xb8,0xd5,0xcc,0xc8,0xcc,0xe0,0xe6,0xed,0xf0,0xf0,0xeb,0xed,0xef,0xf4,0xf3,0xf2,0xef,0xef,0xf1,0xf2,0xef,0xef,0xeb,0xe9,0xe7,0xe1,0xdb,0xcc,0xb7,0xa2,0x4e,0x49,0x6f,0x47,0x54,0x88,0x5e,0x63,0x5f,0x66,0x61,0x3d,0x3f,0x53,0x51,0x38,0x53,0x6d,0x3f,0x5b,0xbb,0xde,0xb2,0x9f,0x8a,0x77,0x58,0x5b,0x55,0x4f,0x72,0x98,0x88,0xdd,0xe5,0xf2,0xe5,0xeb,0xe4,0xdc,0x92,0x71,0x3f,0x37,0x44,0x40,0x48,0x41,0x4c,0x68,0x51,0x59,0x4d,0x4e,0x7d,0x75,0xb5,0xae,0xb6,0xc2,0xdc,0xdc,0xe6,0xe9,0xf2,0xeb,0xf6,0xe4,0xf1,0xf8,0xed,0xea,0xeb,0xeb,0xeb,0xed,0xef,0xe9,0xe5,0xe7,0xe4,0xe7,0xe9,0xe7,0xe3,0xe0,0xe4,0xf0,0xda,0xe7,0xe3,0xed,0xd8,0x6c,0x41,0x35,0x2b,0x35,0x3f,0x4f,0x47,0x57,0x58,0x56,0x45,0x67,0x53,0x4a,0x73,0xaa,0xc7,0xc9,0xd3,0xdf,0xe8,0xdb,0xe6,0xe7,0xc7,0x59,0x29,0x43,0x2f,0x44,0x58,0x32,0x43,0x36,0x2a,0x71,0x86,0x68,0x59,0x2a,0x32,0x33,0x3d,0x2f,0x3b,0x27,0x5b,0x80,0xd6,0xe1,0xdf,0xd3,0xd8,0xdc,0xd4,0xd2,0xda,0xd2,0xd2,0xd0,0xd0,0xcc,0xcc,0xce,0xd2,0xca,0xca,0xca,0xca,0xc8,0xc8,0xc8,0xc6,0xc8,0xc8,0xc7,0xc5,0xc1,0xc1,0xc3,0xc5,0xc3,0xc4,0xc6,0xc6,0xc3,0xc1,0xc3,0xc6,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xbf,0xc1,0xbf,0xc1,0xc4,0xc4,0xc4,0xbf,0xc1,0xbf,0xc1,0xc3,0xc3,0xbf,0xbf,0xbf,0xc1,0xbd,0xc4,0xca,0xc8,0xc8,0xbf,0xac,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc6,0xc8,0xc6,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xc4,0xc3,0xc3,0xc3,0xc1,0xc1,0xc3}, {0xc3,0xc3,0xc3,0xc3,0xc4,0xc3,0xc3,0xc3,0xc4,0xc6,0xc6,0xc3,0xc1,0xc1,0xc3,0xc6,0xc2,0xc4,0xc6,0xc6,0xc4,0xc1,0xc2,0xc6,0xc6,0xc6,0xc6,0xc8,0xc8,0xca,0xca,0xca,0xca,0xcc,0xcc,0xcc,0xcc,0xce,0xd0,0xce,0xcf,0xd3,0xd5,0xd5,0xd8,0xd4,0xd4,0xdc,0xa6,0x6a,0x8d,0xb8,0xbe,0xcf,0xdd,0xe4,0xe6,0xeb,0xf0,0xef,0xed,0xed,0xf0,0xf2,0xf3,0xf1,0xf2,0xee,0xef,0xf1,0xf1,0xf0,0xf1,0xee,0xeb,0xe9,0xe5,0xe2,0xd0,0xb7,0x9f,0x7a,0x82,0x75,0x77,0x74,0x63,0x5f,0x5d,0x53,0x60,0x51,0x51,0x4e,0x54,0x63,0x54,0x67,0xc8,0xb6,0xd7,0xe7,0xe4,0xf6,0xee,0xeb,0xca,0xa3,0xa3,0xa3,0xac,0xdf,0xf3,0xed,0xe8,0xed,0xe7,0xf0,0xe5,0xfb,0xe7,0xc3,0x9c,0x6f,0x56,0x38,0x3c,0x41,0x42,0x42,0x45,0x36,0x34,0x40,0x34,0x42,0x3a,0x8a,0xb1,0xab,0xb3,0xb9,0xd9,0xe0,0xee,0xe5,0xe2,0xe9,0xf0,0xf1,0xe7,0xe5,0xe6,0xeb,0xf0,0xed,0xeb,0xe9,0xe9,0xec,0xe7,0xe9,0xed,0xed,0xe9,0xe2,0xe3,0xe9,0xe5,0xe7,0xe7,0xf4,0xe9,0xcf,0xca,0xbc,0x59,0x40,0x3a,0x3c,0x2c,0x28,0x52,0x32,0x70,0x3a,0x43,0x4f,0xbc,0xcc,0xe7,0xd8,0xe0,0xeb,0xe9,0xdf,0xed,0xe9,0xd4,0xe5,0xc8,0xd4,0xd9,0x3f,0x35,0x45,0x47,0x50,0x2a,0x26,0x43,0x4a,0x34,0x4e,0x4d,0x51,0x48,0x3d,0x2e,0x3e,0x39,0x86,0xa4,0xaf,0xac,0xb4,0xb5,0xb5,0xd5,0xb7,0xd6,0xd6,0xd2,0xd2,0xd4,0xd4,0xd2,0xd0,0xce,0xce,0xca,0xc8,0xc8,0xc8,0xc8,0xc6,0xc4,0xc4,0xc6,0xc6,0xc7,0xc5,0xc5,0xc5,0xc5,0xc5,0xc3,0xc4,0xc6,0xc6,0xc1,0xbd,0xbf,0xc3,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc3,0xc3,0xbd,0xc4,0xc4,0xc4,0xc1,0xbd,0xc3,0xc3,0xc1,0xc3,0xc4,0xc4,0xc3,0xc1,0xc1,0xc3,0xc6,0xc4,0xc3,0xbf,0xbd,0xc3,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc4,0xc4,0xc4,0xc4,0xc6,0xc6,0xc6,0xc4,0xc3,0xc4,0xc4,0xc3,0xc1,0xc4,0xc3,0xc1,0xc3,0xc1,0xbf,0xc3}, {0xc6,0xc1,0xc1,0xc6,0xc6,0xc3,0xc3,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc2,0xc2,0xc3,0xc4,0xc4,0xc3,0xc2,0xc2,0xc6,0xc6,0xc4,0xc6,0xc8,0xca,0xc8,0xc6,0xcc,0xce,0xcc,0xcc,0xcc,0xce,0xce,0xce,0xd3,0xda,0xda,0xda,0xda,0xd4,0xd4,0xdc,0x91,0x64,0x97,0xcc,0xc8,0xc8,0xd0,0xe5,0xea,0xed,0xef,0xef,0xf0,0xf1,0xf2,0xf3,0xef,0xf2,0xf0,0xed,0xef,0xef,0xf0,0xed,0xee,0xef,0xf0,0xe8,0xe6,0xe7,0xd4,0xb9,0x81,0x6b,0x66,0x5d,0x76,0x6f,0x5d,0x56,0x54,0x53,0x4f,0x50,0x46,0x55,0x46,0x51,0x6d,0xab,0xcb,0xf2,0xe7,0xf8,0xf1,0xe9,0xe8,0xf6,0xf6,0xe9,0xe9,0xe7,0xe9,0xf8,0xe9,0xe2,0xf2,0xf3,0xeb,0xe9,0xf2,0xd8,0xec,0xe0,0xc7,0xbb,0x84,0x3f,0x3b,0x36,0x35,0x4f,0x4c,0x2e,0x30,0x40,0x3a,0x33,0x3b,0x6c,0xa0,0xae,0xa6,0xcd,0xd6,0xe0,0xe9,0xef,0xf6,0xe7,0xeb,0xed,0xef,0xf4,0xeb,0xf0,0xf1,0xed,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xef,0xef,0xeb,0xe4,0xe5,0xe9,0xe4,0xe5,0xee,0xe1,0xe9,0xde,0x85,0x50,0x3d,0x2f,0x33,0x44,0x2e,0x2c,0x54,0x3a,0x49,0x3f,0x36,0xa8,0xe1,0xe2,0xea,0xe6,0xe1,0xe7,0xd6,0xe9,0xe3,0xda,0xf1,0xe4,0xe2,0xf0,0xe4,0xcf,0xb4,0xba,0x31,0x27,0x56,0x23,0x30,0x17,0x1d,0x10,0x14,0x12,0x10,0x37,0x80,0x14,0x2f,0x1b,0x18,0x1b,0x16,0x1d,0x5d,0x37,0xb0,0x59,0xe3,0xc6,0xcc,0xce,0xd0,0xd0,0xd0,0xce,0xc8,0xc0,0xcc,0xc8,0xc6,0xcc,0xcc,0xc6,0xc4,0xc6,0xc8,0xc8,0xc7,0xc9,0xc9,0xc9,0xc7,0xc5,0xc4,0xc3,0xc3,0xc3,0xc3,0xc1,0xc1,0xc3,0xc4,0xc4,0xc3,0xc3,0xc4,0xc3,0xc1,0xbf,0xc1,0xca,0xc6,0xc6,0xc1,0xbd,0xc4,0xc1,0xc3,0xc4,0xc6,0xc6,0xc4,0xc1,0xc1,0xc3,0xbb,0xc3,0xc6,0xc6,0xc8,0xc6,0xc6,0xc8,0xc4,0xc6,0xc6,0xc6,0xc4,0xc4,0xc6,0xc6,0xc4,0xc4,0xc4,0xc3,0xc3,0xc4,0xc3,0xc3,0xc1,0xc6,0xc3,0xc1,0xc6,0xc3,0xc1,0xc6}, {0xc6,0xbf,0xbf,0xc6,0xca,0xc4,0xc3,0xc6,0xc4,0xc3,0xc3,0xc4,0xc8,0xc8,0xc4,0xc1,0xc2,0xc0,0xbf,0xc4,0xc8,0xca,0xc8,0xc6,0xcc,0xc8,0xc6,0xc8,0xca,0xca,0xc8,0xc4,0xc6,0xc8,0xca,0xca,0xce,0xd2,0xd4,0xd2,0xcf,0xd5,0xd5,0xd5,0xd8,0xd4,0xd4,0xde,0x92,0x71,0xb1,0xbd,0xba,0xc4,0xd8,0xde,0xe9,0xeb,0xea,0xee,0xf1,0xf3,0xf3,0xf1,0xf2,0xf4,0xf4,0xf2,0xf2,0xf1,0xf1,0xed,0xe5,0xeb,0xf0,0xe9,0xe2,0xe4,0xd6,0xbb,0x99,0x8c,0x63,0x67,0x69,0x5d,0x64,0x49,0x43,0x4f,0x54,0x54,0x4d,0x60,0x6f,0x64,0x89,0xb3,0xe3,0xeb,0xf4,0xe9,0xef,0xf4,0xf1,0xe7,0xef,0xf5,0xed,0xf1,0xef,0xeb,0xf2,0xf1,0xed,0xef,0xdc,0xf1,0xe5,0xe2,0xde,0xde,0x95,0x7e,0x74,0x4a,0x39,0x36,0x30,0x35,0x3b,0x50,0x2c,0x3b,0x46,0x3e,0x38,0x3a,0x8b,0xa3,0xa7,0xc2,0xda,0xea,0xec,0xed,0xe4,0xf6,0xeb,0xed,0xf3,0xe0,0xf0,0xeb,0xe9,0xe8,0xed,0xf2,0xef,0xec,0xee,0xeb,0xeb,0xed,0xe8,0xe2,0xe0,0xe5,0xe0,0xe7,0xe5,0xe7,0xe7,0xe6,0xbc,0xbc,0x40,0x3c,0x38,0x4c,0x50,0x48,0x46,0x55,0x48,0x6e,0xa1,0xe5,0xe2,0xe9,0xe7,0xe2,0xe1,0xe2,0xe7,0xe9,0xd6,0xe7,0xe9,0xe5,0xe7,0xe2,0xe5,0xe0,0xec,0xd2,0x8e,0x9a,0x4a,0x2d,0x2d,0x1c,0x4f,0x3a,0x39,0x41,0x2a,0x57,0x62,0x3b,0x37,0x41,0x7e,0x45,0x32,0x54,0x8e,0x5d,0x98,0x58,0xd4,0xd8,0xd6,0xd6,0xd0,0xca,0xca,0xce,0xcc,0xc4,0xcc,0xc4,0xc2,0xcc,0xce,0xc8,0xc6,0xca,0xc8,0xc6,0xc7,0xc7,0xc9,0xc7,0xc5,0xc1,0xc6,0xc3,0xc1,0xc4,0xc6,0xc8,0xc6,0xc6,0xc6,0xc4,0xc4,0xc4,0xc6,0xc4,0xc3,0xbf,0xbf,0xc4,0xbb,0xc1,0xc4,0xc3,0xc8,0xc1,0xc3,0xc4,0xc6,0xc4,0xc1,0xbd,0xbd,0xc1,0xc1,0xc8,0xc3,0xbf,0xc4,0xc4,0xbf,0xc1,0xc3,0xc4,0xc6,0xc4,0xc3,0xc4,0xc6,0xc6,0xc4,0xc6,0xc6,0xc4,0xc4,0xc4,0xc6,0xc4,0xbd,0xc4,0xc1,0xbf,0xc4,0xc3,0xc1,0xc6}, {0xc3,0xc8,0xc6,0xbf,0xbd,0xc4,0xc6,0xc1,0xc1,0xc6,0xc8,0xc1,0xbd,0xc1,0xc3,0xc1,0xc5,0xc9,0xc1,0xc3,0xc3,0xc3,0xc8,0xc3,0xc8,0xc6,0xc6,0xca,0xca,0xca,0xca,0xcc,0xc8,0xce,0xd5,0xc5,0xcc,0xce,0xd4,0xcc,0xd6,0xcc,0xd6,0xd8,0xd2,0xd6,0xd8,0xd9,0x8a,0x61,0xb8,0xb7,0xc5,0xbf,0xd8,0xde,0xde,0xed,0xf8,0xe9,0xf1,0xed,0xf6,0xf5,0xf3,0xef,0xeb,0xea,0xf1,0xf2,0xeb,0xf1,0xf4,0xeb,0xf3,0xe7,0xd4,0xde,0xd9,0xbc,0xa2,0x7f,0x5b,0x60,0x57,0x55,0x49,0x4f,0x46,0x49,0x4f,0x54,0x61,0x54,0x52,0x6b,0x79,0xac,0xdb,0xed,0xeb,0xf8,0xee,0xed,0xea,0xf4,0xe6,0xf2,0xeb,0xf2,0xf2,0xef,0xf4,0xec,0xec,0xf1,0xef,0xeb,0xeb,0xeb,0xe5,0xd7,0xc7,0x9f,0x9d,0x81,0x66,0x3a,0x40,0x3f,0x3a,0x45,0x3a,0x4d,0x4b,0x34,0x34,0x55,0x92,0x9a,0x99,0xc5,0xd8,0xf0,0xea,0xea,0xe9,0xeb,0xf4,0xec,0xed,0xed,0xed,0xed,0xf2,0xda,0xeb,0xf8,0xe5,0xe9,0xee,0xe0,0xe4,0xe7,0xe8,0xe9,0xdc,0xe6,0xed,0xe2,0xf1,0xe3,0xeb,0xf1,0xd2,0xc4,0x83,0x33,0x33,0x3f,0x56,0x42,0x37,0x42,0x3c,0xa5,0xde,0xdc,0xeb,0xe5,0xe0,0xe7,0xe4,0xdc,0xef,0xe3,0xd6,0xe7,0xe7,0xe5,0xeb,0xe2,0xe4,0xe9,0xe3,0xe1,0xdd,0xe2,0xb0,0x71,0x5f,0x31,0x3f,0x58,0x43,0x38,0x4a,0x59,0x67,0x51,0x3b,0x51,0xaa,0x58,0x39,0x45,0xa8,0x67,0x6c,0x62,0xca,0xd8,0xd4,0xd2,0xd2,0xce,0xca,0xcc,0xce,0xc6,0xcc,0xcc,0xca,0xc8,0xc6,0xc6,0xc6,0xc7,0xc7,0xcb,0xcb,0xc3,0xc0,0xc4,0xc4,0xc0,0xc4,0xc6,0xc1,0xc3,0xc3,0xbf,0xc3,0xbf,0xc6,0xc3,0xc1,0xc3,0xc4,0xc4,0xc4,0xc4,0xc4,0xc3,0xce,0xb7,0xbd,0xc4,0xc3,0xbf,0xc8,0xbb,0xc3,0xc4,0xbf,0xbf,0xc1,0xc1,0xbf,0xc3,0xc6,0xc8,0xc6,0xc6,0xc3,0xbf,0xc4,0xc3,0xc3,0xc4,0xc4,0xc6,0xc6,0xc6,0xc1,0xc3,0xc3,0xc3,0xc3,0xc4,0xc4,0xc4,0xbf,0xc8,0xc4,0xc4,0xb9,0xc3,0xc1,0xc3}, {0xbf,0xc3,0xc3,0xbd,0xbf,0xc3,0xc6,0xc3,0xc4,0xc6,0xc6,0xc3,0xc3,0xc4,0xc4,0xc3,0xc5,0xc7,0xc1,0xc4,0xc6,0xc8,0xce,0xca,0xc8,0xc6,0xc6,0xc8,0xc8,0xc6,0xc6,0xc8,0xcc,0xca,0xc9,0xcb,0xca,0xd0,0xd0,0xd0,0xd6,0xcc,0xd2,0xd4,0xd0,0xd8,0xdc,0xe3,0x8a,0x7b,0xa3,0xb7,0xc2,0xc4,0xce,0xe1,0xef,0xea,0xe4,0xe2,0xf4,0xf3,0xf0,0xeb,0xed,0xeb,0xf1,0xf9,0xf4,0xea,0xe9,0xf4,0xe5,0xe8,0xf6,0xf4,0xed,0xe2,0xdd,0xcb,0x8b,0x4e,0x6a,0x56,0x4c,0x52,0x4b,0x46,0x44,0x4a,0x41,0x4b,0x61,0x41,0x73,0x88,0x9f,0xaa,0xc8,0xed,0xe3,0xeb,0xf2,0xed,0xf2,0xf2,0xe8,0xf3,0xe8,0xf8,0xe9,0xed,0xe7,0xee,0xf0,0xe5,0xd6,0xf3,0xfa,0xe0,0xeb,0xe6,0xda,0xb7,0x95,0x59,0x3d,0x3f,0x39,0x4c,0x4c,0x50,0x3b,0x46,0x32,0x39,0x2f,0x84,0x9d,0x9a,0xa3,0xc4,0xe5,0xdc,0xe5,0xe9,0xeb,0xf0,0xe7,0xe5,0xe9,0xe7,0xf3,0xe2,0xf8,0xf1,0xe4,0xe0,0xfa,0xe5,0xeb,0xe9,0xe4,0xe7,0xda,0xe3,0xe5,0xe8,0xdc,0xe4,0xda,0xf0,0xdc,0xcc,0xdf,0xd1,0x42,0x40,0x51,0x3b,0x33,0x50,0x44,0x38,0x33,0x61,0x89,0x7f,0xca,0xeb,0xe3,0xe5,0xe0,0xe1,0xe7,0xd4,0xe9,0xe5,0xda,0xe3,0xe7,0xe3,0xe0,0xe1,0xdd,0xe8,0xe9,0xda,0xdf,0xdc,0xd7,0x8e,0x2d,0x60,0x46,0x52,0x52,0x69,0x4c,0x51,0x43,0x52,0xa1,0x5c,0x3a,0x5b,0xa2,0x73,0x50,0x4a,0xc0,0xcc,0xce,0xce,0xd0,0xce,0xca,0xce,0xce,0xc6,0xc8,0xc8,0xc6,0xc4,0xc4,0xc6,0xc9,0xcb,0xc9,0xcb,0xcb,0xc5,0xc4,0xc6,0xc6,0xc2,0xc4,0xc6,0xc1,0xc4,0xc6,0xc4,0xc8,0xc4,0xc8,0xc6,0xc4,0xc3,0xc1,0xbd,0xbd,0xbf,0xc4,0xc3,0xbb,0xbd,0xbd,0xc1,0xc3,0xbf,0xc1,0xb5,0xbf,0xc1,0xbd,0xc1,0xc3,0xc4,0xc3,0xc3,0xc1,0xbf,0xbf,0xc4,0xc6,0xc8,0xc1,0xc1,0xc1,0xc3,0xc4,0xc4,0xc3,0xc3,0xc4,0xc4,0xc3,0xc1,0xc3,0xc3,0xc1,0xbf,0xc1,0xc3,0xc3,0xbb,0xbd,0xbf,0xc3,0xbf}, {0xbb,0xbd,0xbf,0xc1,0xc3,0xc3,0xc3,0xc3,0xc4,0xc3,0xc1,0xc3,0xc4,0xc6,0xc4,0xc3,0xc4,0xc6,0xc0,0xc4,0xc6,0xc4,0xc4,0xbd,0xc8,0xc6,0xc6,0xc8,0xc6,0xc4,0xc4,0xc6,0xd0,0xc8,0xbe,0xce,0xcc,0xd2,0xcc,0xd4,0xc6,0xc2,0xd0,0xd6,0xd4,0xd8,0xd4,0xd3,0x7f,0x88,0xb5,0xac,0xba,0xbd,0xd6,0xd8,0xe5,0xe9,0xeb,0xf4,0xf6,0xf3,0xed,0xf6,0xfb,0xf4,0xf0,0xed,0xef,0xf2,0xea,0xdc,0xf0,0xf2,0xe1,0xcc,0xe1,0xe5,0xe2,0xb9,0x55,0x63,0x4d,0x54,0x59,0x4c,0x4d,0x46,0x41,0x42,0x4a,0x57,0x52,0x5e,0x47,0x5f,0x8a,0xc9,0xe1,0xe9,0xea,0xf4,0xf4,0xec,0xed,0xeb,0xf5,0xf1,0xea,0xf4,0xe5,0xee,0xe5,0xed,0xeb,0xf7,0xf2,0xee,0xdf,0xe7,0xe0,0xd7,0xe0,0xdb,0xbe,0x7c,0x58,0x3b,0x36,0x4e,0x34,0x3a,0x40,0x2e,0x2d,0x32,0x55,0x8e,0x9b,0x88,0xa1,0xb8,0x90,0xaf,0xc3,0xbf,0xa7,0xa4,0xda,0xde,0xe0,0xe2,0xe5,0xf2,0xc0,0xe5,0xe8,0xf6,0xe5,0xed,0xdf,0xd0,0xe1,0xe2,0xeb,0xdc,0xea,0xdd,0xe5,0xad,0x7f,0x97,0xc1,0x79,0x81,0xa0,0x57,0x36,0x3c,0x31,0x3d,0x38,0x41,0x2d,0x39,0x69,0xb4,0xb4,0xdb,0xe7,0xd4,0xdc,0xe4,0xe8,0xe7,0xc8,0xe0,0xe3,0xe4,0xe3,0xe3,0xdf,0xbf,0xdd,0xd8,0xce,0xd3,0xcf,0xd4,0xd5,0xd4,0xc1,0x1c,0x7d,0x43,0x55,0x2f,0x56,0x1e,0x41,0x43,0x61,0x6e,0x49,0x3e,0x71,0x7b,0x65,0x50,0x69,0xa1,0xd2,0xcc,0xcc,0xd0,0xd0,0xcc,0xce,0xce,0xc6,0xc4,0xc4,0xc6,0xc6,0xc6,0xc6,0xc9,0xc9,0xc5,0xc5,0xc5,0xc5,0xc4,0xc4,0xc4,0xc4,0xc4,0xc6,0xc0,0xc2,0xc4,0xc0,0xc0,0xb8,0xc2,0xc2,0xc2,0xc2,0xc0,0xbc,0xbe,0xc0,0xc4,0xc3,0xae,0xc3,0xc1,0xbf,0xc3,0xc1,0xbf,0xb5,0xbb,0xbd,0xbb,0xbf,0xbf,0xc3,0xc6,0xc6,0xc4,0xc3,0xc3,0xc3,0xc1,0xbf,0xc3,0xc3,0xc1,0xc3,0xc6,0xc6,0xc4,0xc3,0xc6,0xc3,0xc1,0xc1,0xc3,0xc3,0xbf,0xbd,0xc4,0xbf,0xc1,0xb5,0xc1,0xbf,0xc4,0xbf}, {0xbf,0xbd,0xc1,0xc6,0xc8,0xc3,0xbf,0xc1,0xc1,0xbd,0xbd,0xc3,0xc4,0xc4,0xc4,0xc4,0xc2,0xc6,0xc0,0xc4,0xc6,0xc1,0xbb,0xae,0xc8,0xc6,0xc6,0xc8,0xc8,0xc8,0xc8,0xca,0xce,0xc6,0xc1,0xce,0xd0,0xd2,0xce,0xd4,0xd8,0xd0,0xd2,0xce,0xd0,0xd6,0xd9,0xde,0x88,0x6c,0xb0,0xb0,0xba,0xaf,0xd2,0xe8,0xe4,0xed,0xeb,0xf6,0xef,0xf2,0xe7,0xef,0xed,0xf3,0xf1,0xed,0xe5,0xe9,0xf3,0xed,0xe9,0xfa,0xf4,0xd9,0xeb,0xe0,0xbd,0x66,0x6d,0x69,0x46,0x64,0x51,0x49,0x48,0x51,0x61,0x5d,0x5e,0x64,0x69,0x6a,0x51,0x6e,0x8b,0xca,0xd1,0xe1,0xf4,0xf4,0xeb,0xef,0xf3,0xef,0xfa,0xe8,0xf5,0xef,0xf2,0xe9,0xed,0xe6,0xf2,0xf4,0xe9,0xe9,0xf2,0xe9,0xeb,0xde,0xe7,0xe6,0xb5,0x68,0x61,0x41,0x3b,0x3b,0x38,0x2e,0x2d,0x2b,0x39,0x2c,0x50,0x9a,0x82,0x9a,0x9d,0x70,0x61,0x5d,0x7e,0x86,0x5f,0x69,0x61,0x8a,0x8b,0x92,0xb3,0xbe,0xc8,0xeb,0xf0,0xe4,0xe7,0xe6,0xf7,0xde,0xe7,0xcc,0xb3,0xa6,0x9c,0x7e,0x47,0x46,0x4c,0x5e,0x45,0x50,0x59,0x4a,0x6f,0x49,0x3c,0x37,0x48,0x5c,0x54,0x5d,0x4c,0x61,0x38,0x55,0x61,0xb7,0xe2,0xda,0xde,0xdc,0xe5,0xdc,0xdc,0xe3,0xea,0xd0,0xd2,0xc4,0x8a,0x63,0x53,0x3d,0x51,0x46,0x62,0x71,0x64,0x77,0x20,0xa6,0xf,0x11,0xf,0x11,0x25,0x17,0x35,0x54,0x11,0x5d,0x15,0x6c,0x18,0x24,0x23,0x3d,0x64,0xd2,0xd2,0xd0,0xd4,0xd2,0xce,0xd0,0xd0,0xc6,0xc6,0xc6,0xc8,0xca,0xca,0xc8,0xc7,0xc3,0xc3,0xc1,0xc1,0xc5,0xc4,0xc4,0xc4,0xc6,0xc4,0xc6,0xc0,0xc4,0xc6,0xbe,0xb8,0xaf,0xbe,0xbe,0xc0,0xc2,0xc2,0xc0,0xc2,0xc4,0xc4,0xc1,0xb3,0xc4,0xc4,0xc1,0xc3,0xc3,0xc4,0xbd,0xc1,0xbd,0xbb,0xbd,0xbb,0xbf,0xbf,0xc1,0xc3,0xc4,0xc6,0xc6,0xc4,0xc1,0xc6,0xc4,0xc3,0xc3,0xc6,0xc8,0xc6,0xc4,0xc4,0xc3,0xc1,0xc3,0xc3,0xc3,0xc1,0xc1,0xc4,0xc1,0xc1,0xbb,0xc3,0xc3,0xc4,0xc1}, {0xc4,0xbf,0xbf,0xc4,0xc4,0xc1,0xbf,0xc3,0xc3,0xc1,0xc1,0xc4,0xc4,0xc3,0xc3,0xc4,0xc0,0xc4,0xbe,0xc4,0xc8,0xc6,0xc4,0xb8,0xc6,0xc4,0xc6,0xc8,0xc8,0xc8,0xc8,0xca,0xca,0xc8,0xcc,0xca,0xd2,0xce,0xd2,0xd2,0xda,0xd6,0xd6,0xce,0xd2,0xd8,0xd4,0xda,0x82,0x78,0xa4,0xa0,0xa0,0xb6,0xc4,0xb9,0xb6,0xb6,0xa7,0xb2,0xc4,0xe7,0xe9,0xec,0xee,0xf3,0xf0,0xf1,0xef,0xe8,0xe7,0xd6,0xc3,0xae,0x91,0x70,0x71,0x74,0x84,0x5b,0x86,0x68,0x5a,0x54,0x45,0x4c,0x58,0x4e,0x59,0x59,0x49,0x63,0x5f,0x4b,0x49,0x81,0xbb,0xd0,0xd1,0xe3,0xe2,0xee,0xf4,0xed,0xe9,0xf1,0xe4,0xe6,0xf4,0xea,0xf1,0xd4,0xf5,0xf4,0xf6,0xe5,0xf4,0xe9,0xef,0xee,0xe7,0xeb,0xe6,0xda,0xa2,0x67,0x4a,0x3c,0x3a,0x51,0x45,0x2a,0x32,0x38,0x3e,0x2b,0x32,0x82,0x8d,0x73,0x49,0x45,0x4d,0x4d,0x56,0x6b,0x5b,0x41,0x33,0x27,0x27,0x23,0x28,0x38,0x69,0x9f,0xd6,0xf0,0xe7,0xec,0xe5,0xd2,0xb1,0x66,0x2e,0x34,0x38,0x38,0x2d,0x28,0x2d,0x50,0x68,0x42,0x30,0x3a,0x4c,0x48,0x2b,0x37,0x3f,0x40,0x2b,0x48,0x3c,0x31,0x3c,0x34,0x3a,0x3f,0x59,0xad,0xc6,0xd2,0xd6,0xed,0xe2,0xe1,0xc9,0xa0,0x4b,0x34,0x22,0x24,0x1e,0x30,0x5d,0x9f,0xb6,0xc2,0x93,0x61,0x53,0xb8,0xa2,0x9f,0x52,0x2f,0x5e,0x3d,0x3e,0x62,0x90,0xcc,0xb1,0xcb,0xb0,0xa6,0xbd,0xc0,0xb8,0xbe,0xd4,0xd2,0xd4,0xd2,0xce,0xd0,0xd2,0xca,0xc8,0xc8,0xc8,0xca,0xca,0xc8,0xc7,0xc3,0xc7,0xc3,0xc2,0xc6,0xc6,0xc4,0xc2,0xc4,0xc2,0xc4,0xbe,0xc4,0xc8,0xc4,0xc2,0xb8,0xc4,0xc0,0xc0,0xc2,0xc2,0xc0,0xc0,0xc0,0xc3,0xbb,0xc4,0xbf,0xc4,0xc4,0xc1,0xc3,0xc8,0xc3,0xc4,0xbf,0xbf,0xc1,0xbd,0xc3,0xc2,0xc4,0xc2,0xc0,0xc0,0xc0,0xc0,0xc0,0xc4,0xc2,0xbe,0xbe,0xc0,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc4,0xc2,0xc0,0xc0,0xc4,0xc0,0xc2,0xbe,0xc2,0xbe,0xc4,0xc2,0xc2}, {0xc6,0xc1,0xbb,0xbd,0xbf,0xbf,0xc1,0xc4,0xc3,0xc3,0xc3,0xc3,0xc1,0xbf,0xbd,0xbd,0xc0,0xc2,0xba,0xbe,0xc2,0xc6,0xcc,0xc6,0xc6,0xc6,0xc6,0xc8,0xc8,0xc6,0xc6,0xc8,0xc8,0xca,0xd2,0xc8,0xd2,0xce,0xd6,0xd0,0xca,0xce,0xd6,0xd3,0xda,0xd9,0xcc,0xca,0x6d,0x6d,0x80,0x8a,0x88,0x6b,0x71,0x67,0x6a,0x6d,0x62,0x5b,0x5e,0x75,0x8c,0xa0,0xc6,0xed,0xef,0xeb,0xf6,0xed,0xc0,0x87,0x6c,0x57,0x52,0x57,0x5b,0x54,0x61,0x57,0x57,0x64,0x4c,0x47,0x51,0x50,0x6e,0x50,0x4b,0x3f,0x4f,0x4d,0x56,0x4a,0x4f,0x8f,0xc1,0xc4,0xc4,0xda,0xe7,0xe7,0xc8,0xb7,0xae,0xce,0xc8,0xef,0xe6,0xe3,0xed,0xe5,0xed,0xe4,0xeb,0xdf,0xf0,0xe9,0xef,0xe0,0xee,0xce,0xbb,0xa9,0x65,0x5c,0x37,0x2d,0x35,0x62,0x30,0x35,0x2d,0x36,0x2a,0x2b,0x41,0x8c,0x87,0x66,0x40,0x5f,0xa5,0xbf,0xd6,0xca,0xa9,0x90,0x4c,0x29,0x27,0x25,0x26,0x1d,0x2b,0x4c,0x7d,0xee,0xeb,0xe9,0xea,0x9f,0x72,0x34,0x21,0x22,0x30,0x2f,0x35,0x38,0x7f,0xce,0xc8,0x9c,0x2e,0x2f,0x38,0x2b,0x36,0x35,0x40,0x52,0x53,0x41,0x34,0x52,0x42,0x3f,0x49,0x3f,0x46,0x3d,0x71,0xba,0xce,0xe3,0xe6,0xde,0x8b,0x47,0x22,0x29,0x1e,0x2a,0x45,0x60,0x2c,0x41,0x69,0x9d,0x8a,0x40,0x5d,0xce,0xca,0xc8,0xb1,0x3f,0x24,0x35,0x8e,0x9a,0xc5,0xd6,0xdc,0xd0,0xd9,0xda,0xd6,0xce,0xdc,0xce,0xd2,0xd0,0xd0,0xce,0xca,0xd0,0xd2,0xca,0xcc,0xc8,0xc6,0xc4,0xc6,0xc6,0xc7,0xc7,0xc9,0xc7,0xc6,0xc4,0xc4,0xc2,0xc0,0xbc,0xc2,0xc2,0xba,0xbe,0xc0,0xc0,0xc4,0xc0,0xc4,0xc0,0xbe,0xc0,0xc2,0xc0,0xbe,0xbe,0xc1,0xbb,0xcc,0xbb,0xc3,0xc3,0xc1,0xc1,0xc3,0xc1,0xc3,0xbd,0xc1,0xc3,0xbd,0xc4,0xbc,0xc0,0xc2,0xc2,0xc0,0xbe,0xbc,0xba,0xc2,0xc0,0xbe,0xbe,0xbe,0xc0,0xc0,0xc2,0xc4,0xc0,0xc0,0xc4,0xc2,0xc0,0xc0,0xc2,0xbc,0xc2,0xbe,0xc6,0xbc,0xc2,0xbe,0xc2}, {0xc4,0xc0,0xbc,0xbe,0xc0,0xc2,0xc2,0xc2,0xc2,0xc4,0xc2,0xbe,0xbe,0xc0,0xbe,0xb8,0xc0,0xc2,0xbb,0xbd,0xbf,0xc0,0xc8,0xc6,0xc8,0xc6,0xc6,0xc8,0xc8,0xc6,0xc6,0xc8,0xc8,0xcc,0xce,0xca,0xcc,0xce,0xd4,0xd4,0xd6,0xd8,0xd5,0xcd,0xd6,0xdc,0xd4,0xd8,0x67,0x6b,0x7f,0x8d,0x7f,0x5f,0x64,0x58,0x6e,0x72,0x67,0x4e,0x40,0x3b,0x46,0x54,0x68,0xbb,0xe9,0xeb,0xe6,0xc6,0x91,0x5f,0x46,0x3f,0x3e,0x47,0x53,0x4e,0x47,0x44,0x40,0x37,0x3c,0x54,0x55,0x4d,0x63,0x56,0x4e,0x49,0x4d,0x57,0x47,0x4f,0x52,0x66,0xbe,0xb8,0xbf,0xd6,0xcc,0x8e,0x48,0x3f,0x35,0x33,0x2c,0x34,0x3c,0x4d,0x83,0xb4,0xe6,0xe4,0xfd,0xf4,0xd8,0xf1,0xe4,0x9a,0x77,0x3b,0x28,0x38,0x2e,0x46,0x45,0x3b,0x40,0x2d,0x3a,0x2c,0x25,0x1c,0x25,0x25,0x54,0x97,0x7c,0x73,0x58,0x60,0x7c,0x7e,0x5f,0x2b,0x23,0x31,0x2a,0x34,0x52,0x33,0x23,0x20,0x24,0x29,0x6f,0xdd,0xde,0xf4,0xe4,0x83,0x48,0x20,0x23,0x24,0x48,0x44,0x2e,0x23,0x21,0x2f,0x52,0x6f,0x65,0x2c,0x22,0x22,0x2f,0x29,0x3d,0x4f,0x2d,0x4b,0x4e,0x1e,0x38,0x43,0x4c,0x35,0x2a,0x3d,0x39,0x9b,0xd0,0xe0,0xe9,0xdd,0x7e,0x28,0x24,0x1c,0x32,0x4a,0x3b,0x3d,0x40,0x3a,0x2a,0x42,0x6a,0x7f,0xb1,0xcc,0xd4,0xdb,0xc5,0x26,0x2a,0x25,0x76,0xbc,0xb5,0xd2,0xda,0xd2,0xd4,0xdf,0xd0,0xaf,0xe9,0xca,0xd2,0xd0,0xd0,0xce,0xca,0xce,0xd0,0xca,0xcc,0xca,0xc6,0xc6,0xc9,0xc9,0xc9,0xc7,0xc7,0xc9,0xc6,0xc2,0xc2,0xc4,0xc0,0xba,0xc2,0xc2,0xb9,0xbb,0xbd,0xbd,0xc2,0xc0,0xc2,0xc0,0xbf,0xc0,0xc0,0xc0,0xc0,0xc0,0xbe,0xbe,0xc2,0xbc,0xbe,0xc0,0xc2,0xc0,0xbc,0xbe,0xc0,0xb8,0xc0,0xc2,0xba,0xc4,0xaa,0xb3,0xbe,0xc4,0xc6,0xc6,0xc4,0xc4,0xc0,0xc2,0xc2,0xc2,0xc0,0xc0,0xc0,0xc2,0xc2,0xba,0xb8,0xbe,0xc2,0xc0,0xbe,0xc0,0xbe,0xc0,0xbe,0xc0,0xbe,0xbe,0xbe,0xc2}, {0xc2,0xc2,0xc2,0xc4,0xc6,0xc6,0xc0,0xbc,0xc2,0xc4,0xc2,0xbe,0xc2,0xc8,0xc4,0xba,0xc0,0xc4,0xbf,0xc0,0xc2,0xc4,0xca,0xc6,0xc8,0xc8,0xc8,0xca,0xca,0xc8,0xc8,0xca,0xca,0xcc,0xc6,0xcc,0xc6,0xd2,0xd0,0xd6,0xd0,0xd4,0xd5,0xd0,0xda,0xdc,0xce,0xd2,0x76,0x54,0x65,0xa5,0x78,0x75,0x76,0x86,0x7a,0x71,0x66,0x56,0x54,0x45,0x41,0x3d,0x43,0x89,0xc6,0xef,0xe7,0x9c,0x61,0x46,0x41,0x52,0x51,0x4d,0x5f,0x63,0x4b,0x42,0x3d,0x34,0x42,0x4e,0x4c,0x43,0x58,0x45,0x6e,0x47,0x4b,0x3f,0x45,0x56,0x9d,0xb2,0xca,0xbc,0xb1,0x72,0x3c,0x3c,0x44,0x5b,0x56,0x3c,0x35,0x2d,0x34,0x28,0x40,0x53,0xac,0xf0,0xe1,0xe8,0xef,0xaa,0x47,0x36,0x3c,0x3b,0x33,0x3a,0x35,0x36,0x48,0x35,0x44,0x35,0x28,0x2c,0x26,0x22,0x21,0x20,0x3f,0x95,0x95,0x8a,0x71,0x5e,0x37,0x25,0x28,0x3f,0x2a,0x34,0x35,0x5b,0x61,0x59,0x67,0x56,0x4b,0x50,0x68,0xe9,0xed,0xe9,0xeb,0x8c,0x31,0x29,0x44,0x68,0x69,0x31,0x32,0x37,0x36,0x2a,0x30,0x2a,0x2d,0x30,0x33,0x48,0x41,0x7a,0x6e,0x3c,0x24,0x2d,0x2e,0x33,0x6f,0x82,0x64,0x60,0x9a,0x4f,0x47,0x99,0xd6,0xe6,0xe3,0xe2,0xb5,0x54,0x41,0x57,0x5f,0x8e,0x2b,0x28,0x36,0x26,0x53,0x87,0x92,0xac,0xd1,0xd1,0xd3,0xd9,0xcc,0x38,0x26,0x34,0x5e,0xca,0xcd,0xc4,0xdd,0xce,0xc6,0xc6,0xdc,0xdc,0xd0,0xdc,0xd4,0xd2,0xd2,0xd0,0xca,0xce,0xce,0xc6,0xcc,0xca,0xca,0xcc,0xcf,0xcd,0xc7,0xc3,0xc5,0xc9,0xc6,0xc2,0xc4,0xc8,0xc6,0xbc,0xbf,0xc2,0xbd,0xc2,0xc2,0xc2,0xc6,0xc4,0xc6,0xc4,0xc4,0xc2,0xc0,0xbd,0xbf,0xc2,0xbe,0xc6,0xb6,0xc2,0xbc,0xc0,0xc4,0xc4,0xc0,0xc4,0xc4,0xbc,0xc2,0xc4,0xba,0xc2,0xba,0xc0,0xc4,0xc2,0xc0,0xbe,0xc0,0xc2,0xbe,0xc2,0xc4,0xc4,0xc2,0xc0,0xc0,0xc0,0xbe,0xb5,0xb3,0xba,0xc2,0xc2,0xc0,0xbe,0xc4,0xbe,0xc2,0xbc,0xc4,0xbc,0xc2,0xc2}, {0xc4,0xc6,0xc6,0xc4,0xc4,0xc6,0xc4,0xc2,0xbf,0xc2,0xc6,0xc2,0xbf,0xc0,0xc2,0xc4,0xc4,0xc2,0xc2,0xc2,0xc4,0xc4,0xc4,0xc4,0xc6,0xca,0xc4,0xc6,0xc6,0xc4,0xcc,0xca,0xcb,0xcb,0xca,0xca,0xce,0xd0,0xd0,0xd0,0xd6,0xd4,0xd3,0xd6,0xd8,0xd8,0xb9,0x8d,0x7c,0x49,0x67,0xa3,0x98,0x8d,0x8f,0x62,0x51,0x5d,0x56,0x52,0x4d,0x66,0x4c,0x4a,0x52,0x87,0xd3,0xe9,0xde,0x9a,0x4d,0x43,0x5f,0x88,0x46,0x42,0x66,0x55,0x4f,0x47,0x41,0x58,0x5a,0x44,0x41,0x42,0x37,0x67,0x48,0x81,0x44,0x53,0x5f,0x84,0xbc,0xc3,0xc2,0xba,0x7a,0x5f,0x76,0x9c,0xad,0x92,0x57,0x49,0x44,0x42,0x43,0x3f,0x49,0x49,0x76,0xbc,0xef,0xe9,0xbb,0x54,0x33,0x38,0x3c,0x37,0x37,0x3a,0x35,0x33,0x34,0x30,0x61,0x6d,0x31,0x2c,0x31,0x29,0x23,0x2b,0x57,0x99,0xa4,0xab,0xa8,0x78,0x35,0x32,0x50,0x92,0x4a,0x29,0x38,0x7e,0xe5,0x82,0x62,0xc0,0xb7,0x7b,0x71,0xc4,0xef,0xe9,0xe4,0x97,0x4f,0x70,0xae,0x74,0x99,0x92,0x3b,0x28,0x3f,0x5a,0x41,0x28,0x2d,0x29,0x41,0x43,0x31,0x53,0x44,0x3f,0x31,0x2a,0x24,0x27,0x33,0x6b,0xcb,0xc6,0xe5,0xdc,0xca,0xb2,0xd0,0xe0,0xe9,0xde,0xc8,0xc5,0xc3,0x8f,0xce,0xdb,0x9d,0x7f,0xb3,0xa0,0xa7,0xc9,0xcc,0xd4,0xd4,0xce,0xe0,0xd9,0xc6,0x37,0x41,0x39,0xae,0xd4,0xc8,0xd2,0xd6,0xd8,0xda,0xd8,0xd6,0xd4,0xd6,0xda,0xd0,0xd6,0xce,0xca,0xce,0xc6,0xc2,0xd0,0xcc,0xcc,0xca,0xca,0xcb,0xcb,0xcb,0xc9,0xc6,0xc6,0xc6,0xc4,0xc4,0xc2,0xc2,0xc4,0xc4,0xc0,0xc2,0xc4,0xc0,0xc0,0xc4,0xc2,0xc2,0xc4,0xbd,0xc0,0xc0,0xbf,0xc2,0xc0,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xc0,0xc0,0xbd,0xc4,0xbf,0xbf,0xc2,0xb5,0xc8,0xbf,0xbd,0xbd,0xbf,0xc2,0xc2,0xc0,0xbf,0xbf,0xbd,0xbf,0xbb,0xc2,0xbf,0xc6,0xc0,0xc0,0xc2,0xc0,0xbf,0xbf,0xc0,0xc2,0xc2,0xc2,0xc4,0xc2,0xbf,0xbd,0xbf,0xc0,0xbf,0xbf}, {0xc2,0xc4,0xc4,0xc2,0xc4,0xc4,0xc4,0xc0,0xc4,0xc2,0xbf,0xc0,0xc4,0xc8,0xc4,0xbf,0xc4,0xc4,0xc0,0xbd,0xbf,0xc6,0xc8,0xc4,0xc0,0xc6,0xc4,0xc8,0xc8,0xc4,0xcc,0xcc,0xc8,0xc8,0xcb,0xca,0xcc,0xce,0xd0,0xd2,0xca,0xd8,0xd4,0xcf,0xcf,0xd3,0x83,0x44,0x62,0x50,0x61,0x7e,0x8f,0x9e,0x93,0x6c,0x50,0x78,0x85,0x66,0x6d,0xb3,0xaa,0x7e,0xae,0xb6,0xe7,0xf3,0xe9,0xcd,0x9e,0x97,0x9e,0xa8,0x66,0x5c,0x81,0x6d,0x4e,0x49,0x55,0x7c,0x79,0x5d,0x59,0x30,0x48,0x4b,0x48,0x4b,0x57,0x56,0x52,0x5c,0xca,0xce,0xbc,0xa5,0x9a,0xa8,0xc2,0xab,0x76,0x60,0x78,0x73,0x57,0x42,0x37,0x3a,0x49,0x4f,0x89,0xf6,0xe9,0xfa,0x76,0x2e,0x33,0x36,0x31,0x3e,0x36,0x24,0x33,0x3e,0x3f,0x2e,0x5b,0x7d,0x50,0x29,0x22,0x2e,0x24,0x34,0x94,0x9b,0xa9,0xc2,0xd7,0xa7,0x90,0x65,0xa1,0xb9,0xa8,0x87,0x99,0xdb,0xe7,0xbb,0x99,0xd0,0xe4,0xe2,0xcc,0xe0,0xeb,0xe7,0xe2,0x69,0x54,0xce,0xa2,0xa8,0xe7,0xe3,0x82,0x6c,0x76,0xc4,0xb0,0x31,0x22,0x1f,0x31,0x52,0x44,0x26,0x1e,0x29,0x24,0x1d,0x36,0x36,0x33,0xa1,0xac,0xcf,0xd6,0xdf,0xd9,0xbf,0xcc,0xde,0xe4,0xd4,0xd8,0xdf,0xde,0xe9,0xd1,0xc9,0xd9,0xd2,0xc4,0xd6,0xd6,0xe2,0xdf,0xe2,0xdc,0xde,0xdf,0xe3,0x6a,0x39,0x35,0x4c,0xb9,0xe1,0xd0,0xd6,0xd8,0xd8,0xd6,0xd6,0xd6,0xd4,0xd4,0xd2,0xd8,0xd4,0xd6,0xd4,0xce,0xc8,0xc8,0xc8,0xca,0xca,0xca,0xca,0xcb,0xcb,0xc9,0xc9,0xc4,0xc6,0xc6,0xc6,0xc4,0xc4,0xc4,0xc4,0xc4,0xc0,0xbf,0xbb,0xb9,0xc0,0xc4,0xbd,0xc0,0xc4,0xc0,0xc2,0xc0,0xbd,0xc2,0xc0,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xc0,0xbf,0xc2,0xbb,0xc2,0xc0,0xbb,0xc2,0xbf,0xc0,0xc0,0xc0,0xc2,0xc2,0xc0,0xc0,0xc0,0xbf,0xbf,0xbb,0xc2,0xbf,0xc4,0xc0,0xc0,0xc4,0xbf,0xbd,0xc2,0xc2,0xbf,0xbd,0xc0,0xc0,0xc0,0xbf,0xbf,0xbd,0xbf,0xbf,0xc0}, {0xc0,0xc2,0xc2,0xc0,0xc2,0xc4,0xc2,0xc0,0xc2,0xc4,0xc4,0xc2,0xc0,0xc2,0xc2,0xc0,0xb3,0xbd,0xc0,0xbf,0xc3,0xc6,0xbd,0xae,0xc0,0xc8,0xc6,0xca,0xc6,0xc1,0xc8,0xc8,0xc6,0xc8,0xcd,0xcc,0xcc,0xcc,0xd0,0xd4,0xd0,0xd7,0xd0,0xd8,0xd6,0xd8,0x8b,0x62,0x53,0x39,0x51,0x7c,0x9c,0xbf,0xbe,0x91,0x71,0x76,0x91,0x9e,0xa8,0x95,0xa1,0xe5,0xdf,0xd7,0xdc,0xe0,0xed,0xdb,0xb5,0xca,0xb5,0xb5,0xbd,0xa0,0x92,0x81,0x5c,0x65,0x93,0xbd,0x8d,0x61,0x37,0x5a,0x75,0x45,0x46,0x50,0x54,0x6c,0x44,0x51,0x76,0x90,0x69,0x79,0x58,0x89,0xb6,0x75,0x5c,0x50,0x3c,0x42,0x35,0x86,0x50,0x5f,0x60,0x65,0x93,0xde,0xf0,0xf0,0x66,0x35,0x46,0x43,0x47,0x6a,0x41,0x29,0x39,0x5f,0x6c,0x3a,0x6b,0x99,0x6c,0x52,0x3c,0x20,0x2a,0x3b,0x89,0xb1,0xcc,0xd6,0xdc,0xd5,0xd2,0x9c,0xab,0xad,0xb8,0xca,0xda,0xe3,0xe1,0xe1,0xe9,0xe5,0xec,0xf0,0xd6,0xd4,0xf1,0xf5,0xd5,0x62,0x58,0xd8,0xe1,0xe5,0xdb,0xe4,0xc3,0xa5,0xa7,0x85,0x5f,0x2e,0x26,0x4a,0x6c,0x5a,0x3a,0x2d,0x28,0x2a,0x3e,0x41,0x3a,0x4a,0x46,0x56,0x62,0xe0,0xd9,0xdb,0xd2,0xc2,0xce,0xe7,0xe9,0xce,0xdc,0xe2,0xde,0xda,0xd8,0xc6,0xc4,0xd0,0xe0,0xd6,0xe1,0xde,0xe5,0xda,0xdc,0xe0,0xdc,0xdc,0x55,0x34,0x2d,0x79,0xd8,0xd8,0xd6,0xd8,0xda,0xd6,0xd4,0xd4,0xd6,0xd4,0xd0,0xcc,0xd0,0xc6,0xce,0xd4,0xca,0xcc,0xd2,0xcc,0xca,0xcb,0xcb,0xcb,0xcb,0xc9,0xc7,0xc7,0xc6,0xc6,0xc6,0xc4,0xc4,0xc4,0xc2,0xc2,0xb7,0xbd,0xc2,0xc2,0xc0,0xc4,0xbd,0xaa,0xbd,0xc2,0xc0,0xc2,0xbf,0xbb,0xc0,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xc0,0xbf,0xbf,0xb7,0xc2,0xbd,0xc0,0xb9,0xbd,0xc2,0xc2,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc2,0xbd,0xc2,0xbf,0xc4,0xc0,0xc2,0xc4,0xbd,0xbd,0xc4,0xc4,0xbb,0xb9,0xbf,0xbd,0xbf,0xc0,0xbf,0xbd,0xbf,0xc0,0xc2}, {0xbf,0xc0,0xc0,0xc0,0xc0,0xc2,0xc2,0xc0,0xc0,0xc4,0xc6,0xc0,0xbd,0xbd,0xbf,0xc0,0xc0,0xc4,0xc2,0xbd,0xc1,0xc4,0xc1,0xb7,0xc2,0xc6,0xc4,0xc6,0xc4,0xc1,0xc6,0xc4,0xc8,0xca,0xcd,0xcf,0xcc,0xce,0xd0,0xd4,0xd2,0xcc,0xca,0xd8,0xd5,0xda,0xb8,0xc6,0x9c,0x4a,0x4b,0x72,0xb3,0xd2,0xd8,0xca,0xac,0x8a,0x81,0x78,0x8f,0xba,0xe5,0xed,0xe3,0xe4,0xe9,0xe7,0xf4,0xd8,0xb3,0xcc,0xd6,0xc2,0xa4,0xa5,0x95,0x97,0xa8,0x7f,0xd4,0xd0,0x7c,0x45,0x44,0x55,0x45,0x3f,0x34,0x47,0x3b,0x3c,0x77,0x55,0x5e,0x4f,0x60,0x63,0xaf,0xcb,0xad,0x7b,0x51,0x71,0x43,0x3f,0x49,0xc9,0xc4,0x7a,0xda,0xeb,0xe7,0xfb,0xf2,0xe7,0x68,0x6b,0x86,0x99,0x8f,0x8f,0x67,0x3c,0x4c,0x55,0x9c,0x34,0x60,0xae,0x87,0x6b,0x4d,0x22,0x25,0x47,0x9a,0xa9,0xc4,0xdf,0xe9,0xea,0xcd,0xd5,0xd6,0xde,0xd0,0xe9,0xe4,0xca,0xe0,0xe2,0xe9,0xe4,0xef,0xed,0xde,0xd4,0xeb,0xe3,0xd6,0x5f,0x53,0x98,0xe2,0xef,0xde,0xd4,0xd4,0xd5,0x97,0x82,0x4e,0x45,0x7c,0xb7,0xa1,0x7b,0x50,0x63,0x5d,0x5d,0x6c,0x36,0x55,0x60,0x9e,0xe0,0xf0,0xdb,0xce,0xde,0xc8,0xbe,0xd6,0xed,0xed,0xd4,0xd9,0xda,0xe9,0xdd,0xe3,0xd8,0xe1,0xe1,0xed,0xe0,0xe1,0xe3,0xee,0xd8,0xe3,0xde,0xe4,0xd0,0x88,0x24,0x34,0xca,0xde,0xce,0xcc,0xdf,0xda,0xd6,0xd4,0xd4,0xd6,0xd6,0xd2,0xcc,0xda,0xd2,0xd4,0xd4,0xce,0xce,0xd2,0xcc,0xc9,0xc9,0xcb,0xcb,0xcb,0xc9,0xc7,0xc5,0xc8,0xc6,0xc4,0xc2,0xc2,0xc2,0xc0,0xc0,0xc2,0xc2,0xc2,0xbf,0xbb,0xc0,0xbf,0xb1,0xbb,0xc0,0xbd,0xc0,0xbf,0xb9,0xbf,0xbf,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xbd,0xbd,0xbd,0xbf,0xbb,0xc2,0xb9,0xbd,0xc2,0xc0,0xbf,0xbd,0xbf,0xc0,0xc2,0xc0,0xc4,0xc4,0xbf,0xc4,0xbf,0xc4,0xc0,0xc2,0xc2,0xbd,0xbd,0xc0,0xc0,0xbb,0xb9,0xbd,0xbf,0xbf,0xc0,0xc0,0xc0,0xc0,0xc0,0xc2}, {0xbf,0xc0,0xc0,0xc0,0xc0,0xc2,0xc2,0xc0,0xc4,0xc0,0xbb,0xbb,0xbf,0xc2,0xc0,0xbd,0xc4,0xc2,0xc1,0xbf,0xc1,0xc1,0xc1,0xc1,0xbf,0xc1,0xbd,0xc0,0xc4,0xc4,0xca,0xc8,0xca,0xca,0xca,0xcc,0xce,0xce,0xce,0xce,0xcf,0xd2,0xd8,0xd2,0xd8,0xdc,0xce,0xd4,0xae,0x49,0x57,0x6d,0x96,0xb1,0xed,0xf0,0xe3,0xf2,0xea,0xe2,0xed,0xf8,0xe7,0xe8,0xe5,0xd5,0xe7,0xea,0xda,0xcf,0xc3,0xc4,0xe6,0xe2,0xf0,0xee,0xdc,0xe6,0xeb,0xcc,0xb7,0xdd,0x8f,0x37,0x4e,0x34,0x3a,0x34,0x2e,0x3a,0x38,0x42,0x48,0x43,0xbe,0x9f,0x96,0xd2,0xf8,0xe2,0xe1,0xd0,0x8b,0x63,0x73,0x92,0xaa,0xb7,0xc6,0xe1,0xe9,0xef,0xed,0xe9,0xeb,0xf4,0xeb,0xb7,0xca,0x90,0x84,0x81,0x50,0x3d,0x8f,0x7b,0x85,0x3d,0x39,0xae,0x94,0x7f,0x64,0x36,0x1c,0x2e,0x6c,0x8d,0xcb,0xdc,0xe7,0xe7,0xde,0xe2,0xdf,0xe1,0xe1,0xe2,0xe2,0xe2,0xe9,0xee,0xed,0xe9,0xeb,0xe0,0xde,0xca,0xe2,0xf2,0xbb,0x63,0x56,0x85,0xc4,0xed,0xeb,0xe0,0xd4,0xb7,0xae,0xd2,0xd0,0xe9,0xdc,0xd8,0xbe,0x74,0x3d,0x33,0x3b,0x41,0x42,0x30,0x50,0x38,0x64,0xc2,0xd2,0xe9,0xe7,0xe0,0xcc,0xbf,0xe1,0xe5,0xe7,0xdd,0xd4,0xd2,0xd4,0xeb,0xe3,0xe9,0xe9,0xed,0xdc,0xec,0xe5,0xed,0xdd,0xed,0xd6,0xce,0xb9,0x9a,0x4b,0x44,0x44,0xc6,0xd8,0xd0,0xe4,0xcf,0xd8,0xd6,0xd6,0xd6,0xd6,0xd6,0xd4,0xd2,0xcc,0xd2,0xcc,0xca,0xd0,0xce,0xc8,0xcc,0xcb,0xcb,0xcb,0xcb,0xcb,0xc9,0xc7,0xc5,0xc6,0xc2,0xc0,0xbe,0xc0,0xc0,0xc2,0xc2,0xc4,0xc0,0xc0,0xbf,0xbb,0xbd,0xc0,0xbd,0xbd,0xbf,0xb9,0xbb,0xbd,0xbb,0xbf,0xbd,0xbf,0xbf,0xc0,0xc0,0xc0,0xbf,0xbf,0xbf,0xbd,0xbf,0xc6,0xbb,0xbf,0xc2,0xc2,0xbf,0xc0,0xc0,0xbf,0xbd,0xbf,0xc2,0xc4,0xc0,0xc2,0xc4,0xbf,0xc2,0xbb,0xc0,0xbf,0xc2,0xc0,0xbf,0xbd,0xbb,0xbb,0xbd,0xbf,0xbd,0xbf,0xbf,0xbf,0xbf,0xc0,0xc0,0xc0,0xbf}, {0xc0,0xc0,0xc0,0xc0,0xc0,0xc2,0xc2,0xbf,0xbf,0xbd,0xbb,0xbb,0xbd,0xc0,0xc0,0xbf,0xbb,0xbb,0xbd,0xc3,0xc3,0xbf,0xbd,0xbd,0xc1,0xc1,0xbb,0xbf,0xc4,0xc4,0xca,0xc6,0xc8,0xc8,0xc8,0xca,0xcc,0xcc,0xcc,0xca,0xcf,0xd7,0xd8,0xd2,0xd8,0xd5,0xd4,0xce,0x9e,0x42,0x40,0x57,0xc2,0xe2,0xe3,0xe7,0xfb,0xeb,0xe7,0xf6,0xd7,0xe9,0xee,0xed,0xde,0xdb,0xe3,0xe5,0xe3,0xd8,0xc4,0xc0,0xd1,0xf0,0xe2,0xe6,0xef,0xe2,0xe9,0xe8,0xe7,0x95,0x55,0x3c,0x9f,0xa3,0xaa,0x7a,0x2c,0x38,0x33,0x42,0x47,0x48,0xd0,0xd7,0xe7,0xe9,0xe4,0xed,0xe0,0xe1,0xe1,0xa8,0xa8,0xb3,0xa2,0xaf,0xd6,0xe0,0xf6,0xe6,0xd0,0xe7,0xde,0xe9,0xe5,0xb1,0xd2,0xd2,0xb3,0x9e,0x8b,0x9e,0xd7,0xbb,0x74,0x3d,0x29,0x69,0x9c,0x8d,0x6a,0x39,0x28,0x2c,0x8b,0xb1,0xc0,0xdb,0xeb,0xe7,0xdb,0xe7,0xe9,0xe2,0xe2,0xe0,0xe7,0xed,0xe4,0xe0,0xe2,0xed,0xe7,0xd4,0xd4,0xc2,0xd6,0xec,0xb8,0x6a,0x4b,0x60,0xa8,0xe3,0xe7,0xf6,0xec,0xe9,0xeb,0xe5,0xe5,0xe3,0xdf,0xe4,0xb8,0x62,0x59,0x29,0x2e,0x50,0x4d,0x3d,0x45,0xd5,0xca,0xe1,0xe1,0xda,0xe3,0xd4,0xc8,0xbc,0xe1,0xdf,0xdf,0xdb,0xc6,0xbe,0xc8,0xe2,0xef,0xe4,0xe0,0xe7,0xeb,0xe9,0xe9,0xdb,0xeb,0xdd,0xe6,0x94,0x87,0x55,0x3a,0x30,0x82,0xda,0xd8,0xc1,0xd4,0xd6,0xd6,0xd6,0xd6,0xd6,0xd4,0xd4,0xd4,0xd4,0xb8,0xc6,0xc4,0xc4,0xd0,0xce,0xc6,0xcc,0xcb,0xcb,0xc9,0xc9,0xc9,0xc9,0xc5,0xc3,0xc2,0xc0,0xbe,0xbe,0xc0,0xc2,0xc2,0xc0,0xbd,0xbb,0xc0,0xc4,0xc0,0xbf,0xbf,0xbd,0xbd,0xbf,0xb7,0xbb,0xbb,0xbb,0xbf,0xbd,0xbd,0xbf,0xbf,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xbd,0xc0,0xb7,0xc0,0xbd,0xc4,0xbf,0xc0,0xc0,0xc0,0xbf,0xc0,0xc4,0xc2,0xbf,0xbf,0xc0,0xbd,0xc0,0xb9,0xbf,0xbd,0xc0,0xbf,0xc0,0xbf,0xb7,0xb9,0xbf,0xc0,0xbd,0xbf,0xbd,0xbd,0xbd,0xbf,0xbf,0xbd,0xbb}, {0xc0,0xc0,0xc0,0xc0,0xc0,0xc2,0xc0,0xbf,0xbb,0xbf,0xc0,0xbf,0xbd,0xbd,0xbd,0xbf,0xc5,0xc2,0xbf,0xbb,0xbf,0xc4,0xc6,0xc6,0xc3,0xc4,0xbf,0xc2,0xc4,0xc2,0xc8,0xc4,0xc9,0xc9,0xca,0xca,0xcc,0xcc,0xcc,0xcc,0xcd,0xcb,0xbb,0xce,0xce,0xcd,0xd6,0xcf,0xd0,0x4d,0x48,0x64,0xb7,0xed,0xeb,0xde,0xde,0xed,0xec,0xf9,0xea,0xef,0xe2,0xde,0xcc,0xd9,0xd9,0xde,0xed,0xd6,0xb3,0xb1,0xcc,0xe5,0xf1,0xe3,0xe9,0xec,0xda,0xe9,0xbb,0x79,0x64,0x3f,0xab,0xc1,0xc6,0xde,0x57,0x38,0x3d,0x3d,0x44,0x53,0xc4,0xe3,0xc6,0xe7,0xe5,0xe7,0xea,0xe7,0xed,0xe7,0xee,0xe7,0xee,0xf7,0xef,0xe9,0xf8,0xe9,0xe9,0xe7,0xfc,0xe0,0xf1,0xad,0xba,0xeb,0xed,0xda,0xeb,0xd2,0xe7,0xcc,0xcd,0xa9,0x2f,0x3c,0xbf,0xb3,0x75,0x42,0x22,0x1c,0x43,0x86,0xbb,0xdc,0xdb,0xf8,0xed,0xe9,0xe4,0xe7,0xdc,0xe2,0xe9,0xe9,0xef,0xe7,0xe9,0xf7,0xe5,0xca,0xc0,0xc0,0xdc,0xed,0xba,0x57,0x46,0x5b,0x95,0xe9,0xef,0xdb,0xe7,0xe7,0xe1,0xed,0xfc,0xe4,0xe0,0xe2,0xad,0x70,0x42,0x17,0x26,0x2c,0x22,0x33,0xb5,0xe4,0xd8,0xe5,0xe7,0xdc,0xe9,0xe9,0xc8,0xbe,0xdc,0xe3,0xe1,0xce,0xbd,0xb1,0xc8,0xe1,0xe1,0xbc,0xf1,0xe9,0xe6,0xe0,0xe7,0xed,0xe2,0xdc,0xa6,0x7d,0x57,0x39,0x39,0x32,0xa0,0xe2,0xde,0xc0,0xd2,0xd1,0xd8,0xd6,0xd6,0xd2,0xd2,0xd0,0xd2,0xd2,0xcc,0xd2,0xd4,0xd0,0xce,0xcc,0xc8,0xc6,0xcb,0xc9,0xc9,0xc9,0xc7,0xc7,0xc4,0xc2,0xc2,0xc0,0xc0,0xc0,0xc2,0xc0,0xbf,0xbb,0xc5,0xbf,0xbd,0xbb,0xb9,0xbf,0xc3,0xc1,0xbd,0xbf,0xbb,0xbd,0xbd,0xbb,0xc1,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xb9,0xae,0xb7,0xbf,0xb7,0xc0,0xbd,0xbf,0xc0,0xc0,0xbf,0xc0,0xc2,0xbf,0xb5,0xbd,0xc0,0xbd,0xc0,0xb9,0xbf,0xbd,0xc0,0xc0,0xc0,0xbd,0xbb,0xbb,0xbf,0xc0,0xbf,0xbd,0xbd,0xbf,0xbf,0xbf,0xbf,0xbd,0xbb}, {0xc0,0xc0,0xc0,0xbf,0xc0,0xc0,0xbf,0xbd,0xc2,0xc0,0xbf,0xbf,0xc2,0xc2,0xbb,0xb1,0xbc,0xc2,0xc3,0xbf,0xc3,0xc8,0xc1,0xb5,0xbf,0xc3,0xc0,0xc6,0xc6,0xc4,0xca,0xc8,0xc7,0xcb,0xce,0xce,0xcc,0xcc,0xce,0xd2,0xd3,0xcd,0xae,0xd2,0xd0,0xd6,0xcf,0xb3,0xc8,0x4d,0x46,0x5a,0x88,0xd4,0xe1,0xd4,0xef,0xf0,0xeb,0xef,0xe2,0xef,0xea,0xd2,0xda,0xd2,0xe0,0xef,0xe5,0xd4,0xc2,0xb6,0xc4,0xe2,0xe9,0xf0,0xeb,0xee,0xed,0xbb,0xa3,0x63,0x51,0x3c,0x83,0xca,0xcd,0xe5,0x89,0x31,0x60,0x34,0x34,0x3f,0xb9,0xd6,0xc2,0xe0,0xe6,0xf0,0xf2,0xe2,0xe9,0xed,0xe7,0xf0,0xf1,0xdc,0xdf,0xf0,0xe6,0xe8,0xeb,0xeb,0xeb,0xe7,0xe4,0xac,0x9f,0xde,0xeb,0xe7,0xf1,0xed,0xda,0xc7,0xd8,0x86,0x42,0x32,0x67,0xcd,0xb5,0x71,0x2a,0x1e,0x2b,0x33,0x92,0xd2,0xde,0xe5,0xed,0xd6,0xe2,0xe7,0xef,0xe7,0xe2,0xe7,0xe7,0xed,0xea,0xe9,0xde,0xd6,0xc6,0xc2,0xda,0xeb,0xd2,0x6b,0x4e,0x5b,0x76,0xe7,0xe9,0xeb,0xe9,0xea,0xec,0xe7,0xdc,0xf0,0xdd,0xce,0xbe,0x76,0x3b,0x43,0x44,0x3a,0x53,0x59,0x99,0xb6,0xe5,0xe4,0xe1,0xe5,0xe5,0xdf,0xd6,0xce,0xdc,0xe9,0xe4,0xc6,0xc4,0xb6,0xc6,0xdf,0xde,0xca,0xde,0xdf,0xe1,0xeb,0xdf,0xdd,0xe4,0x92,0x6b,0x4c,0x42,0x2b,0x2c,0x24,0x64,0xd7,0xc0,0xd7,0xde,0xdd,0xdb,0xd8,0xd4,0xd0,0xd0,0xce,0xce,0xce,0xd2,0xce,0xd2,0xce,0xc2,0xc6,0xce,0xc6,0xc9,0xc9,0xc7,0xc7,0xc7,0xc5,0xc2,0xc2,0xc4,0xc4,0xc2,0xc4,0xc4,0xc0,0xbb,0xb5,0xbf,0xc3,0xc5,0xc1,0xbf,0xc5,0xc1,0xb2,0xb9,0xc1,0xbf,0xc1,0xbf,0xbb,0xc1,0xbf,0xc0,0xc0,0xc0,0xc2,0xc0,0xc0,0xbf,0xbf,0xc0,0xb7,0xa0,0xbb,0xbd,0xb7,0xbd,0xbf,0xbd,0xc0,0xc0,0xbd,0xbf,0xbf,0xb7,0xae,0xbf,0xc2,0xbf,0xc4,0xbd,0xc2,0xc0,0xc4,0xc2,0xbf,0xbd,0xbf,0xbf,0xbd,0xbd,0xbf,0xbd,0xbf,0xc2,0xc2,0xc0,0xbf,0xbf,0xbf}, {0xc1,0xc1,0xc1,0xbf,0xbd,0xbd,0xbd,0xbf,0xc3,0xbf,0xbf,0xbf,0xbb,0xbd,0xc1,0xbf,0xc1,0xc3,0xb2,0xba,0xc5,0xbc,0xbe,0xc0,0xc3,0xc3,0xc3,0xc4,0xc4,0xc4,0xc4,0xc4,0xb8,0xc7,0xc4,0xca,0xca,0xd0,0xc8,0xd2,0xce,0xd2,0xd6,0xd2,0xdf,0xce,0xd6,0xc1,0xbb,0x47,0x40,0x4e,0x73,0xba,0xea,0xe7,0xf0,0xe3,0xe9,0xe5,0xeb,0xee,0xd8,0xd2,0xda,0xd4,0xde,0xe1,0xe7,0xc8,0xbc,0xc0,0xb6,0xcc,0xef,0xd4,0xe9,0xe7,0xe2,0xe6,0xdb,0x73,0x5a,0x49,0x47,0xcd,0xd3,0xd6,0x59,0x5e,0xc1,0x4b,0x32,0x3f,0x87,0xc5,0xce,0xd7,0xe0,0xe3,0xe9,0xe9,0xe7,0xe7,0xeb,0xee,0xed,0xe0,0xf1,0xee,0xea,0xf2,0xed,0xe7,0xeb,0xe1,0xe9,0xd3,0x9a,0xd8,0xed,0xe8,0xeb,0xd8,0xc2,0x95,0xb4,0x94,0x49,0x40,0x34,0xd2,0xe2,0xc4,0x36,0x20,0x23,0x2b,0x8b,0xc0,0xd0,0xe9,0xe0,0xeb,0xe9,0xe7,0xe7,0xe9,0xeb,0xeb,0xe7,0xe5,0xd4,0xf1,0xcc,0xc2,0xb6,0xd4,0xe0,0xf1,0xe5,0x8e,0x69,0x5a,0x7c,0xdd,0xee,0xf0,0xea,0xe8,0xe1,0xe3,0xe7,0xde,0xee,0xbd,0x7c,0x5c,0x25,0x2a,0x2f,0x1f,0x25,0x3a,0x65,0xa3,0xe5,0xdc,0xec,0xe4,0xd8,0xe9,0xd0,0xc4,0xe2,0xd7,0xde,0xce,0xd4,0xc9,0xc4,0xd8,0xe0,0xe5,0xf1,0xe0,0xe5,0xe9,0xe9,0xe2,0xc8,0x7d,0x58,0x32,0x29,0x2b,0x32,0x2d,0x49,0xca,0xd6,0xda,0xd7,0xd3,0xd6,0xd6,0xd6,0xca,0xd5,0xd0,0xd2,0xce,0xd2,0xd0,0xcc,0xca,0xce,0xc8,0xc6,0xcc,0xc9,0xc9,0xc8,0xc6,0xc4,0xc4,0xc4,0xc4,0xc2,0xbf,0xc0,0xc2,0xbf,0xbf,0xc0,0xbe,0xc0,0xc2,0xb3,0xbb,0xc0,0xb9,0xc0,0xbd,0xbf,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbb,0xb2,0xbb,0xbd,0xbd,0xc3,0xbf,0xb9,0xbd,0xbd,0xbd,0xc1,0xc1,0xbd,0xbb,0xbf,0xc3,0xbd,0xbd,0xbb,0xbb,0xbd,0xbd,0xbf,0xbf,0xbf,0xbf,0xbd,0xbf,0xbf,0xbf,0xbf,0xbf,0xc0,0xc0,0xc0,0xbf,0xbf,0xbd,0xbf,0xbf,0xb9,0xb5,0xc0,0xb7,0xbf,0xbb,0xbd,0xc0}, {0xc1,0xc1,0xbf,0xbf,0xbf,0xc1,0xbf,0xbf,0xc1,0xb9,0xbb,0xc1,0xc1,0xbf,0xc3,0xc6,0xbf,0xbf,0xb8,0xc0,0xc4,0xc0,0xc0,0xc2,0xc3,0xc3,0xc3,0xc3,0xc4,0xc4,0xc6,0xc6,0xc4,0xc9,0xc7,0xc7,0xc8,0xce,0xce,0xd4,0xd4,0xd0,0xca,0xe3,0xca,0xdc,0xdd,0xc4,0x75,0x57,0x3b,0x68,0x7d,0xa2,0xcc,0xef,0xe9,0xf4,0xfb,0xdc,0xec,0xdb,0xda,0xa0,0x8a,0x82,0x93,0xc8,0xb1,0x67,0x50,0x60,0x89,0xd8,0xe7,0xf4,0xf0,0xe3,0xe9,0xb1,0x93,0x52,0x55,0x38,0x40,0x9b,0xe1,0xb5,0xc9,0xda,0xd2,0x83,0x34,0x38,0x47,0x84,0x91,0x9c,0xd4,0xe8,0xf2,0xe5,0xf9,0xee,0xeb,0xec,0xf7,0xe9,0xeb,0xee,0xef,0xe1,0xe1,0xf8,0xdc,0xe9,0xeb,0xeb,0xa8,0xca,0xe5,0xef,0xe7,0xe3,0x7d,0x33,0x6c,0x86,0x70,0x59,0x47,0xe2,0xe9,0xcb,0x70,0x1e,0x20,0x2b,0x63,0xae,0xd9,0xcc,0xdc,0xdc,0xe7,0xe7,0xe7,0xe7,0xe9,0xeb,0xe8,0xe7,0xe7,0xed,0xd7,0xa8,0xaa,0xe2,0xe4,0xe4,0xee,0xa3,0x6e,0x55,0x57,0xce,0xee,0xed,0xe2,0xe9,0xec,0xee,0xe9,0xe4,0xdf,0x94,0x75,0x2e,0x3a,0x32,0x32,0x2e,0x20,0x5a,0x6c,0x9e,0xe5,0xde,0xe6,0xf0,0xe9,0xd4,0xb5,0xb2,0xe1,0xe7,0xdc,0xc1,0xbd,0xc6,0xb7,0xe9,0xe8,0xda,0xed,0xe7,0xe0,0xe5,0xeb,0xda,0xba,0x75,0x6f,0x30,0x39,0x33,0x34,0x2a,0x40,0xba,0xdc,0xd4,0xe3,0xd0,0xd8,0xd8,0xda,0xd2,0xda,0xd2,0xce,0xcc,0xd0,0xd2,0xce,0xcc,0xd0,0xce,0xc8,0xc8,0xcb,0xc9,0xc6,0xc6,0xc6,0xc6,0xc4,0xc4,0xc6,0xbd,0xc0,0xc6,0xc2,0xbf,0xc0,0xc2,0xbd,0xbd,0xbb,0xc0,0xc0,0xbd,0xc0,0xbf,0xbf,0xbd,0xbd,0xbd,0xbf,0xbf,0xbd,0xbd,0xbb,0xbf,0xbd,0xbb,0xbd,0xbf,0xbf,0xc1,0xbd,0xbf,0xc1,0xc3,0xbf,0xbd,0xbd,0xbf,0xc4,0xbf,0xbb,0xbf,0xc3,0xc3,0xbf,0xbb,0xc1,0xbf,0xbf,0xbf,0xbf,0xc1,0xc1,0xbf,0xc2,0xc0,0xc0,0xbf,0xbd,0xbd,0xbd,0xbd,0xbd,0xbb,0xc2,0xbb,0xbd,0xbd,0xbd,0xc0}, {0xc3,0xbf,0xbd,0xbf,0xc1,0xc3,0xc1,0xbf,0xbd,0xb2,0xb5,0xbd,0xbb,0xb5,0xb9,0xbd,0xbc,0xb6,0xbe,0xc2,0xc2,0xc2,0xc2,0xc4,0xc0,0xc0,0xc0,0xc0,0xc1,0xc3,0xc4,0xc4,0xc9,0xc7,0xcb,0xc7,0xca,0xcc,0xd4,0xd0,0xc6,0xde,0xd2,0xd0,0xe3,0xd3,0xd9,0xce,0xba,0x8f,0x35,0x45,0x76,0x90,0xc8,0xda,0xe6,0xe9,0xe5,0xe7,0xf0,0xe6,0xaf,0x61,0x4f,0x45,0x41,0x50,0x46,0x37,0x34,0x49,0x6a,0xe7,0xe0,0xe0,0xe9,0xcc,0xa2,0x8d,0x63,0x42,0x3a,0x3e,0x3d,0x6f,0xc0,0xdc,0xe9,0xe4,0xd0,0x7f,0x33,0x40,0x3a,0x69,0x6c,0x8a,0xaf,0xdd,0xd8,0xed,0xe7,0xe2,0xe9,0xe9,0xee,0xe4,0xed,0xf0,0xf4,0xe6,0xf6,0xe9,0xe0,0xe0,0xf0,0xda,0xb6,0xc7,0xf0,0xe9,0xda,0xc6,0x5c,0x49,0xb2,0xbb,0x40,0x2c,0x26,0x6f,0xd2,0xd2,0x63,0x3f,0x20,0x24,0x57,0x95,0xbb,0xd0,0xdc,0xf0,0xe1,0xe3,0xe5,0xe5,0xe7,0xe7,0xe7,0xe9,0xf0,0xed,0xb1,0xc0,0xab,0xe2,0xed,0xf5,0xe0,0xe2,0x84,0x4c,0x59,0xde,0xe4,0xea,0xf1,0xe9,0xe0,0xe7,0xe5,0xe0,0xce,0x80,0x4d,0x22,0x2b,0x1f,0x41,0x3f,0x83,0x5e,0x5f,0x92,0xbe,0xd6,0xe1,0xdc,0xe2,0x80,0x2f,0x3d,0x6a,0x6e,0x39,0x26,0x29,0x51,0x90,0xd4,0xe8,0xde,0xe6,0xe6,0xe3,0xe5,0xce,0xb1,0xa5,0x68,0x38,0x2d,0x2f,0x25,0x2b,0x37,0x52,0xb3,0xcc,0xe2,0xd3,0xd5,0xd8,0xd6,0xd6,0xd0,0xd8,0xd2,0xd0,0xd2,0xd2,0xd4,0xd0,0xcc,0xd0,0xd0,0xc8,0xc6,0xca,0xc6,0xc4,0xc4,0xc8,0xc8,0xc6,0xc2,0xc0,0xb5,0xb9,0xc0,0xbf,0xb7,0xb9,0xbd,0xbb,0xb5,0xc1,0xc4,0xbf,0xc1,0xc1,0xbf,0xbd,0xbb,0xbb,0xbb,0xbd,0xbd,0xbd,0xbb,0xc3,0xbf,0xbf,0xbd,0xbb,0xbf,0xc1,0xbf,0xbd,0xbf,0xc1,0xc1,0xc1,0xbf,0xbd,0xbd,0xc1,0xbf,0xc1,0xc1,0xbd,0xb5,0xb9,0xc1,0xbf,0xbf,0xbd,0xbd,0xbd,0xbd,0xbf,0xbf,0xc1,0xc1,0xbd,0xbd,0xbd,0xbd,0xbb,0xbb,0xbf,0xbd,0xc1,0xbf,0xbb,0xc1,0xbb,0xc1}, {0xc1,0xbf,0xbf,0xbf,0xc1,0xc1,0xc1,0xbf,0xc3,0xbb,0xbd,0xc3,0xc1,0xbb,0xbd,0xbf,0xbe,0xb2,0xc0,0xc2,0xbe,0xc4,0xc0,0xc2,0xbe,0xbe,0xc0,0xc0,0xc3,0xc3,0xc2,0xc3,0xc7,0xc2,0xcd,0xc9,0xcc,0xca,0xd4,0xca,0xc6,0xd4,0xca,0xd2,0xd0,0xd6,0xdb,0xd6,0xbb,0x93,0x3d,0x4b,0x69,0x75,0xa1,0xd4,0xe2,0xe0,0xea,0xea,0xd7,0xeb,0xd8,0xca,0xc2,0x86,0x6f,0x44,0x41,0x67,0x65,0x90,0xa6,0xe3,0xee,0xed,0xe2,0xd4,0xa0,0x95,0x6a,0x5a,0x5d,0x4a,0x44,0x66,0xc8,0xd2,0xdb,0xd3,0xd6,0x86,0x3f,0x38,0x42,0x46,0x5b,0x5c,0x70,0x9c,0xf4,0xf2,0xe9,0xef,0xf5,0xf1,0xe2,0xdb,0xf4,0xeb,0xe8,0xe7,0xe3,0xe7,0xf1,0xee,0xe2,0xeb,0x99,0xa3,0xe9,0xe0,0xd4,0xb0,0x37,0x21,0x98,0x81,0x33,0x29,0x2d,0x2f,0x92,0xeb,0xbd,0x77,0x1f,0x20,0x6c,0x87,0xb3,0xc0,0xd0,0xce,0xdd,0xe0,0xe5,0xe7,0xe7,0xe7,0xe7,0xe9,0xe9,0xe1,0xc6,0xcb,0xca,0xe2,0xef,0xe7,0xe7,0xea,0xaa,0x6f,0x70,0xd8,0xeb,0xec,0xe7,0xe9,0xe9,0xeb,0xd0,0xad,0xa6,0x8b,0x6e,0x2d,0x45,0x1c,0x4e,0x3c,0x6b,0x59,0x32,0x66,0xde,0xef,0xdc,0xe6,0xde,0xa8,0x2e,0x1d,0x24,0x20,0x2b,0x3b,0x44,0x51,0xb6,0xe0,0xe8,0xe5,0xe4,0xe8,0xe4,0xdc,0xd2,0x80,0x7c,0x88,0x60,0x4d,0x32,0x2d,0x3a,0x48,0xbe,0xe4,0xdc,0xd0,0xdc,0xd2,0xda,0xd4,0xcc,0xca,0xd0,0xce,0xd0,0xd6,0xd4,0xd2,0xce,0xcc,0xcc,0xc8,0xc6,0xcb,0xca,0xc8,0xc6,0xc6,0xc6,0xc6,0xc4,0xc2,0xc4,0xbf,0xc0,0xc6,0xc2,0xbf,0xbf,0xbf,0xbf,0xb2,0xc3,0xc3,0xbb,0xc3,0xc1,0xbf,0xbd,0xbb,0xbb,0xbb,0xbd,0xbd,0xbd,0xbb,0xbf,0xbb,0xbf,0xbf,0xbb,0xbf,0xc3,0xb9,0xbb,0xbd,0xbf,0xbf,0xbf,0xc1,0xbf,0xbd,0xbf,0xbd,0xbf,0xbf,0xb5,0xae,0xb5,0xc4,0xbd,0xbd,0xbd,0xbb,0xbb,0xbb,0xbd,0xbd,0xc1,0xbf,0xbf,0xbd,0xbd,0xbf,0xbd,0xbd,0xbd,0xbd,0xbd,0xc1,0xb9,0xc3,0xbb,0xc1}, {0xbf,0xc1,0xc1,0xc1,0xbf,0xbf,0xbd,0xbd,0xb7,0xb7,0xbb,0xbb,0xb9,0xbb,0xbd,0xb9,0xc2,0xb4,0xc0,0xc0,0xbc,0xc6,0xc0,0xc0,0xc0,0xc0,0xc2,0xc4,0xc5,0xc4,0xc4,0xc4,0xc7,0xc2,0xcb,0xc7,0xcd,0xcb,0xd2,0xc6,0xd3,0xd7,0xd9,0xcb,0xdc,0xd4,0xd6,0xdb,0x91,0xa6,0x46,0x44,0x5f,0x88,0xaa,0xca,0xd4,0xe3,0xef,0xde,0xeb,0xee,0xe5,0xc4,0x93,0x8b,0x77,0x79,0x7d,0x6c,0x70,0x6c,0x83,0xb1,0xd0,0xef,0xd6,0x9f,0x8d,0x82,0x6a,0x56,0x40,0x53,0x4b,0x66,0x8a,0xdc,0xe1,0xd9,0xf0,0xb2,0x45,0x36,0x40,0x5e,0x5c,0x5c,0x6b,0x79,0xd0,0xda,0xe9,0xe9,0xe1,0xe9,0xed,0xe9,0xed,0xe5,0xed,0xd9,0xe5,0xcf,0xc3,0xdd,0xdd,0x88,0x2e,0x48,0xe7,0xe2,0xd1,0x6f,0x30,0x48,0x7d,0x2d,0x38,0x1d,0x1d,0x2a,0x68,0x72,0xd4,0x7c,0x2a,0x23,0x35,0x70,0xaf,0xb8,0xd4,0xda,0xdb,0xe0,0xe8,0xea,0xeb,0xe9,0xe9,0xe9,0xf2,0xdf,0xcc,0xb5,0xbf,0xe9,0xe5,0xe7,0xe9,0xeb,0xa1,0x66,0x64,0xca,0xef,0xe5,0xe7,0xe7,0xd8,0xe5,0xda,0xa6,0x80,0x6f,0x6e,0x4a,0x48,0x1b,0x48,0x48,0x32,0x25,0x29,0x55,0xb5,0xe4,0xe4,0xe5,0xeb,0xdc,0x82,0x41,0x34,0x49,0x56,0x72,0x6c,0x93,0xb1,0xe5,0xee,0xde,0xe1,0xdf,0xe0,0xe7,0xd0,0xa6,0x5c,0x6b,0x6a,0x5d,0x3a,0x37,0x42,0x5e,0xc5,0xc9,0xe0,0xdc,0xda,0xd2,0xda,0xd8,0xce,0xce,0xd2,0xd2,0xcc,0xd0,0xd4,0xd2,0xce,0xd0,0xce,0xc4,0xc2,0xcc,0xc8,0xc8,0xc8,0xc8,0xc6,0xc4,0xc2,0xc2,0xbd,0xbd,0xbf,0xbf,0xb9,0xbb,0xbb,0xb5,0xc4,0xb5,0xc3,0xc1,0xb7,0xc3,0xc1,0xbd,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xb9,0xbf,0xc1,0xbd,0xbf,0xc1,0xb7,0xbd,0xbf,0xbf,0xbd,0xbf,0xbf,0xbf,0xbd,0xc3,0xbb,0xb7,0xbb,0xbd,0xb9,0xb9,0xbd,0xbd,0xbf,0xbf,0xbd,0xbd,0xbd,0xbf,0xbf,0xc1,0xc1,0xbf,0xbf,0xc1,0xc1,0xc1,0xc1,0xbd,0xbb,0xbb,0xbf,0xb9,0xc3,0xbb,0xc1}, {0xbf,0xc1,0xc1,0xc1,0xbf,0xbd,0xbd,0xbd,0xbf,0xc1,0xc4,0xc1,0xbd,0xc3,0xc4,0xbd,0xc2,0xba,0xc0,0xbe,0xc0,0xc4,0xc2,0xc0,0xc0,0xc2,0xc4,0xc4,0xc5,0xc4,0xc4,0xc2,0xc8,0xc6,0xc9,0xc7,0xc9,0xc9,0xce,0xca,0xcb,0xd1,0xc4,0xce,0x90,0x42,0x86,0x46,0x43,0x5d,0x3d,0x38,0x83,0x3f,0x5d,0x67,0x55,0xca,0xeb,0xeb,0xd8,0xba,0xb3,0x7d,0x81,0x7c,0x86,0x6b,0x6d,0x79,0x7d,0x8d,0x68,0x82,0xbd,0xc6,0xc4,0x9a,0x72,0x80,0x7e,0x67,0x3f,0x40,0x41,0x87,0x97,0xca,0xcb,0xe3,0xcc,0xda,0x6a,0x33,0x32,0x2f,0x3d,0x3f,0x53,0x75,0xb1,0xe7,0xfa,0xe1,0xfb,0xeb,0xe9,0xeb,0xf0,0xf9,0xe9,0x93,0x2f,0x39,0x66,0x84,0x5f,0x2f,0x21,0x30,0xc0,0xe7,0xcd,0x55,0x30,0x2b,0x5f,0x2b,0x23,0x38,0x29,0x1f,0x58,0x8d,0xc8,0xb1,0x24,0x33,0x30,0x5b,0x93,0xb8,0xcd,0xd2,0xdc,0xe0,0xe8,0xeb,0xeb,0xe9,0xe9,0xe9,0xe3,0xdd,0x87,0x59,0x5f,0xc1,0xd6,0xe4,0xe3,0xb3,0x4a,0x2c,0x3c,0xb9,0xe7,0xde,0xda,0xed,0xe7,0xeb,0xd2,0x9b,0x70,0x62,0x4f,0x28,0x3d,0x4a,0x2e,0x29,0x3f,0x1b,0x2a,0x5f,0x84,0xe0,0xe4,0xac,0xa8,0x7f,0x6c,0x5e,0x58,0x55,0x3c,0x49,0x3b,0x46,0x56,0x9a,0xca,0xce,0xf1,0xe4,0xda,0xd8,0xbb,0x8b,0x6a,0x62,0x38,0x4d,0x58,0x36,0x40,0x53,0x85,0xde,0xd2,0xcf,0xd3,0xda,0xce,0xd4,0xd2,0xd6,0xd6,0xd8,0xce,0xce,0xd0,0xd0,0xd0,0xd2,0xd0,0xc6,0xc4,0xcc,0xc8,0xca,0xca,0xc8,0xc6,0xc2,0xc2,0xc2,0xc4,0xc4,0xc8,0xc4,0xbf,0xc4,0xc4,0xbd,0xc4,0xbb,0xc1,0xbf,0xbb,0xc1,0xc3,0xbd,0xc1,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbd,0xbf,0xbf,0xbf,0xbf,0xbb,0xbf,0xbf,0xbb,0xb9,0xbd,0xbd,0xbb,0xb9,0xbb,0xbb,0xb7,0xbb,0xbb,0xbd,0xbf,0xc1,0xbd,0xbb,0xbb,0xbd,0xbd,0xbf,0xbf,0xbd,0xbd,0xbd,0xbf,0xbb,0xbd,0xbf,0xbf,0xbf,0xbd,0xbf,0xbf,0xbf,0xbd,0xbf,0xbd,0xbb,0xc3,0xbb,0xbf}, {0xbf,0xbf,0xc1,0xc1,0xc1,0xbf,0xbf,0xbd,0xbf,0xbd,0xbf,0xbf,0xb9,0xbb,0xbd,0xb7,0xb8,0xbe,0xbc,0xbe,0xc2,0xc0,0xc2,0xc0,0xc3,0xc3,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc0,0xc8,0xc5,0xc7,0xc9,0xcd,0xcb,0xcf,0xb8,0xc6,0xda,0xd2,0x76,0x42,0x4e,0x42,0x3b,0x53,0x45,0x38,0xa3,0x38,0x4d,0x2d,0x3e,0xd9,0xdd,0xce,0x9c,0x85,0x8f,0x7a,0x7a,0x9b,0xa8,0x82,0x78,0x85,0x7b,0x6b,0x83,0x7e,0x6c,0x9a,0xaa,0x8c,0x9e,0x6f,0x6b,0x57,0x3e,0x4a,0x42,0xd0,0xe2,0xd6,0xc3,0xbe,0xe3,0xc7,0x6b,0x3a,0x45,0x4a,0x4f,0x44,0x5b,0x6b,0x82,0x8d,0xce,0xf1,0xca,0xe5,0xf4,0xe8,0xe2,0xe1,0xf2,0xca,0x90,0xcc,0x9c,0x58,0x33,0x3b,0x28,0x2e,0xaa,0xe2,0xc1,0x6f,0x33,0x3f,0x48,0x2a,0x12,0x1d,0x2a,0x18,0x1b,0x98,0xda,0xa9,0x52,0x31,0x36,0x4e,0x9b,0xb4,0xc8,0xd5,0xdf,0xe2,0xe7,0xe9,0xe7,0xe7,0xe7,0xe7,0xec,0xd6,0x24,0x19,0x1e,0x26,0x7d,0x9c,0x8f,0x43,0x1a,0x1b,0x21,0x84,0xe9,0xde,0xe5,0xe9,0xe1,0xda,0xb3,0x8e,0x6b,0x58,0x3e,0x32,0x39,0x4a,0x30,0x1b,0x55,0x1f,0x2e,0x6a,0x8c,0xa3,0x7c,0x6f,0x6f,0x6c,0x5f,0x57,0x6e,0x58,0x58,0x4f,0x58,0x58,0x5f,0x70,0x87,0x88,0xac,0xc0,0xe8,0xe1,0x8b,0x63,0x68,0x5c,0x5d,0x38,0x39,0x33,0x32,0x9e,0xd8,0xdc,0xe1,0xd9,0xdd,0xc9,0xc4,0xd3,0xd2,0xd2,0xcc,0xd4,0xce,0xd0,0xce,0xd2,0xce,0xc8,0xcc,0xce,0xca,0xca,0xc8,0xc8,0xc8,0xc8,0xc6,0xc4,0xc2,0xc0,0xc0,0xbf,0xc0,0xc0,0xbd,0xbf,0xc1,0xbd,0xb9,0xbf,0xbd,0xbf,0xbd,0xbd,0xc1,0xbd,0xbf,0xbf,0xbd,0xbd,0xbd,0xbd,0xbb,0xbb,0xb9,0xbd,0xbd,0xbb,0xbd,0xbf,0xbd,0xbf,0xb2,0xb9,0xbd,0xbb,0xb9,0xbb,0xb9,0xb5,0xb2,0xbb,0xc3,0xbf,0xb9,0xb9,0xbb,0xbd,0xb9,0xbd,0xbf,0xbf,0xbd,0xbb,0xbb,0xbd,0xb5,0xb9,0xbd,0xbf,0xbb,0xb9,0xbb,0xbb,0xbf,0xb9,0xbf,0xb9,0xbf,0xbf,0xbd,0xbd}, {0xc1,0xbf,0xbf,0xbf,0xc3,0xc3,0xc1,0xbd,0xbf,0xb9,0xbd,0xc1,0xbf,0xbd,0xc1,0xc1,0xad,0xbe,0xb6,0xbc,0xc2,0xbb,0xc0,0xc0,0xc7,0xc5,0xc2,0xc2,0xc2,0xc2,0xc4,0xc4,0xb6,0xc5,0xc2,0xc9,0xcb,0xd1,0xc9,0xcf,0xc0,0xcd,0xd4,0xcd,0x8f,0x54,0x69,0x62,0x71,0x7e,0x3f,0x44,0x71,0x55,0x55,0x30,0x4f,0xd6,0xd4,0xa8,0x8c,0x68,0x7a,0x85,0xae,0xdb,0xdf,0xe2,0xdd,0xda,0xc3,0xa0,0x71,0x5f,0x53,0x69,0x8e,0x87,0x6c,0x67,0x45,0x4b,0x4d,0x43,0x9a,0xe1,0xdf,0xde,0x82,0x46,0x63,0x52,0x32,0x2a,0x46,0x4a,0x4a,0x4d,0x4a,0x66,0x92,0xde,0xeb,0xeb,0xde,0xfe,0xe5,0xd2,0xe7,0xd2,0xdc,0xee,0xde,0x96,0x8c,0x6c,0x3f,0x3e,0x43,0x69,0xce,0xe3,0xc2,0x39,0x2c,0x38,0x88,0x3a,0x23,0x22,0x1e,0x1a,0x18,0x23,0x3d,0x3c,0x1c,0x1b,0x2e,0x45,0x51,0xb3,0xd2,0xd4,0xe3,0xe5,0xe7,0xe7,0xe7,0xe7,0xe7,0xe9,0xcc,0xe9,0x5f,0x27,0x16,0x33,0x23,0x2b,0x20,0x1f,0x1e,0x17,0x1a,0x65,0xe5,0xe4,0xdc,0xe0,0xe9,0xd8,0x8a,0x67,0x5b,0x57,0x50,0x44,0x4a,0x45,0x45,0x4a,0x9a,0x3a,0x26,0x62,0x6a,0x6a,0x4e,0x63,0x63,0x48,0x65,0x5d,0x59,0x62,0x5e,0x70,0x5f,0x52,0x62,0x59,0x83,0x87,0x7e,0x86,0xd3,0xca,0x4c,0x58,0x45,0x40,0x4b,0x3e,0x4f,0x3f,0x59,0xce,0xe5,0xd6,0xda,0xdc,0xce,0xd9,0xca,0xd9,0xd0,0xc4,0xb7,0xc2,0xc6,0xce,0xce,0xd4,0xca,0xbb,0xc2,0xd0,0xd0,0xca,0xca,0xc8,0xc6,0xc6,0xc8,0xc8,0xc4,0xc0,0xc4,0xbf,0xc0,0xc4,0xc1,0xc1,0xc3,0xc3,0xae,0xbf,0xbb,0xbf,0xbf,0xb9,0xbf,0xbb,0xc1,0xc1,0xbf,0xbf,0xbf,0xbd,0xbd,0xbb,0xae,0xb9,0xb9,0xb7,0xbf,0xbf,0xbd,0xc1,0xae,0xb9,0xc1,0xbf,0xbf,0xbf,0xbf,0xbb,0xb9,0xbd,0xbd,0xb7,0xb7,0xbd,0xbf,0xbd,0xbb,0xbf,0xc1,0xc1,0xbf,0xbd,0xbd,0xbf,0xb7,0xbb,0xc1,0xc1,0xbd,0xbb,0xbb,0xbd,0xb9,0xb3,0xbd,0xb5,0xbf,0xbd,0xbd,0xbd}, {0xc3,0xc3,0xc3,0xc1,0xc1,0xc3,0xc3,0xc1,0xbd,0xbf,0xbf,0xbf,0xc1,0xc3,0xc3,0xc3,0xc1,0xc3,0xc2,0xc0,0xc0,0xc2,0xc3,0xc1,0xc5,0xc3,0xc9,0xc9,0xbe,0xc0,0xc6,0xc2,0xc5,0xc9,0xcc,0xca,0xc9,0xcb,0xd0,0xd0,0xd4,0xc6,0xd5,0xd6,0x8b,0x70,0x63,0x6d,0x86,0x8c,0x53,0x18,0x37,0x4d,0x57,0x4a,0x4b,0xc4,0xda,0xa1,0x67,0x4c,0x50,0x6a,0x52,0x4a,0x4d,0x4f,0x4a,0x54,0x44,0x4f,0x4e,0x3c,0x30,0x6f,0xb5,0x99,0x75,0x53,0x5d,0x3a,0x46,0x4a,0x9e,0xdf,0xd6,0xe7,0xa0,0x48,0x49,0x3c,0x2b,0x39,0x3b,0x3d,0x49,0x4d,0x4b,0x4f,0x5f,0x7f,0xd9,0xe1,0xf6,0xe5,0xeb,0xe9,0xe2,0xef,0xe5,0xce,0x8b,0x69,0x50,0x57,0x54,0x4f,0x48,0x56,0x94,0xae,0x44,0x38,0x3c,0x3d,0xde,0x65,0x29,0x2b,0x27,0x20,0x1a,0x1d,0x1b,0x1e,0x25,0x2a,0x2b,0x25,0x32,0x97,0xce,0xe3,0xe5,0xe9,0xeb,0xe9,0xe7,0xeb,0xe3,0xe9,0xe5,0xe7,0xdc,0x8a,0x31,0x25,0x36,0x22,0x20,0x1e,0x16,0x20,0x29,0x66,0xe3,0xf0,0xe3,0xf2,0xeb,0x55,0x89,0x6c,0x52,0x45,0x4c,0x39,0x48,0x4b,0x40,0x73,0x9a,0x5c,0x22,0x3e,0x59,0x4d,0x52,0x5c,0x4d,0x4f,0x42,0x49,0x56,0x6c,0x77,0x62,0x57,0x47,0x5c,0x5c,0x53,0x53,0x56,0x53,0x70,0x79,0x69,0x64,0x58,0x2f,0x16,0x25,0x1c,0x20,0x69,0xe5,0xd8,0xdc,0xdb,0xdb,0xd6,0xd9,0xd9,0xde,0xca,0xd6,0xce,0xd2,0xd2,0xd6,0xd0,0xd0,0xd1,0xd1,0xce,0xce,0xcc,0xcc,0xca,0xca,0xc8,0xc8,0xcb,0xcd,0xcb,0xc5,0xbf,0xc0,0xc3,0xc3,0xc4,0xc4,0xc4,0xc3,0xbf,0xc1,0xc3,0xc1,0xbf,0xbd,0xbf,0xc1,0xc1,0xbb,0xc3,0xc4,0xb9,0xb9,0xbf,0xbd,0xbd,0xbf,0xbf,0xbf,0xbf,0xbf,0xc1,0xc3,0xbd,0xbb,0xb9,0xb9,0xbd,0xbf,0xbf,0xbd,0xbb,0xbf,0xc1,0x59,0xbf,0xbb,0xbb,0xbd,0xc1,0xc1,0xbf,0xc1,0xc1,0xc1,0xc1,0xbf,0xbf,0xbf,0xbf,0xc1,0xc1,0xbf,0xbd,0xbf,0xb5,0xbb,0xc1,0xc3,0xc1,0xbf,0xbf,0xbf}, {0xc1,0xc1,0xc1,0xbf,0xbf,0xc1,0xbf,0xbd,0xbf,0xc1,0xbf,0xbd,0xbd,0xbf,0xbf,0xbf,0xbd,0xbf,0xbe,0xc0,0xc2,0xc6,0xc7,0xc5,0xc7,0xbb,0xbd,0xc5,0xca,0xce,0xc6,0xb5,0xc7,0xc9,0xca,0xca,0xcc,0xcf,0xd0,0xd1,0xcf,0xce,0xcf,0xca,0x74,0x55,0x35,0x2f,0x2b,0x45,0x2d,0x2f,0x5b,0x27,0x3b,0x2b,0x35,0xbd,0xd3,0xcf,0xb6,0xa8,0xa3,0xa5,0xbc,0xd0,0xd1,0xcd,0xcb,0xe3,0xd4,0xc2,0x9e,0x99,0xbd,0xd5,0xc8,0x8a,0x5b,0x57,0x47,0x49,0x40,0x4e,0xcc,0xdd,0xee,0xde,0x92,0x3d,0x41,0x43,0x79,0x37,0x66,0x3d,0x42,0x4d,0x4a,0x59,0x52,0x65,0x71,0xaf,0xdd,0xf4,0xec,0xe3,0xcc,0x8b,0x9c,0x7a,0x7e,0x50,0x46,0x46,0x4d,0x58,0x4e,0x42,0x44,0x4e,0x44,0x38,0x46,0x76,0x8f,0x4a,0x26,0x2f,0x2b,0x20,0x22,0x24,0x1a,0x22,0x1d,0x25,0x26,0x38,0x2f,0x97,0xd0,0xdd,0xe7,0xe3,0xe2,0xf1,0xe3,0xeb,0xec,0xcc,0xe0,0xeb,0xc2,0x87,0x6b,0x61,0x46,0x24,0x25,0x21,0x1f,0x38,0x94,0xd6,0xeb,0xe2,0xf6,0xe1,0xc3,0x92,0x61,0x63,0x65,0x57,0x57,0x4f,0x56,0x54,0x6d,0x80,0xc0,0x62,0x2b,0x23,0x32,0x65,0x7c,0x9e,0x66,0x6f,0x46,0x64,0x47,0x3b,0x41,0x41,0x32,0x3d,0x33,0x38,0x54,0x4d,0x53,0x5b,0x4d,0x4a,0x4b,0x48,0x4a,0x49,0x42,0x34,0x3b,0x3c,0x5f,0xd3,0xea,0xe7,0xd8,0xe5,0xcc,0xd5,0xd3,0xd0,0xe9,0xd0,0xcc,0xd2,0xce,0xd4,0xd0,0xd0,0xd1,0xd1,0xce,0xcc,0xcc,0xca,0xce,0xcc,0xc8,0xc6,0xc7,0xc7,0xc3,0xbf,0xc2,0xc2,0xc3,0xc1,0xc1,0xc3,0xc1,0xbf,0xbd,0xbf,0xbf,0xc1,0xc1,0xc1,0xc3,0xc3,0xc4,0xb7,0xb7,0xc1,0xc6,0xc8,0xbf,0xb0,0xbd,0xbd,0xbd,0xbd,0xbf,0xc1,0xc1,0xc1,0xc1,0xbf,0xbd,0xbf,0xc1,0xc1,0xc1,0xc1,0xbd,0xc1,0xc1,0xb5,0xbf,0xc1,0xbb,0xca,0xc3,0xc1,0xc1,0xc1,0xc1,0xbf,0xbf,0xbd,0xbf,0xbd,0xbb,0xbb,0xbd,0xbf,0xc1,0xc4,0xb3,0xb9,0xbd,0xc1,0xbf,0xbf,0xbf,0xbf}, {0xc0,0xc2,0xc0,0xc0,0xc0,0xc0,0xbe,0xbc,0xc0,0xc2,0xc0,0xbc,0xbc,0xbe,0xbe,0xbe,0xc0,0xc0,0xbe,0xbe,0xc1,0xc3,0xc3,0xbf,0xc7,0xc5,0xc8,0xc6,0xc0,0xbe,0xc2,0xc0,0xc6,0xc8,0xca,0xca,0xcc,0xd1,0xd1,0xcf,0xcc,0xd5,0xd5,0xce,0x9d,0x8b,0x6c,0x65,0x5f,0x81,0x6d,0x61,0x69,0x2e,0x5f,0x47,0x6b,0x95,0xc3,0xd8,0xe2,0xde,0xd9,0xd1,0xbe,0xb8,0xa4,0x92,0x9e,0x97,0xbe,0xbb,0xbe,0xd6,0xe5,0xcc,0x9f,0xa4,0x60,0x57,0x3e,0x42,0x4d,0x91,0xde,0xdc,0xee,0xdf,0xa4,0x4e,0x3f,0x8f,0xbf,0x53,0x44,0x4a,0x4b,0x45,0x6b,0x4d,0x53,0x5e,0x65,0x93,0xe7,0xee,0xd3,0x72,0x6c,0x66,0x6d,0x82,0xb8,0xd1,0xd1,0xcb,0xdb,0xaf,0x90,0x7f,0x7b,0x3d,0x49,0x2b,0x51,0xbb,0xbf,0x4c,0x30,0x4a,0x4b,0x31,0x20,0x31,0x29,0x1d,0x1a,0x1c,0x2b,0x3e,0x78,0xa1,0xc8,0xeb,0xef,0xf6,0xd8,0xe9,0xe4,0xba,0xe2,0xc2,0x99,0x94,0x77,0x6e,0x64,0x75,0x64,0x64,0x5a,0x59,0x34,0x50,0x61,0x8f,0xad,0xc8,0xcc,0xe3,0x81,0x56,0x50,0x67,0x50,0x5e,0x70,0x5d,0x65,0x74,0x7e,0x8d,0xdc,0xce,0x46,0x3f,0x40,0x62,0x8f,0xc6,0xd6,0xdd,0xcc,0xb4,0xd1,0xd2,0xd8,0xd5,0xdf,0xc7,0xcc,0xd9,0xd8,0x99,0x58,0x6d,0x5e,0x53,0x4a,0x4d,0x50,0x2d,0x38,0x32,0x4e,0x38,0x39,0x8e,0xd9,0xd2,0xdc,0xda,0xe2,0xdc,0xd8,0xe3,0xd0,0xdd,0xd9,0xdb,0xd8,0xd4,0xd0,0xd0,0xd1,0xd1,0xce,0xcc,0xca,0xcb,0xcc,0xcc,0xca,0xc6,0xc7,0xc7,0xc7,0xc3,0xc4,0xc4,0xc4,0xc1,0xc1,0xc3,0xc3,0xc1,0xc3,0xc1,0xbf,0xbf,0xc1,0xc1,0xbf,0xbb,0xc4,0xc1,0xc4,0xc4,0xbd,0xb9,0xbb,0xb9,0xbe,0xbc,0xbc,0xbe,0xc0,0xc0,0xc0,0xbe,0xbc,0xbc,0xbe,0xbe,0xbe,0xc0,0xc0,0xc0,0xc2,0xb8,0xb5,0xca,0xc0,0xbc,0xc6,0xb3,0xc0,0xc0,0xc0,0xc0,0xc0,0xbe,0xbe,0xbc,0xc3,0xc3,0xc3,0xc3,0xc1,0xbd,0xb9,0xb5,0xb9,0xbb,0xbf,0xc1,0xbf,0xbf,0xbf,0xbf}, {0xc0,0xc2,0xc0,0xc0,0xc0,0xc2,0xc0,0xbe,0xbc,0xbe,0xbe,0xbc,0xbc,0xc0,0xc0,0xc0,0xc2,0xc0,0xc0,0xbe,0xbf,0xbf,0xbd,0xb9,0xc5,0xc1,0xc0,0xc0,0xc2,0xc4,0xc8,0xcc,0xc8,0xca,0xca,0xca,0xca,0xcc,0xcc,0xcc,0xca,0xcd,0xd5,0xcd,0xd5,0xd1,0xd4,0xd2,0xd5,0xd7,0xdd,0xd3,0x66,0x50,0x74,0x68,0x6a,0x64,0x99,0xcb,0xdf,0xeb,0xa9,0x74,0x5e,0x66,0x55,0x70,0x5f,0x5e,0x61,0x6f,0x87,0xa3,0xdb,0xb5,0x81,0x4b,0x23,0x30,0x34,0x2a,0x32,0xb5,0xe1,0xe9,0xd4,0xe0,0xe3,0x83,0x32,0xb4,0xe1,0x69,0x52,0x36,0x44,0x5a,0x7a,0x5c,0x68,0x5b,0x75,0x6c,0xcc,0xed,0x97,0x79,0x6e,0x69,0xa2,0xcf,0x99,0x5e,0x52,0x46,0x43,0x33,0x2a,0x35,0x4a,0x25,0x33,0x25,0x33,0x92,0x8e,0x63,0x46,0x51,0x31,0x41,0x2e,0x42,0x55,0x2a,0x2e,0x25,0x40,0x4b,0x6b,0x96,0xbd,0xbc,0xd6,0xe6,0xe7,0xe5,0xa8,0x5b,0x68,0x7f,0x64,0x72,0x68,0x73,0xcc,0xb6,0x75,0x90,0x95,0x6e,0x6b,0x61,0x46,0x58,0x74,0x8c,0x86,0xa6,0xb1,0x4e,0x56,0x3f,0x44,0x34,0x47,0x2e,0x3f,0x32,0x45,0xcd,0xde,0xe3,0x6b,0x3a,0x30,0x45,0x70,0x62,0x87,0xb9,0xca,0xc9,0xd7,0xdd,0xde,0xee,0xe0,0xe4,0xe7,0xdf,0xea,0xd1,0x5f,0x3d,0x2c,0x20,0x24,0x2e,0x20,0x3a,0x3d,0x39,0x44,0x45,0x43,0x93,0xe3,0xb0,0xbf,0xda,0xd2,0xd0,0xd5,0xdb,0xd1,0xce,0xda,0xd7,0xc4,0xda,0xd0,0xd0,0xd1,0xcf,0xce,0xcc,0xcb,0xc9,0xca,0xca,0xca,0xc8,0xc9,0xc9,0xc9,0xc7,0xc0,0xc2,0xc3,0xc1,0xc1,0xc3,0xc3,0xc1,0xc3,0xc1,0xbd,0xbd,0xbf,0xbf,0xbb,0xb5,0xc3,0xbf,0xbd,0xbf,0xbd,0xbd,0xc1,0xc3,0xbe,0xbe,0xbe,0xbc,0xbc,0xbc,0xbe,0xbe,0xb8,0xba,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xba,0xc8,0xb7,0xc4,0xb5,0xbe,0xc2,0xb8,0xc0,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbc,0xc3,0xc1,0xbf,0xbd,0xbd,0xc1,0xc1,0xc1,0xbf,0xc1,0xc1,0xc1,0xbf,0xbd,0xbd,0xbd}, {0xbe,0xbe,0xbe,0xbe,0xc0,0xc0,0xbe,0xbc,0xba,0xbc,0xbc,0xbc,0xbe,0xc0,0xc0,0xbe,0xbc,0xbe,0xbe,0xbe,0xbf,0xc1,0xbf,0xbd,0xc0,0xc0,0xc0,0xc4,0xc6,0xc2,0xc1,0xc3,0xc7,0xcb,0xcc,0xca,0xc8,0xca,0xce,0xd0,0xc9,0xcd,0xd3,0xcf,0xdf,0xd3,0xd7,0xd5,0xd9,0xdb,0xd1,0xdf,0xa9,0x3e,0x33,0x5a,0x7c,0x76,0x8e,0x9b,0xd0,0xd4,0xe5,0xcb,0xc6,0xc0,0xb8,0xae,0xb5,0xb5,0xc8,0xca,0xe7,0xd9,0xdb,0xb8,0x77,0x56,0x24,0x56,0x57,0x32,0x2f,0xa7,0xe0,0xd9,0xe2,0xe5,0xd5,0xc1,0x35,0x9a,0xcf,0x4c,0x31,0x39,0x5d,0x7c,0x9b,0x6f,0x82,0x6c,0x69,0x7a,0x9f,0x94,0x64,0x5a,0x59,0x64,0x55,0x48,0x51,0x5e,0x64,0x6a,0x73,0x88,0xa9,0xa6,0x46,0x36,0x1e,0x23,0x60,0x91,0x82,0x9e,0x8f,0x5f,0x3f,0x45,0x39,0x44,0x40,0x2d,0x32,0x29,0x1c,0x28,0x60,0x7b,0x86,0xc2,0xd1,0xe2,0xd6,0x7c,0x65,0x79,0x72,0x7a,0x79,0x87,0xc6,0xd6,0xd6,0xe1,0xdf,0xe6,0xd8,0xbe,0x7c,0x59,0x35,0x43,0x49,0x3f,0x3d,0x54,0x6c,0x65,0x7d,0x63,0x58,0x3f,0x34,0x27,0x2f,0x49,0x95,0xe5,0xf2,0xdd,0x96,0x3c,0x2b,0x2a,0x35,0x4e,0x50,0x71,0x6e,0x7e,0x9b,0x81,0x5f,0x86,0xb0,0xb7,0xbe,0x9b,0xac,0x61,0x57,0x52,0x4d,0x45,0x31,0x33,0x29,0x34,0x34,0x3c,0x30,0x45,0x59,0xd2,0x85,0x7b,0xa9,0xdf,0xd4,0xe6,0x8d,0x58,0xe3,0xd2,0xd6,0xd2,0xd8,0xc8,0xd0,0xd0,0xd1,0xcf,0xce,0xcc,0xca,0xca,0xca,0xca,0xcb,0xc7,0xc7,0xc7,0xc5,0xc3,0xbe,0xc0,0xc0,0xc0,0xc1,0xc3,0xc3,0xc1,0xbf,0xbd,0xbb,0xbd,0xc1,0xc1,0xbf,0xbb,0xbf,0xbf,0xbf,0xbf,0xc1,0xbd,0xb9,0xb9,0xbc,0xbc,0xbc,0xba,0xba,0xba,0xbc,0xbe,0xba,0xba,0xbc,0xbe,0xbc,0xbc,0xbc,0xbe,0xbe,0xbc,0xbe,0xc0,0xc4,0xbe,0xba,0xc2,0xc0,0xbe,0xbe,0xbe,0xbe,0xbe,0xbc,0xbc,0xbd,0xbf,0xbf,0xbf,0xc1,0xc1,0xbd,0xb7,0xbf,0xbf,0xbf,0xbd,0xbd,0xbb,0xbb,0xbb}, {0xbe,0xbe,0xc0,0xbe,0xc0,0xc0,0xbe,0xba,0xbc,0xbe,0xbe,0xbe,0xbe,0xc0,0xc0,0xbe,0xba,0xbc,0xbe,0xc0,0xc1,0xc3,0xc3,0xc1,0xc4,0xc2,0xbe,0xbe,0xc0,0xbd,0xbb,0xc1,0xc5,0xc9,0xcc,0xca,0xca,0xce,0xd0,0xd2,0xd1,0xd5,0xcb,0xd7,0xd5,0xd3,0xd1,0xd5,0xd0,0xc3,0xd7,0xdb,0xe2,0x58,0x3d,0x5b,0x65,0x69,0x9b,0xb2,0xdb,0xe1,0xe7,0xdf,0xe9,0xe4,0xe5,0xd8,0xdf,0xec,0xda,0xc8,0xdc,0xe9,0xa5,0x6d,0x51,0x32,0x2a,0x33,0x1c,0x23,0x2a,0x22,0xac,0xe5,0xe7,0xd2,0xd1,0x71,0x45,0x49,0xc5,0x3e,0x25,0x39,0x48,0x61,0x72,0x76,0x8b,0x75,0x66,0x61,0x90,0xab,0x77,0x54,0x8c,0xca,0xd4,0xdf,0xea,0xe1,0xe7,0xd7,0xde,0xcd,0x9b,0x95,0x61,0x1f,0x28,0x26,0xae,0xe3,0xe7,0xdf,0x6f,0x36,0x43,0x3b,0x37,0x3c,0x34,0x35,0x35,0x2b,0x2b,0x25,0x2e,0x32,0x61,0x5a,0x85,0xb7,0x85,0x73,0x6d,0x8a,0x67,0x95,0x9e,0xa1,0xda,0xd0,0xc8,0xd0,0xe4,0xe6,0xdf,0xda,0x77,0x6d,0x4e,0x3e,0x54,0x47,0x47,0x2d,0x63,0x55,0x5e,0x5f,0x4b,0x4e,0x69,0x7e,0xa3,0xb0,0xe9,0xe3,0xce,0xe3,0xe2,0x65,0x43,0x39,0x2f,0x54,0x57,0x58,0x5a,0x4d,0x49,0x41,0x4f,0x4c,0x4c,0x4b,0x43,0x4f,0x4f,0x41,0x64,0x3d,0x2c,0x27,0x64,0x39,0x1e,0x3c,0x25,0x3f,0x47,0x32,0x4a,0x68,0x50,0xa0,0xd3,0xe1,0xe2,0x8f,0x38,0xc4,0xd3,0xd7,0xce,0xdc,0xce,0xda,0xd0,0xd0,0xd1,0xcf,0xce,0xcc,0xcc,0xca,0xc8,0xca,0xc9,0xc9,0xc9,0xc9,0xc7,0xc3,0xc0,0xc2,0xc2,0xc0,0xc1,0xc1,0xc1,0xbf,0xbf,0xbd,0xbd,0xbf,0xc1,0xc1,0xbf,0xbd,0xc1,0xc1,0xbd,0xb9,0xb9,0xb5,0xb2,0xb7,0xba,0xbc,0xbc,0xbc,0xbc,0xbc,0xbe,0xc0,0xba,0xbc,0xbc,0xbc,0xbe,0xbe,0xbe,0xbe,0xc2,0xa8,0xc0,0xb8,0xc2,0xba,0xba,0xb8,0xc2,0xc0,0xbe,0xbe,0xbe,0xbc,0xba,0xb8,0xc3,0xc3,0xc1,0xbd,0xbb,0xbb,0xb5,0xac,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbf,0xbf}, {0xbe,0xc0,0xc0,0xbe,0xbe,0xbe,0xbc,0xb8,0xbe,0xbe,0xbc,0xba,0xba,0xbc,0xbe,0xbe,0xb8,0xbc,0xc1,0xc1,0xbf,0xbf,0xbf,0xbf,0xc7,0xb9,0xab,0xb0,0xc7,0xcd,0xc7,0xc9,0xc5,0xc7,0xc9,0xcb,0xcf,0xd1,0xcf,0xc9,0xd3,0xd5,0xc3,0xcf,0xc8,0xd3,0xd9,0xda,0xd6,0xdf,0xd0,0xcb,0xc5,0x9b,0x6d,0x9a,0x91,0x88,0x88,0x91,0x8b,0xdf,0xcf,0xdd,0xe9,0xd4,0xdd,0xbf,0xda,0xd7,0xe1,0xd4,0xc1,0xa0,0x91,0x64,0x47,0x41,0x23,0x2b,0x23,0x2b,0x71,0x38,0xcf,0xd4,0xcf,0xb9,0x61,0x46,0x47,0x4c,0xd2,0x5d,0x26,0x1b,0x3b,0x37,0x3f,0x4d,0x58,0x77,0x62,0x5f,0x90,0x9f,0x71,0x62,0xc8,0xe0,0xd3,0xe4,0xd8,0xbb,0xc6,0xc6,0xb7,0xa2,0x89,0x4e,0x52,0x30,0x2a,0x48,0xee,0xe6,0xac,0x81,0x8f,0x59,0x42,0x41,0x3b,0x2c,0x3f,0x3b,0x65,0x41,0x33,0x33,0x3f,0x4c,0x5b,0x5d,0x61,0x70,0x64,0x54,0xaa,0xae,0xbf,0xcd,0xca,0x8d,0x6b,0x3f,0x4f,0x3c,0x49,0x5b,0x3d,0x2d,0x33,0x5d,0x58,0x51,0x3a,0x51,0x41,0x3a,0x42,0x47,0x33,0x3c,0x46,0x44,0x97,0xde,0xdc,0xe4,0xe3,0xe3,0xeb,0xd7,0xe3,0x83,0x4c,0x38,0x2e,0x46,0x5a,0x4f,0x69,0x5b,0x3b,0x40,0x46,0x3e,0x3b,0x60,0x81,0x7c,0x6a,0x3d,0x42,0x34,0x1b,0x3c,0x3c,0x4f,0x47,0x4f,0x56,0x53,0x61,0x59,0x69,0x31,0x71,0x77,0x7f,0x64,0x76,0x35,0xbe,0xdd,0xe0,0xda,0xd6,0xd6,0xce,0xcc,0xd0,0xd0,0xd1,0xd1,0xce,0xce,0xcc,0xcc,0xc8,0xc8,0xc9,0xc9,0xc9,0xcb,0xc7,0xc1,0xc2,0xc2,0xbe,0xbc,0xba,0xbc,0xbe,0xbc,0xbc,0xbe,0xbe,0xc0,0xbe,0xbe,0xbc,0xba,0xc2,0xb7,0xa8,0xaa,0xbe,0xc6,0xbe,0xbe,0xba,0xba,0xba,0xbe,0xc0,0xc0,0xbc,0xba,0xbc,0xba,0xba,0xba,0xbc,0xbe,0xbe,0xbc,0xb8,0xba,0xc2,0xc8,0xa6,0xbe,0xb7,0xc4,0xc0,0xbe,0xbe,0xbe,0xbe,0xbc,0xba,0xba,0xc6,0xc0,0xb5,0xaa,0xad,0xba,0xc2,0xc4,0xba,0xba,0xba,0xbc,0xbe,0xbe,0xbe,0xbe}, {0xbc,0xbe,0xbe,0xbc,0xbc,0xba,0xb8,0xb5,0xb8,0xb8,0xb7,0xb3,0xb3,0xb7,0xba,0xba,0xb3,0xb8,0xbd,0xbd,0xbd,0xbd,0xbf,0xc1,0xc3,0xc3,0xbf,0xbf,0xc5,0xc0,0xbc,0xc7,0xc5,0xc5,0xc7,0xcb,0xcf,0xd1,0xc7,0xbf,0xcf,0xd1,0xcc,0xd3,0xd7,0xd5,0xdd,0xcc,0xd4,0xcc,0xd8,0xe2,0xd7,0x77,0x5f,0x6d,0x6e,0x78,0x7d,0x6e,0x83,0x6d,0x8c,0xbb,0x9f,0xba,0xd4,0xdf,0xd9,0xce,0xb2,0x9b,0x7e,0x6b,0x69,0x58,0x3c,0x2a,0x2a,0x2d,0x1b,0x1c,0x58,0x3a,0xe0,0xe1,0xa9,0x39,0x32,0x31,0x3d,0xa9,0xd8,0xd7,0x6d,0x4a,0x37,0x2e,0x2d,0x2a,0x57,0x49,0x5b,0x57,0x5e,0x51,0x53,0x5a,0xaa,0xd9,0xc1,0xb0,0x7b,0x4f,0x40,0x2a,0x34,0x39,0x40,0x33,0x40,0x35,0x29,0x89,0xe8,0xe0,0xdc,0xd5,0xdd,0xc9,0x70,0x32,0x26,0x33,0x41,0x5d,0xcd,0x4a,0x37,0x2b,0x2f,0x6b,0x73,0x5a,0x64,0x61,0x92,0x9e,0x9e,0xbd,0x73,0x4a,0x47,0x3a,0x26,0x36,0x1c,0x24,0x20,0x37,0x46,0x33,0x46,0x25,0x47,0x4d,0x47,0x50,0x52,0x45,0x4b,0x36,0x15,0x23,0x20,0x26,0x9f,0xe7,0xdc,0xe9,0xde,0xe9,0xe2,0x5e,0x4a,0x3c,0x36,0x37,0x30,0x39,0x3d,0x5e,0x63,0x7e,0x98,0xb1,0xbe,0xa8,0xa2,0x98,0x95,0x8d,0x68,0x67,0x53,0x19,0x18,0x3a,0x21,0x3c,0x29,0x2f,0x30,0x25,0x48,0x3d,0x29,0x99,0x2b,0x65,0x1e,0x70,0x34,0xa1,0xce,0xd9,0xd6,0xcc,0xd4,0xd4,0xc8,0xd4,0xce,0xd0,0xd0,0xd1,0xd0,0xcf,0xce,0xce,0xcc,0xca,0xc9,0xc7,0xc7,0xc5,0xbf,0xb7,0xbc,0xbc,0xb8,0xb2,0xb2,0xb6,0xb8,0xba,0xb5,0xb7,0xbc,0xbc,0xbc,0xbc,0xbe,0xbe,0xbe,0xc2,0xbc,0xb8,0xbe,0xb8,0xb5,0xbc,0xb8,0xb7,0xb7,0xba,0xc0,0xbe,0xb5,0xad,0xbe,0xbc,0xba,0xba,0xbc,0xbe,0xbe,0xbc,0xc2,0xbc,0xbc,0xb7,0xc0,0xc0,0xb8,0xba,0xbc,0xbc,0xbc,0xbc,0xbe,0xbe,0xbe,0xbe,0xbc,0xbe,0xbc,0xb8,0xbc,0xc0,0xbc,0xb5,0xba,0xba,0xba,0xba,0xbc,0xbc,0xbc,0xba}, {0xc4,0xba,0xbe,0xbe,0xbe,0xbc,0xb1,0xb5,0xba,0xbe,0xba,0xb7,0xb7,0xb5,0xb3,0xb7,0xbe,0xbe,0xbc,0xbb,0xbf,0xc3,0xc2,0xc2,0xc1,0xbf,0xc0,0xc0,0xc1,0xc3,0xc3,0xc3,0xc7,0xcb,0xcf,0xc6,0xcf,0xc7,0xcb,0xd3,0xcf,0xd7,0xd0,0xca,0xd9,0xcf,0xd0,0xd6,0xcf,0xda,0xdb,0xd8,0xbe,0x51,0x52,0x72,0x46,0x54,0x6f,0x65,0x51,0x46,0x52,0x68,0x5d,0x8c,0x8a,0x86,0x8b,0x80,0x4a,0x42,0x35,0x3f,0x38,0x31,0x35,0x2b,0x28,0x2a,0x21,0x24,0x3b,0x2e,0x61,0xb1,0x5d,0x39,0x38,0x2e,0x40,0x71,0xd7,0xdf,0xe3,0x8e,0x37,0x3b,0x39,0x2e,0x42,0x3b,0x46,0x41,0x36,0x41,0x3f,0x77,0xb5,0xbe,0xc0,0xb9,0x75,0x4f,0x3e,0x25,0x2c,0x2d,0x1b,0x23,0x35,0x38,0x43,0xce,0xe9,0xe5,0xd2,0xe1,0xdf,0xde,0xdb,0xb1,0x7e,0x89,0xb3,0xe0,0xe7,0xba,0x30,0x1c,0x56,0x66,0x66,0x71,0x5a,0x6c,0x8a,0x93,0xd3,0xde,0xda,0xd8,0xd3,0xe1,0xc2,0xcc,0xad,0x76,0x63,0x54,0x5f,0x4c,0x50,0x2b,0x1a,0x20,0x2a,0x41,0x55,0x48,0x4b,0x2f,0x21,0x4f,0x36,0x37,0xcf,0xe5,0xdd,0xeb,0xe2,0xe1,0xe6,0xb4,0x33,0x43,0x49,0x3f,0x33,0x1d,0x4b,0x64,0x64,0x57,0x7a,0xb7,0x82,0x7e,0x78,0x69,0x76,0x53,0x34,0x4c,0x2a,0x38,0x32,0x1f,0x30,0x20,0x5e,0x1f,0x36,0x16,0x2c,0x70,0x66,0x53,0x5f,0x80,0x4c,0x5f,0x6d,0xbd,0xd8,0xd8,0xda,0xd4,0xd3,0xd4,0xd1,0xce,0xd0,0xd8,0xd0,0xd7,0xca,0xcb,0xca,0xcc,0xcb,0xc5,0xc9,0xc5,0xc5,0xc7,0xb8,0xb8,0xc0,0xbc,0xbc,0xbe,0xbb,0xb3,0xb3,0xb9,0xc0,0xbe,0xba,0xb8,0xbc,0xc0,0xc0,0xbe,0xc0,0xbc,0xba,0xb8,0xba,0xbc,0xba,0xb8,0xba,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbe,0xc0,0xbc,0xbc,0xc0,0xbe,0xba,0xba,0xbe,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xba,0xba,0xbe,0xbc,0xbe,0xbe,0xbe,0xbc,0xbc,0xbc,0xc0,0xbc,0xba,0xbe,0xbe,0xba,0xb8,0xba,0xb5,0xbe,0xbe,0xbe,0xc2,0xbc,0xb7,0xbc}, {0xc4,0xbc,0xc2,0xbc,0xbc,0xbe,0xb8,0xbc,0xb8,0xbc,0xba,0xb8,0xba,0xb8,0xb8,0xbc,0xbb,0xbc,0xbc,0xbb,0xbd,0xc1,0xc2,0xc2,0xc3,0xc3,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc5,0xca,0xc5,0xc7,0xd0,0xc6,0xcc,0xd0,0xd3,0xcf,0xd6,0xd2,0xd3,0xd6,0xce,0xd8,0xa2,0x2f,0x2c,0x66,0x55,0x73,0x32,0x43,0x28,0x4a,0x3c,0x2e,0x48,0x28,0x27,0x57,0x3c,0x68,0x30,0x60,0x4a,0x2c,0x1a,0x3e,0x2d,0x3d,0x21,0x1f,0x36,0x1f,0x27,0x20,0x20,0x20,0x2a,0x45,0x28,0xd4,0x71,0x42,0x2a,0x38,0x43,0x38,0x5c,0xab,0xcd,0xdb,0xab,0x35,0x29,0x23,0x26,0x3d,0x4b,0x45,0x4b,0x38,0x47,0x61,0x7e,0xc2,0xdd,0xeb,0xe3,0xe2,0xc5,0xc4,0xa0,0x6b,0x32,0x2c,0x3b,0x2d,0x96,0xe5,0xe9,0xda,0xdf,0xe1,0xe2,0xe3,0xe5,0xe8,0xdc,0x94,0x4e,0x7e,0x71,0x86,0x2a,0x33,0x35,0x47,0x41,0x2f,0x2f,0x38,0x4a,0xa6,0xb8,0xeb,0xe4,0xda,0xe1,0xe1,0xe5,0xe5,0xe6,0xe2,0xe4,0xe1,0xe1,0xd9,0xcc,0xb8,0x87,0x6d,0x99,0xa6,0x55,0x44,0x49,0x2e,0x34,0x1b,0x21,0x5a,0xe9,0xe0,0xe9,0xdc,0xac,0x9a,0x8b,0x95,0x3e,0x2f,0x20,0x39,0x2d,0x2a,0x39,0x42,0x56,0x5d,0x72,0x58,0x56,0x5b,0x5d,0x6c,0x70,0x63,0x6e,0x71,0x3a,0x33,0x47,0x46,0x4d,0x55,0x5c,0x47,0x31,0x30,0x7a,0x57,0xb5,0xdb,0xd4,0x78,0x42,0x4c,0xd5,0xd0,0xd4,0xe2,0x9f,0x8b,0x7e,0xda,0xd0,0xd6,0xcc,0xd1,0xca,0xd2,0xcc,0xd0,0xce,0xcf,0xcf,0xc9,0xcb,0xc5,0xc5,0xc7,0xbe,0xc2,0xc0,0xbc,0xbc,0xbe,0xbc,0xb9,0xb9,0xbe,0xbc,0xbc,0xbc,0xbc,0xbe,0xc0,0xc0,0xc0,0xbe,0xbc,0xba,0xba,0xb8,0xb8,0xb8,0xb7,0xba,0xbc,0xbe,0xbe,0xba,0xba,0xbc,0xc0,0xbe,0xbc,0xbc,0xbe,0xbc,0xba,0xba,0xba,0xb8,0xba,0xbc,0xbc,0xbe,0xbe,0xbe,0xbe,0xbe,0xbc,0xbe,0xbe,0xc0,0xbe,0xbe,0xbe,0xbe,0xbc,0xba,0xbc,0xbc,0xb8,0xb8,0xba,0xb3,0xbc,0xba,0xba,0xbe,0xbc,0xb8,0xc0}, {0xbe,0xbe,0xc2,0xbc,0xba,0xbe,0xba,0xbc,0xb8,0xbc,0xba,0xba,0xbc,0xbc,0xba,0xbe,0xb7,0xbc,0xbe,0xbc,0xbd,0xbd,0xc0,0xc2,0xc1,0xc3,0xc3,0xc3,0xc0,0xc0,0xc1,0xc3,0xcb,0xbb,0xd7,0xc8,0xc2,0xd8,0xc4,0xcd,0xcc,0xd5,0xcf,0xd5,0xc9,0xd6,0xc7,0xd1,0xc4,0x46,0x3b,0x49,0x35,0x86,0x33,0x80,0x3c,0x31,0x79,0x42,0x6c,0x2c,0x26,0x3f,0x2b,0x59,0x35,0x6b,0x54,0x32,0x37,0x31,0x44,0x51,0x28,0x1f,0x2d,0x47,0x22,0x20,0x21,0x25,0x2b,0x71,0x32,0xdc,0x57,0x56,0x36,0x4b,0x2e,0x41,0x51,0x6c,0x80,0xa4,0xb0,0x88,0x43,0x2b,0x2f,0x2a,0x4c,0x3e,0x3a,0x40,0x50,0x74,0xbf,0xd1,0xd6,0xeb,0xea,0xe4,0xe7,0xca,0xd1,0xb4,0x43,0x31,0x33,0x34,0xd9,0xdd,0xe5,0xe5,0xea,0xe0,0xe5,0xd2,0xe3,0xdd,0xd4,0x8a,0x2f,0x3e,0x37,0x89,0x60,0x2f,0x44,0x31,0x29,0x30,0x44,0x48,0x55,0x59,0x77,0x86,0xda,0xe5,0xe2,0xde,0xe0,0xe9,0xd4,0xde,0xe3,0xe1,0xde,0xe7,0xcf,0xbb,0xbd,0xb7,0xc8,0xb9,0x65,0x42,0x29,0x32,0x47,0x26,0x58,0x8a,0xdb,0xed,0xdb,0xeb,0x4c,0x20,0x21,0x1b,0x51,0x42,0x22,0x26,0x29,0x29,0x28,0x2f,0x2e,0x45,0x39,0x3e,0x46,0x67,0x5a,0x18,0x5b,0x36,0x1f,0x42,0x1a,0x3b,0x28,0x70,0x6f,0x7e,0x54,0x1e,0x4f,0x1d,0x4d,0x36,0x8a,0xbf,0x3f,0x55,0xe0,0x34,0x5e,0xdc,0xdb,0x77,0x5b,0xc8,0xac,0xd2,0xd8,0xce,0xd6,0xd4,0xce,0xd2,0xce,0xd0,0xc9,0xca,0xca,0xc9,0xcb,0xc7,0xc5,0xc5,0xc0,0xc4,0xbe,0xbc,0xbc,0xc0,0xbe,0xbb,0xbc,0xc0,0xb7,0xbc,0xbe,0xbe,0xbc,0xbc,0xbc,0xbc,0xbe,0xbe,0xbe,0xbc,0xba,0xb8,0xba,0xbc,0xb8,0xba,0xbc,0xba,0xb8,0xb7,0xba,0xbc,0xbc,0xbe,0xbe,0xbc,0xbc,0xbc,0xba,0xb8,0xbc,0xbc,0xbe,0xbe,0xbc,0xbc,0xbc,0xbc,0xbc,0xba,0xba,0xbc,0xbe,0xbe,0xbc,0xbc,0xbe,0xbc,0xbc,0xbe,0xbc,0xb8,0xb8,0xba,0xb8,0xbe,0xbc,0xb8,0xba,0xb8,0xb7,0xbc}, {0xba,0xbe,0xc2,0xbe,0xbc,0xbe,0xba,0xb5,0xb8,0xbc,0xba,0xb8,0xbc,0xba,0xb8,0xbc,0xae,0xb5,0xbc,0xbc,0xbb,0xbd,0xbe,0xc0,0xbf,0xc1,0xc1,0xc1,0xc0,0xc0,0xc1,0xc3,0xcd,0xc0,0xc0,0xd1,0xbd,0xbb,0xd5,0xd1,0xda,0xbf,0xdb,0xd1,0xd4,0xd7,0xd5,0xd0,0xb6,0x5a,0x85,0x6e,0x70,0x67,0x61,0xa5,0x43,0x75,0x69,0x63,0xa9,0x6c,0x48,0x55,0x44,0x3b,0x5d,0x49,0x4f,0x51,0x21,0x2a,0x4a,0x56,0x28,0x1d,0x29,0x50,0x1c,0x1c,0x1a,0x20,0x2f,0x75,0x33,0xe4,0x52,0x20,0x25,0x31,0x2c,0x1c,0x25,0x3e,0x50,0x4a,0x48,0x81,0x3a,0x36,0x22,0x2c,0x40,0x3b,0x31,0x38,0x27,0x3d,0x76,0x8c,0x99,0xbd,0xc7,0xe1,0xbf,0x8c,0x6f,0x50,0x20,0x2f,0x2d,0x4f,0xe1,0xf5,0xdb,0xe9,0xeb,0xd6,0xdf,0xeb,0xe7,0xdd,0x79,0x53,0x22,0x3d,0x32,0x9b,0xa9,0x51,0x56,0x3b,0x37,0x4d,0x48,0x46,0x4b,0x4f,0x4f,0x6d,0x8e,0xde,0xe2,0xe9,0xde,0xc8,0x8c,0x79,0xb0,0xcc,0xd1,0xdf,0xd4,0xc8,0xc2,0xb7,0xa6,0x66,0x49,0x41,0x2f,0x29,0x22,0x2a,0x99,0xe0,0xe5,0xd9,0xda,0xdc,0x50,0x3a,0x37,0x43,0x4e,0x3a,0x24,0x26,0x22,0x27,0x25,0x3a,0x3c,0x34,0x2e,0x33,0x32,0x31,0x16,0x39,0x3b,0x17,0x42,0x18,0x4b,0x1d,0x39,0x69,0x7b,0x61,0x1a,0x67,0x23,0x44,0x43,0x14,0x65,0x20,0x4c,0xc9,0xd2,0x2e,0x51,0xd7,0x58,0x3f,0xd0,0x9e,0xda,0xd2,0xd0,0xd2,0xd4,0xce,0xce,0xce,0xcc,0xce,0xc7,0xc9,0xc8,0xc9,0xcb,0xcb,0xc9,0xc5,0xc0,0xbe,0xc0,0xbe,0xbe,0xbe,0xbe,0xbb,0xbb,0xbc,0xad,0xb5,0xbc,0xbc,0xba,0xb8,0xba,0xba,0xbc,0xbc,0xbc,0xbc,0xba,0xbc,0xbc,0xbc,0xb8,0xba,0xba,0xb8,0xb7,0xb7,0xb7,0xb8,0xbc,0xc0,0xbe,0xba,0xba,0xbe,0xbc,0xb8,0xbc,0xbc,0xbe,0xbc,0xba,0xba,0xba,0xbc,0xbc,0xb8,0xb8,0xba,0xbc,0xbc,0xba,0xba,0xbe,0xbc,0xba,0xbc,0xbc,0xbc,0xba,0xba,0xbc,0xbe,0xbc,0xba,0xb8,0xb7,0xb7,0xb8}, {0xba,0xc0,0xbe,0xbe,0xbe,0xc0,0xbc,0xb5,0xba,0xbc,0xba,0xba,0xbe,0xbc,0xb8,0xba,0xa3,0xac,0xb7,0xbb,0xbd,0xbd,0xc0,0xc2,0xc1,0xbf,0xc0,0xc0,0xc1,0xc1,0xc1,0xc1,0xbd,0xcf,0xcd,0xcb,0xcc,0xcd,0xd4,0xc5,0xc6,0xdc,0xca,0xbf,0xcc,0xc3,0x4d,0x69,0x4e,0x21,0x56,0x23,0x25,0x26,0x13,0x26,0x1f,0x2e,0x22,0x19,0x29,0x25,0x1c,0x17,0x19,0x15,0x2c,0x29,0x1e,0x19,0x1f,0x47,0x25,0x31,0x50,0x2b,0x21,0x26,0x33,0x33,0x1a,0x1e,0x22,0x2b,0x8b,0xd4,0x81,0x1d,0x2a,0x34,0x1f,0x1c,0x1f,0xc0,0x25,0x3c,0x1b,0x1e,0x2c,0x5e,0x23,0x2e,0x3c,0x25,0x23,0x1c,0x22,0x32,0x30,0x89,0x90,0x88,0x88,0xb4,0x93,0x78,0x79,0x4d,0x2c,0x25,0x43,0xc3,0xe5,0xe5,0xe1,0xe7,0xe5,0xe0,0xe2,0xe1,0xe0,0xad,0x3c,0x32,0x2d,0x1c,0x22,0x47,0xd2,0x32,0x3f,0x41,0x3b,0x34,0x2f,0x38,0x2e,0x47,0x40,0x3f,0x7c,0xae,0xc7,0xc8,0xce,0xd7,0xbd,0x98,0x8f,0x6f,0x6d,0x6f,0x95,0x8a,0x8d,0x83,0x5c,0x5c,0x43,0x4f,0x2b,0x2a,0x6b,0x6a,0xd6,0xda,0x2a,0x42,0x4e,0x52,0x48,0x5b,0x31,0x31,0x2b,0x2d,0x14,0x1a,0x2c,0x1d,0x23,0x19,0x1c,0x1d,0x1b,0x18,0x1a,0x1b,0x26,0x41,0x1e,0x37,0x18,0x50,0x2c,0x2d,0x53,0x80,0x83,0x24,0x57,0x25,0x44,0x9f,0x14,0x28,0x1b,0x2a,0xaf,0x96,0x75,0x30,0xb0,0x46,0x2c,0xaf,0xa1,0xd4,0xcf,0xe8,0xd8,0xc7,0xd2,0xd0,0xd8,0xd0,0xcf,0xce,0xc8,0xcc,0xca,0xcb,0xc7,0xc9,0xcb,0xc7,0xc2,0xbc,0xc0,0xc0,0xbe,0xc0,0xbe,0xbc,0xbc,0xbb,0xa6,0xaf,0xb7,0xba,0xba,0xbc,0xbe,0xc0,0xbc,0xba,0xb8,0xb8,0xba,0xba,0xba,0xb8,0xbe,0xbc,0xba,0xba,0xba,0xba,0xb8,0xb7,0xbc,0xbc,0xba,0xb5,0xb7,0xbc,0xbe,0xba,0xb7,0xb8,0xba,0xba,0xba,0xba,0xbc,0xbe,0xbe,0xbc,0xba,0xbc,0xbe,0xbe,0xbc,0xba,0xbc,0xba,0xb7,0xb7,0xba,0xbc,0xb8,0xb5,0xba,0xb8,0xba,0xba,0xba,0xba,0xba,0xba}, {0xbc,0xbc,0xb7,0xb8,0xba,0xbc,0xbe,0xb8,0xba,0xbc,0xba,0xba,0xbe,0xbe,0xba,0xbc,0xaa,0xb3,0xbb,0xbf,0xbf,0xbf,0xc0,0xc0,0xc3,0xc1,0xbe,0xc0,0xc1,0xc1,0xc1,0xbf,0xd1,0xbf,0xcb,0xb5,0xbf,0xb3,0x9d,0xba,0xaf,0x82,0x7a,0xd2,0xd5,0x71,0x51,0x4a,0x54,0x74,0x5d,0x36,0x46,0x66,0x2c,0x29,0x22,0x7e,0x34,0x2e,0x1d,0x56,0x2e,0x32,0x24,0x22,0x36,0x42,0x30,0x2a,0x2c,0x43,0x19,0x47,0x2e,0x46,0x20,0x1e,0x20,0x3c,0x22,0x20,0x21,0x54,0xac,0x6f,0x42,0x31,0x30,0x34,0x25,0x2a,0x2a,0x4f,0x2b,0x26,0x19,0x19,0x28,0x4f,0x1f,0x38,0x1c,0x2c,0x3a,0x1f,0x23,0x28,0x29,0x3f,0x40,0x6a,0x70,0x79,0x7f,0x7d,0x3d,0x45,0x53,0x3c,0xb4,0xde,0xe2,0xdd,0xe4,0xe7,0xe7,0xe5,0xda,0xed,0xe2,0xc7,0x6f,0x4a,0x42,0x3b,0x3f,0x5b,0xcc,0x3e,0x2a,0x31,0x34,0x2c,0x27,0x32,0x47,0x5e,0x5a,0x58,0x56,0x7f,0x9a,0x92,0xa1,0x56,0x4e,0x35,0x3c,0x32,0x45,0x3e,0x3e,0x44,0x46,0x35,0x38,0x40,0x2c,0x49,0x28,0x35,0x55,0x69,0x53,0x78,0x3a,0x37,0x36,0x3c,0x3d,0x36,0x54,0x29,0x2d,0x22,0x2e,0x1b,0x1e,0x1e,0x32,0x21,0x24,0x31,0x28,0x24,0x27,0x2a,0x39,0x2c,0x38,0x18,0x32,0x4f,0x2f,0x59,0x52,0x60,0x48,0x45,0x33,0x56,0x79,0x6a,0x61,0x21,0x1d,0xac,0xb9,0x77,0x44,0xc0,0x48,0x1f,0x81,0x96,0xa6,0xe0,0xcb,0x9f,0xcf,0xbc,0xb4,0xbe,0xd8,0xcf,0xcb,0xca,0xc6,0xcc,0xca,0xc9,0xc1,0xc3,0xc5,0xc5,0xc5,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xbe,0xbc,0xaf,0xb5,0xb8,0xba,0xbc,0xbc,0xbe,0xbe,0xc0,0xbc,0xb8,0xb8,0xba,0xba,0xb8,0xb7,0xbc,0xba,0xb8,0xb8,0xb8,0xb8,0xb8,0xb7,0xba,0xb8,0xb5,0xb3,0xb5,0xb8,0xba,0xb8,0xb7,0xba,0xba,0xba,0xb8,0xb8,0xba,0xbe,0xbe,0xbc,0xba,0xbc,0xbe,0xbc,0xba,0xba,0xbc,0xba,0xb8,0xb7,0xba,0xbc,0xba,0xb5,0xba,0xb8,0xba,0xbc,0xb8,0xb8,0xba,0xb7}, {0xbc,0xbc,0xb3,0xb8,0xba,0xb7,0xbc,0xba,0xb8,0xbc,0xb8,0xba,0xbe,0xbe,0xba,0xbc,0xb9,0xbc,0xbf,0xbf,0xbf,0xc1,0xbe,0xbd,0xc1,0xc1,0xc0,0xc0,0xc0,0xc0,0xc2,0xc3,0xbd,0xc3,0xc7,0xcd,0x86,0x45,0x8d,0xb4,0x52,0x9a,0x6d,0xcc,0xc5,0xcb,0x5e,0x79,0x5d,0x63,0x58,0x2b,0x31,0x5e,0x32,0x70,0x34,0x9d,0x4c,0x27,0x42,0x62,0x30,0x40,0x3d,0x23,0x3b,0x38,0x4b,0x1c,0x7d,0x42,0x25,0x38,0x21,0x50,0x2f,0x26,0x1e,0x40,0x2a,0x33,0x33,0xa4,0xbd,0x65,0x41,0x36,0x37,0x39,0x2b,0x28,0x27,0x33,0x2b,0x1a,0x34,0x3f,0x27,0x31,0x1e,0x1e,0x1d,0x16,0x1e,0x19,0x22,0x1e,0x1c,0x18,0x23,0x25,0x1f,0x67,0x1d,0x6a,0x3e,0x35,0x66,0xc2,0xe8,0xbf,0xa3,0xef,0xd6,0xa5,0xe5,0xdc,0xdf,0xdc,0x7d,0x56,0x26,0x39,0x26,0x25,0x19,0x43,0xe5,0xa7,0x27,0x1b,0x1f,0x2e,0x58,0x4c,0x4e,0x57,0x63,0x62,0x4f,0x6c,0x89,0xce,0xcf,0xa4,0x51,0x42,0x22,0x24,0x36,0x1e,0x24,0x24,0x1d,0x1c,0x1e,0x21,0x22,0x23,0x1a,0x31,0x65,0x75,0x58,0x3a,0x37,0x64,0x3b,0x3f,0x3a,0x4b,0x43,0x2d,0x32,0x31,0x29,0x2a,0x24,0x25,0x24,0x1e,0x1e,0x22,0x1c,0x35,0x2c,0x2d,0x29,0x1f,0x18,0x20,0x34,0x27,0x3c,0x40,0x3c,0x3a,0x46,0x39,0x4d,0x86,0xba,0xbb,0x3f,0x17,0x90,0x97,0xcb,0x6d,0x43,0x5c,0x15,0x75,0xcc,0x3e,0x2c,0xc1,0x3a,0x3a,0x66,0x2d,0x80,0x99,0xc8,0xc2,0xc4,0xca,0xc9,0xcf,0xc8,0xc9,0xbf,0xc1,0xc2,0xbe,0xc4,0xbe,0xbe,0xbe,0xbe,0xbe,0xc0,0xc0,0xbe,0xbc,0xba,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xb8,0xbe,0xbc,0xbc,0xba,0xba,0xbc,0xba,0xba,0xb7,0xb8,0xb8,0xb8,0xb7,0xb7,0xb8,0xba,0xba,0xb7,0xb5,0xb7,0xb8,0xb8,0xb8,0xb8,0xba,0xbc,0xbc,0xba,0xb8,0xb7,0xb8,0xba,0xbc,0xba,0xba,0xbc,0xbc,0xba,0xba,0xba,0xba,0xbc,0xbc,0xba,0xba,0xbc,0xbc,0xb8,0xbe,0xb8,0xba,0xbc,0xb7,0xb7,0xb8,0xb3}, {0xbc,0xbe,0xb8,0xc0,0xbe,0xb5,0xba,0xba,0xb8,0xba,0xb8,0xb8,0xbc,0xba,0xb7,0xb8,0xbb,0xbb,0xbb,0xbb,0xbd,0xc1,0xc1,0xbf,0xbd,0xbf,0xc0,0xc0,0xc0,0xc2,0xc4,0xc6,0xbd,0xc5,0xc5,0xc5,0x84,0x6f,0xc3,0x4d,0xbc,0xd5,0xc8,0x77,0xab,0x34,0x75,0x3a,0x3f,0x67,0x32,0x65,0x5e,0x5b,0x3b,0x70,0x3a,0x80,0x8c,0x30,0x31,0x83,0x55,0x24,0x39,0x26,0x40,0x3a,0x47,0x34,0x75,0x53,0x38,0x4f,0x23,0x4c,0x35,0x35,0x34,0x21,0x33,0x25,0x8c,0x50,0x73,0x7c,0x40,0x46,0x51,0x48,0x3c,0x33,0x2d,0x28,0x3a,0x48,0x36,0x5e,0x22,0x2b,0x32,0x28,0x36,0x2e,0x22,0x31,0x24,0x21,0x25,0x20,0x22,0x3c,0x45,0x50,0x27,0x37,0x42,0x43,0x23,0xb8,0xd1,0x7e,0xd4,0xc3,0x51,0xa0,0xd5,0xe4,0xe4,0xdf,0x89,0x31,0x27,0x38,0x2a,0x35,0x28,0x7f,0xe8,0xdb,0x55,0x52,0x49,0x26,0x2b,0x32,0x40,0x4c,0x47,0x6b,0x60,0x52,0x88,0xcf,0xe6,0xdf,0xdf,0xcd,0xbd,0xb8,0xae,0xa9,0x82,0x54,0x51,0x2b,0x18,0x38,0x2f,0x28,0x36,0x3e,0x33,0x3d,0x41,0x31,0x29,0x2b,0x1f,0x2c,0x56,0x2f,0x22,0x24,0x1f,0x34,0x1c,0x20,0x1c,0x1f,0x2d,0x27,0x29,0x26,0x22,0x48,0x2d,0x32,0x2f,0x1e,0x1a,0x2a,0x27,0x24,0x21,0x20,0x27,0x20,0x2a,0x3a,0xb0,0xb5,0xc9,0x6c,0x17,0x83,0x8d,0xc8,0xba,0x26,0x25,0x17,0x81,0xd1,0x4c,0x24,0xbd,0x48,0x2f,0x5b,0x20,0x6f,0x7b,0x9d,0xda,0xd1,0xce,0xce,0xc8,0xca,0xc9,0xcd,0xc5,0xc7,0xc4,0xbc,0xc2,0xbc,0xbe,0xbe,0xbe,0xbc,0xbe,0xbe,0xbb,0xb7,0xba,0xba,0xb8,0xb8,0xbc,0xc0,0xbe,0xbc,0xb8,0xba,0xba,0xba,0xba,0xba,0xbc,0xbe,0xb3,0xb7,0xba,0xba,0xb7,0xb7,0xba,0xbe,0xbc,0xb7,0xb5,0xba,0xbc,0xb8,0xb7,0xb8,0xb7,0xba,0xbc,0xba,0xb8,0xb8,0xbc,0xc0,0xbc,0xbc,0xbc,0xbe,0xbe,0xbc,0xbc,0xbe,0xb8,0xbc,0xbe,0xba,0xb8,0xba,0xbc,0xba,0xba,0xb5,0xb7,0xba,0xb5,0xb8,0xbc,0xb7}, {0xbf,0xbf,0xbf,0xbb,0xb9,0xbb,0xbd,0xc1,0xbf,0xbf,0xbf,0xbf,0xbd,0xb9,0xb9,0xbb,0xb9,0xb9,0xb9,0xbd,0xbf,0xbf,0xc1,0xc3,0xc1,0xbf,0xbf,0xbf,0xc0,0xc2,0xc2,0xc2,0xc6,0xbf,0xc7,0xc1,0x72,0x7e,0x69,0xa3,0xbc,0xd2,0xba,0x97,0x2c,0x52,0x39,0x2d,0x6b,0x66,0x44,0x56,0x57,0x37,0x25,0x30,0x1c,0x5a,0x31,0x2f,0x22,0x51,0x2e,0x1e,0x19,0x34,0x38,0x47,0x29,0x23,0x41,0x61,0x28,0x1e,0x2c,0x27,0x20,0x23,0x20,0x1c,0x1c,0x22,0x33,0x24,0x50,0x82,0x3e,0x36,0x4b,0x44,0x41,0x35,0x34,0x26,0x2a,0x2d,0x34,0x41,0x3e,0x32,0x37,0x1d,0x35,0x34,0x2c,0x37,0x33,0x2e,0x2e,0x2e,0x1c,0x29,0x54,0x22,0x2c,0x33,0x39,0x28,0x25,0x2a,0x32,0x3a,0x74,0x2d,0x37,0x38,0x7c,0xe7,0xe8,0xd5,0x3e,0x42,0x34,0x3a,0x1f,0x33,0x35,0xae,0xda,0xe7,0xc5,0x5a,0x2c,0x34,0x25,0x33,0x54,0x38,0x4f,0x53,0x57,0x5e,0x85,0xdf,0xd6,0xe8,0xe2,0xe9,0xeb,0xdb,0xdf,0xe7,0x90,0x6e,0x5a,0x4b,0x2a,0x25,0x22,0x2b,0x24,0x2a,0x32,0x24,0x33,0x41,0x3f,0x35,0x30,0x30,0x29,0x2b,0x1f,0x2d,0x21,0x41,0x20,0x22,0x21,0x30,0x30,0x41,0x32,0x27,0x3c,0x2a,0x38,0x37,0x2c,0x2c,0x36,0x2a,0x2e,0x3b,0x36,0x27,0x22,0x54,0x1c,0x44,0xbc,0xbe,0x77,0x21,0x92,0x94,0xc1,0xc0,0x45,0x1c,0x41,0x51,0xd6,0x6f,0x1b,0xa1,0x5f,0x27,0xa1,0x2a,0x85,0xd0,0xae,0xc0,0xd4,0xd2,0xce,0xd4,0xce,0xca,0xcd,0xc9,0xc9,0xc9,0xc2,0xc2,0xc4,0xc2,0xc6,0xc2,0xc0,0xbe,0xbc,0xbb,0xbc,0xbc,0xb9,0xb9,0xb9,0xbd,0xbf,0xbd,0xbf,0xc1,0xbd,0xbb,0xbb,0xbb,0xbd,0xbb,0xbb,0xbb,0xb9,0xbf,0xb9,0xbb,0xb5,0xc1,0xb9,0xb2,0xbb,0xb9,0xbf,0xb7,0xbf,0xbf,0xb0,0xbb,0xbb,0xbb,0xb9,0xb5,0xb3,0xb9,0xbf,0xc1,0xb9,0xb9,0xbd,0xc1,0xbf,0xbb,0xbb,0xbd,0xbf,0xbd,0xbd,0xbd,0xbd,0xbd,0xbb,0xbb,0xb9,0xb7,0xbd,0xb9,0xbf,0xb7,0xbd,0xbd}, {0xbd,0xbd,0xbb,0xbb,0xb9,0xb9,0xb9,0xbb,0xbf,0xbd,0xbb,0xb9,0xb7,0xb7,0xbb,0xbd,0xbd,0xbd,0xbf,0xbf,0xbd,0xbb,0xbd,0xc1,0xc1,0xc1,0xc0,0xc0,0xc0,0xc2,0xc2,0xc2,0xc3,0xc5,0xbf,0xcd,0xc4,0x51,0x78,0x8f,0x83,0x8e,0x2c,0x31,0x3c,0x5c,0x27,0x76,0x2b,0x43,0x34,0x3d,0x34,0x40,0x2e,0x3f,0x31,0xb3,0x9a,0x9f,0x88,0x57,0x4c,0x2f,0x21,0x38,0x36,0x2c,0x38,0x3e,0x39,0x25,0x1d,0x29,0x2c,0x3e,0x22,0x26,0x27,0x22,0x27,0xa1,0x87,0x2e,0x26,0x26,0x4b,0x1c,0x55,0x27,0x26,0x2d,0x25,0x20,0x38,0x45,0x23,0x21,0x28,0x25,0x1c,0x19,0x27,0x2b,0x23,0x32,0x32,0x31,0x32,0x33,0x25,0x24,0x36,0x22,0x26,0x2f,0x1d,0x44,0x25,0x1b,0x2d,0x35,0x49,0x24,0x2a,0x60,0x62,0xbf,0xc5,0xa9,0x5d,0x3c,0x22,0x36,0x22,0x1e,0x24,0x88,0xea,0xe5,0xe7,0xb5,0x60,0x53,0x37,0x4f,0x1e,0x21,0x48,0x3f,0x56,0x66,0x64,0xb1,0xc6,0xd6,0xe9,0xe2,0xd2,0xf1,0xd8,0xe5,0xd9,0x73,0x5a,0x4c,0x36,0x32,0x30,0x27,0x22,0x36,0x3c,0x24,0x23,0x1f,0x2c,0x35,0x1f,0x2d,0x30,0x30,0x2c,0x2d,0x2b,0x3a,0x52,0x40,0x35,0x45,0x3a,0x73,0x37,0x12,0x11,0x20,0x4b,0x2e,0x2e,0x68,0x67,0x38,0x27,0x54,0x6f,0x63,0x45,0x97,0x86,0x83,0x52,0x4f,0x2a,0x73,0x69,0x48,0x36,0x34,0x1c,0x80,0x53,0x4c,0x62,0x56,0x31,0x71,0x40,0x3c,0x5e,0x40,0x70,0x57,0xc6,0xdc,0xce,0xd9,0xc8,0xbc,0xd4,0xce,0xcb,0xc7,0xc7,0xc7,0xc2,0xc0,0xc2,0xbc,0xc2,0xc0,0xbe,0xbc,0xbc,0xbb,0xbb,0xbc,0xbd,0xbd,0xbf,0xbf,0xbd,0xb9,0xbb,0xbd,0xbf,0xbd,0xbb,0xbd,0xbd,0xbd,0xbb,0xbb,0xb9,0xbb,0xb9,0xbb,0xbb,0xbd,0xb9,0xb7,0xb9,0xb9,0xb7,0xb3,0xb9,0xb7,0xb2,0xbb,0xb3,0xb5,0xb9,0xbf,0xc3,0xbd,0xb0,0xa3,0xbb,0xbb,0xbd,0xbf,0xbf,0xbb,0xbb,0xbd,0xbd,0xbb,0xbb,0xbb,0xbb,0xbd,0xbb,0xbb,0xbf,0xbb,0xbb,0xb7,0xbb,0xb7,0xbb,0xbb}, {0xb9,0xb9,0xb9,0xbb,0xbb,0xbb,0xb9,0xb9,0xbd,0xbb,0xbb,0xb9,0xb7,0xb9,0xbb,0xbf,0xbd,0xbd,0xbf,0xbd,0xb9,0xb7,0xb9,0xbd,0xbf,0xbf,0xbf,0xbf,0xbf,0xc0,0xc0,0xbf,0xc1,0xc5,0xcf,0xcb,0x91,0x37,0xbe,0xad,0x6a,0x29,0x58,0x2f,0x9b,0x21,0x7f,0x2d,0x20,0x35,0x3b,0x2a,0x3d,0x29,0x6a,0x28,0x7a,0xab,0xc3,0xa0,0x94,0x9b,0x85,0x50,0x3c,0x31,0x35,0x35,0x25,0x27,0x23,0x2c,0x30,0x40,0x4c,0x56,0x35,0x2d,0x25,0x2c,0x25,0x84,0xca,0x1d,0x1e,0x15,0x2f,0x13,0x46,0x22,0x16,0x34,0x15,0x1d,0x4f,0x76,0x4d,0xe,0x7a,0x20,0x1b,0x14,0x1e,0x14,0x30,0x26,0x32,0x2d,0x2b,0x2b,0x20,0x24,0x1d,0x1a,0x21,0x25,0x23,0x2f,0x1f,0x23,0x22,0x23,0x29,0x23,0x19,0x28,0x18,0x57,0x5e,0x43,0x2d,0x34,0x2e,0x44,0x33,0x33,0x2b,0x3b,0x99,0xdf,0xed,0xbe,0xae,0x5f,0x40,0x52,0x25,0x1c,0x28,0x30,0x33,0x48,0x4a,0x60,0xa9,0xe1,0xd3,0xe3,0xeb,0xce,0xe7,0xd2,0xd1,0x72,0x28,0x2d,0x2d,0x24,0x20,0x2f,0x20,0x29,0x26,0x36,0x37,0x30,0x21,0x42,0x32,0x3e,0x30,0x25,0x23,0x1f,0x1c,0x79,0x55,0x92,0x91,0x6e,0x7a,0x9a,0x17,0x28,0x2a,0x2f,0x24,0x29,0x10,0x19,0x77,0x20,0x6d,0x99,0x9c,0xa3,0xb9,0xbd,0xc2,0xb0,0x67,0x49,0x43,0x62,0x5f,0x45,0x3b,0x27,0x46,0x4d,0x3d,0x50,0x7e,0x47,0x58,0xb1,0x52,0x6c,0x57,0x53,0x5e,0x64,0x99,0x9d,0xdb,0xd5,0xdb,0xd8,0xc2,0xc8,0xc9,0xc2,0xc4,0xc5,0xc2,0xc2,0xc2,0xbc,0xc2,0xc0,0xbe,0xbc,0xbc,0xbc,0xbd,0xbd,0xbd,0xbd,0xbf,0xbd,0xb9,0xb5,0xb7,0xbb,0xbd,0xbb,0xbb,0xbb,0xbb,0xbb,0xb9,0xb9,0xbd,0xb9,0xbb,0xbb,0xbd,0xb5,0xb7,0xb9,0xb9,0xbd,0xb7,0xb9,0xbb,0xb5,0xb9,0xbd,0xbf,0xbf,0xbd,0xb9,0xb9,0xbb,0xbd,0xbd,0xbd,0xbb,0xbd,0xbf,0xbd,0xbb,0xbb,0xbd,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xb9,0xb9,0xbb,0xbb,0xbf,0xbb,0xbd,0xb7,0xb5}, {0xb9,0xb7,0xb9,0xbb,0xbd,0xbf,0xbd,0xbd,0xb9,0xbb,0xbd,0xbd,0xbb,0xbd,0xbd,0xbb,0xbb,0xb9,0xbb,0xbb,0xb9,0xb9,0xba,0xbd,0xbf,0xbd,0xbd,0xbd,0xbf,0xbf,0xbf,0xbf,0xc9,0xc3,0xc7,0xba,0xb9,0x74,0x87,0x89,0x7f,0x6e,0x8b,0x5c,0x60,0x5d,0x73,0x39,0x1b,0x49,0x70,0x47,0x67,0x50,0x27,0x73,0xb5,0xb7,0xc9,0xa9,0xad,0x92,0x90,0x8a,0x82,0x69,0x4c,0x37,0x36,0x1d,0x27,0x34,0x4b,0x5e,0x9a,0x67,0x33,0x2e,0x26,0x2c,0x28,0x7d,0x85,0x20,0x23,0x3a,0x20,0x22,0x23,0x1d,0x1e,0x26,0x1b,0x1f,0x5a,0x64,0x4b,0x1d,0x73,0x25,0x1f,0x14,0x22,0x16,0x1e,0x1c,0x1a,0x15,0x24,0x27,0x1b,0x1c,0x2a,0x2f,0x26,0x29,0x27,0x2b,0x34,0x2f,0x32,0x24,0x26,0x33,0x27,0x22,0x3c,0x4b,0x3e,0x38,0x36,0x21,0x41,0x32,0x45,0x29,0x15,0x2e,0x4b,0x87,0xac,0xe5,0xda,0xa5,0x57,0x1c,0x17,0x20,0x24,0x26,0x19,0x36,0x61,0x89,0xc0,0xe3,0xca,0xb9,0xb7,0xcc,0xc6,0xb8,0x85,0x53,0x2f,0x27,0x2c,0x2b,0x25,0x31,0x28,0x2d,0x1e,0x23,0x22,0x30,0x24,0x23,0x2b,0x2f,0x33,0x34,0x2a,0x27,0x5b,0x8a,0x67,0xc9,0xb0,0x8e,0x8f,0xb5,0x24,0xa3,0x9a,0x2b,0x5a,0x5f,0x26,0x10,0x73,0x64,0x9d,0xa4,0xaf,0xcd,0xa9,0xc2,0xc5,0x71,0x70,0x3e,0x58,0x61,0x83,0x8e,0x67,0x2f,0x6d,0x3b,0x2b,0x55,0x86,0x6c,0x51,0x75,0x3e,0x72,0x77,0x4c,0x36,0x62,0x6c,0x57,0xba,0xcf,0xcd,0xc4,0xd0,0xc4,0xc8,0xc2,0xc2,0xc5,0xc4,0xc5,0xc5,0xc0,0xc2,0xc2,0xc0,0xbe,0xbc,0xbe,0xbf,0xbd,0xbb,0xb9,0xbb,0xbb,0xb9,0xb7,0xb7,0xbb,0xbd,0xb9,0xb9,0xbb,0xbb,0xb9,0xb9,0xb9,0xbb,0xb9,0xbf,0xb9,0xbd,0xb3,0xb9,0xb9,0xb7,0xc1,0xb9,0xc1,0xbf,0xb5,0xbd,0xb9,0xb6,0xb9,0xbb,0xb9,0xb7,0xbb,0xbf,0xc1,0xbd,0xbd,0xbd,0xbd,0xbd,0xbb,0xbb,0xbd,0xbd,0xbb,0xbb,0xbb,0xbb,0xbb,0xb9,0xb9,0xb5,0xbb,0xb9,0xbf,0xb7,0xbd,0xb9,0xb9}, {0xbb,0xb9,0xb9,0xb9,0xbd,0xbd,0xbd,0xbd,0xb9,0xbd,0xbd,0xbd,0xbb,0xbd,0xbb,0xb9,0xbd,0xb9,0xb9,0xbb,0xbd,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xc1,0xc3,0xc3,0xc4,0xc2,0xc5,0xbd,0xce,0xc9,0x9d,0xc8,0xcb,0xcf,0x9c,0x7d,0x4d,0xa1,0x81,0xb8,0x60,0x42,0x80,0x4d,0x6b,0x2f,0x28,0x3e,0x85,0x6e,0x9c,0x7f,0x8f,0x4e,0x7a,0xa9,0xa5,0x41,0x5a,0x60,0x6e,0x22,0x51,0x6d,0x7d,0x8f,0xad,0xaa,0x40,0x2a,0x32,0x2b,0x2f,0x48,0x27,0x11,0x15,0x1e,0x15,0x1a,0x46,0x15,0x14,0x1c,0x35,0x15,0x5d,0x69,0x1b,0xf,0x41,0x78,0x54,0x14,0x17,0x2b,0x16,0x15,0x26,0x2f,0x21,0x38,0x3f,0x18,0x36,0x1d,0x35,0x20,0x24,0x22,0x27,0x33,0x2b,0x31,0x19,0x21,0x19,0x22,0x1f,0x27,0x33,0x44,0x2d,0x1f,0x22,0x2b,0x35,0x32,0x3a,0x13,0x10,0x25,0x3f,0x47,0xd1,0xe0,0xe1,0xd8,0x72,0x39,0x2a,0x23,0x15,0x12,0xe,0x42,0x4c,0x8c,0xb1,0x84,0x81,0x84,0x97,0xc5,0xc9,0x65,0x34,0x30,0x2c,0x2c,0x2b,0x31,0x28,0x40,0x2f,0x35,0x3c,0x35,0x46,0x51,0x2c,0x48,0x1a,0x1c,0x22,0x28,0x33,0x95,0x82,0xba,0xd6,0xd8,0xcc,0xbb,0xcd,0x84,0x98,0x3d,0x11,0x71,0x65,0x2b,0x13,0x6e,0x1f,0x5e,0x27,0x5a,0x70,0x20,0xc5,0xb7,0x1e,0x53,0x1e,0x41,0x26,0x93,0xd3,0xd4,0x91,0x50,0x5a,0x4e,0x3a,0x3b,0x51,0x3b,0x32,0x45,0x4d,0x47,0x24,0x33,0x52,0x65,0x88,0x88,0x79,0x85,0x7a,0x96,0x83,0xca,0xc2,0xc2,0xc2,0xc2,0xc4,0xc5,0xc0,0xc2,0xc2,0xc0,0xbc,0xbd,0xbf,0xbd,0xbb,0xbd,0xb9,0xb9,0xbb,0xbd,0xbd,0xbd,0xbd,0xbd,0xbb,0xb9,0xbb,0xbd,0xbb,0xbb,0xbb,0xb5,0xb7,0xbd,0xb3,0xbb,0xb9,0xc1,0xbb,0xb7,0xbd,0xb7,0xbf,0xbb,0xb2,0xb9,0xb3,0xb6,0xb6,0xb7,0xbb,0xbf,0xc1,0xb9,0xb2,0xbd,0xbd,0xbb,0xbb,0xbb,0xbd,0xbd,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xb9,0xb9,0xbd,0xb7,0xb9,0xae,0xb9,0xbb,0xc3}, {0xbd,0xbb,0xb9,0xb7,0xb9,0xb9,0xbb,0xbb,0xbb,0xbd,0xbb,0xb7,0xb7,0xb9,0xbb,0xb9,0xbf,0xb9,0xb8,0xbb,0xbf,0xbf,0xbd,0xbd,0xbf,0xbf,0xbd,0xbf,0xbf,0xc1,0xc1,0xc1,0xbf,0xc5,0xcf,0xb8,0x8c,0x78,0x7a,0xc4,0xa4,0x4c,0x38,0x5f,0x57,0x7d,0xc4,0x44,0x5e,0x37,0x4b,0x24,0x3f,0x2c,0x5c,0x3b,0x57,0x2e,0x44,0x1c,0x78,0x7b,0xb5,0x27,0x59,0x50,0x34,0x28,0x49,0x89,0xb3,0xbc,0xc1,0x82,0x76,0x34,0x41,0x36,0x26,0x28,0x2d,0x23,0x14,0x14,0x27,0x14,0x11,0x36,0x12,0x14,0x1b,0x48,0x27,0x63,0x54,0x16,0x14,0x1b,0x68,0x3d,0x12,0x15,0x13,0x28,0x32,0x3d,0x2b,0x2d,0x34,0x41,0x25,0x3f,0x3b,0x32,0x35,0x3d,0x2d,0x26,0x3a,0x29,0x23,0x22,0x20,0x27,0x36,0x2d,0x3d,0x5f,0x50,0x34,0x32,0x2a,0x38,0x57,0x2b,0x44,0x30,0x1c,0x42,0x4f,0x4e,0x9e,0xb8,0xe1,0xe0,0x54,0x44,0x38,0x26,0x15,0x17,0x16,0x38,0x39,0x5b,0x4f,0x3c,0x4b,0x46,0x4f,0x3d,0x40,0x34,0x31,0x3c,0x38,0x35,0x49,0x2b,0x2b,0x48,0x26,0x40,0x56,0x2b,0x2c,0x66,0x2a,0x1e,0x19,0x1e,0x43,0x3b,0x6c,0xd3,0x7b,0xe2,0xe1,0xd6,0xc7,0xc0,0xd7,0xd5,0x3d,0x10,0x10,0x34,0x31,0x15,0x4c,0x92,0x14,0x40,0x21,0x2b,0x4a,0x10,0x29,0x1b,0x22,0x2d,0x17,0x30,0x58,0xcb,0xa0,0x6b,0x44,0x40,0x3b,0x40,0x44,0x30,0x59,0x29,0x4f,0x64,0x41,0x5e,0x29,0x3f,0x52,0x7a,0x43,0x53,0x7d,0x6b,0x6d,0x79,0x85,0xca,0xc4,0xc2,0xc0,0xbe,0xc0,0xc2,0xbe,0xbe,0xc0,0xc0,0xbb,0xbb,0xbd,0xbd,0xb9,0xbf,0xb9,0xb7,0xb9,0xbd,0xbd,0xbb,0xbb,0xbb,0xb9,0xb9,0xbb,0xbb,0xb9,0xb9,0xb9,0xb7,0xbb,0xbb,0xb2,0xb7,0xbb,0xbd,0xb5,0xbb,0xb9,0xb9,0xbb,0xb5,0xb3,0xbb,0xb9,0xbf,0xbd,0xbb,0xb9,0xbb,0xbf,0xbf,0xbd,0xbb,0xbb,0xbb,0xb9,0xbb,0xbd,0xbd,0xbb,0xb9,0xb9,0xb9,0xb9,0xbb,0xbd,0xbb,0xbb,0xb5,0xbb,0xbb,0xb9,0xb3,0xb7,0xb9,0xbb}, {0xb9,0xb9,0xb9,0xb7,0xb7,0xb7,0xb9,0xbb,0xb9,0xbd,0xbb,0xb7,0xb5,0xbb,0xbb,0xb9,0xbd,0xb9,0xb8,0xb9,0xbd,0xbb,0xbb,0xbb,0xbf,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xc2,0xcd,0xbf,0xc4,0x89,0x67,0x58,0xaa,0x5f,0x35,0x27,0x35,0x65,0x9d,0xb0,0x44,0x96,0x2f,0x4c,0x35,0x49,0x69,0x52,0x42,0x78,0x36,0x3a,0x71,0x99,0xb5,0xa4,0x3d,0x9f,0x90,0x35,0x5b,0xb1,0xc3,0xcb,0xd3,0xb7,0x37,0x41,0x36,0x35,0x27,0x34,0x2d,0x2e,0x1c,0x13,0x11,0x24,0x18,0x22,0x52,0x13,0x17,0x1b,0x3c,0x22,0x60,0x3d,0x16,0x13,0x12,0x41,0x51,0x20,0x11,0x15,0x12,0x25,0x2d,0x2e,0x2a,0x25,0x35,0x2c,0x28,0x33,0x2b,0x27,0x28,0x27,0x2f,0x35,0x2d,0x26,0x26,0x24,0x2b,0x24,0x30,0x49,0x41,0x3b,0x28,0x2c,0x18,0x20,0x27,0x16,0x2f,0x1c,0x2f,0x32,0x36,0x29,0x5f,0x98,0xe3,0xe8,0xd4,0x77,0x36,0x33,0x25,0x1a,0xf,0x11,0x1c,0x29,0x1c,0x23,0x29,0x2d,0x2e,0x2b,0x3a,0x45,0x25,0x37,0x34,0x2f,0x34,0x3a,0x30,0x31,0x34,0x48,0x54,0x43,0x47,0x3b,0x44,0x3f,0x24,0x3c,0x5c,0x71,0xc9,0xb9,0xbf,0xe0,0xd8,0xe2,0xdf,0xcb,0xdb,0xc8,0x17,0x18,0xe,0x1a,0x4d,0x22,0x11,0x9c,0x16,0x4b,0x26,0x25,0x57,0x11,0x2d,0x17,0x4a,0xb3,0x20,0x37,0xd1,0xe0,0x50,0x61,0x2d,0x41,0x46,0x3c,0x7c,0x7b,0x79,0x45,0x81,0x69,0x2f,0x38,0x4e,0x7a,0x61,0x7e,0x77,0x6b,0x5d,0x89,0x93,0x63,0xbb,0xc8,0xc2,0xc2,0xc2,0xbc,0xbe,0xc0,0xbe,0xbc,0xc0,0xc0,0xbb,0xbb,0xbd,0xbd,0xb9,0xbd,0xb9,0xb7,0xb9,0xb9,0xb9,0xb9,0xbb,0xbd,0xb9,0xb9,0xb9,0xb9,0xb7,0xb5,0xb7,0xbd,0xbb,0xb5,0xb5,0xb5,0xbb,0xb7,0xb3,0xbb,0xb3,0xb9,0xbb,0xb5,0xb9,0xbb,0xbd,0xb2,0xb7,0xbd,0xbd,0xb9,0xb9,0xbb,0xbb,0xb7,0xb9,0xb9,0xb9,0xbb,0xbd,0xbd,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xbb,0xb9,0xb9,0xb3,0xb7,0xbd,0xb7,0xb9,0xb7,0xb7,0xb2}, {0xb5,0xb7,0xb9,0xb9,0xb9,0xb9,0xbb,0xbd,0xb7,0xbd,0xbf,0xbb,0xbb,0xbd,0xbd,0xb7,0xbb,0xbb,0xbb,0xbb,0xbd,0xbb,0xbd,0xbf,0xc1,0xbf,0xbf,0xbd,0xbd,0xbd,0xbd,0xbb,0xc0,0xc2,0xac,0xbf,0xc9,0xcd,0xc0,0xc7,0x89,0x43,0x2f,0x37,0x4b,0x42,0x46,0x3a,0x42,0x35,0x45,0x61,0xbd,0xc2,0xc3,0xcb,0xba,0x9f,0xbb,0xa9,0xd3,0xcd,0xc0,0xad,0xb3,0x40,0x46,0xc9,0xd4,0xd9,0xd3,0xd8,0xa2,0x50,0x2a,0x35,0x32,0x2d,0x48,0x35,0x3c,0x1a,0x12,0x16,0x48,0x5f,0x68,0x5b,0x13,0x13,0x21,0x4c,0x17,0x4c,0x14,0x35,0x14,0x14,0x1e,0x36,0x20,0x2b,0x13,0x12,0x1a,0x26,0x25,0x24,0x2e,0x26,0x32,0x29,0x22,0x30,0x32,0x27,0x2f,0x3b,0x43,0x39,0x28,0x39,0x2f,0x32,0x39,0x40,0x4c,0x35,0x2e,0x20,0x28,0x33,0x2f,0x28,0x28,0x30,0x2e,0x3a,0x26,0x3e,0x3f,0x43,0x6a,0xc5,0xe3,0xe3,0xc6,0x47,0x21,0x2f,0x25,0x2a,0x15,0x19,0x16,0x15,0x27,0x1c,0x2f,0x25,0x30,0x1e,0x23,0x27,0x1f,0x22,0x1f,0x1b,0x1f,0x1d,0x1c,0x2c,0x27,0x35,0x66,0x26,0x38,0x55,0x3a,0x3b,0x4e,0x43,0x42,0xdb,0xac,0xc2,0xe7,0xeb,0xda,0xe0,0xd2,0xd4,0xd2,0x56,0x59,0x46,0x1c,0x67,0x2d,0x10,0x9f,0x15,0x45,0x28,0x27,0x53,0x16,0x42,0x10,0x94,0xad,0x1d,0x39,0xc7,0xc5,0x55,0x5a,0x62,0x5c,0x35,0x55,0x59,0x68,0x3a,0x5f,0x3d,0x2b,0x32,0x35,0x51,0x2d,0x39,0x26,0x80,0x94,0x8e,0xcc,0xc5,0xd1,0xc0,0xc4,0xc2,0xc4,0xc4,0xc0,0xc0,0xc4,0xc2,0xbc,0xc0,0xc0,0xbc,0xbd,0xc1,0xbf,0xbb,0xbd,0xbb,0xb9,0xbb,0xbb,0xb9,0xbb,0xbd,0xbf,0xbd,0xbb,0xbb,0xbb,0xb7,0xb5,0xb5,0xbb,0xb3,0xaa,0xb5,0xb7,0xbf,0xb9,0xbb,0xb2,0xa7,0xb5,0xb7,0xb3,0xbb,0xb7,0xb7,0xbf,0xbb,0xb7,0xb6,0xb9,0xbd,0xbd,0xb9,0xb7,0xb9,0xb9,0xb7,0xbb,0xbd,0xbd,0xb9,0xbd,0xbb,0xb9,0xb9,0xb9,0xb7,0xb5,0xb5,0xbd,0xb9,0xb7,0xa9,0xb2,0xb5,0xbf,0xb9}, {0xb6,0xb6,0xb9,0xbf,0xbf,0xb9,0xb7,0xb9,0xbb,0xb7,0xb7,0xb9,0xbb,0xbb,0xbb,0xbd,0xb7,0xbd,0xbb,0xb4,0xc1,0xbd,0xb6,0x99,0xbd,0xbd,0xbd,0xbb,0xbb,0xbd,0xbf,0xc2,0xc3,0xc0,0xc0,0xc6,0xc7,0xc5,0xc5,0xc9,0xc2,0x7e,0x80,0x67,0x94,0x6f,0x38,0x4f,0x4b,0x3b,0x4b,0x93,0xcc,0xc3,0xd9,0xd1,0xc7,0xbf,0xca,0xcd,0xcc,0xd1,0xd7,0xc9,0x56,0x49,0xd1,0xd5,0xdc,0xa7,0x80,0x9b,0x70,0x50,0x45,0x33,0x2d,0x35,0x44,0x31,0x2e,0x23,0x21,0x2b,0x3a,0x40,0x32,0x36,0x1f,0x24,0x1a,0x1b,0x28,0x29,0x26,0x32,0x23,0x1c,0x22,0x25,0x24,0x1f,0x24,0x2e,0x4b,0x48,0x4c,0x33,0x35,0x21,0x21,0x2e,0x35,0x29,0x37,0x42,0x4a,0x2e,0x32,0x29,0x25,0x30,0x23,0x40,0x3d,0x4e,0x3a,0x27,0x32,0x2b,0x28,0x2e,0x1f,0x22,0x2a,0x1e,0x2a,0x2e,0x35,0x1b,0x24,0x26,0x50,0x39,0xdb,0xe1,0xda,0x6a,0x3d,0x24,0x1e,0x2c,0x1d,0x14,0xd,0x1f,0x20,0x2b,0x32,0x22,0x37,0x1b,0x30,0x36,0x24,0x22,0x20,0xf,0x16,0x25,0x17,0x32,0x22,0x45,0xc3,0x91,0x74,0x36,0x30,0x34,0x28,0x43,0xa4,0xe1,0xdd,0xe7,0xe7,0xd6,0xf0,0xd9,0xe1,0xd9,0x9d,0x33,0x28,0x3a,0x2b,0x81,0x2b,0xf,0x90,0x13,0x48,0x2a,0x21,0x50,0x4f,0x4c,0x12,0xaf,0x4a,0x1a,0x2f,0x2c,0x1d,0x15,0x13,0x2a,0x64,0x4e,0x31,0x42,0x4f,0x6d,0x5d,0x5e,0x69,0x6c,0x4d,0x5e,0x58,0x55,0x45,0x62,0x9e,0x8d,0xd0,0xd3,0xce,0xcd,0xbc,0xc7,0xc7,0xcb,0xc0,0xc4,0xbb,0xc0,0xbe,0xbc,0xbb,0xbb,0xbb,0xbc,0xbe,0xbe,0xb9,0xbd,0xbb,0xb6,0xc1,0xbb,0xb4,0x99,0xb4,0xb6,0xb7,0xb9,0xb9,0xb6,0xb6,0xb7,0xbb,0xb6,0xb6,0xb9,0xbb,0xb7,0xb7,0xbb,0xbb,0xbd,0xb9,0xb6,0xb7,0xb7,0xb7,0xbb,0xb9,0xb9,0xbb,0xbb,0xbb,0xbb,0xbb,0xb9,0xbd,0xbb,0xb7,0xb9,0xbd,0xbf,0xbd,0xbb,0xbd,0xbb,0xbd,0xb4,0xb9,0xb6,0xb9,0xb6,0xbb,0xb9,0xb7,0xb7,0xb9,0xb9,0xb9,0xb7}, {0xbb,0xb7,0xb7,0xb9,0xb9,0xb7,0xb9,0xbd,0xbb,0xb7,0xb7,0xb9,0xbb,0xb9,0xb9,0xb9,0xbd,0xbd,0xbb,0xbd,0xc1,0xb9,0xbd,0xb6,0xbd,0xbd,0xbf,0xbf,0xbf,0xbf,0xbf,0xc0,0xc3,0xc4,0xc3,0xc3,0xc5,0xc7,0xc7,0xc7,0xc5,0xbf,0xae,0xa9,0x9e,0x9d,0x39,0x40,0x55,0x70,0x48,0x93,0xc8,0xc9,0xc7,0xce,0xc9,0xcb,0xc0,0xc3,0xd3,0xd6,0xcb,0xd1,0xa8,0x93,0xa4,0xa2,0xa2,0x6c,0x4b,0x61,0x60,0x3e,0x44,0x2e,0x38,0x3a,0x4a,0x3a,0x2b,0x28,0x4e,0x36,0x27,0x3c,0x28,0x32,0x2f,0x27,0x36,0x37,0x33,0x38,0x2a,0x38,0x3e,0x34,0x2a,0x2f,0x31,0x32,0x41,0x3d,0x38,0x46,0x3f,0x33,0x23,0x40,0x44,0x3b,0x45,0x3b,0x3a,0x40,0x51,0x43,0x59,0x35,0x3b,0x37,0x3a,0x1d,0x4c,0x32,0x26,0x26,0x68,0x42,0x1b,0x3f,0x30,0x20,0x26,0x38,0x48,0x32,0x22,0x4e,0x21,0x38,0x4d,0x41,0x8a,0xde,0xdb,0xd8,0x70,0x4f,0x3f,0x29,0x23,0xc,0x3e,0x26,0x28,0x30,0x68,0x23,0x32,0x19,0x2a,0x3e,0x21,0x73,0x26,0x61,0x31,0x53,0x1c,0x63,0x37,0x6b,0xcf,0x9b,0x5f,0x40,0x33,0x4c,0x5b,0x4c,0xe3,0xdb,0xd8,0xe6,0xda,0xed,0xe4,0xe1,0xe1,0xe4,0x23,0x17,0x1d,0xf,0x24,0xa9,0x34,0x13,0x6b,0x1a,0x26,0x3f,0x12,0x60,0xca,0x5d,0xf,0x28,0x74,0x19,0x13,0x56,0xb3,0xb0,0x4a,0x84,0x5e,0x2c,0x38,0x41,0x44,0x23,0x49,0x23,0x38,0x4b,0x21,0x5c,0x4e,0x42,0x40,0x7f,0x76,0x97,0x7a,0x79,0x8c,0x88,0x8d,0xbf,0xc3,0xc3,0xc0,0xc2,0xc0,0xbe,0xbe,0xbc,0xbc,0xbc,0xbc,0xbc,0xbb,0xbb,0xbd,0xbd,0xb9,0xbd,0xbf,0xb6,0xb9,0xb6,0xb9,0xb9,0xbb,0xbd,0xbb,0xb9,0xb9,0xb9,0xb9,0xb9,0xb7,0xb7,0xb9,0xbb,0xbb,0xb9,0xbb,0xbd,0xb9,0xb6,0xb7,0xb6,0xb6,0xb9,0xbf,0xbd,0xbb,0xb7,0xb7,0xb7,0xb7,0xb9,0xbb,0xb7,0xb6,0xb7,0xb9,0xbb,0xbb,0xbb,0xb9,0xb7,0xb9,0xb7,0xbb,0xb9,0xbb,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb9,0xb9,0xb9}, {0xbf,0xb9,0xb6,0xb8,0xb9,0xb8,0xb9,0xbb,0xbb,0xb9,0xb9,0xb9,0xb9,0xb8,0xb6,0xb6,0xb8,0xb8,0xb0,0xb9,0xb7,0xb6,0xbb,0xbf,0xbd,0xbd,0xbf,0xbf,0xbf,0xbf,0xbd,0xbd,0xbf,0xc5,0xc5,0xc1,0xc3,0xc7,0xc7,0xc1,0xbc,0xc1,0xb0,0x2e,0x26,0x65,0x3a,0x50,0x37,0x2f,0x43,0xc9,0xbf,0xcd,0xd5,0xcf,0xd4,0xc1,0xc5,0xc7,0xd3,0xd7,0xd5,0xd3,0x4d,0x36,0x55,0x3e,0x3a,0x50,0x4d,0x47,0x34,0x2e,0x3b,0x35,0x43,0x4a,0x44,0x37,0x46,0x43,0x4b,0x32,0x46,0x30,0x37,0x35,0x33,0x3b,0x36,0x42,0x2c,0x2b,0x32,0x35,0x3a,0x30,0x33,0x34,0x28,0x60,0x52,0x5c,0x4f,0x59,0x1a,0x1b,0x81,0x30,0x17,0x2f,0x27,0x1d,0x3c,0x5c,0x26,0x30,0x94,0x85,0x93,0x8a,0x74,0x23,0x23,0x1e,0x35,0x25,0x2e,0xd,0x1d,0x32,0x27,0x1d,0x22,0x48,0x32,0x16,0x5f,0x32,0x24,0x29,0x2e,0x31,0x32,0xd5,0xe5,0xdb,0x8c,0x2a,0x3c,0x19,0xb,0x11,0x39,0x22,0x2e,0x18,0x47,0x23,0x33,0x18,0x1f,0x3a,0x15,0xa1,0x22,0x9f,0x35,0x6a,0x1a,0x5c,0x74,0x2b,0xd8,0xaf,0x93,0x74,0x70,0x80,0x95,0x8b,0xdb,0xdf,0xe9,0xe5,0xe9,0xde,0xdc,0xed,0xe0,0xde,0x31,0x99,0x64,0x35,0x53,0x85,0x54,0x41,0x6f,0x61,0x42,0x64,0x33,0x9b,0x76,0x78,0x37,0x46,0x5f,0x4d,0x28,0x2a,0x36,0x4f,0x3c,0x70,0x89,0x1e,0x36,0x1e,0x3a,0x26,0x57,0x2a,0x23,0x44,0x2d,0x39,0x31,0x6a,0x43,0x6d,0x5b,0x58,0x4f,0x7b,0x55,0xa2,0x8d,0xc9,0xbf,0xbb,0xc0,0xbe,0xc2,0xc0,0xbe,0xbe,0xbc,0xbc,0xbc,0xbb,0xb7,0xb5,0xbd,0xbb,0xb4,0xbb,0xb9,0xb6,0xbb,0xc1,0xbd,0xbb,0xb9,0xbb,0xbb,0xb8,0xb8,0xb8,0xb8,0xbb,0xbb,0xb6,0xb8,0xbd,0xbd,0xb8,0xb9,0xbb,0xb8,0xb6,0xb8,0xb6,0xb6,0xb9,0xb0,0xb4,0xb9,0xbd,0xbb,0xb9,0xb8,0xb8,0xb9,0xb9,0xb8,0xb6,0xb6,0xb8,0xb9,0xb9,0xbb,0xbb,0xb8,0xbb,0xb9,0xbd,0xb8,0xb6,0xb6,0xb8,0xb9,0xb9,0xb8,0xb8,0xb9,0xbb}, {0xbf,0xbb,0xb9,0xbb,0xbd,0xbb,0xb8,0xb8,0xbb,0xbb,0xb9,0xb9,0xb9,0xb8,0xb6,0xb6,0xb6,0xbd,0xb0,0xb6,0xb6,0xc1,0xbf,0xba,0xbd,0xbb,0xbb,0xbd,0xbd,0xbd,0xbd,0xbb,0xbe,0xc1,0xc2,0xc1,0xc2,0xc3,0xc3,0xbd,0xc0,0xbb,0xc0,0xb0,0x6a,0x3e,0x54,0x59,0x27,0x31,0x43,0xd9,0xc9,0xab,0x90,0x90,0xb2,0x8e,0x8f,0x95,0xa2,0x84,0x94,0x9f,0x44,0x3f,0x37,0x37,0x30,0x42,0x44,0x32,0x28,0x31,0x33,0x2b,0x3c,0x40,0x24,0x2a,0x2c,0x2b,0x33,0x1e,0x38,0x31,0x48,0x3c,0x26,0x2d,0x26,0x3f,0x1e,0x35,0x46,0x43,0x40,0x40,0x45,0x3d,0x42,0x8a,0x87,0x49,0x8b,0x29,0x1f,0x75,0x61,0x36,0x1f,0x43,0x38,0x22,0x66,0x30,0x3a,0x62,0x3f,0x29,0x1f,0x27,0x34,0x28,0x19,0x1b,0x1a,0x1d,0x11,0x5d,0x5c,0x3d,0x32,0x35,0x2f,0x27,0x11,0x4c,0x51,0x23,0x2f,0x2d,0x2c,0x39,0x2b,0x79,0xdc,0xe5,0xd2,0x40,0x27,0xf,0x13,0x15,0x29,0x25,0x35,0x19,0x24,0x1a,0x29,0x20,0x34,0x3b,0x2b,0x62,0x32,0xa0,0x39,0x78,0x1f,0x42,0x52,0x25,0xd4,0x59,0x34,0x2e,0x31,0x6c,0x95,0x4f,0x47,0x8b,0xdb,0xe1,0xe3,0xe1,0xe2,0xe9,0xdd,0xdf,0xd8,0x6b,0x36,0x3c,0x2a,0x56,0x34,0x27,0x36,0x40,0x28,0x30,0x3f,0x57,0x39,0x43,0x42,0x3f,0x36,0x3b,0x3c,0x2f,0x21,0x30,0x29,0x13,0x5b,0x6e,0x3d,0x19,0x3c,0x24,0x24,0x32,0x12,0x9f,0x6e,0x3b,0x1c,0x3d,0xc8,0xc7,0xc4,0xdc,0xb9,0xc9,0xca,0xb9,0xbb,0xcf,0xc1,0xbf,0xc4,0xbe,0xbe,0xc0,0xbe,0xbe,0xbe,0xbc,0xbc,0xbb,0xb7,0xb6,0xb8,0xbd,0xb0,0xb6,0xb4,0xbb,0xbb,0xb6,0xbb,0xb9,0xb6,0xb8,0xb8,0xb8,0xb6,0xb6,0xb8,0xb9,0xb9,0xb8,0xb8,0xbb,0xbb,0xb8,0xb8,0xb9,0xb8,0xb6,0xb8,0xb8,0xb8,0xbb,0xa9,0xae,0xb8,0xbd,0xbd,0xbb,0xb9,0xb8,0xbb,0xbb,0xbb,0xb9,0xb8,0xb8,0xb8,0xb9,0xb9,0xb9,0xb2,0xbb,0xb6,0xbb,0xb4,0xb4,0xb6,0xb8,0xb9,0xb9,0xb8,0xb8,0xb9,0xb9}, {0xbd,0xbb,0xbb,0xbd,0xbf,0xbd,0xb9,0xb8,0xbb,0xbb,0xbb,0xb9,0xb9,0xb9,0xb8,0xb6,0xb8,0xbf,0xb2,0xb8,0xb6,0xc1,0xbf,0xb6,0xbd,0xbb,0xbb,0xbb,0xbb,0xbd,0xbd,0xbf,0xc0,0xbe,0xbd,0xc2,0xc3,0xc0,0xbe,0xbf,0xba,0xc0,0xc0,0xb4,0x7f,0x4a,0x55,0x36,0x2b,0x2a,0x81,0xd8,0xb4,0x2a,0x27,0x2c,0x3c,0x32,0x1b,0x27,0x44,0x26,0x2d,0x35,0x89,0x87,0x37,0x2b,0x55,0x2d,0x20,0x26,0x27,0x26,0x2e,0x20,0x2a,0x42,0x3b,0x21,0x2b,0x33,0x2a,0x23,0x21,0x53,0x5b,0x20,0x24,0x26,0x3c,0x1f,0x1d,0x20,0x3d,0x39,0x3c,0x4e,0x31,0x48,0x74,0x70,0x71,0x63,0x31,0x16,0x43,0x49,0x63,0x23,0x47,0x1f,0x22,0x7b,0x4d,0x1b,0x48,0x27,0x28,0x21,0x44,0x17,0x33,0x17,0x16,0x37,0x39,0xf,0x5c,0x44,0x28,0x4c,0x1b,0x30,0x2c,0xd,0x2f,0x58,0x30,0x30,0x4b,0x44,0x37,0x7f,0x4c,0x1b,0x59,0x8a,0xdf,0x8a,0xd,0x1d,0x30,0x14,0x20,0x18,0x22,0x19,0x1e,0x3f,0x1d,0x13,0x26,0x21,0x24,0x53,0x19,0x9c,0x36,0x58,0x1c,0x2a,0x3d,0x29,0xac,0x52,0x23,0x1c,0x25,0x50,0x72,0x52,0x3f,0x3b,0x5c,0xa1,0xa0,0xe6,0xda,0xda,0xe9,0xde,0xdf,0x70,0x42,0x32,0x40,0x6d,0x39,0x26,0x40,0x7d,0x31,0x62,0x67,0x71,0x41,0x2e,0x3e,0x3d,0x39,0x4a,0x18,0x2d,0x20,0x35,0x30,0x57,0x31,0x18,0x56,0x2f,0x2e,0x60,0x2e,0x8d,0x12,0x6c,0x15,0xa2,0x34,0x6e,0xd6,0xd4,0xce,0xcb,0xd0,0xc4,0xcb,0xc8,0xd2,0xc1,0xc7,0xc7,0xc8,0xc8,0xbc,0xbb,0xc0,0xbe,0xbd,0xbd,0xbd,0xbb,0xbb,0xb9,0xb9,0xc1,0xb4,0xb9,0xb6,0xbd,0xbb,0xb4,0xbd,0xb9,0xb8,0xb8,0xb9,0xb9,0xb8,0xb9,0xb9,0xb6,0xb6,0xb8,0xb9,0xb8,0xb8,0xb9,0xb8,0xbb,0xb8,0xb6,0xb8,0xb8,0xb6,0xbb,0xb4,0xb6,0xb8,0xb8,0xb6,0xb6,0xb8,0xb9,0xb8,0xb9,0xbd,0xbb,0xb9,0xb8,0xb8,0xb9,0xb4,0xb2,0xad,0xb6,0xb4,0xbb,0xb6,0xb8,0xb9,0xb8,0xb8,0xb8,0xb9,0xb9,0xb8,0xb8}, {0xbd,0xbb,0xbb,0xbb,0xbb,0xbd,0xbb,0xb9,0xbb,0xbb,0xbb,0xb9,0xbb,0xbb,0xbb,0xb9,0xb8,0xbb,0xb4,0xb9,0xb7,0xb7,0xbb,0xbb,0xbd,0xbd,0xbd,0xbb,0xbb,0xbd,0xbf,0xc1,0xc1,0xbd,0xbd,0xc3,0xc5,0xbf,0xc0,0xc2,0xc5,0xbf,0xb6,0xc6,0x85,0x4d,0x48,0x30,0x42,0x3b,0xbc,0xc8,0xbb,0x48,0x42,0x38,0x41,0x1b,0x27,0x1a,0x65,0x50,0x30,0x34,0x46,0x9c,0x34,0x35,0x5d,0x47,0x29,0x2f,0x2d,0x6f,0x38,0x33,0x3e,0x2a,0x53,0x34,0x3a,0x32,0x41,0x31,0x2e,0x37,0x7c,0x2f,0x30,0x2a,0x55,0x48,0x2c,0x1c,0x31,0x5a,0x27,0x28,0x2e,0x21,0x49,0x3b,0x44,0x66,0x13,0x5d,0x71,0x55,0x15,0x5d,0x46,0x12,0x7f,0x6d,0x14,0x15,0x31,0x18,0x40,0x35,0x1a,0x27,0x7b,0x15,0x2c,0x62,0x12,0x5b,0x28,0x16,0x5f,0x13,0x25,0x58,0xf,0x31,0x1b,0x18,0x23,0x40,0x36,0xf,0x44,0x2e,0xe,0x79,0x17,0x39,0xa0,0x1a,0x37,0x5d,0x3e,0x33,0x14,0x19,0x29,0x41,0x2c,0x30,0x3e,0x2d,0x39,0x33,0x24,0x47,0x17,0xab,0x34,0x46,0x79,0x33,0x45,0x27,0x32,0x2a,0x32,0x37,0x39,0x32,0x3c,0x2f,0x26,0x4a,0x79,0x3d,0x27,0x54,0x9e,0xe5,0xde,0xdd,0xd6,0x2b,0x2f,0x52,0x31,0x3e,0x43,0x43,0x4b,0x53,0x48,0x4a,0x4a,0x44,0x27,0x2b,0x40,0x28,0x2c,0x50,0x30,0x51,0x4d,0x2f,0x3b,0x47,0x67,0x1b,0x53,0x37,0x2d,0x59,0x2a,0xab,0x16,0x6a,0x1b,0xb5,0x2b,0x6c,0xcd,0xd8,0xcc,0xcc,0xcc,0xc5,0xb7,0xca,0xcd,0xb9,0xcf,0xc3,0xbe,0xca,0xc2,0xbc,0xc0,0xbe,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbb,0xbf,0xb8,0xbd,0xb8,0xb6,0xb9,0xbb,0xbb,0xb9,0xb8,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb4,0xb4,0xb9,0xb9,0xb6,0xb6,0xb9,0xb9,0xbd,0xb9,0xb8,0xb8,0xb6,0xb6,0xb9,0xb8,0xb8,0xb9,0xb9,0xb8,0xb6,0xb6,0xb8,0xb4,0xb6,0xb9,0xbb,0xbb,0xb9,0xb9,0xb9,0xb9,0xb6,0xb2,0xb8,0xb8,0xb9,0xb8,0xb9,0xb9,0xb8,0xb6,0xb6,0xb8,0xb9,0xb8,0xb8}, {0xbb,0xbb,0xbb,0xb9,0xb9,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xb9,0xb9,0xbd,0xbd,0xb9,0xbb,0xbf,0xbb,0xb9,0xbd,0xbb,0xbf,0xb6,0xbb,0xbd,0xbf,0xbd,0xbb,0xbb,0xbd,0xc1,0xbf,0xbf,0xc0,0xc2,0xc2,0xc2,0xc2,0xc2,0xba,0xbf,0xb4,0xc4,0x4d,0x5a,0x6e,0x56,0x67,0x62,0xc0,0xcd,0xbc,0x50,0x60,0x40,0x81,0x62,0x22,0x8e,0xa6,0x46,0x36,0x46,0x67,0x8b,0x6e,0x60,0x33,0x5c,0x51,0x39,0x32,0x97,0x55,0x29,0x39,0x3b,0x5e,0x33,0x2f,0x70,0x52,0x2b,0x4a,0x39,0x75,0x50,0x33,0x3e,0x6f,0x7a,0x37,0x3e,0x56,0x5a,0x37,0x50,0x1e,0x3b,0x55,0x5e,0x50,0x16,0x51,0xb4,0xa6,0x17,0x4b,0x68,0x18,0x73,0x7c,0x15,0x4a,0xe,0x14,0x72,0x84,0x27,0x24,0x88,0x1f,0x2b,0x65,0x14,0x5a,0x4e,0x13,0x5c,0x18,0x1a,0x87,0x1b,0x33,0x20,0xe,0x18,0x57,0x60,0x11,0x2d,0x60,0xf,0x89,0xc0,0x56,0x68,0x17,0x2a,0x7c,0x8a,0x87,0x16,0x3c,0x1f,0x1f,0x2d,0x36,0x29,0x44,0x38,0x37,0x3f,0x22,0x5c,0x19,0xab,0x38,0x39,0x97,0x63,0x44,0x30,0x2b,0x29,0x34,0x4c,0x3a,0x47,0x5b,0x41,0x93,0xe2,0xea,0x8a,0x52,0x78,0x70,0x5c,0xb9,0xe5,0xd0,0x34,0x2b,0x49,0x27,0x33,0x41,0x31,0x43,0x62,0x42,0x4a,0x50,0x2a,0x3e,0x42,0x3d,0x69,0x44,0x36,0x50,0x5c,0x76,0x39,0x46,0x6d,0xcb,0x13,0x5f,0x3a,0x29,0x62,0x33,0x9b,0x16,0x6e,0x1e,0xaf,0x29,0x73,0xd7,0xcc,0xcd,0xce,0xc4,0xca,0xbc,0xc2,0xc8,0xbe,0xcd,0xbd,0xbe,0xc4,0xc4,0xc0,0xc1,0xbf,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xb8,0xbb,0xb8,0xb6,0xb9,0xb4,0xb8,0xb0,0xb8,0xb8,0xb8,0xb8,0xb8,0xb6,0xb8,0xb9,0xb8,0xb8,0xb6,0xb8,0xb8,0xb8,0xb8,0xb9,0xb8,0xbb,0xb8,0xb6,0xb8,0xb6,0xb6,0xb9,0xb4,0xb8,0xbb,0xbd,0xbd,0xb9,0xb8,0xb4,0xb4,0xb6,0xb9,0xbb,0xbb,0xb9,0xb9,0xb9,0xbf,0xb9,0xb9,0xb9,0xbd,0xb6,0xb6,0xb8,0xb9,0xb8,0xb6,0xb6,0xb6,0xb8,0xb9,0xb9}, {0xb6,0xb8,0xbb,0xbb,0xbb,0xbb,0xbb,0xb9,0xbb,0xbb,0xbb,0xb8,0xb9,0xbd,0xbd,0xb9,0xb2,0xbb,0xb8,0xab,0xb9,0xbf,0xbb,0x9d,0xb7,0xbd,0xbf,0xbf,0xbb,0xb9,0xbb,0xbd,0xbe,0xc0,0xc0,0xbb,0xbe,0xc4,0xc4,0xbe,0xc0,0xbc,0xb8,0xc2,0xb8,0xc0,0xbb,0xbc,0xc0,0xba,0xc8,0xcf,0x93,0x79,0x66,0x52,0x55,0x7b,0x5b,0x8c,0x7c,0x7b,0x3c,0x87,0x3a,0x6b,0x35,0x64,0x41,0x5d,0x3b,0x5c,0x2c,0x8f,0x6c,0x48,0x68,0x2b,0x67,0x4e,0x58,0x2e,0x72,0x44,0x6d,0x39,0x52,0x6f,0x39,0x81,0x2d,0x72,0x57,0x5b,0x82,0x74,0x94,0xa6,0x39,0x87,0xa9,0x76,0x27,0x78,0xb7,0xb2,0xa2,0x2d,0x8e,0x34,0x54,0x81,0x3d,0x4a,0x3a,0x11,0x7e,0xb3,0x81,0x28,0x81,0x1c,0x21,0x70,0x3a,0x3e,0x77,0x3c,0x57,0x4b,0x16,0x7c,0x55,0x1d,0x33,0x11,0x1a,0x74,0x6d,0x10,0x23,0x8f,0x49,0x43,0x8b,0x89,0x94,0x2a,0x28,0xc9,0xd0,0xb7,0x19,0x62,0x7c,0x5e,0x5e,0x3e,0x2e,0x4e,0x4a,0x53,0x47,0x2d,0x26,0x47,0x1a,0xaf,0x3f,0x2c,0x81,0x5b,0x51,0x27,0x37,0x30,0x35,0x4d,0x38,0x44,0x6a,0x2d,0xc8,0xe0,0xe7,0xde,0xe0,0xa7,0x4e,0x72,0xca,0xdb,0xd2,0x3d,0x48,0x3e,0x94,0x37,0x50,0x55,0x40,0x64,0x3d,0x4c,0x37,0x60,0x42,0x49,0x2f,0x42,0x81,0x25,0x15,0x14,0x10,0x12,0x1b,0xbd,0xd5,0x22,0x2f,0x3a,0x2f,0x36,0x1f,0x86,0x1c,0x45,0x1d,0x64,0x27,0x6b,0xd4,0xc2,0xd0,0xca,0xd0,0xbf,0xd4,0xc0,0xc0,0xc0,0xc3,0xbf,0xce,0xc0,0xc0,0xc0,0xbf,0xbf,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xb4,0xbb,0xb8,0xab,0xb9,0xbd,0xb9,0x9d,0xb8,0xb8,0xb8,0xb9,0xb8,0xb6,0xb6,0xb8,0xb8,0xb9,0xb9,0xb6,0xb8,0xbb,0xbb,0xb8,0xb4,0xb8,0xb6,0xb6,0xb8,0xb8,0xb6,0xbb,0xbd,0xbb,0xb9,0xb9,0xb9,0xb9,0xb8,0xb8,0xb9,0xb9,0xb9,0xbb,0xbb,0xb9,0xb9,0xb8,0xbb,0xb6,0xb9,0xb8,0xbd,0xb2,0xb6,0xb6,0xb8,0xb8,0xb8,0xb6,0xb4,0xb6,0xb9,0xbd}, {0xbb,0xb8,0xb6,0xb6,0xb8,0xbb,0xbb,0xbb,0xb8,0xb9,0xb9,0xb8,0xb8,0xb9,0xb8,0xb6,0xbb,0xbf,0xb7,0xb5,0xbb,0xb9,0xb2,0xb6,0xb9,0xbd,0xbf,0xb8,0xb9,0xb0,0xbf,0xc1,0xc1,0xc2,0xc1,0xbf,0xbd,0xbb,0xbf,0xc2,0xc0,0xbc,0xb9,0xbc,0xb8,0xc2,0xba,0xbe,0xc3,0xc6,0xa3,0x96,0x89,0x2c,0x35,0x2c,0x88,0x5a,0x28,0x4a,0x70,0x27,0x37,0x61,0x42,0x33,0x30,0x3a,0x25,0x57,0x2a,0x49,0x3f,0x8c,0x2b,0x2a,0x3b,0x42,0x37,0x27,0x29,0x3a,0x2d,0x27,0x40,0x31,0x40,0x2b,0x49,0x52,0x4d,0x48,0x17,0x3e,0xb7,0xb7,0xb8,0xac,0x74,0x49,0x51,0x4a,0x77,0x7a,0x7f,0x5b,0x4f,0x3c,0x67,0x62,0x55,0x74,0x4f,0x62,0x2c,0x19,0xc0,0x81,0xa4,0x72,0x2a,0x2b,0x7f,0x65,0x51,0x4f,0x68,0xa3,0x80,0x74,0x77,0x59,0x4c,0x37,0xe,0x6e,0x90,0x6e,0x1a,0x1d,0x87,0x9c,0x9d,0x6e,0x83,0x9f,0x34,0x1a,0xbe,0xcf,0xc9,0x1c,0x2e,0x9a,0xc9,0xc6,0xcc,0xc8,0x63,0x45,0x2d,0x3f,0x18,0x33,0x36,0x4e,0x22,0xa3,0x6a,0x1e,0x4b,0x3c,0x4f,0x40,0x3a,0x35,0x28,0x1f,0x2a,0x4b,0x30,0x7f,0xd4,0xdc,0xe3,0xe2,0xd4,0x7a,0x37,0x56,0xd5,0xde,0xd2,0x4a,0x3e,0x22,0x6a,0x1c,0x24,0x54,0x27,0x4e,0x2c,0x45,0x22,0x3a,0x2a,0x35,0x23,0x32,0x50,0x1f,0x90,0x7e,0x45,0x39,0x47,0x94,0x9e,0x4a,0x1d,0x7a,0x9e,0x77,0x30,0xb1,0x32,0x86,0x3a,0x5b,0x33,0x45,0xcc,0xce,0xce,0xca,0xc6,0xc7,0xc5,0xc3,0xc4,0xbe,0xc1,0xbd,0xbc,0xc0,0xbc,0xc0,0xbf,0xbf,0xbd,0xbb,0xbd,0xbd,0xbb,0xb9,0xbb,0xbf,0xb9,0xb6,0xbd,0xb9,0xb0,0xb2,0xb8,0xb9,0xb9,0xb4,0xb8,0xad,0xb9,0xb8,0xb6,0xb8,0xb8,0xb8,0xb6,0xb6,0xb8,0xb9,0xb4,0xb8,0xb2,0xb4,0xb6,0xb8,0xb9,0xb2,0xbd,0xb8,0xb2,0xb6,0xb6,0xb6,0xb8,0xbb,0xbb,0xb9,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb6,0xb4,0xb8,0xb8,0xb4,0xb2,0xb4,0xb6,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8}, {0xbb,0xb9,0xb8,0xb9,0xb9,0xb9,0xb9,0xb8,0xbd,0xbb,0xb8,0xb8,0xbb,0xbb,0xb9,0xbf,0xb4,0xb9,0xb9,0xb9,0xbf,0xb9,0xb2,0xb4,0xb9,0xbb,0xb9,0xb8,0xb9,0xb6,0xbf,0xbf,0xc2,0xc1,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xb9,0xbf,0xbd,0xc3,0xb9,0xba,0xba,0xc0,0xc4,0xbe,0x96,0x33,0x3a,0x41,0x22,0x53,0x27,0x2a,0x44,0x4d,0xab,0x37,0x33,0x5b,0x40,0x34,0x3d,0xb9,0x3c,0x31,0x3d,0x2e,0x2e,0x57,0x2b,0x2e,0x57,0x5d,0x2f,0x38,0x39,0x2b,0x2e,0x3f,0x2d,0x3d,0x34,0x2d,0x63,0xb3,0xbc,0x87,0x43,0x7e,0x7a,0x64,0x5e,0x3f,0x4b,0x56,0x3e,0x34,0x33,0x34,0x6b,0x5e,0x2c,0x3c,0x49,0x3b,0x3a,0x22,0x53,0x9f,0x2f,0x3b,0xa4,0x57,0x1b,0x1c,0x29,0x3f,0x1a,0x93,0x43,0x1b,0x26,0x4e,0x9b,0x99,0x7f,0x87,0x59,0xf,0x6d,0xaf,0xa4,0x31,0x1a,0x8e,0x48,0x5b,0x12,0x41,0x1f,0x37,0xc,0x17,0x3c,0x2b,0x28,0x3c,0xad,0x2d,0x52,0xdf,0xd8,0xd0,0xb5,0xa1,0x50,0x2f,0x3f,0x3f,0x50,0x61,0x6b,0x4c,0x89,0x45,0x74,0x56,0x49,0x6e,0xcb,0xcc,0x7d,0x42,0x25,0x43,0x4f,0xdb,0xe2,0xec,0xe3,0xe6,0xdf,0xbb,0x4f,0x9b,0xe1,0xdf,0xe3,0xd7,0x73,0x5d,0x3e,0x43,0x3b,0x63,0x4c,0x2c,0x5b,0x41,0x35,0x4d,0x78,0x51,0x4f,0x3d,0x22,0x35,0x45,0x4a,0x73,0x38,0x24,0x56,0x42,0x4b,0x58,0x3d,0x4f,0x3e,0xb1,0xd3,0xc5,0xaf,0x52,0x3e,0x49,0x9a,0xc4,0xc8,0xca,0xc8,0xc8,0xc9,0xc8,0xc6,0xc6,0xc2,0xc5,0xc1,0xc0,0xc2,0xbc,0xbe,0xc1,0xbf,0xb9,0xb9,0xbd,0xbb,0xbb,0xbf,0xb8,0xbb,0xb6,0xb4,0xb9,0xb8,0xb2,0xb4,0xb8,0xb8,0xb4,0xb4,0xb6,0xb2,0xb9,0xb6,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xbb,0xb9,0xbd,0xb9,0xb6,0xb9,0xb8,0xb9,0xb6,0xb4,0xb6,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb8,0xb4,0xb4,0xb8,0xb9,0xb9,0xb6,0xb4,0xb6,0xb6,0xb4,0xb4,0xb6,0xb6,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8}, {0xb8,0xb9,0xb9,0xbb,0xbb,0xb9,0xb8,0xb8,0xb8,0xb8,0xb0,0xb0,0xb9,0xb6,0xb2,0xb9,0xb6,0xb9,0xb5,0xb5,0xba,0xb8,0xb6,0xba,0xb7,0xb9,0xb2,0xb9,0xb9,0xbb,0xbf,0xbb,0xbf,0xbf,0xbd,0xc0,0xbf,0xc0,0xbd,0xbb,0xb9,0xbf,0xb6,0xc5,0xbb,0xb8,0xbd,0xc4,0xbf,0xbc,0xaa,0x44,0x51,0x7c,0x38,0x7c,0x29,0x64,0x60,0x70,0xac,0x4f,0x69,0x25,0x5e,0x53,0x5f,0xaa,0x50,0x30,0x65,0x3a,0x42,0x5b,0x4e,0x3f,0x40,0x67,0x3a,0x64,0x5f,0x47,0x63,0x52,0x30,0x69,0x4d,0x41,0x48,0xc8,0xbc,0xbd,0x3a,0x84,0x38,0x25,0x1e,0x23,0x50,0x51,0x28,0x1e,0x26,0x2a,0x51,0xad,0x39,0x40,0x55,0x21,0x21,0x1f,0x58,0xca,0x27,0x58,0x53,0x12,0x1a,0x1d,0x51,0x11,0x83,0x59,0x12,0x65,0x14,0x8e,0x55,0x3e,0x45,0x4d,0x11,0x60,0xb2,0xba,0x41,0x13,0x8a,0x94,0x21,0x11,0x67,0x5f,0xf,0xb,0x14,0x4c,0x49,0x26,0x26,0x91,0x7c,0x8b,0x96,0xce,0xdf,0xe9,0xce,0xe2,0xd2,0x69,0x3e,0x53,0x46,0x42,0x40,0x5f,0x3b,0x4b,0x37,0x7d,0x51,0x6b,0x7a,0x4f,0x23,0x38,0x29,0x2e,0x1d,0xc7,0xd8,0xdf,0xe1,0xda,0xde,0xde,0xd4,0xdf,0xde,0xe7,0xd8,0xcd,0x48,0x5d,0x75,0x45,0x5e,0x40,0x3e,0x6a,0x76,0x6d,0x7a,0x49,0x5e,0x4c,0x53,0x4e,0x40,0x35,0x56,0x4e,0x7c,0x55,0x30,0x51,0x68,0x7b,0x52,0x69,0x7d,0x60,0xd6,0xd7,0xbc,0x4b,0x73,0x4c,0x66,0xca,0xba,0xbf,0xc2,0xc2,0xc2,0xc2,0xc2,0xc1,0xc4,0xc0,0xc5,0xc1,0xc0,0xc2,0xbb,0xbd,0xbf,0xbd,0xb8,0xb6,0xbd,0xb9,0xb6,0xbf,0xb6,0xb9,0xb6,0xb6,0xb9,0xb8,0xb4,0xb8,0xb6,0xb8,0xae,0xb4,0xb6,0xb8,0xb8,0xb4,0xb9,0xb8,0xb6,0xb6,0xb8,0xb8,0xb6,0xb4,0xb8,0xb8,0xb4,0xb9,0xb9,0xb4,0xb9,0xb9,0xb8,0xb8,0xb8,0xb8,0xbb,0xbd,0xb9,0xb4,0xb6,0xb9,0xb9,0xb8,0xb2,0xb2,0xb8,0xbb,0xb9,0xb6,0xb4,0xb4,0xb4,0xb6,0xb8,0xb9,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6}, {0xb6,0xb8,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb6,0xb9,0xb4,0xb4,0xbd,0xb9,0xb2,0xb4,0xb9,0xb8,0xb3,0xb1,0xb6,0xb8,0xb8,0xba,0xb7,0xbb,0xb0,0xbb,0xb9,0xbf,0xbd,0xbc,0xbc,0xbc,0xbd,0xc0,0xbf,0xbf,0xbd,0xbb,0xbe,0xbb,0xa5,0xb9,0xbb,0xb9,0xc2,0xbf,0xbf,0xc1,0x97,0x72,0xb0,0x8f,0x4d,0x97,0x54,0x45,0x8b,0x7f,0x56,0x79,0x59,0x35,0x68,0x6e,0x34,0xb2,0x77,0x6f,0xba,0x5c,0x61,0x39,0x79,0x50,0x4c,0x77,0x74,0x55,0x92,0x43,0xad,0x60,0x5d,0x3d,0x6f,0x5b,0x3f,0x8d,0xa8,0xaf,0x68,0x3f,0x45,0x2b,0x23,0x5c,0x5b,0x4a,0x36,0x2c,0x44,0x41,0x47,0x4c,0x2a,0x58,0x6d,0x5e,0x86,0x8a,0xc0,0xca,0x28,0x92,0x2a,0x39,0xa1,0x9b,0x16,0x78,0x6a,0x11,0x8e,0xa6,0x71,0x72,0x34,0x53,0x50,0x7a,0x41,0xca,0xa6,0x35,0xc,0x58,0x93,0x30,0x11,0x61,0xd0,0x71,0x43,0x11,0x67,0xb9,0x29,0x1c,0x9b,0x15,0x9d,0xa7,0xa8,0xe7,0xdd,0xd7,0xdf,0xd6,0xd6,0xde,0x85,0x53,0x82,0x40,0x4d,0x3c,0x54,0x81,0x46,0x49,0x76,0x59,0x4f,0x79,0x8e,0x53,0x67,0x53,0x64,0xe1,0xe0,0xe3,0xe2,0xe7,0xd8,0xd7,0xe1,0xe5,0xdf,0xd0,0xe4,0xc1,0x52,0x45,0x2c,0x3f,0x3e,0x52,0x78,0x5e,0x5f,0x6b,0x4e,0x50,0x35,0x2d,0x28,0x2e,0x40,0x1b,0x42,0x35,0x55,0x28,0x38,0x4b,0x32,0x45,0x32,0x4a,0x89,0x9f,0xc9,0xce,0xd4,0x97,0xcd,0xc1,0xd8,0xbf,0xc3,0xc4,0xc6,0xc4,0xc4,0xc4,0xc2,0xc2,0xc0,0xbc,0xc3,0xbf,0xbe,0xc2,0xbb,0xbd,0xb9,0xbf,0xb9,0xb6,0xbd,0xbb,0xb4,0xb8,0xb9,0xb8,0xb6,0xb6,0xb9,0xb9,0xb6,0xb6,0xb6,0xb8,0xad,0xb8,0xb6,0xb9,0xb8,0xb4,0xb8,0xb6,0xb6,0xb8,0xb8,0xb8,0xb6,0xb4,0xb9,0xae,0xa4,0xad,0xb4,0xb2,0xb8,0xb8,0xb8,0xb9,0xb8,0xb6,0xb8,0xbb,0xb6,0xae,0xb4,0xb8,0xb9,0xb8,0xb4,0xb4,0xb8,0xbb,0xb9,0xb8,0xb4,0xb4,0xb4,0xb6,0xb8,0xb9,0xb4,0xb4,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6}, {0xb6,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb9,0xb6,0xbd,0xb8,0xb4,0xb9,0xbb,0xb4,0xb0,0xb8,0xb4,0xb3,0xb7,0xbb,0xbb,0xb5,0xb0,0xb5,0xbb,0xb5,0xc0,0xba,0xbe,0xbc,0xbc,0xb8,0xbc,0xc0,0xbf,0xbf,0xbd,0xc0,0xbf,0xbe,0xba,0xa0,0xb7,0xbd,0xb9,0xc1,0xbb,0xb6,0xc9,0xa4,0x69,0x8e,0x8f,0x65,0x71,0x67,0x65,0x69,0x69,0x6a,0x66,0x66,0x9f,0x7e,0x67,0x8a,0xcf,0x63,0x65,0xc4,0x8f,0x5f,0xa0,0x69,0x79,0x6d,0x76,0x63,0x73,0xae,0x64,0xb8,0x68,0x63,0x6d,0x53,0x79,0x76,0x3e,0x44,0x59,0x37,0x3c,0x52,0x50,0x66,0x51,0x4d,0x5f,0x3e,0x5e,0x49,0x47,0x41,0x39,0x23,0x2e,0x51,0x77,0x65,0x71,0x99,0x7d,0x77,0xb9,0x36,0x87,0x90,0x78,0x3f,0x68,0x56,0x3f,0x7f,0x6d,0x56,0x55,0x50,0x80,0x45,0x69,0x72,0x58,0x3b,0x13,0x35,0x38,0x36,0x75,0x1c,0x53,0x37,0x68,0x12,0x51,0x60,0x49,0x13,0x32,0x49,0x13,0x69,0xb2,0xe6,0xd5,0xd7,0xe2,0xe4,0xdd,0xdc,0xd2,0x9c,0xc8,0x5c,0x6c,0x4f,0x43,0x62,0x4a,0x44,0x3c,0x41,0x3a,0x2f,0x25,0x7c,0x84,0x44,0x33,0xa3,0xe0,0xd5,0xee,0xda,0xe3,0xd8,0xe5,0xb2,0x55,0x58,0xe9,0xd6,0x75,0x41,0x3f,0x3f,0x34,0x3a,0x49,0x66,0x6f,0x86,0x6c,0x85,0x6d,0x6d,0x73,0x61,0x4d,0x5e,0x54,0x48,0x30,0x3c,0x29,0x25,0x24,0x2d,0x35,0x3c,0x3d,0x7a,0x92,0x9e,0x9a,0xaf,0xc4,0xbf,0xcb,0xc3,0xc8,0xc8,0xc9,0xc6,0xc4,0xc2,0xc0,0xc1,0xc3,0xc2,0xbe,0xc1,0xbf,0xbe,0xc2,0xbd,0xbf,0xb9,0xc1,0xbd,0xb6,0xbb,0xbb,0xb5,0xb1,0xbb,0xb6,0xb2,0xb4,0xb6,0xb8,0xb6,0xb0,0xb4,0xb9,0xb0,0xb9,0xb4,0xb8,0xb6,0xb6,0xb4,0xb6,0xb8,0xb8,0xb6,0xb6,0xb6,0xb8,0xb8,0xae,0xa4,0xad,0xb4,0xb2,0xb8,0xb8,0xb8,0xb8,0xb6,0xb4,0xb6,0xb8,0xb4,0xae,0xb4,0xb6,0xb8,0xb9,0xb8,0xb8,0xb8,0xb8,0xb9,0xb9,0xb6,0xb6,0xb6,0xb6,0xb8,0xb6,0xb4,0xb4,0xb4,0xb6,0xb6,0xb8,0xb8,0xb8}, {0xb9,0xb8,0xb8,0xb6,0xb6,0xb6,0xb6,0xb6,0xb9,0xb8,0xb6,0xb2,0xb2,0xb8,0xb8,0xb0,0xb9,0xb4,0xb3,0xb7,0xb8,0xba,0xb7,0xb0,0xb5,0xbb,0xb8,0xbe,0xba,0xba,0xbe,0xbc,0xb7,0xbb,0xbf,0xc0,0xbe,0xbd,0xc0,0xc2,0xbd,0xc0,0xb2,0xc3,0xc2,0xbd,0xbf,0xbf,0xc7,0xba,0xc5,0xbc,0xbb,0xcd,0xc2,0xc0,0xc5,0xbf,0xc8,0xbe,0xd0,0xc3,0xc7,0xd1,0xc0,0xc4,0xd2,0xc2,0xc5,0xce,0xc7,0xc3,0xbe,0xbe,0xd3,0xbf,0xd1,0xc2,0xcb,0xc1,0xc7,0xcd,0xd1,0xbf,0xd1,0x84,0x31,0x49,0x5e,0x5a,0x4d,0x58,0x51,0x40,0x4c,0x42,0x45,0x3b,0x53,0x44,0x4c,0x49,0x5f,0x51,0x30,0x78,0x55,0x40,0x59,0x3f,0x5b,0x56,0x64,0x57,0x4c,0x50,0x42,0x51,0x5b,0x5b,0x55,0x3c,0x45,0x3e,0x5a,0x77,0x45,0x5a,0x42,0x43,0x35,0x76,0x7d,0x3c,0x13,0x2b,0x4f,0x56,0x36,0x80,0x2a,0x60,0x59,0x56,0x48,0x4c,0x30,0x89,0x4f,0x35,0x45,0x32,0x7d,0xda,0xda,0xe0,0xd8,0xdc,0xda,0xda,0xe1,0xd8,0xe7,0xe7,0xdf,0xd7,0xa2,0x4c,0x42,0x3f,0x51,0x33,0x59,0x43,0x3b,0x30,0x2e,0x5c,0x4c,0x65,0xc9,0xe2,0xe5,0xda,0xe2,0xda,0xe7,0xd6,0x9f,0x2c,0x33,0xc9,0xca,0x4a,0x61,0x4c,0x67,0x33,0x5e,0x41,0x57,0x80,0x52,0x44,0x6a,0x75,0x56,0x53,0x40,0x45,0x52,0x48,0x39,0x28,0x26,0x48,0x3a,0x44,0x43,0x53,0x4d,0x54,0x82,0x45,0x4d,0x54,0x7a,0xc0,0xc6,0xd1,0xc6,0xca,0xc6,0xc4,0xc0,0xc0,0xbd,0xbb,0xbd,0xc1,0xc4,0xbe,0xc1,0xbd,0xbb,0xbe,0xb9,0xbd,0xbf,0xbf,0xbb,0xb8,0xb8,0xbb,0xbb,0xb5,0xbd,0xb4,0xb4,0xb6,0xb6,0xb9,0xb8,0xae,0xb6,0xb9,0xb4,0xb9,0xb6,0xb4,0xb8,0xb6,0xb2,0xb6,0xb8,0xb8,0xb6,0xb6,0xb6,0xb8,0xb6,0xb6,0xb2,0xb8,0xb8,0xb2,0xb8,0xb8,0xb6,0xb6,0xb4,0xb4,0xb4,0xb6,0xb6,0xb2,0xb6,0xb6,0xb6,0xb8,0xb9,0xb9,0xb8,0xb6,0xb9,0xb9,0xb8,0xb6,0xb6,0xb8,0xb6,0xb4,0xb4,0xb4,0xb4,0xb6,0xb6,0xb8,0xb8,0xb8}, {0xb9,0xb7,0xb5,0xb5,0xb5,0xb7,0xb5,0xb3,0xbd,0xb0,0xb5,0xbd,0xb5,0xb5,0xbb,0xb9,0xbb,0xb4,0xb3,0xb5,0xb4,0xb8,0xbb,0xb7,0xb7,0xb9,0xb8,0xba,0xbe,0xb8,0xbe,0xb9,0xbb,0xbd,0xbd,0xbe,0xbe,0xbe,0xc0,0xc2,0xbd,0xc1,0xc0,0xca,0xc1,0xc3,0xbf,0xc3,0xb8,0xc9,0xbd,0xc5,0xc8,0xc4,0xc2,0xc9,0xcf,0xc3,0xd0,0xc3,0xc3,0xce,0xc5,0xbe,0xd5,0xd1,0xc7,0xc2,0xc7,0xc9,0xc7,0xcc,0xcb,0xcb,0xcb,0xc7,0xc5,0xd5,0xcf,0xd3,0xce,0xbe,0xc5,0x94,0x7a,0x51,0x3e,0x4a,0x44,0x54,0x4e,0x44,0x6a,0x3d,0x4f,0x3b,0x8d,0x48,0x48,0x64,0x56,0x52,0x55,0x52,0x4a,0x47,0x4b,0x4a,0x5b,0x42,0x4d,0x3d,0x48,0x8a,0x35,0x33,0x2b,0x45,0x61,0x42,0x5a,0x7b,0x67,0x78,0x75,0x76,0x65,0x46,0x47,0x4d,0x5d,0xb4,0x4e,0x11,0x1f,0x4d,0x27,0x81,0x3a,0xa1,0x3e,0x2e,0x87,0x38,0x44,0x5e,0x2b,0x4c,0x2e,0x28,0x4c,0x32,0x41,0xdc,0xd8,0xcf,0xe1,0xdd,0xdf,0xbf,0x4a,0x5f,0xb1,0xa1,0xc0,0xe2,0xb7,0x50,0x53,0x38,0x64,0x32,0x3d,0x4a,0x52,0x3d,0x38,0x86,0x68,0xb0,0xdf,0xe4,0xd2,0xa3,0xd4,0xe3,0xab,0xd6,0xae,0x59,0x5a,0xdd,0x6a,0x43,0x4c,0x34,0x43,0x1a,0x31,0x3a,0x55,0x5f,0x5e,0x37,0x45,0x3d,0x45,0x3e,0x3a,0x65,0x50,0x35,0x4a,0x40,0x56,0x60,0x33,0x68,0x86,0xcd,0xd9,0xd2,0xca,0xd9,0xcd,0xd3,0xcc,0xce,0xca,0xc2,0xc8,0xbf,0xc8,0xc6,0xc4,0xc4,0xc3,0xc1,0xc0,0xc4,0xc2,0xbc,0xc1,0xbb,0xbb,0xbc,0xb9,0xbb,0xbf,0xb2,0xb6,0xbd,0xb5,0xb5,0xbb,0xb7,0xb9,0xb3,0xb5,0xb9,0xb7,0xb9,0xb9,0xb3,0xb5,0xb7,0xb5,0xb5,0xb7,0xb1,0xb7,0xb3,0xb3,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb7,0xb3,0xb9,0xb7,0xbb,0xb9,0xb3,0xb7,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb3,0xb3,0xb7,0xb7,0xb5,0xb5,0xb5,0xb7,0xb7,0xb7,0xb5,0xb9,0xb9,0xb7,0xb5,0xb3,0xb5,0xb5,0xb1,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5}, {0xb9,0xb7,0xb5,0xb5,0xb9,0xb9,0xb7,0xb5,0xb5,0xa1,0xac,0xbf,0xb5,0xae,0xb5,0xb5,0xb0,0xb0,0xb9,0xbd,0xb8,0xb8,0xbb,0xb5,0xb7,0xb7,0xb8,0xb6,0xc0,0xb6,0xc0,0xb7,0xbf,0xbd,0xbb,0xbc,0xbd,0xc0,0xc0,0xc0,0xbf,0xbd,0xbe,0xc2,0xbd,0xc7,0xc0,0xc2,0xcb,0xc1,0xc2,0xc7,0xc3,0xba,0xca,0xc1,0xc2,0xcd,0xc2,0xc1,0xca,0xc3,0xce,0xc6,0xc1,0xcb,0xcb,0xd1,0xc2,0xca,0xcf,0xc9,0xcd,0xd0,0xc7,0xd6,0xcf,0xc9,0xc8,0xc8,0xd0,0xc7,0xd6,0x99,0x5a,0x64,0x57,0x4c,0x52,0x6e,0x3f,0x5d,0x7c,0x3f,0x38,0x4a,0x7e,0x45,0x40,0x52,0x34,0x3d,0x4b,0x4a,0x59,0x63,0x46,0x62,0x54,0x4f,0x5d,0x5e,0x69,0x68,0x58,0x32,0x2a,0x4d,0x65,0x3c,0x7b,0x46,0x4b,0x4b,0x5c,0x54,0x31,0x40,0x65,0x32,0x4d,0x77,0x1b,0x40,0x4f,0x50,0x3c,0x6f,0x59,0x55,0x62,0x68,0x5e,0x70,0x46,0x4e,0x48,0x54,0x40,0x3d,0x48,0x42,0x67,0x94,0xe7,0xd4,0xdf,0xda,0xd8,0x3c,0x3f,0x2f,0x42,0x37,0x71,0x26,0x2e,0x2f,0x44,0x3a,0x52,0x34,0x23,0x4e,0x91,0x58,0x42,0x71,0x66,0x4e,0xde,0xdc,0x8f,0x31,0xdc,0x8f,0x45,0xdd,0xd9,0xd1,0xd3,0xa2,0x3f,0x2a,0x2d,0x4e,0x3c,0x4e,0x87,0x6c,0x57,0x38,0x5c,0x38,0x47,0x42,0x32,0x3d,0x31,0x45,0x24,0x2e,0x4a,0x32,0x36,0x40,0x2c,0x2f,0xc2,0xd5,0xc6,0xd4,0xc4,0xc8,0xd4,0xc6,0xcc,0xc7,0xc8,0xca,0xc4,0xca,0xc4,0xc2,0xc2,0xc2,0xc0,0xbc,0xbe,0xc1,0xc0,0xbc,0xc1,0xbf,0xbe,0xc0,0xbd,0xbf,0xbb,0xa5,0xae,0xc3,0xb9,0xb1,0xb9,0xb7,0xb3,0xb0,0xb7,0xbb,0xb3,0xb5,0xbb,0xb5,0xb5,0xb5,0xb5,0xb1,0xb9,0xb0,0xb9,0xb3,0xb7,0xb5,0xb3,0xb3,0xb5,0xb7,0xb5,0xb5,0xb3,0xb7,0xb0,0xb3,0xb5,0xb7,0xb9,0xb1,0xb9,0xb7,0xb7,0xb9,0xb7,0xb3,0xb3,0xb7,0xb7,0xb5,0xb3,0xb3,0xb3,0xb5,0xb7,0xb7,0xb9,0xb9,0xb7,0xb3,0xb3,0xb5,0xb5,0xb3,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb5,0xb5}, {0xbb,0xb9,0xb7,0xb7,0xb7,0xb7,0xb5,0xb5,0xb3,0xb5,0xb7,0xb7,0xb7,0xb5,0xb3,0xb3,0xb1,0xb0,0xb1,0xb7,0xbb,0xba,0xb7,0xb9,0xb8,0xb4,0xb9,0xb7,0xb9,0xbb,0xb7,0xb9,0xb9,0xb9,0xbc,0xbe,0xc0,0xbf,0xbf,0xc1,0xb9,0xc3,0xc3,0xbd,0xbd,0xc5,0xc5,0xbf,0xc7,0xc3,0xc5,0xbf,0xb8,0xad,0xc5,0xc5,0xc5,0xc7,0xc6,0xc9,0xca,0xc9,0xcb,0xcb,0xcd,0xcd,0xcd,0xcb,0xcb,0xc9,0xc9,0xc9,0xcb,0xcf,0xc9,0xd1,0xcd,0xd7,0xd3,0xd2,0xcf,0xcb,0xcf,0xb2,0x78,0x63,0x7a,0x3c,0x43,0x6e,0x6e,0x5c,0x4b,0x59,0x4e,0xb1,0x89,0x59,0x4f,0x3d,0x2d,0x30,0x39,0x28,0x37,0x4e,0x49,0x40,0x3d,0x35,0x36,0x3b,0x2b,0x88,0x49,0x3c,0x34,0x32,0x6b,0x30,0x3f,0x59,0x52,0x4e,0x6c,0x60,0x5f,0x33,0x32,0x44,0x49,0x3d,0x3f,0x6d,0x23,0x59,0x69,0x71,0x78,0x70,0x6f,0x80,0x75,0x38,0x4f,0x66,0x72,0x6e,0x61,0x3e,0x49,0x43,0x60,0x50,0xa4,0xcb,0xbd,0xe1,0xdd,0x7a,0x66,0x33,0x42,0xd9,0xd3,0x67,0x7f,0x6b,0xa4,0x52,0x3d,0x3e,0x1c,0x45,0x40,0x69,0x3e,0x3e,0x26,0x25,0x97,0x70,0x75,0x2d,0x61,0x6e,0x40,0x6b,0x93,0xa2,0xe1,0x59,0x59,0x68,0x50,0x81,0x5d,0x63,0x83,0x6e,0x2f,0x33,0x5f,0x49,0x32,0x32,0x23,0x55,0x4e,0x6a,0x51,0x4a,0x43,0x37,0x39,0x50,0x5d,0x8e,0xb2,0xc6,0xd6,0xc5,0xd0,0xca,0xd0,0xca,0xc4,0xb8,0xc6,0xc2,0xc4,0xc4,0xc4,0xc6,0xc2,0xc4,0xbe,0xc1,0xb5,0xc0,0xc3,0xc1,0xbf,0xbf,0xbe,0xbe,0xbf,0xbd,0xb9,0xb9,0xbb,0xbb,0xb9,0xb8,0xb6,0xb4,0xb1,0xb1,0xb5,0xb7,0xb9,0xb7,0xb5,0xb5,0xb3,0xb1,0xb5,0xb3,0xb3,0xb7,0xb1,0xb3,0xb3,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb5,0xae,0xbb,0xb5,0xb3,0xb3,0xb7,0xbd,0xb0,0xb7,0xb3,0xb7,0xb3,0xac,0xa0,0xb7,0xb7,0xb3,0xb3,0xb5,0xb5,0xb5,0xb5,0xb7,0xb7,0xb5,0xb7,0xb9,0xb7,0xb5,0xb3,0xb1,0xb3,0xb3,0xb5,0xb1,0xb9,0xb3,0xbd,0xb7,0xb7}, {0xb5,0xb7,0xb7,0xb9,0xb7,0xb7,0xb7,0xb7,0xb0,0xb1,0xb3,0xb5,0xb5,0xb7,0xb5,0xb5,0xb9,0xb5,0xb3,0xb5,0xb8,0xb8,0xb7,0xb9,0xb9,0xb8,0xbb,0xb9,0xb9,0xbd,0xb9,0xbb,0xba,0xba,0xba,0xbe,0xc0,0xbe,0xbb,0xbb,0xc1,0xbf,0xc1,0xc3,0xc3,0xc1,0xc1,0xc3,0xc1,0xbf,0xc1,0xc3,0xc9,0xbf,0xcd,0xc7,0xc7,0xc9,0xc8,0xca,0xca,0xca,0xca,0xca,0xcb,0xcb,0xcb,0xcb,0xcb,0xcf,0xd3,0xd5,0xcf,0xd1,0xcb,0xd1,0xcd,0xd5,0xd1,0xd1,0xd0,0xd4,0xd8,0xd3,0xca,0xc5,0xd9,0xc8,0xce,0xcb,0xd0,0x83,0x56,0x64,0x65,0x85,0x53,0x55,0x54,0x43,0x41,0x4b,0x51,0x32,0x3a,0x2a,0x3c,0x53,0x62,0x3d,0x3e,0x38,0x2f,0x3a,0x1e,0x4f,0x35,0x2c,0x41,0x44,0x3f,0x3b,0x47,0x4f,0x3e,0x70,0x43,0x35,0x75,0x7d,0x50,0x32,0x91,0x3d,0xb2,0xca,0xac,0x7c,0xc2,0xc3,0x89,0xc8,0x70,0x44,0x7d,0xd5,0xd1,0xd4,0xd0,0x8f,0x4f,0x63,0x39,0x52,0x34,0x53,0x1d,0xdc,0xd8,0xcd,0x23,0x32,0x3f,0xd2,0x3e,0x3d,0x2b,0x19,0x3d,0x24,0x1c,0x64,0x40,0x2b,0x43,0x32,0x17,0x53,0x54,0x5a,0x6e,0x24,0x5b,0x20,0x21,0x57,0x3d,0x15,0x38,0x61,0xd7,0x90,0x2c,0x22,0x1f,0x31,0x83,0x61,0x27,0x82,0x45,0x4f,0x28,0x3d,0x21,0x3d,0x77,0x3a,0x36,0x43,0x54,0x7b,0x72,0x8a,0x8b,0x85,0x76,0x89,0x93,0x8c,0xc4,0xd4,0xd2,0xcc,0xd0,0xce,0xc8,0xc2,0xca,0xc6,0xc4,0xc6,0xc8,0xc2,0xce,0xbc,0xca,0xbc,0xc1,0xc7,0xbf,0xbf,0xbf,0xbf,0xbe,0xbc,0xbb,0xbb,0xb6,0xb6,0xb8,0xb9,0xb9,0xb9,0xb8,0xb8,0xb7,0xb5,0xb5,0xb5,0xb5,0xb5,0xb7,0xb9,0xb7,0xb3,0xb7,0xb5,0xb5,0xb9,0xb3,0xb5,0xb1,0xb3,0xb3,0xb3,0xb5,0xb9,0xb7,0xb3,0xb3,0xb7,0xb1,0xb9,0xb7,0xb1,0xb5,0xb3,0xb5,0xb3,0xb5,0xb7,0xb9,0xae,0xb9,0xb3,0xb5,0xb5,0xb5,0xb5,0xb5,0xb3,0xb3,0xb5,0xb7,0xb3,0xb0,0xb1,0xb5,0xb9,0xb9,0xb7,0xb5,0xb7,0xb1,0xb7,0xb3,0xb9,0xb3,0xb5}, {0xb3,0xb7,0xb9,0xbb,0xb9,0xb9,0xb7,0xb7,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb9,0xb7,0xb7,0xb7,0xb8,0xb6,0xb7,0xb9,0xbb,0xb8,0xbb,0xb7,0xb7,0xbb,0xb7,0xb9,0xba,0xba,0xba,0xbe,0xc0,0xc0,0xbd,0xbb,0xbd,0xbd,0xbf,0xc3,0xc1,0xbf,0xbf,0xc1,0xc3,0xc7,0xc5,0xc7,0xcd,0xc3,0xc4,0xc0,0xc7,0xc9,0xc9,0xcb,0xca,0xca,0xca,0xc8,0xd1,0xd1,0xcf,0xcd,0xcb,0xc9,0xcb,0xcd,0xd1,0xd3,0xcf,0xd3,0xcf,0xd5,0xd1,0xd1,0xcb,0xc9,0xcb,0xcd,0xd3,0xd5,0xc7,0xdf,0xcb,0xd5,0xd7,0xdc,0xc5,0xce,0xcb,0xc9,0xcb,0xc2,0x4c,0x4e,0x46,0x63,0x5c,0x41,0x7c,0x3b,0x4a,0x70,0x83,0x4f,0x76,0x63,0x57,0x30,0x35,0x35,0x43,0x71,0x3d,0x6b,0x41,0x6d,0x45,0x51,0x42,0x54,0x39,0x3f,0x5d,0x88,0x28,0xb8,0x3c,0x6d,0xb8,0x69,0x2c,0x61,0x52,0x2c,0x6d,0x5b,0x33,0x80,0x51,0xb7,0x96,0x3a,0x3c,0x3f,0x33,0x69,0x2a,0x25,0x38,0x32,0x2d,0x37,0x80,0xbe,0x15,0x36,0x71,0xe4,0x25,0x1a,0x1d,0x1d,0x55,0x31,0x28,0x63,0x3e,0x1c,0x5f,0x40,0x1c,0xbf,0x5a,0x68,0x54,0x26,0x58,0x38,0x33,0x59,0x41,0x16,0x5c,0x5c,0xd2,0x9d,0x28,0x3e,0x38,0x29,0x8f,0x58,0x28,0x55,0x46,0x59,0x2d,0x4d,0x5e,0x46,0x56,0x3f,0x3b,0x48,0x3b,0x6e,0x60,0x6e,0x90,0x73,0x76,0x87,0xa1,0x86,0xc1,0xd0,0xc2,0xd0,0xca,0xc8,0xc1,0xc2,0xc8,0xc8,0xbe,0xbe,0xbe,0xc0,0xc4,0xc2,0xbe,0xbe,0xb4,0xbd,0xbd,0xbf,0xc1,0xc1,0xc0,0xbe,0xbd,0xbb,0xbb,0xbb,0xbb,0xb9,0xb9,0xb9,0xb8,0xb8,0xb9,0xb7,0xb7,0xb5,0xb5,0xb5,0xb7,0xb7,0xb9,0xb3,0xb7,0xb3,0xb3,0xb7,0xb3,0xb5,0xb5,0xb5,0xb3,0xb3,0xb7,0xb9,0xb5,0xb1,0xb3,0xb5,0xb3,0xb9,0xb7,0xb1,0xb3,0xb1,0xb1,0xb3,0xb3,0xb5,0xbd,0xb3,0xb5,0xb1,0xb5,0xb5,0xb5,0xb5,0xb5,0xb3,0xb3,0xb3,0xbb,0xb9,0xb3,0xb3,0xb3,0xb5,0xb3,0xb1,0xb5,0xb5,0xb1,0xb5,0xb1,0xb7,0xb3,0xb3}, {0xb5,0xb7,0xb9,0xb9,0xb9,0xb7,0xb5,0xb5,0xb7,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb5,0xb0,0xb1,0xb5,0xb9,0xb8,0xb8,0xb7,0xb9,0xb9,0xb6,0xb9,0xb5,0xb5,0xb9,0xb5,0xb9,0xb6,0xb8,0xba,0xbc,0xbe,0xc0,0xc1,0xc1,0xb0,0xbd,0xc1,0xbd,0xbb,0xc3,0xc3,0xbb,0xbb,0xc5,0xc3,0xc3,0xc7,0xc1,0xc4,0xcb,0xc7,0xc7,0xc7,0xc9,0xc8,0xc8,0xc8,0xc6,0xc5,0xc9,0xcd,0xcf,0xcf,0xcd,0xcf,0xcf,0xcd,0xcd,0xcd,0xcf,0xcf,0xd1,0xd1,0xd3,0xd1,0xc5,0xd6,0xd6,0xce,0xd9,0xca,0xcc,0xd7,0xcb,0xd3,0xd5,0xcb,0xd5,0xc9,0xd8,0xd5,0xc9,0xca,0xc4,0x40,0x5d,0x3b,0x4d,0x43,0x3e,0x46,0x47,0x49,0x5f,0x9c,0x40,0x53,0x48,0x60,0x75,0x67,0x6a,0x49,0x5d,0x47,0x55,0x4a,0x6b,0x53,0x36,0x35,0x4d,0x7f,0x38,0xa4,0xc7,0x3a,0xce,0x7f,0x2a,0xab,0x8b,0x34,0x86,0x8f,0x29,0x53,0x46,0xa3,0xc7,0xb0,0x84,0x7e,0x8d,0x31,0x30,0x2f,0x44,0x36,0x2b,0x28,0x52,0x43,0x57,0x1e,0x20,0x66,0x88,0x17,0x38,0x20,0x19,0x26,0x12,0x17,0x4a,0x35,0x21,0x5a,0x4a,0x1b,0x4a,0x58,0x47,0x14,0x15,0x46,0x23,0x3b,0x55,0x3d,0x19,0x4c,0x61,0x73,0x28,0x2d,0x58,0x54,0x27,0x43,0x3e,0x35,0x3f,0x30,0x2d,0x23,0x2a,0x35,0x45,0x2b,0x29,0x2d,0x31,0x56,0x32,0x2d,0x5c,0x6a,0x66,0x80,0x71,0x6f,0x61,0xa1,0xd2,0xc8,0xce,0xc4,0xcc,0xc6,0xca,0xc4,0xc8,0xc2,0xc8,0xc4,0xc8,0xc2,0xc6,0xbe,0xc8,0xb9,0xc5,0xbf,0xbf,0xc1,0xc1,0xc0,0xc0,0xbd,0xbb,0xbf,0xbd,0xbd,0xbb,0xb9,0xb9,0xb8,0xb8,0xb1,0xb3,0xb5,0xb7,0xb7,0xb7,0xb5,0xb5,0xb9,0xb3,0xb7,0xb3,0xb3,0xb5,0xb1,0xb5,0xb3,0xb3,0xb3,0xb3,0xb5,0xb9,0xb7,0xb5,0xa8,0xb3,0xb7,0xb1,0xb1,0xb7,0xb7,0xae,0xae,0xb7,0xb5,0xb1,0xb5,0xb0,0xb0,0xb7,0xb3,0xb3,0xb3,0xb5,0xb5,0xb5,0xb5,0xb3,0xac,0xb1,0xb7,0xb7,0xb3,0xb1,0xb5,0xb9,0xb3,0xb1,0xb0,0xb3,0xb1,0xb5,0xb5,0xb7}, {0xb7,0xb5,0xb5,0xb5,0xb5,0xb7,0xb5,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb5,0xb7,0xb7,0xac,0xb0,0xb3,0xb5,0xb6,0xb8,0xb9,0xb9,0xbb,0xb6,0xb9,0xb5,0xb7,0xbb,0xb5,0xb9,0xb1,0xb6,0xba,0xb8,0xb6,0xba,0xc0,0xc4,0xb0,0xbd,0xc3,0xbf,0xbd,0xc3,0xc3,0xbb,0xbd,0xc5,0xc3,0xc1,0xc3,0xc5,0xc4,0xcd,0xc7,0xc7,0xc7,0xc9,0xc9,0xc9,0xc8,0xc6,0xc5,0xc9,0xcd,0xcf,0xcf,0xcf,0xcf,0xcf,0xc9,0xc7,0xc9,0xcb,0xcf,0xcb,0xcf,0xd1,0xcc,0xbf,0xd1,0xd0,0xca,0xd5,0xdd,0xd1,0xcb,0xd7,0xc5,0xd5,0xe0,0x5a,0x43,0x5f,0x58,0x62,0x57,0x64,0x3e,0x40,0x3c,0x30,0x32,0x2c,0x27,0x41,0x4c,0x73,0x8a,0x59,0x3d,0x31,0x45,0x43,0x48,0x40,0x2e,0x35,0x26,0x42,0x45,0x39,0x66,0x4b,0x31,0x3b,0x5b,0x6a,0x50,0x7e,0x34,0x55,0x71,0x2a,0x7a,0xd0,0x9c,0x65,0x5f,0x8f,0x4f,0x67,0xbc,0xb9,0xc3,0x77,0x68,0xcf,0x76,0x77,0x66,0x7a,0x43,0x22,0x2c,0x49,0x3d,0x4f,0x31,0x36,0x23,0x46,0x33,0x2e,0x28,0x4c,0x7a,0x1b,0x1c,0x50,0x47,0x46,0x5a,0x87,0x55,0x5e,0x7a,0x42,0x27,0x26,0x40,0x3e,0xae,0x9b,0x58,0x52,0x46,0x36,0x5c,0x69,0x48,0x5b,0x57,0x35,0x62,0x3e,0x5e,0x5c,0x40,0x52,0x3c,0x46,0x3c,0x4d,0x4b,0x51,0x55,0x58,0x63,0x5b,0x48,0xbd,0xd8,0xd6,0xdc,0xd6,0xd4,0xc8,0xcc,0xd4,0xc6,0xc6,0xb5,0xc4,0xc4,0xc2,0xb1,0xb3,0xb5,0xc8,0xc6,0xbc,0xbe,0xad,0xbf,0xbd,0xc1,0xc5,0xc1,0xbd,0xba,0xbc,0xbe,0xbe,0xbd,0xb9,0xb9,0xb9,0xb8,0xb8,0xb8,0xb9,0xb9,0xb9,0xae,0xb1,0xb3,0xb3,0xb5,0xb7,0xb7,0xb3,0xb9,0xb5,0xb7,0xb3,0xb3,0xb7,0xb1,0xb5,0xaa,0xae,0xb1,0xb1,0xb3,0xb5,0xb9,0xb9,0xa5,0xb0,0xb7,0xb1,0xb1,0xb7,0xb5,0xae,0xb1,0xb9,0xb5,0xb1,0xb3,0xb3,0xb0,0xb9,0xb5,0xb3,0xb3,0xb3,0xb5,0xb5,0xb5,0xb3,0xaa,0xb0,0xb5,0xb5,0xb3,0xb1,0xb3,0xb7,0xb1,0xb0,0xb0,0xb1,0xb3,0xb1,0xb5,0xb7}, {0xb7,0xb5,0xb3,0xb3,0xb5,0xb7,0xb7,0xb7,0xb3,0xb3,0xb3,0xb3,0xb3,0xb5,0xb5,0xb5,0xb0,0xb1,0xb1,0xb1,0xb2,0xb6,0xb9,0xb9,0xb8,0xb4,0xb7,0xb5,0xb5,0xb9,0xb5,0xb7,0xb3,0xb8,0xbc,0xb8,0xb5,0xb8,0xbe,0xc2,0xbb,0xbd,0xc3,0xc5,0xc3,0xbf,0xbf,0xc1,0xc5,0xc5,0xc1,0xbf,0xc1,0xcb,0xc0,0xc4,0xcb,0xc9,0xc7,0xc9,0xcb,0xcb,0xca,0xc8,0xcf,0xcd,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcd,0xc9,0xcd,0xcd,0xd1,0xc9,0xcf,0xd1,0xd6,0xd5,0xd3,0xd3,0xd5,0xcb,0xcf,0xd1,0xd3,0xd1,0xdf,0xc9,0xc7,0xa1,0x9b,0xa8,0x9a,0xa0,0x9e,0xa3,0x9d,0x9a,0xc3,0xa7,0x9f,0x87,0x84,0x9c,0x6e,0x7d,0x79,0x93,0x81,0x76,0x6c,0x74,0x7e,0xb4,0x44,0x4e,0x64,0x4a,0x44,0x5b,0x49,0x43,0x54,0x63,0x53,0x3e,0x42,0x2d,0x38,0x3d,0x3a,0x34,0x79,0x49,0xaa,0x51,0xd0,0xbd,0xd1,0xce,0xb7,0xa7,0x58,0x7b,0x5b,0xae,0xd8,0xda,0xbd,0x58,0x58,0x6d,0xa2,0x75,0xbd,0x8d,0x35,0x5d,0x9a,0xd7,0xad,0x4c,0x16,0x68,0x61,0x1f,0x34,0x22,0x4c,0x1c,0x4c,0x18,0x36,0x1d,0x31,0x34,0x38,0x28,0x1a,0x82,0xde,0xdf,0xa5,0x41,0x31,0xa6,0x42,0x5c,0x3c,0x83,0x8d,0x34,0x9e,0x2d,0x8a,0x52,0x67,0x4e,0x38,0x45,0x45,0x52,0x40,0x56,0x4e,0x46,0x60,0x7e,0xb5,0xd8,0xdb,0xc4,0xd0,0xd0,0xca,0xd4,0xcc,0xd0,0xce,0xcc,0xc8,0xcc,0xc6,0xc2,0xbf,0xc1,0xbe,0xc6,0xca,0xc4,0xc4,0xba,0xc5,0xc7,0xbf,0xbf,0xc1,0xbf,0xba,0xba,0xba,0xbc,0xbb,0xb9,0xb9,0xb9,0xb9,0xb8,0xb8,0xb8,0xb8,0xb8,0xb0,0xb1,0xb1,0xb0,0xb1,0xb7,0xb9,0xb7,0xb7,0xb3,0xb5,0xb1,0xb1,0xb5,0xb1,0xb3,0xae,0xb1,0xb5,0xb3,0xb1,0xb1,0xb5,0xb7,0xb0,0xb0,0xb9,0xb9,0xb7,0xb5,0xb0,0xb5,0xb3,0xb3,0xb0,0xb0,0xb1,0xbb,0xb1,0xb5,0xb7,0xb5,0xb3,0xb3,0xb3,0xb5,0xb3,0xb1,0xb7,0xb3,0xb1,0xb1,0xb1,0xb3,0xb1,0xb0,0xb3,0xb0,0xb3,0xb1,0xb5,0xae,0xb1,0xb5}, {0xb3,0xb5,0xb7,0xb5,0xb3,0xb1,0xb5,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb3,0xb3,0xb3,0xb3,0xb5,0xb3,0xb2,0xb4,0xb8,0xb9,0xb7,0xb6,0xb2,0xb7,0xb3,0xb5,0xb9,0xb3,0xb7,0xb5,0xba,0xbc,0xb8,0xb6,0xba,0xbe,0xbc,0xbe,0xbe,0xc1,0xc1,0xbd,0xbb,0xbd,0xc3,0xc0,0xbc,0xbc,0xbe,0xb9,0xcb,0xc5,0xc9,0xcb,0xc9,0xc7,0xc7,0xcb,0xcd,0xcd,0xcb,0xc7,0xc5,0xc5,0xc7,0xcb,0xcf,0xcf,0xcf,0xcf,0xcb,0xd1,0xcd,0xd3,0xc9,0xcf,0xd1,0xc8,0xd5,0xd0,0xd5,0xd5,0xd3,0xca,0xdb,0xce,0xdd,0xc8,0xcd,0xd1,0xc9,0xcf,0xd1,0xcd,0xd5,0xd7,0xc8,0xdd,0xd4,0xc5,0xd9,0xbf,0xbf,0x87,0x7a,0x9b,0xa4,0x81,0xbf,0xc7,0x9a,0x9a,0x8f,0x7c,0x97,0x5e,0x95,0xb3,0xa3,0x9b,0x53,0x61,0x5a,0x5d,0x3a,0x38,0x49,0x56,0x5b,0x47,0x45,0x51,0x3d,0x70,0x44,0xb6,0x55,0xbd,0xd3,0xe0,0xd1,0xa8,0x53,0x67,0x4a,0xa3,0xaa,0x68,0x86,0x47,0x63,0x50,0xb9,0xc8,0xc9,0xb6,0x38,0x46,0x54,0x77,0x72,0x71,0x22,0x16,0x2a,0x51,0x1a,0x3e,0x39,0x5b,0x23,0x63,0x19,0x71,0x1a,0x6b,0x35,0x3c,0x56,0x21,0x78,0x70,0x54,0x68,0x62,0x61,0x75,0x64,0x3a,0x56,0x4c,0x51,0x5c,0x57,0x36,0x5f,0x3a,0x69,0x51,0x34,0x4c,0x38,0x67,0x9b,0xa6,0xa9,0xb1,0xb4,0xa7,0xce,0xc8,0xd2,0xdf,0xd4,0xd8,0xd0,0xcc,0xcc,0xcc,0xc9,0xc7,0xce,0xc6,0xbf,0xbb,0xc8,0xc6,0xc2,0xbc,0xbc,0xc4,0xc0,0xc4,0xbb,0xc5,0xae,0xb2,0xbe,0xbe,0xbe,0xba,0xb9,0xb7,0xb9,0xbb,0xbb,0xbb,0xbb,0xb9,0xb7,0xb5,0xb5,0xb5,0xb3,0xb5,0xb5,0xb1,0xb1,0xb7,0xb9,0xb5,0xb3,0xb0,0xb3,0xb1,0xb1,0xb5,0xb0,0xb1,0xb3,0xb7,0xb7,0xb3,0xb1,0xb1,0xb1,0xb1,0xb5,0xb1,0xb9,0xb5,0xb1,0xb3,0xb0,0xb7,0xb3,0xb0,0xb0,0xb0,0xaa,0xb9,0xb1,0xb3,0xb7,0xb5,0xb1,0xb1,0xb3,0xb5,0xb3,0xb3,0xb1,0xae,0xac,0xb0,0xb5,0xb9,0xb7,0xb5,0xb5,0xb0,0xb5,0xb1,0xb5,0xac,0xb1,0xb3}, {0xb0,0xb3,0xb5,0xb3,0xac,0xaa,0xae,0xb1,0xb1,0xb1,0xb1,0xb3,0xb3,0xb3,0xb5,0xb5,0xb3,0xb5,0xb7,0xb7,0xba,0xbb,0xb9,0xb3,0xb8,0xb4,0xb9,0xb7,0xb7,0xbb,0xb7,0xb9,0xb3,0xb8,0xb8,0xb6,0xb8,0xbc,0xba,0xb6,0xb5,0xbe,0xbf,0xb4,0xb2,0xbb,0xc1,0xbf,0xca,0xc4,0xc6,0xc0,0xae,0xbf,0xc0,0xc9,0xc9,0xc7,0xc5,0xc5,0xc9,0xcb,0xcb,0xcb,0xcd,0xcb,0xc9,0xcb,0xcf,0xcf,0xcb,0xc7,0xcd,0xc7,0xcd,0xcb,0xd1,0xc5,0xcd,0xcf,0xc7,0xce,0xcc,0xcb,0xb7,0xd1,0xc5,0xd1,0xd4,0xc7,0xd8,0xcf,0xd0,0xba,0xcc,0xd0,0xd5,0xd9,0xcc,0xc5,0xd8,0xd1,0xda,0xd0,0xd4,0xc8,0xd0,0xcd,0xce,0xca,0xcb,0x83,0x4a,0x6d,0x5f,0x4c,0x58,0x5f,0x56,0x6f,0x6c,0x7a,0x76,0x76,0x4d,0x45,0x4c,0x47,0x30,0x3d,0x4b,0x52,0x41,0x63,0x5c,0x3e,0x45,0x8a,0x7a,0x74,0xd2,0xdc,0x7a,0xc8,0x9a,0x55,0x93,0x61,0xa1,0x41,0x9c,0x47,0x9b,0x4d,0xbf,0xce,0x7d,0xd9,0x68,0x5f,0x5d,0x41,0x4e,0x65,0x47,0x6e,0x7f,0x2d,0x8d,0x28,0x3c,0x40,0x4a,0x24,0x72,0x18,0x77,0x1d,0x75,0x30,0x3f,0x54,0x25,0x55,0x7d,0x84,0x79,0x93,0x67,0x74,0x79,0xa7,0x44,0x51,0x69,0x49,0x5d,0x49,0x52,0x44,0x45,0x4c,0x58,0x40,0x50,0x44,0x42,0xbd,0xce,0xd3,0xd4,0xd2,0xd0,0xb9,0xd1,0xcc,0xcc,0xd6,0xd2,0xbe,0xd0,0xd0,0xc7,0xcf,0xc4,0xc6,0xca,0xc2,0xcc,0xc2,0xc6,0xc6,0xc2,0xc2,0xc8,0xb8,0xc1,0xbf,0xbd,0xc1,0xb9,0xbc,0xbe,0xba,0xb5,0xb1,0xb4,0xb7,0xb6,0xb6,0xb6,0xb6,0xb5,0xb5,0xb5,0xb5,0xb3,0xb9,0xb9,0xb7,0xb5,0xb9,0xb7,0xb1,0xb5,0xb1,0xb5,0xb3,0xb3,0xb7,0xb1,0xb3,0xb0,0xb1,0xb1,0xb0,0xb0,0xb3,0xb3,0xb1,0xac,0xb0,0xb7,0xa8,0xa5,0xb1,0xb0,0xb1,0xb5,0xb1,0xb5,0xb0,0xa0,0xb0,0xb0,0xb7,0xb5,0xb3,0xb0,0xb0,0xb3,0xb5,0xb7,0xb5,0xb1,0xb3,0xb7,0xb7,0xb5,0xb3,0xb1,0xb1,0xb3,0xb0,0xb5,0xb1,0xb7,0xac,0xb1,0xb3}, {0xb2,0xb5,0xb7,0xb7,0xb7,0xb9,0xb7,0xb3,0xb3,0xb5,0xb7,0xb5,0xb3,0xb3,0xb5,0xb5,0xb1,0xb5,0xb9,0xb5,0xb2,0xb4,0xb7,0xb9,0xb5,0xba,0xb2,0xb8,0xb6,0xbc,0xb3,0xb7,0xba,0xb8,0xb8,0xba,0xba,0xb8,0xb8,0xb8,0xba,0xbc,0xba,0xb8,0xbb,0xc3,0xc5,0xc3,0xc4,0xc6,0xc8,0xc6,0xc6,0xc4,0xc5,0xc7,0xc5,0xc7,0xc9,0xcb,0xcb,0xc9,0xc9,0xcd,0xc9,0xcd,0xcb,0xc9,0xcd,0xcd,0xcb,0xcb,0xcd,0xd3,0xd1,0xcd,0xcd,0xc9,0xc7,0xcd,0xcd,0xcd,0xc9,0xcf,0xc5,0xd0,0xd0,0xd0,0xd2,0xd2,0xd2,0xd4,0xd2,0xd2,0xd0,0xd1,0xd7,0xd1,0xce,0xd2,0xd5,0xcf,0xd0,0xd4,0xcf,0xdc,0xd6,0xd0,0xdc,0xd9,0xce,0xa9,0x76,0x7b,0x76,0x83,0x6d,0x57,0x60,0x40,0x36,0x44,0x50,0x96,0x3e,0x32,0x37,0x42,0x31,0x39,0x59,0x88,0x53,0x4f,0x40,0x37,0x59,0x57,0x4e,0x85,0x8f,0x95,0x7b,0x6c,0x3b,0x5e,0x60,0x64,0x86,0x64,0x70,0x84,0x7b,0x6e,0x65,0x5e,0x67,0x52,0x77,0x4f,0x8f,0xab,0x9f,0x9c,0x43,0x2a,0x26,0x2a,0xa9,0x25,0x3c,0x3f,0x40,0x23,0x56,0x18,0x59,0x1b,0x5e,0x2a,0x33,0x41,0x2b,0x66,0x69,0x47,0x3b,0x5f,0x3d,0x34,0x57,0x72,0x64,0x51,0x5e,0x5a,0x4a,0x56,0x58,0x6d,0x52,0x3c,0x49,0x42,0x40,0x55,0x4d,0x79,0x65,0xbc,0xd7,0xd7,0xd4,0xd6,0xd2,0xd0,0xd4,0xce,0xcc,0xd0,0xd2,0xcc,0xcb,0xcd,0xcc,0xc8,0xc8,0xca,0xc8,0xc2,0xc2,0xc8,0xc2,0xbe,0xc2,0xc4,0xbf,0xbd,0xbf,0xbd,0xb9,0xbc,0xbc,0xbc,0xbc,0xbe,0xbd,0xb8,0xb6,0xb8,0xbb,0xbb,0xb9,0xb7,0xb5,0xb3,0xb2,0xb3,0xbb,0xbb,0xb3,0xb3,0xb7,0xb5,0xb3,0xb9,0xb2,0xb7,0xb2,0xb7,0xb0,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb1,0xb0,0xb1,0xb1,0xb0,0xae,0xac,0xb0,0xb5,0xb7,0xb5,0xb5,0xb5,0xb5,0xb3,0xb2,0xb2,0xb3,0xb7,0xb3,0xb5,0xb5,0xb7,0xb3,0xb2,0xb3,0xb7,0xb3,0xb5,0xb3,0xb3,0xb3,0xb3,0xb3,0xb0,0xb3,0xb7,0xb5,0xb1,0xb3,0xb0,0xae,0xb0}, {0xb2,0xb3,0xb5,0xb3,0xb2,0xb2,0xb2,0xb3,0xb3,0xb5,0xb7,0xb5,0xb3,0xb5,0xb5,0xb5,0xb9,0xb7,0xb3,0xac,0xa9,0xae,0xb5,0xbb,0xba,0xbc,0xb4,0xb6,0xb8,0xba,0xb5,0xb9,0xbc,0xba,0xb8,0xba,0xba,0xb8,0xba,0xbc,0xbc,0xba,0xba,0xbc,0xbd,0xbf,0xbf,0xc1,0xc2,0xc4,0xc6,0xc6,0xc6,0xc4,0xc5,0xc5,0xc5,0xc7,0xc9,0xcb,0xc9,0xc7,0xc7,0xcb,0xc7,0xcb,0xc9,0xc7,0xcb,0xcd,0xcd,0xcf,0xcb,0xcf,0xcd,0xcb,0xcd,0xcb,0xc9,0xcf,0xcd,0xcb,0xc8,0xcf,0xc5,0xcf,0xce,0xcc,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd0,0xd0,0xd2,0xd0,0xd0,0xd4,0xd3,0xcf,0xcf,0xd5,0xcb,0xce,0xbe,0xd5,0xd1,0xda,0xd7,0xd4,0xdb,0xbc,0xde,0xa8,0x67,0x6f,0x51,0x64,0x4f,0x8a,0xd3,0xcd,0xbb,0x33,0x41,0x33,0x92,0x35,0x38,0x3a,0x7d,0x46,0x3b,0x7f,0x5a,0x85,0x43,0x42,0x3c,0x4a,0x6c,0x51,0x4e,0x43,0x6d,0x4a,0x5f,0x3b,0x45,0x56,0x74,0x69,0x64,0x4a,0x4e,0x3e,0x3f,0x52,0x85,0x61,0x4f,0x6e,0x2a,0x34,0x28,0x64,0xd6,0x53,0x87,0x85,0x51,0x49,0x7f,0x4c,0x90,0x49,0x8c,0x2a,0x4f,0x25,0x6d,0x5f,0x90,0x57,0x5b,0x6f,0x63,0x61,0xc2,0x5e,0x4a,0x3f,0x3b,0x37,0x22,0x35,0x3e,0x42,0x47,0x45,0x3e,0x35,0x37,0x4e,0x47,0x3f,0x89,0xca,0xd3,0xd4,0xd2,0xd0,0xcc,0xcc,0xd0,0xce,0xce,0xd2,0xd0,0xca,0xc8,0xcb,0xc8,0xc2,0xbf,0xc1,0xc4,0xc4,0xc2,0xc2,0xbe,0xbc,0xc0,0xc4,0xc1,0xc1,0xc3,0xc1,0xba,0xbc,0xbc,0xbc,0xba,0xb9,0xb9,0xb9,0xb8,0xb9,0xb9,0xb9,0xb7,0xb7,0xb7,0xb5,0xbf,0xb7,0xb0,0xa9,0xa3,0xa9,0xb7,0xbf,0xb7,0xb9,0xb3,0xb3,0xb3,0xb5,0xb2,0xb7,0xb5,0xb3,0xb3,0xb3,0xb3,0xb1,0xb1,0xb3,0xb3,0xae,0xac,0xb0,0xb1,0xb0,0xb0,0xb3,0xb3,0xb5,0xb5,0xb5,0xb3,0xb2,0xb3,0xb5,0xb5,0xb5,0xb5,0xb5,0xb3,0xb2,0xb2,0xb5,0xb1,0xb1,0xb1,0xb0,0xb1,0xb5,0xb5,0xb3,0xb1,0xb5,0xb3,0xb1,0xb3,0xb1,0xb0,0xb3}, {0xb3,0xb3,0xb5,0xb3,0xb0,0xaa,0xae,0xb5,0xb3,0xb5,0xb7,0xb5,0xb5,0xb5,0xb5,0xb5,0xb7,0xb7,0xb5,0xb3,0xb2,0xb3,0xb5,0xb5,0xba,0xba,0xb4,0xb0,0xb8,0xb6,0xb8,0xbc,0xbc,0xba,0xb8,0xba,0xba,0xba,0xbc,0xbe,0xbe,0xb8,0xba,0xc0,0xc0,0xbc,0xbc,0xc0,0xc0,0xc2,0xc4,0xc6,0xc6,0xc4,0xc3,0xc3,0xc7,0xc7,0xc7,0xc9,0xc7,0xc5,0xc5,0xc7,0xc5,0xc9,0xc5,0xc4,0xc9,0xcb,0xcb,0xcd,0xcb,0xcf,0xcb,0xcb,0xcd,0xcd,0xcb,0xcf,0xcf,0xcb,0xcb,0xd1,0xc9,0xce,0xce,0xcc,0xcc,0xce,0xcf,0xd0,0xd0,0xd0,0xce,0xcf,0xce,0xcd,0xd2,0xd4,0xd2,0xcc,0xce,0xd2,0xd4,0xca,0xd0,0xce,0xda,0xc7,0xd7,0xd6,0xc7,0xe1,0xcf,0xd3,0x98,0x83,0x8b,0x85,0x7c,0xa3,0xd0,0xd6,0xdf,0xb9,0x59,0x6c,0x81,0xb2,0x82,0x6f,0x93,0x68,0x90,0x5f,0x62,0x4b,0x6e,0x66,0x5c,0x67,0x6d,0x62,0x77,0x68,0x8b,0x5d,0x7c,0x78,0x64,0x52,0x8a,0x64,0x8b,0x63,0x72,0x57,0x39,0x5a,0x66,0x6c,0x54,0x67,0x6d,0x5c,0x5e,0x6e,0xb2,0x8e,0x8d,0xa3,0x98,0x83,0xa4,0x8c,0x8f,0x80,0x89,0x8d,0x8e,0xbe,0xc7,0xc5,0xb6,0xcf,0x70,0x51,0x6d,0x43,0x8a,0x4b,0xa6,0xe4,0x52,0x44,0x62,0x76,0x72,0x39,0x5c,0x5c,0x70,0x60,0x60,0x73,0x4c,0x3e,0xbe,0xdb,0xd0,0xd6,0xd6,0xd0,0xd0,0xd0,0xce,0xce,0xd0,0xd3,0xce,0xc8,0xc6,0xc8,0xc6,0xc4,0xc1,0xc1,0xc2,0xc6,0xc6,0xc2,0xc2,0xbe,0xc1,0xc3,0xbf,0xbf,0xbf,0xbb,0xbe,0xbc,0xbc,0xbc,0xb9,0xb3,0xb6,0xbd,0xb9,0xb9,0xb9,0xb9,0xb7,0xb7,0xb7,0xb7,0xb5,0xb3,0xb7,0xb7,0xb3,0xb3,0xb5,0xb2,0xb9,0xb7,0xb2,0xac,0xb3,0xb2,0xb3,0xb5,0xb7,0xb3,0xb2,0xb3,0xb3,0xb2,0xb3,0xb5,0xb5,0xae,0xae,0xb3,0xb5,0xae,0xae,0xb2,0xb2,0xb3,0xb3,0xb5,0xb3,0xb3,0xb3,0xb3,0xb5,0xb5,0xb5,0xb5,0xb2,0xb0,0xb0,0xb3,0xb0,0xb0,0xae,0xac,0xae,0xb2,0xb3,0xb3,0xb3,0xb5,0xb2,0xb2,0xb5,0xb5,0xb2,0xb5}, {0xb7,0xb5,0xb5,0xb7,0xb3,0xac,0xb0,0xb7,0xb3,0xb5,0xb7,0xb5,0xb5,0xb7,0xb7,0xb5,0xb2,0xb5,0xb9,0xbb,0xbb,0xbb,0xb7,0xb3,0xb8,0xb6,0xb4,0xad,0xb8,0xb4,0xba,0xbc,0xbc,0xba,0xb8,0xba,0xba,0xba,0xbc,0xc0,0xba,0xbc,0xbe,0xc0,0xc0,0xbe,0xbe,0xbe,0xc0,0xc2,0xc2,0xc4,0xc4,0xc4,0xc5,0xc5,0xc5,0xc5,0xc5,0xc7,0xc5,0xc4,0xc4,0xc7,0xc9,0xcb,0xc5,0xc4,0xc7,0xc9,0xc9,0xcd,0xcd,0xcf,0xcb,0xc9,0xcd,0xcd,0xc9,0xcd,0xcf,0xcb,0xcd,0xd3,0xcf,0xd0,0xd0,0xcc,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xd0,0xce,0xce,0xd0,0xd0,0xd2,0xd0,0xcd,0xcd,0xd1,0xcb,0xd5,0xd3,0xd3,0xca,0xd3,0xd4,0xd3,0xd4,0xd4,0xd4,0xd6,0xd6,0xd5,0xd7,0xce,0xd6,0xd8,0xda,0xd9,0xd0,0xc9,0x66,0x60,0x59,0x80,0x82,0x7a,0x6e,0x60,0xa0,0x49,0x4a,0x4a,0x5f,0x82,0x4e,0x50,0x92,0xb4,0xbc,0x7a,0x9a,0x9d,0x8a,0xb3,0x67,0x5c,0x59,0x58,0x45,0x46,0x75,0x7d,0x83,0x81,0x44,0x5b,0x5e,0x4a,0x54,0x3f,0x36,0x83,0x57,0x55,0x73,0x74,0x74,0x67,0x76,0x57,0x87,0x6d,0x64,0x66,0x81,0xac,0xbc,0x97,0x99,0xcd,0xd1,0xb5,0xc2,0xc8,0xc1,0xbc,0xcf,0xcf,0xd8,0xdb,0xd4,0xcf,0xce,0xdc,0xd4,0xd4,0xcf,0xcf,0xca,0xcc,0xcf,0xce,0xd2,0xd4,0xca,0xd0,0xd2,0xcc,0xcf,0xd0,0xd0,0xce,0xd1,0xd1,0xcc,0xc6,0xc4,0xc6,0xc2,0xc8,0xca,0xc4,0xbe,0xc2,0xc6,0xc8,0xc4,0xc0,0xc3,0xc1,0xbf,0xc1,0xc1,0xbb,0xc0,0xbc,0xbc,0xbe,0xba,0xb3,0xb8,0xbf,0xbb,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb7,0xb7,0xb5,0xb9,0xbb,0xb9,0xb9,0xb9,0xb5,0xb9,0xb3,0xb2,0xa9,0xb5,0xb0,0xb3,0xb3,0xb5,0xb3,0xb2,0xb3,0xb3,0xb3,0xb3,0xb7,0xb3,0xb2,0xb3,0xb7,0xb5,0xb2,0xb0,0xb2,0xb2,0xb2,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb2,0xb0,0xb0,0xb2,0xb3,0xb3,0xb0,0xae,0xae,0xb2,0xb3,0xb3,0xb5,0xb7,0xb2,0xb0,0xb5,0xb3,0xb2,0xb3}, {0xb9,0xb3,0xb5,0xb9,0xb9,0xb3,0xb3,0xb9,0xb3,0xb5,0xb5,0xb5,0xb5,0xb7,0xb7,0xb5,0xb5,0xb5,0xb5,0xb3,0xb5,0xb7,0xb7,0xb5,0xba,0xb8,0xb8,0xb0,0xbc,0xb6,0xba,0xba,0xb8,0xb8,0xb8,0xba,0xbc,0xba,0xbc,0xbe,0xb6,0xbe,0xc2,0xbe,0xbe,0xc2,0xc2,0xc0,0xc2,0xc2,0xc2,0xc2,0xc4,0xc4,0xc5,0xc5,0xc3,0xc3,0xc4,0xc5,0xc5,0xc4,0xc5,0xc7,0xcb,0xcf,0xc9,0xc5,0xc9,0xcb,0xcb,0xcf,0xcb,0xcd,0xcb,0xc9,0xcd,0xcd,0xcb,0xcd,0xcb,0xc7,0xcd,0xcf,0xcf,0xcd,0xcf,0xcf,0xd3,0xd3,0xd1,0xd1,0xd1,0xd1,0xd0,0xd1,0xd3,0xd1,0xcf,0xcf,0xce,0xcc,0xcd,0xcd,0xcd,0xd7,0xd2,0xca,0xc5,0xd5,0xd7,0xd4,0xd6,0xd6,0xd0,0xd0,0xd6,0xd8,0xdf,0xd8,0xd6,0xd8,0xca,0xdc,0xce,0xd8,0xd6,0xd3,0xbb,0xae,0xe3,0xbd,0xc8,0xd7,0xcd,0x8e,0x85,0x6d,0x8b,0xd8,0x89,0x6d,0x81,0x54,0x5e,0x39,0x39,0x2e,0x6a,0x4f,0x49,0x2d,0x33,0x91,0x66,0x54,0x4e,0x6f,0x50,0x43,0x2d,0x80,0x71,0x62,0x4b,0x3b,0x46,0x91,0x65,0x4d,0x57,0x5f,0x60,0x3e,0x5f,0x57,0x69,0x4c,0x2d,0x39,0x64,0x58,0xae,0x30,0x5e,0xd2,0xca,0xdd,0xd5,0xd0,0xd2,0xd4,0xdf,0xdb,0xca,0xc4,0xdb,0xd4,0xca,0xd4,0xce,0xd4,0xce,0xd4,0xd8,0xd2,0xdb,0xd0,0xd2,0xd0,0xce,0xd0,0xd4,0xce,0xd2,0xd0,0xd2,0xce,0xcc,0xcc,0xca,0xc8,0xc6,0xc6,0xc2,0xca,0xca,0xc4,0xbe,0xbe,0xc2,0xc2,0xc2,0xc0,0xc1,0xc1,0xbf,0xc5,0xc6,0xc0,0xc2,0xbc,0xbc,0xc0,0xc0,0xb9,0xb9,0xbd,0xb9,0xb9,0xb9,0xb9,0xbb,0xb9,0xb9,0xb7,0xb9,0xb3,0xb3,0xb5,0xb2,0xb5,0xb9,0xb5,0xb7,0xb3,0xb3,0xaa,0xb7,0xb2,0xb5,0xb3,0xb3,0xb2,0xb2,0xb3,0xb3,0xb3,0xb3,0xb5,0xb0,0xb5,0xb7,0xb3,0xb3,0xb5,0xb5,0xb3,0xb3,0xb3,0xb3,0xb2,0xb3,0xb3,0xb5,0xb5,0xb3,0xb2,0xb2,0xb2,0xb2,0xb0,0xb0,0xb2,0xb7,0xb7,0xb3,0xb0,0xb0,0xb3,0xb5,0xb5,0xb5,0xb5,0xb2,0xb0,0xb3,0xb3,0xb2,0xb3}, {0xb7,0xb3,0xb3,0xb7,0xb9,0xb7,0xb5,0xb5,0xb3,0xb5,0xb5,0xb5,0xb5,0xb7,0xb7,0xb5,0xb7,0xb7,0xb5,0xb3,0xb3,0xb5,0xb5,0xb3,0xb8,0xb8,0xb6,0xb2,0xba,0xb6,0xb4,0xb6,0xb8,0xb6,0xb8,0xba,0xbc,0xba,0xba,0xbc,0xb5,0xc0,0xc4,0xbc,0xb8,0xc0,0xc4,0xc0,0xc4,0xc2,0xc0,0xc0,0xc2,0xc4,0xc5,0xc5,0xc3,0xc1,0xc2,0xc4,0xc5,0xc5,0xc5,0xc7,0xc7,0xcb,0xc7,0xc4,0xc9,0xcb,0xcb,0xcd,0xc9,0xcb,0xc9,0xc9,0xcd,0xcd,0xcb,0xcf,0xcd,0xc7,0xcf,0xcf,0xcd,0xc7,0xcf,0xcf,0xd1,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xd3,0xcf,0xcd,0xcc,0xcc,0xce,0xce,0xcc,0xd4,0xcc,0xd9,0xc9,0xd5,0xcb,0xcc,0xca,0xca,0xce,0xd0,0xd8,0xc8,0xdd,0xca,0xd2,0xdb,0xcc,0xdc,0xd2,0xd4,0xd7,0xcd,0xd8,0xca,0xd8,0xd0,0xd6,0xd8,0xdf,0xd9,0xd3,0xd3,0xd0,0xdb,0xd0,0xaa,0x65,0x7f,0x80,0x89,0x5d,0x62,0x68,0x80,0x66,0x6c,0x6e,0x41,0x85,0x5d,0x89,0x82,0x7d,0x6e,0x69,0x5a,0xc9,0xd5,0xce,0xc7,0xd8,0xde,0xcc,0xd8,0xbd,0x7b,0x8e,0xae,0x64,0x7f,0xa2,0x85,0x60,0x73,0x6b,0x81,0x95,0xbd,0x8b,0x72,0xbf,0xd0,0xd5,0xd2,0xc6,0xda,0xd4,0xca,0xd0,0xd0,0xdf,0xd2,0xd8,0xd4,0xd6,0xd8,0xca,0xda,0xce,0xd0,0xd0,0xc6,0xd0,0xd0,0xd2,0xd7,0xd2,0xd3,0xcf,0xcf,0xce,0xd0,0xce,0xca,0xc8,0xca,0xca,0xc8,0xc6,0xca,0xc8,0xc4,0xc2,0xc2,0xc4,0xc0,0xbc,0xc0,0xc0,0xc1,0xbf,0xbb,0xbf,0xc2,0xbc,0xc0,0xbc,0xba,0xc0,0xc0,0xbe,0xbb,0xbb,0xb9,0xb8,0xb7,0xb9,0xbb,0xbb,0xb7,0xb5,0xb3,0xb3,0xb7,0xbb,0xb7,0xb5,0xb3,0xae,0xb3,0xb3,0xb2,0xae,0xb7,0xb3,0xb2,0xb3,0xb2,0xb2,0xb2,0xb3,0xb5,0xb3,0xb3,0xb3,0xac,0xb5,0xb7,0xb0,0xae,0xb3,0xb5,0xb2,0xb5,0xb3,0xb2,0xb2,0xb3,0xb3,0xb5,0xb5,0xb3,0xb2,0xb2,0xb2,0xb3,0xb2,0xb2,0xb3,0xb3,0xb3,0xb2,0xb0,0xb2,0xb3,0xb5,0xb3,0xb2,0xb3,0xb2,0xb0,0xb5,0xb5,0xb3,0xb5}, {0xb5,0xb3,0xb3,0xb5,0xb5,0xb7,0xb5,0xb3,0xb3,0xb3,0xb3,0xb3,0xb5,0xb7,0xb7,0xb5,0xb5,0xb7,0xb7,0xb7,0xb7,0xb7,0xb6,0xb4,0xb6,0xb8,0xb2,0xb4,0xb6,0xb8,0xb2,0xb4,0xb8,0xb8,0xb8,0xba,0xba,0xba,0xba,0xbc,0xb8,0xc0,0xc0,0xb8,0xb5,0xba,0xbe,0xc0,0xc2,0xc2,0xc0,0xc0,0xc2,0xc4,0xc3,0xc1,0xc3,0xc1,0xc2,0xc4,0xc5,0xc5,0xc7,0xc9,0xc4,0xc7,0xc5,0xc4,0xc9,0xcb,0xc9,0xcb,0xc7,0xcb,0xcb,0xc9,0xcd,0xcb,0xcb,0xd1,0xd1,0xc9,0xd3,0xcf,0xca,0xc0,0xca,0xce,0xcc,0xcc,0xcc,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcf,0xcd,0xcc,0xce,0xd0,0xce,0xcb,0xc9,0xc9,0xdb,0xce,0xd8,0xc6,0xd3,0xd3,0xd3,0xca,0xd4,0xc2,0xd7,0xcf,0xd5,0xcb,0xd7,0xcd,0xda,0xce,0xd2,0xcc,0xd7,0xd5,0xdb,0xcd,0xd1,0xd4,0xc6,0xda,0xda,0xd2,0xd8,0xd7,0xdb,0xcd,0xd7,0xd7,0xcf,0xcd,0xe0,0xbf,0xc9,0xd8,0xd3,0xd3,0xcb,0xb6,0xce,0xd5,0xcf,0xc9,0xda,0xdb,0xd3,0xd3,0xda,0xcb,0xe2,0xca,0xd3,0xcc,0xd2,0xd0,0xd0,0xd2,0xc9,0xd9,0xd5,0xcd,0xe0,0xd3,0xcc,0xcf,0xd3,0xd6,0xd6,0xca,0xd4,0xd4,0xca,0xda,0xc2,0xd9,0xda,0xd1,0xd4,0xd6,0xd1,0xd4,0xd8,0xc0,0xd0,0xd6,0xcc,0xc8,0xce,0xca,0xd4,0xd4,0xbb,0xd2,0xd7,0xcc,0xce,0xd2,0xc6,0xd0,0xc8,0xc8,0xcb,0xcc,0xcc,0xca,0xca,0xca,0xca,0xcb,0xc8,0xca,0xc6,0xc2,0xc4,0xc6,0xc4,0xc0,0xbe,0xc0,0xc0,0xc1,0xbd,0xb7,0xbb,0xbe,0xb9,0xbe,0xbc,0xba,0xbc,0xbe,0xbe,0xbb,0xb9,0xb9,0xb8,0xb5,0xb7,0xb9,0xb9,0xb9,0xb7,0xbd,0xb7,0xb7,0xb5,0xb2,0xb5,0xb9,0xb7,0xb2,0xb5,0xb0,0xb2,0xb3,0xb5,0xb0,0xb3,0xb5,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb5,0xb0,0xb5,0xb5,0xae,0xaa,0xae,0xb2,0xb3,0xb5,0xb3,0xb2,0xb2,0xb3,0xb3,0xb3,0xb2,0xb3,0xb2,0xb2,0xb3,0xb3,0xb3,0xb3,0xb3,0xb2,0xb2,0xb2,0xb0,0xb2,0xb3,0xb3,0xb3,0xb2,0xb5,0xb3,0xb2,0xb5,0xb3,0xb2,0xb5}, {0xb5,0xb5,0xb5,0xb3,0xb3,0xb5,0xb3,0xb2,0xb3,0xb3,0xb3,0xb3,0xb5,0xb7,0xb7,0xb3,0xb5,0xb5,0xb5,0xb3,0xb3,0xb5,0xb8,0xb8,0xb5,0xb8,0xb0,0xb8,0xb6,0xbe,0xb6,0xba,0xbc,0xb8,0xb8,0xb8,0xba,0xba,0xbc,0xbe,0xbc,0xbe,0xbc,0xb8,0xb3,0xb3,0xb8,0xc0,0xc2,0xc0,0xc0,0xc0,0xc2,0xc2,0xc1,0xbf,0xc5,0xc3,0xc2,0xc5,0xc5,0xc7,0xc7,0xc9,0xc7,0xcb,0xc9,0xc7,0xcd,0xcd,0xcb,0xcb,0xc9,0xcd,0xcd,0xcb,0xcb,0xc9,0xc9,0xcf,0xd1,0xc9,0xd3,0xca,0xc7,0xb9,0xc4,0xc9,0xce,0xce,0xcc,0xcc,0xce,0xce,0xcf,0xd1,0xc7,0xcd,0xcf,0xcf,0xce,0xcf,0xd1,0xd3,0xd6,0xcc,0xd2,0xc9,0xcf,0xd1,0xcc,0xd1,0xd1,0xcf,0xd0,0xd3,0xca,0xcc,0xd8,0xd2,0xd5,0xd3,0xcb,0xd2,0xd2,0xd5,0xd5,0xcf,0xd0,0xd0,0xd1,0xd4,0xd6,0xd8,0xd5,0xd3,0xd1,0xd7,0xce,0xd8,0xd0,0xd8,0xd5,0xd5,0xd2,0xcc,0xcf,0xdd,0xd2,0xd4,0xcc,0xd9,0xd2,0xd8,0xd5,0xd0,0xd7,0xd5,0xcc,0xd8,0xd3,0xd9,0xd0,0xca,0xc6,0xc4,0xd4,0xd1,0xda,0xcd,0xd9,0xd8,0xcd,0xd5,0xdb,0xc6,0xd4,0xd8,0xd4,0xd0,0xd4,0xda,0xd8,0xd4,0xd0,0xd8,0xd2,0xd0,0xcf,0xd0,0xd3,0xd4,0xd0,0xd2,0xd4,0xd0,0xd9,0xcc,0xdb,0xd0,0xd6,0xce,0xda,0xc6,0xc6,0xc4,0xc4,0xcc,0xd6,0xd2,0xd4,0xc8,0xd6,0xcf,0xcf,0xd4,0xc8,0xcc,0xce,0xcc,0xca,0xca,0xca,0xca,0xc4,0xc2,0xc4,0xc8,0xc6,0xc0,0xc0,0xc4,0xc0,0xc0,0xc3,0xbf,0xb9,0xbf,0xc4,0xbe,0xbc,0xbc,0xbc,0xb9,0xb9,0xbd,0xbb,0xb8,0xbb,0xb7,0xb5,0xb5,0xb7,0xb9,0xb9,0xb7,0xb5,0xb3,0xb5,0xb5,0xb2,0xb3,0xb7,0xb5,0xb2,0xb7,0xb0,0xb5,0xb2,0xb7,0xb0,0xb5,0xb7,0xb5,0xb3,0xb3,0xb3,0xb3,0xb5,0xb7,0xb5,0xb5,0xb3,0xb0,0xaa,0xa9,0xae,0xb5,0xb3,0xb2,0xb2,0xb2,0xb3,0xb3,0xb2,0xb0,0xb5,0xb3,0xb2,0xb3,0xb5,0xb3,0xb3,0xb3,0xb3,0xb5,0xb5,0xb3,0xb5,0xb5,0xb5,0xb3,0xb3,0xb7,0xb7,0xb5,0xb5,0xb3,0xb2,0xb5}, {0xb2,0xb7,0xb9,0xb7,0xb3,0xb3,0xb3,0xb5,0xb7,0xb5,0xb5,0xb5,0xb3,0xbd,0xb5,0x9e,0xb6,0xb4,0xb2,0xb0,0xb7,0xb2,0xb3,0xb7,0xb3,0xb3,0xb6,0xb8,0xb8,0xb8,0xb6,0xb4,0xb6,0xc0,0xb6,0xba,0xba,0xb6,0xc0,0xba,0xba,0xc0,0xba,0xad,0xb1,0xc0,0xc4,0xbc,0xbf,0xc3,0xc7,0xc5,0xc1,0xbf,0xc1,0xc5,0xc5,0xbd,0xc5,0xc5,0xc0,0xd1,0x91,0xc7,0xc5,0xc7,0xcb,0xcb,0xc7,0xc7,0xc7,0xcb,0xc9,0xcb,0xcb,0xcb,0xc9,0xcb,0xcb,0xcd,0xca,0xca,0xcc,0xc7,0xbd,0xc3,0xcd,0xd1,0xcd,0xcd,0xcf,0xd3,0xd1,0xcd,0xcd,0xd1,0xc9,0xc9,0xcd,0xcd,0xcf,0xd0,0xd2,0x9a,0xce,0xce,0xcc,0xca,0xca,0xce,0xd3,0xd5,0xcf,0xd3,0xca,0xd6,0xd8,0xcf,0xd5,0xce,0xce,0xd5,0xd6,0xd6,0xd3,0xd1,0xd1,0xd3,0xd3,0xd3,0xd7,0xd4,0xd3,0xda,0xd4,0xba,0xd4,0xce,0xcc,0xd5,0xd1,0xd7,0xd5,0xcf,0xd3,0xd3,0xd0,0xd2,0xd2,0xd2,0xd0,0xce,0xd2,0xdc,0xd0,0xd1,0xd2,0xd2,0xda,0xce,0xd4,0xd1,0xca,0xc2,0xc7,0xd5,0xd9,0xd2,0xd4,0xd4,0xd6,0xd4,0xd4,0xd2,0xd0,0xd0,0xd2,0xca,0xd4,0xd8,0xcc,0xd8,0x98,0xd6,0xce,0xd2,0xd4,0xd2,0xd0,0xd0,0xd2,0xd4,0xd2,0xd4,0xd4,0xd2,0xd2,0xd2,0xd2,0xd5,0xcf,0xd1,0xd0,0xca,0xc0,0xc6,0xd4,0xd6,0xce,0xce,0xd2,0xd4,0xd2,0xcc,0xcc,0xce,0xca,0xca,0xc8,0xce,0xca,0xd0,0xca,0x92,0xc6,0xc6,0xc4,0xc0,0xc2,0xc4,0xc6,0xc7,0xc5,0xc1,0xc1,0xc5,0xc4,0xc0,0xbc,0xba,0xbb,0xbe,0xbe,0xbe,0xbb,0xb9,0xb9,0xb7,0xb9,0xb6,0xbb,0xbb,0xb8,0xbb,0xb6,0xa4,0xb9,0xb2,0xae,0xb9,0xb3,0xb9,0xb3,0xb2,0xb2,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb5,0xb7,0xb7,0xb5,0xb2,0xb0,0xb5,0xb5,0xb5,0xb3,0xb5,0xb0,0xa7,0xa9,0xb3,0xb7,0xb2,0xb7,0xb5,0xb5,0xb7,0xb5,0xb2,0xb2,0xb5,0xb3,0xaa,0xb9,0xb2,0xb0,0xbf,0x87,0xb2,0xb2,0xb3,0xb5,0xb5,0xb3,0xb2,0xb2,0xb3,0xb2,0xb5,0xb5,0xb3,0xb3,0xb3,0xb5,0xb7}, {0xb0,0xb2,0xb3,0xb3,0xb3,0xb5,0xb5,0xb3,0xb3,0xb2,0xb2,0xb0,0xb2,0xb5,0xb0,0xa2,0xb4,0xb8,0xb4,0xbf,0xb3,0xbb,0xb2,0xb3,0xb3,0xb5,0xb6,0xb6,0xb6,0xb6,0xb6,0xb8,0xba,0xb8,0xb8,0xb1,0xaf,0xb3,0xb5,0xb8,0xba,0xbc,0xbc,0xba,0xbc,0xc2,0xc2,0xbe,0xc3,0xc1,0xbf,0xc1,0xc5,0xc5,0xc3,0xbf,0xbd,0xc9,0xc2,0xc2,0xc5,0x7d,0xa4,0xcd,0xc7,0xc7,0xc9,0xc9,0xc9,0xc9,0xcb,0xcd,0xcb,0xcb,0xc9,0xc5,0xc1,0xbf,0xc3,0xc7,0xc4,0xc4,0xc8,0xc8,0xc2,0xc6,0xcd,0xcb,0xcf,0xcd,0xcd,0xcf,0xcf,0xcd,0xcf,0xd1,0xd1,0xc9,0xd5,0xc9,0xc5,0xcd,0x78,0xc1,0xce,0xce,0xce,0xcc,0xcc,0xcc,0xce,0xce,0xcf,0xd1,0xcb,0xcb,0xcf,0xd3,0xd7,0xd1,0xcd,0xcf,0xd1,0xd1,0xd1,0xd1,0xd0,0xce,0xd1,0xd1,0xd1,0xcf,0xcf,0xd3,0xcd,0xbd,0xd5,0xd7,0xcd,0xdb,0xcb,0xdb,0xd3,0xd3,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd2,0xd0,0xd2,0xd0,0xc6,0xc4,0xca,0xca,0xca,0xd1,0xd3,0xd1,0xcd,0xd1,0xd9,0xd9,0xd3,0xd3,0xd5,0xd4,0xd4,0xd4,0xd2,0xd0,0xd0,0xd4,0xd6,0xcc,0xd0,0xdc,0x8d,0xaf,0xd4,0xd0,0xd0,0xd2,0xd2,0xd2,0xd2,0xd4,0xd4,0xd0,0xd0,0xd0,0xca,0xc6,0xc4,0xc7,0xcb,0xc9,0xcb,0xce,0xcc,0xc6,0xca,0xd0,0xce,0xd0,0xd0,0xd0,0xd2,0xd0,0xcc,0xcc,0xd0,0xcc,0xc4,0xce,0xc8,0xc1,0xd0,0x75,0xbe,0xc8,0xc8,0xc6,0xc4,0xc4,0xc4,0xc3,0xc3,0xc5,0xc3,0xbd,0xbb,0xbc,0xc2,0xc0,0xbc,0xb9,0xbb,0xbd,0xbd,0xbb,0xbb,0xbb,0xb9,0xb6,0xb6,0xb6,0xb4,0xb4,0xb6,0xb0,0xa5,0xb9,0xb7,0xb3,0xb9,0xb2,0xb9,0xb7,0xb3,0xb2,0xb3,0xb3,0xb3,0xb2,0xb2,0xb3,0xb5,0xb5,0xb5,0xb3,0xac,0xaa,0xac,0xae,0xae,0xb2,0xb3,0xb3,0xb0,0xb2,0xb7,0xb7,0xb3,0xb5,0xb3,0xb3,0xb7,0xb7,0xb3,0xb2,0xb3,0xb2,0xb9,0xa9,0xb5,0xb2,0x7b,0x94,0xb2,0xb3,0xb3,0xb5,0xb5,0xb3,0xb5,0xb5,0xb7,0xb5,0xb7,0xb5,0xb0,0xac,0xac,0xae,0xb2}, {0xb3,0xb2,0xb2,0xb3,0xb7,0xb7,0xb5,0xb3,0xb7,0xb9,0xb5,0xb5,0xb9,0xb9,0xb3,0xb2,0xb6,0xb2,0xb8,0xb2,0xae,0xb2,0xbb,0xb5,0xb3,0xb5,0xb8,0xb6,0xb2,0xb2,0xb6,0xba,0xbc,0xb6,0xbe,0xb3,0xb1,0xbc,0xb6,0xbe,0xbc,0xb8,0xba,0xc0,0xc2,0xbe,0xbe,0xc0,0xc3,0xbf,0xbd,0xbf,0xc5,0xc7,0xc1,0xbd,0xbf,0xcd,0xc3,0xc5,0xcf,0xa6,0xc2,0xcb,0xc7,0xc5,0xc5,0xc5,0xc7,0xc9,0xc9,0xc9,0xca,0xcc,0xcc,0xc8,0xc4,0xc2,0xc8,0xcc,0xca,0xca,0xcc,0xce,0xcc,0xd0,0xd2,0xcc,0xcf,0xcd,0xcd,0xcf,0xcf,0xcf,0xcd,0xcf,0xcb,0xcd,0xc7,0xcf,0xe1,0xc7,0xac,0xd9,0xca,0xca,0xcc,0xce,0xce,0xce,0xce,0xce,0xd0,0xce,0xcc,0xc4,0xc9,0xd7,0xd3,0xcf,0xcf,0xcd,0xcd,0xcf,0xd1,0xd3,0xd1,0xcf,0xd3,0xd5,0xd1,0xd1,0xd7,0xd7,0xd3,0xd1,0xd1,0xcf,0xd5,0xcb,0xcd,0xcf,0xd7,0xcf,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xd0,0xd2,0xd6,0xd2,0xda,0xce,0xcc,0xd6,0xd0,0xd6,0xcf,0xd1,0xd1,0xd1,0xd3,0xd5,0xd5,0xd3,0xd5,0xd3,0xd3,0xd5,0xd4,0xd4,0xd0,0xce,0xc9,0xd9,0xd1,0xd5,0xda,0xac,0xca,0xd6,0xd0,0xd0,0xce,0xd0,0xd0,0xd2,0xd0,0xd0,0xd6,0xd8,0xd6,0xd4,0xd0,0xce,0xd0,0xd4,0xd0,0xce,0xd2,0xd2,0xd0,0xd4,0xd4,0xce,0xd0,0xce,0xce,0xd0,0xd0,0xce,0xcc,0xcc,0xce,0xd2,0xc4,0xd0,0xda,0xc2,0xa3,0xd0,0xc6,0xc4,0xc4,0xc6,0xc6,0xc6,0xc5,0xc3,0xc3,0xc3,0xbd,0xb5,0xb9,0xc0,0xc0,0xb9,0xb9,0xb9,0xbb,0xbb,0xbb,0xbb,0xb9,0xb7,0xb9,0xbd,0xba,0xb6,0xba,0xbb,0xb8,0xb4,0xb2,0xb5,0xb2,0xb3,0xaa,0xb3,0xb5,0xb3,0xb2,0xb3,0xb3,0xb3,0xb2,0xb2,0xb3,0xb7,0xb7,0xb7,0xb5,0xb2,0xb0,0xb2,0xb3,0xb2,0xb2,0xb3,0xb3,0xb3,0xb5,0xb7,0xb5,0xb3,0xb5,0xb3,0xb3,0xb5,0xb7,0xb5,0xb2,0xb2,0xae,0xb9,0xb7,0xb9,0xbd,0x91,0xb2,0xbb,0xb5,0xb3,0xb2,0xb2,0xb3,0xb3,0xb5,0xb5,0xb5,0xb9,0xb9,0xb3,0xae,0xae,0xb2,0xb5}, {0xb7,0xb3,0xb3,0xb5,0xb7,0xb7,0xb3,0xb2,0xb2,0xb5,0xb3,0xb3,0xb7,0xb3,0xb0,0xb7,0xb2,0xb6,0xa9,0xbc,0x99,0xb9,0xb5,0xb7,0xb5,0xb5,0xb8,0xb6,0xb4,0xb4,0xb6,0xb8,0xbc,0xb8,0xbe,0xba,0xbc,0xc2,0xbc,0xbe,0xbe,0xba,0xba,0xbe,0xbe,0xbc,0xbc,0xc0,0xbf,0xbf,0xc1,0xc1,0xbf,0xbf,0xbf,0xc1,0xa5,0xbb,0xc3,0xc5,0xb8,0xd1,0xbe,0xc0,0xc9,0xc5,0xc3,0xc5,0xc7,0xc9,0xc7,0xc5,0xc8,0xcc,0xce,0xce,0xcc,0xcc,0xce,0xd0,0xce,0xc8,0xc8,0xc8,0xc6,0xca,0xce,0xca,0xcb,0xcb,0xcd,0xcf,0xd1,0xcf,0xcb,0xc9,0xcf,0xa7,0xd7,0xb7,0xd1,0xd1,0xca,0xc7,0xca,0xca,0xcc,0xce,0xd0,0xce,0xce,0xcc,0xce,0xca,0xd0,0xc6,0xc9,0xd5,0xcd,0xcd,0xd3,0xcf,0xcd,0xcf,0xd1,0xd1,0xcf,0xcd,0xcd,0xd1,0xcd,0xcd,0xd5,0xd1,0xcd,0xd5,0xc5,0xd3,0xc9,0xd3,0xb9,0xd5,0xcf,0xd1,0xd0,0xd0,0xce,0xce,0xce,0xce,0xd0,0xd0,0xd2,0xd0,0xd8,0xd2,0xd2,0xd8,0xd2,0xd4,0xd1,0xd1,0xd1,0xd1,0xd1,0xcf,0xd1,0xd3,0xd5,0xd3,0xd1,0xd1,0xd2,0xd2,0xd0,0xce,0xb9,0xcd,0xd1,0xd3,0xc8,0xe5,0xce,0xce,0xd2,0xd0,0xce,0xce,0xd0,0xd0,0xce,0xca,0xce,0xd0,0xd2,0xd2,0xd0,0xd0,0xd0,0xd0,0xd0,0xcc,0xcc,0xcc,0xca,0xce,0xd0,0xcc,0xce,0xce,0xce,0xd0,0xd2,0xce,0xca,0xc8,0xcc,0xa7,0xd0,0xb7,0xc8,0xce,0xc4,0xc4,0xc6,0xc4,0xc4,0xc6,0xc6,0xc4,0xc3,0xc3,0xc3,0xc3,0xbf,0xbb,0xba,0xbe,0xbc,0xb7,0xbd,0xbb,0xbb,0xbb,0xbd,0xbb,0xb7,0xb6,0xb4,0xbb,0xb6,0xb2,0xb8,0xb8,0xb4,0xb8,0xac,0xb2,0xb2,0xb0,0xa5,0xb2,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb7,0xb7,0xb7,0xb9,0xb9,0xb9,0xb7,0xb3,0xb5,0xb3,0xb2,0xb2,0xb2,0xb2,0xb3,0xb5,0xb5,0xb3,0xb2,0xb3,0xb5,0xb5,0xb2,0xb0,0x9e,0xa7,0xb3,0xb0,0xae,0xbb,0xb2,0xae,0xb5,0xb3,0xb2,0xb2,0xb3,0xb3,0xb3,0xb2,0xb5,0xb7,0xb9,0xb7,0xb7,0xb7,0xb7,0xb7}, {0xb5,0xb3,0xb3,0xb5,0xb5,0xb2,0xb2,0xb2,0xb0,0xb3,0xb2,0xb2,0xb5,0xb0,0xac,0xb5,0xb0,0xb0,0xb8,0xb6,0xaa,0xb2,0xbb,0xb0,0xb5,0xb5,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xba,0xba,0xb3,0xb8,0xbc,0xb8,0xba,0xb3,0xba,0xbc,0xbc,0xba,0xba,0xbe,0xc0,0xbe,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xbf,0xbf,0xb9,0xc7,0xc7,0xcb,0xc3,0xbf,0xc7,0xc7,0xc7,0xc5,0xc5,0xc7,0xcb,0xcb,0xc9,0xc5,0xca,0xc8,0xc6,0xc6,0xc8,0xc8,0xc8,0xc6,0xca,0xc6,0xc6,0xc6,0xc2,0xc6,0xcc,0xcc,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xcb,0xc7,0xcb,0xd1,0xc9,0xd3,0xd5,0xc3,0xd5,0xcb,0xd1,0xcd,0xcc,0xce,0xce,0xcc,0xca,0xca,0xd0,0xc8,0xd0,0xcc,0xca,0xd0,0xc8,0xd0,0xd1,0xcf,0xcd,0xcf,0xcf,0xcd,0xcd,0xcd,0xcd,0xd1,0xcd,0xcd,0xd1,0xc9,0xc5,0xcd,0xc9,0xcd,0xd5,0xc7,0xc7,0xc9,0xd5,0xcf,0xd0,0xce,0xce,0xce,0xd0,0xd0,0xd0,0xce,0xd0,0xd0,0xc8,0xd0,0xd2,0xce,0xd0,0xca,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xd1,0xd5,0xd5,0xd3,0xcf,0xcf,0xcf,0xd1,0xcf,0xcd,0xc7,0xd3,0xcf,0xd3,0xcd,0xcb,0xd3,0xcf,0xd3,0xd1,0xce,0xd0,0xd2,0xd2,0xce,0xcc,0xd6,0xd2,0xd0,0xd0,0xd2,0xd4,0xd2,0xd0,0xce,0xc8,0xca,0xca,0xc8,0xca,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xca,0xc8,0xc8,0xd0,0xc4,0xd2,0xcc,0xc0,0xce,0xc8,0xca,0xc6,0xc4,0xc6,0xc5,0xc1,0xbf,0xc1,0xc3,0xc1,0xc0,0xbe,0xbe,0xba,0xba,0xbc,0xbe,0xbb,0xb9,0xbb,0xbd,0xb9,0xb7,0xb6,0xb2,0xb9,0xb4,0xb0,0xb6,0xb4,0xb0,0xb4,0xb0,0xb7,0xb5,0xb3,0xa7,0xb3,0xb7,0xb5,0xb3,0xb3,0xb3,0xb3,0xb5,0xb5,0xb3,0xb2,0xb7,0xb3,0xb0,0xb2,0xb7,0xb7,0xb3,0xb0,0xb5,0xb3,0xb2,0xb2,0xb2,0xb2,0xb3,0xb7,0xb5,0xb3,0xb2,0xb2,0xb3,0xb3,0xb2,0xb0,0xb2,0xb7,0xb0,0xc1,0xb0,0xb3,0xb5,0xb5,0xb3,0xb3,0xb3,0xb5,0xb7,0xb5,0xb3,0xb2,0xb5,0xb5,0xb3,0xb2,0xb3,0xb7,0xb5,0xb3}, {0xb3,0xb2,0xb3,0xb7,0xb5,0xb2,0xb2,0xb5,0xb5,0xb7,0xb7,0xb7,0xb7,0xb2,0xae,0xb2,0xb4,0xba,0xb0,0xbf,0xa3,0xbb,0xb2,0xb3,0xb7,0xb5,0xb6,0xb6,0xb8,0xb8,0xb6,0xb4,0xb5,0xb6,0xaa,0xb5,0xba,0xb6,0xbe,0xb6,0xb1,0xb8,0xbc,0xb8,0xba,0xc0,0xc0,0xba,0xc1,0xbd,0xb9,0xbb,0xbf,0xc1,0xbd,0xb9,0xc7,0xc1,0xb8,0xbf,0xc5,0xbd,0xc4,0xc2,0xc1,0xc3,0xc5,0xc7,0xc9,0xc9,0xc7,0xc5,0xc8,0xc2,0xbf,0xbf,0xc2,0xc8,0xc8,0xc6,0xc6,0xc2,0xc8,0xcc,0xc8,0xc8,0xcc,0xcc,0xc9,0xcb,0xc9,0xc7,0xc7,0xcb,0xcb,0xcb,0xc1,0xc9,0xc9,0xcf,0xc7,0xcb,0xc7,0xcd,0xcf,0xcb,0xc8,0xcc,0xce,0xcc,0xcc,0xcc,0xce,0xc8,0xcc,0xcc,0xcc,0xcc,0xca,0xd2,0xcf,0xcd,0xcf,0xd1,0xcf,0xcb,0xcb,0xcf,0xcf,0xd1,0xd1,0xd1,0xd1,0xcd,0xcb,0xcd,0xcb,0xd5,0xcb,0xd5,0xbd,0xd3,0xcd,0xcf,0xce,0xce,0xce,0xce,0xd0,0xce,0xcc,0xcc,0xce,0xce,0xc0,0xcc,0xd2,0xcc,0xd6,0xd0,0xc5,0xc9,0xcb,0xcd,0xcf,0xcf,0xd1,0xcf,0xd1,0xd1,0xcf,0xcd,0xcf,0xcf,0xcd,0xcb,0xcf,0xd5,0xd1,0xd5,0xd3,0xc9,0xd1,0xd3,0xcf,0xcd,0xcc,0xce,0xd0,0xd0,0xce,0xcc,0xce,0xc8,0xc2,0xc2,0xc8,0xcc,0xcc,0xc8,0xca,0xc8,0xcc,0xd0,0xcc,0xcc,0xd0,0xd0,0xce,0xce,0xca,0xc8,0xc8,0xca,0xcc,0xca,0xc6,0xce,0xc6,0xd0,0xbe,0xc6,0xbc,0xc4,0xc6,0xc2,0xc2,0xc4,0xc7,0xc3,0xc1,0xc3,0xc5,0xc1,0xbe,0xbe,0xbe,0xba,0xbc,0xc0,0xbd,0xb9,0xb9,0xbb,0xbb,0xb7,0xb6,0xb7,0xb9,0xbb,0xba,0xb8,0xb8,0xb4,0xb2,0xb2,0xb3,0xb7,0xb3,0xb5,0xa9,0xb2,0xb3,0xb2,0xb3,0xb3,0xb3,0xb3,0xb5,0xb5,0xb3,0xb0,0xb5,0xae,0xa9,0xaa,0xb2,0xb5,0xb5,0xb5,0xac,0xb0,0xb2,0xb2,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb2,0xb2,0xb2,0xb3,0xb2,0xae,0xb3,0xb2,0xb0,0xb9,0xb3,0xaa,0xb2,0xb3,0xb0,0xb0,0xb2,0xb5,0xb5,0xb5,0xb3,0xb2,0xb5,0xb2,0xac,0xaa,0xb0,0xb5,0xb7,0xb3}, {0xb6,0xb2,0xb4,0xb8,0xb6,0xb0,0xb0,0xb4,0xb4,0xb2,0xb4,0xb4,0xb0,0xb2,0xb2,0xaf,0xba,0xb4,0xb4,0xaf,0xb2,0xb0,0xb5,0xb5,0xb5,0xb5,0xb6,0xb4,0xb4,0xb4,0xb4,0xb6,0xb6,0xb4,0xb0,0xb6,0xba,0xba,0xbc,0xbc,0xaf,0xb8,0xbc,0xba,0xba,0xbe,0xbe,0xb8,0xbb,0xb9,0xb9,0xbd,0xc1,0xc1,0xbd,0xb9,0xb9,0xbd,0xc5,0xc1,0xbd,0xc9,0xb9,0xcb,0xbf,0xc1,0xc3,0xc5,0xc3,0xc3,0xc3,0xc3,0xc6,0xc2,0xc0,0xc2,0xc6,0xca,0xca,0xc8,0xc0,0xbd,0xc2,0xc8,0xc6,0xc4,0xc8,0xc6,0xc0,0xc4,0xc7,0xc7,0xc7,0xcb,0xcb,0xcb,0xcd,0xc0,0xd7,0xc7,0xc1,0xd3,0xc5,0xc3,0xcb,0xc7,0xc7,0xcd,0xcf,0xcd,0xcb,0xcb,0xcc,0xcc,0xc8,0xca,0xcc,0xca,0xca,0xc4,0xce,0xca,0xcd,0xd1,0xcf,0xc9,0xc9,0xcd,0xc8,0xc8,0xcc,0xce,0xca,0xcc,0xce,0xca,0xce,0xcc,0xce,0xcc,0xca,0xca,0xce,0xca,0xcd,0xcf,0xd1,0xcf,0xcb,0xc9,0xcb,0xcd,0xcd,0xc7,0xc1,0xc9,0xcf,0xcd,0xcf,0xd3,0xc2,0xc9,0xcd,0xcb,0xcd,0xd1,0xcf,0xc7,0xc9,0xc9,0xcb,0xcd,0xcf,0xcd,0xcb,0xc9,0xc5,0xc7,0xcb,0xc9,0xcb,0xdb,0xc5,0xcd,0xcb,0xcb,0xcd,0xcd,0xcb,0xcb,0xc9,0xc9,0xd0,0xcc,0xc8,0xca,0xcf,0xd3,0xd1,0xcf,0xc7,0xc3,0xc9,0xcd,0xca,0xc8,0xca,0xca,0xc6,0xca,0xca,0xc8,0xc8,0xca,0xcc,0xca,0xca,0xbc,0xd0,0xc6,0xbc,0xd4,0xc2,0xc2,0xc2,0xbf,0xc1,0xc7,0xc7,0xc3,0xc1,0xc3,0xc2,0xc0,0xbe,0xbc,0xbe,0xbe,0xbb,0xb7,0xbd,0xb9,0xb9,0xbb,0xb9,0xb4,0xb4,0xb7,0xb8,0xb4,0xb4,0xb6,0xb2,0xb2,0xb2,0xae,0xb4,0xb2,0xb0,0xb6,0xad,0xb2,0xb0,0xb2,0xb4,0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,0xb4,0xb4,0xaf,0xad,0xaf,0xb4,0xb6,0xb8,0xba,0xa9,0xb0,0xb4,0xb2,0xb2,0xb6,0xb4,0xb0,0xaf,0xb2,0xb4,0xb2,0xb2,0xb4,0xb2,0xaf,0xb0,0xab,0xba,0xaf,0xb6,0xba,0xb2,0xb4,0xaf,0xb0,0xb2,0xb4,0xb2,0xb2,0xb0,0xb0,0xb2,0xb0,0xaf,0xaf,0xb2,0xb6,0xb6,0xb4}, {0xb6,0xb2,0xb2,0xb4,0xb4,0xad,0xab,0xaf,0xb4,0xb0,0xb4,0xb4,0xb0,0xb6,0xba,0xb2,0xb0,0xb2,0xb2,0xb6,0xb9,0xb7,0xb2,0xb5,0xb3,0xb5,0xb6,0xb2,0xb0,0xb0,0xb4,0xb6,0xba,0xb4,0xbe,0xba,0xb8,0xb8,0xaf,0xb6,0xb6,0xbc,0xbe,0xbc,0xbc,0xbc,0xbe,0xbc,0xb2,0xb7,0xbf,0xc1,0xbf,0xbd,0xbb,0xbd,0xbf,0xbf,0xc1,0xbd,0xc9,0xbb,0xbb,0xc3,0xc3,0xc5,0xc7,0xc5,0xc1,0xbf,0xbf,0xc1,0xc4,0xc6,0xc6,0xc8,0xc8,0xc6,0xc0,0xbd,0xc8,0xc2,0xc4,0xca,0xc8,0xc8,0xca,0xc8,0xb9,0xc0,0xc9,0xcb,0xcb,0xcd,0xcb,0xc7,0xc1,0xc9,0xc3,0xcd,0xc9,0xc7,0xc3,0xcd,0xd1,0xcb,0xc9,0xcf,0xcf,0xc7,0xc1,0xc1,0xc8,0xd0,0xc8,0xcc,0xce,0xca,0xc8,0xb5,0xcc,0xc8,0xc9,0xcd,0xcb,0xc5,0xc1,0xc5,0xcc,0xca,0xd0,0xd0,0xca,0xce,0xd2,0xc8,0xcc,0xca,0xc8,0xd4,0xc8,0xd2,0xce,0xce,0xcb,0xcf,0xd1,0xcd,0xc7,0xc5,0xc9,0xcf,0xd5,0xc9,0xcf,0xcf,0xcf,0xcf,0xc5,0xcd,0xc7,0xcf,0xd1,0xcb,0xcb,0xd3,0xcf,0xc7,0xc4,0xc7,0xcb,0xcf,0xd1,0xcd,0xcb,0xc9,0xcf,0xcf,0xcf,0xc5,0xd3,0xc9,0xc9,0xd1,0xcb,0xcf,0xd1,0xcf,0xcb,0xc7,0xc7,0xc7,0xcc,0xcc,0xcc,0xce,0xcf,0xcd,0xc7,0xc1,0xd1,0xcb,0xcb,0xcf,0xcc,0xcc,0xce,0xcc,0xbe,0xc4,0xca,0xcc,0xcc,0xcc,0xca,0xc8,0xc6,0xcc,0xbe,0xce,0xc4,0xc6,0xbc,0xc6,0xc7,0xc3,0xc5,0xc9,0xc7,0xbf,0xb9,0xbb,0xbe,0xc2,0xc0,0xbc,0xc0,0xc0,0xb7,0xa8,0xbd,0xb9,0xb9,0xbb,0xb7,0xb0,0xb0,0xb4,0xb8,0xb0,0xb4,0xb8,0xb4,0xb6,0xba,0xb4,0xb6,0xb2,0xb2,0xbc,0xb4,0xb8,0xb6,0xb8,0xb2,0xb4,0xb4,0xb2,0xad,0xad,0xb0,0xb6,0xb6,0xb4,0xb4,0xb6,0xb4,0xaf,0xad,0xaf,0xaf,0xb8,0xba,0xb4,0xb2,0xb6,0xb6,0xb0,0xab,0xb0,0xb4,0xb4,0xb4,0xb6,0xb2,0xaf,0xb2,0xb6,0xb4,0xb2,0xb0,0xaf,0xaf,0xb8,0xb4,0xb6,0xb6,0xb4,0xb0,0xaf,0xaf,0xb0,0xb4,0xb6,0xb6,0xb6,0xb6,0xb4,0xb0,0xab}, {0xb2,0xb4,0xb4,0xb2,0xb0,0xb2,0xb4,0xb6,0xb2,0xa7,0xb4,0xb2,0xa9,0xb4,0xb6,0xb4,0xb4,0xaf,0xb6,0xb2,0xb2,0xb5,0xae,0xb5,0xb9,0xb5,0xb0,0xad,0xb6,0xba,0xaf,0xb6,0xb0,0xb6,0xb4,0xb4,0xb8,0xb4,0xab,0xa7,0xb8,0xba,0xbc,0xbc,0xba,0xba,0xbe,0xc1,0xb9,0xb9,0xbd,0xc1,0xc1,0xbf,0xbb,0xb9,0xbb,0xbd,0xbd,0xbf,0xc1,0xc1,0xbf,0xbd,0xc1,0xc9,0xc5,0xc3,0xbf,0xbd,0xc5,0xc5,0xbb,0xc6,0xc0,0xc8,0xbb,0xd0,0xbd,0xac,0xc2,0xc4,0xc6,0xc6,0xc6,0xc6,0xc8,0xca,0xc6,0xc6,0xc6,0xc8,0xca,0xc8,0xc7,0xc5,0xc3,0xc5,0xc7,0xc7,0xc9,0xcb,0xc9,0xc7,0xc0,0xca,0xce,0xca,0xc8,0xca,0xcc,0xc8,0xca,0xc8,0xcc,0xca,0xca,0xcc,0xc8,0xca,0xcc,0xcc,0xca,0xc8,0xc8,0xcc,0xcc,0xca,0xca,0xbe,0xce,0xcc,0xc2,0xcc,0xce,0xca,0xcc,0xc6,0xce,0xca,0xca,0xcc,0xc6,0xce,0xcd,0xcf,0xc5,0xc1,0xc5,0xd3,0xc3,0xc7,0xc7,0xc5,0xd1,0xc5,0xd1,0xc9,0xbd,0xb9,0xcf,0xcf,0xcd,0xcd,0xcd,0xcf,0xcf,0xd1,0xc8,0xcc,0xce,0xce,0xce,0xd0,0xcc,0xc6,0xca,0xca,0xca,0xca,0xcc,0xca,0xc8,0xc8,0xc8,0xd6,0xcc,0xce,0xc2,0xc8,0xcc,0xc8,0xc6,0xce,0xc6,0xcc,0xc1,0xd7,0xc3,0xae,0xc7,0xcb,0xcd,0xcd,0xca,0xca,0xce,0xd0,0xca,0xc8,0xca,0xce,0xce,0xcc,0xc8,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc4,0xc0,0xbd,0xc5,0xc7,0xc3,0xc1,0xc3,0xc2,0xbc,0xc2,0xbe,0xc2,0xbd,0xbd,0xbe,0xb9,0xbb,0xbb,0xbb,0xb9,0xb6,0xb7,0xb9,0xb9,0xb7,0xb6,0xab,0xb6,0xb2,0xa9,0xb4,0xb5,0xb3,0xb4,0xaf,0xb4,0xb2,0xb2,0xb4,0xaf,0xb4,0xb6,0xb6,0xb0,0xab,0xaf,0xb4,0xb6,0xb0,0xb0,0xb2,0xb0,0xb0,0xb6,0xb2,0xa9,0xa2,0xb6,0xb4,0xb4,0xb2,0xb2,0xb2,0xb4,0xb4,0xb2,0xb2,0xb4,0xb6,0xb8,0xb4,0xb0,0xb0,0xb2,0xb2,0xb2,0xb2,0xb4,0xb2,0xb0,0xaf,0xb2,0xb8,0xb8,0xb2,0xab,0xad,0xb8,0xb2,0xaf,0xb2,0xad,0xba,0xad,0xbc,0xab,0xa0}, {0xaf,0xb2,0xb4,0xb4,0xb4,0xb4,0xb2,0xb0,0xb8,0xaf,0xb8,0xb4,0xaf,0xb4,0xb2,0xb0,0xb4,0xaf,0xb4,0xb2,0xb2,0xb5,0xb0,0xb3,0xb2,0xb3,0xb8,0xb2,0xaf,0xb0,0xab,0xb2,0xbc,0xb6,0xab,0xa9,0xb4,0xba,0xb4,0xb2,0xb8,0xba,0xbc,0xbc,0xba,0xba,0xbc,0xbe,0xbb,0xbb,0xbb,0xbf,0xc1,0xbf,0xbd,0xbd,0xbb,0xbd,0xbd,0xbf,0xc1,0xc1,0xbf,0xbf,0xc3,0xc3,0xbd,0xbf,0xbf,0xbd,0xc1,0xbb,0xc2,0xca,0xbf,0xc0,0xae,0xc4,0xc2,0xc2,0xc4,0xc6,0xc6,0xc6,0xc6,0xc4,0xc4,0xc6,0xc8,0xc6,0xc6,0xc8,0xc8,0xc6,0xc7,0xc7,0xc5,0xc7,0xc7,0xc7,0xc9,0xcb,0xc9,0xc7,0xc4,0xca,0xcc,0xca,0xc8,0xca,0xca,0xca,0xca,0xc8,0xcc,0xc8,0xc8,0xca,0xc6,0xc8,0xc6,0xc8,0xca,0xca,0xcc,0xca,0xc8,0xc2,0xd0,0xc4,0xce,0xcc,0xc4,0xca,0xc8,0xc6,0xca,0xc4,0xcc,0xca,0xca,0xcc,0xc6,0xcc,0xcd,0xcd,0xcd,0xd1,0xc9,0xc9,0xbf,0xcd,0xd5,0xc7,0xc5,0xb7,0xcb,0xcf,0xc9,0xc9,0xcf,0xcd,0xcd,0xcd,0xcd,0xcd,0xcf,0xcf,0xca,0xcc,0xcc,0xca,0xca,0xcc,0xca,0xc4,0xca,0xca,0xca,0xca,0xcc,0xca,0xca,0xc8,0xce,0xd0,0xca,0xc8,0xca,0xc6,0xca,0xc2,0xc8,0xce,0xc4,0xc6,0xb7,0xcd,0xc9,0xc5,0xc9,0xc9,0xcb,0xcb,0xc8,0xc8,0xc8,0xc8,0xca,0xc8,0xca,0xcc,0xcc,0xca,0xc8,0xc6,0xc4,0xc6,0xc6,0xc4,0xc6,0xc6,0xc6,0xc2,0xc1,0xc5,0xc9,0xc5,0xc5,0xc5,0xc4,0xc0,0xc2,0xbe,0xc2,0xbe,0xbe,0xbe,0xb9,0xbb,0xb6,0xb7,0xb7,0xb7,0xb9,0xb7,0xb6,0xb2,0xbb,0xb2,0xba,0xb6,0xae,0xb4,0xb2,0xb0,0xb4,0xaf,0xb4,0xb0,0xb2,0xb6,0xaf,0xb4,0xb2,0xb2,0xb4,0xb6,0xb0,0xa9,0xad,0xb4,0xb4,0xb4,0xab,0xa7,0xaf,0xb2,0xb0,0xb2,0xb6,0xb4,0xb4,0xb4,0xb2,0xb4,0xb4,0xb4,0xb4,0xb4,0xb2,0xb4,0xb4,0xb2,0xb0,0xb0,0xb2,0xb2,0xb2,0xb2,0xb4,0xb4,0xb2,0xb2,0xb6,0xb4,0xb2,0xaf,0xb2,0xaf,0xb6,0xab,0xb2,0xb6,0xaf,0xb2,0xa2,0xb2,0xb0,0xb2}, {0xaf,0xb2,0xb4,0xb4,0xb4,0xb4,0xb0,0xad,0xb8,0xb2,0xb6,0xb6,0xb6,0xb6,0xb2,0xb6,0xb8,0xb0,0xb2,0xb2,0xb2,0xb3,0xae,0xb0,0xb9,0xb5,0xba,0xb4,0xb2,0xba,0xb8,0xb4,0xb0,0xb6,0xb2,0xb0,0xb4,0xb6,0xb6,0xb8,0xb8,0xba,0xbc,0xba,0xba,0xb8,0xba,0xbc,0xbd,0xbb,0xbb,0xbd,0xbd,0xbd,0xbd,0xbf,0xbb,0xbb,0xbd,0xbf,0xc1,0xc1,0xc1,0xbf,0xc3,0xc3,0xc1,0xc7,0xc7,0xc1,0xc5,0xc5,0xbf,0xc4,0xbf,0xc4,0xb3,0xc2,0xc2,0xc6,0xc4,0xc4,0xc6,0xc6,0xc6,0xc4,0xc4,0xc4,0xc8,0xc6,0xc4,0xc4,0xc4,0xc4,0xc4,0xc6,0xc5,0xc5,0xc7,0xc7,0xc7,0xc9,0xc9,0xc5,0xc9,0xc9,0xc9,0xcb,0xca,0xca,0xca,0xcc,0xca,0xc6,0xcc,0xc8,0xc8,0xca,0xc4,0xc8,0xc4,0xc8,0xca,0xca,0xca,0xca,0xc4,0xc0,0xce,0xc8,0xcc,0xcc,0xca,0xcc,0xc8,0xca,0xce,0xc8,0xca,0xc8,0xc8,0xca,0xc4,0xc6,0xce,0xc8,0xca,0xce,0xc6,0xce,0xc6,0xca,0xc8,0xc6,0xca,0xc0,0xca,0xcc,0xca,0xd0,0xcc,0xcc,0xcc,0xcc,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcb,0xc9,0xc9,0xc9,0xc9,0xc7,0xcb,0xcb,0xcb,0xcb,0xcd,0xcd,0xca,0xc8,0xca,0xce,0xc4,0xd0,0xc8,0xca,0xc8,0xc8,0xc2,0xc8,0xc4,0xcc,0xbe,0xcc,0xc9,0xc9,0xc7,0xc9,0xca,0xca,0xca,0xc8,0xc6,0xc6,0xca,0xc8,0xc8,0xc8,0xc8,0xc6,0xc6,0xc6,0xc4,0xc4,0xc5,0xc5,0xc5,0xc7,0xc5,0xc3,0xc3,0xc3,0xc3,0xc5,0xc2,0xc0,0xc0,0xc2,0xc0,0xbd,0xc0,0xbd,0xbd,0xbe,0xb7,0xb9,0xb4,0xb7,0xb9,0xb9,0xb9,0xb9,0xb6,0xb0,0xbb,0xb6,0xba,0xb8,0xb5,0xb7,0xb3,0xb5,0xb8,0xb2,0xb4,0xb2,0xb2,0xb4,0xad,0xaf,0xb8,0xb6,0xb6,0xb6,0xb6,0xb4,0xb4,0xb6,0xaf,0xb2,0xaf,0xad,0xb2,0xb4,0xb2,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb5,0xb3,0xb2,0xb2,0xb2,0xb2,0xb0,0xb2,0xb0,0xb0,0xb2,0xb2,0xb3,0xb3,0xb3,0xb3,0xb8,0xb6,0xad,0xbc,0xb2,0xb8,0xb6,0xb2,0xaf,0xb4,0xb0,0xb6,0xa6,0xb2,0xb2,0xb4}, {0xb6,0xb4,0xb2,0xb0,0xb2,0xb4,0xb2,0xb0,0xb2,0xb4,0xb4,0xb4,0xb8,0xb6,0xb2,0xb8,0xb8,0xb2,0xb0,0xb2,0xb3,0xb3,0xb0,0xb0,0xbb,0xb2,0xb4,0xad,0xa9,0xb6,0xb8,0xb0,0xad,0xb8,0xbc,0xba,0xb8,0xb4,0xb2,0xb8,0xb6,0xb8,0xba,0xba,0xba,0xba,0xba,0xbc,0xbb,0xb9,0xb9,0xbb,0xbb,0xbb,0xbb,0xbd,0xbb,0xbb,0xbd,0xbf,0xc1,0xc1,0xc1,0xc1,0xb9,0xbf,0xbf,0xc5,0xbf,0xb6,0xbd,0xc5,0xbd,0xbd,0xbf,0xcc,0xc2,0xc8,0xc0,0xbd,0xc2,0xc2,0xc2,0xc2,0xc4,0xc6,0xc6,0xc6,0xc6,0xc4,0xc4,0xc4,0xc2,0xc2,0xc2,0xc4,0xc3,0xc5,0xc5,0xc5,0xc7,0xc9,0xc9,0xc7,0xcb,0xc5,0xc5,0xcb,0xca,0xc8,0xc8,0xcc,0xc8,0xc6,0xca,0xc6,0xc6,0xca,0xc4,0xc8,0xc8,0xc8,0xc8,0xc6,0xc6,0xc8,0xc6,0xc4,0xc8,0xc8,0xc8,0xc8,0xcc,0xca,0xc6,0xce,0xcc,0xc6,0xc6,0xc8,0xca,0xca,0xc6,0xc6,0xd0,0xcc,0xca,0xc2,0xb9,0xd0,0xce,0xc4,0xbc,0xc6,0xd0,0xcc,0xce,0xc8,0xc4,0xc8,0xc8,0xc8,0xca,0xca,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xc9,0xc9,0xc9,0xcb,0xcb,0xc9,0xc9,0xc9,0xc9,0xcb,0xcb,0xcb,0xca,0xca,0xc8,0xca,0xce,0xce,0xcc,0xbc,0xca,0xd0,0xc4,0xc4,0xc4,0xd2,0xc8,0xce,0xc5,0xc2,0xc7,0xc7,0xc6,0xc6,0xc8,0xc8,0xc8,0xc8,0xc8,0xc6,0xc6,0xc6,0xc6,0xc4,0xc2,0xc4,0xc4,0xc4,0xc5,0xc5,0xc5,0xc5,0xc3,0xc1,0xc3,0xbf,0xbf,0xc3,0xc0,0xbc,0xbc,0xc0,0xbe,0xbb,0xbe,0xbb,0xbb,0xbd,0xb7,0xb9,0xb9,0xbb,0xb9,0xb7,0xb7,0xb9,0xb8,0xb6,0xb6,0xb6,0xb6,0xb6,0xb7,0xb5,0xb2,0xb7,0xb8,0xb2,0xb2,0xb2,0xb4,0xb4,0xb0,0xaf,0xb4,0xb8,0xb2,0xa7,0xa9,0xb4,0xb6,0xad,0xad,0xb4,0xb6,0xb4,0xb6,0xb4,0xb0,0xb0,0xb2,0xb2,0xb2,0xb2,0xb4,0xb4,0xb4,0xb4,0xb5,0xb2,0xb0,0xb2,0xb2,0xb2,0xb3,0xb3,0xb2,0xb0,0xb2,0xb2,0xb3,0xb5,0xb3,0xb3,0xaf,0xaf,0xaf,0xb8,0xad,0xa9,0xb0,0xb4,0xaf,0xb0,0xb0,0xba,0xb0,0xb8,0xb2,0xad}, {0xba,0xb8,0xb4,0xb0,0xb2,0xb4,0xb6,0xb4,0xb2,0xb6,0xb4,0xb4,0xb4,0xb0,0xb0,0xb2,0xb2,0xb0,0xaf,0xb2,0xb5,0xb5,0xb7,0xb5,0xb9,0xb3,0xbc,0xb0,0xa6,0xad,0xb2,0xb2,0xba,0xbc,0xb4,0xb0,0xb6,0xb8,0xb6,0xb8,0xb4,0xb4,0xb6,0xb8,0xba,0xba,0xbc,0xbc,0xbb,0xb9,0xb9,0xbb,0xbd,0xbb,0xbb,0xbb,0xbb,0xbb,0xbd,0xbf,0xbf,0xc1,0xc1,0xc1,0xbb,0xbf,0xbd,0xc1,0xbb,0xb0,0xb8,0xbf,0xc2,0xbf,0xbf,0xc8,0xc0,0xc2,0xc0,0xc0,0xc2,0xc0,0xc0,0xc0,0xc0,0xc4,0xc6,0xc8,0xc4,0xc4,0xc2,0xc4,0xc4,0xc2,0xc2,0xc4,0xc3,0xc3,0xc3,0xc3,0xc5,0xc9,0xc9,0xc7,0xcb,0xc3,0xc1,0xc9,0xcb,0xc7,0xc5,0xcb,0xc6,0xc4,0xc8,0xc6,0xc6,0xca,0xc6,0xc8,0xca,0xca,0xc8,0xc4,0xc6,0xc8,0xca,0xc8,0xc6,0xcc,0xc8,0xc8,0xc8,0xc4,0xc4,0xc6,0xc6,0xc4,0xc2,0xc8,0xcc,0xca,0xcc,0xca,0xcc,0xce,0xd0,0xc4,0xb1,0xc4,0xc6,0xc6,0xc8,0xcc,0xc6,0xc4,0xc8,0xca,0xc8,0xc8,0xc6,0xc6,0xc8,0xc8,0xca,0xca,0xca,0xca,0xcb,0xc9,0xc9,0xcb,0xcb,0xcb,0xcb,0xcb,0xc9,0xc9,0xc9,0xc9,0xcb,0xcb,0xcb,0xc9,0xc5,0xbd,0xcb,0xb9,0xca,0xa8,0xc2,0xc0,0xcb,0xc5,0xc5,0xcd,0xc7,0xc9,0xc6,0xc6,0xc6,0xc4,0xc3,0xc3,0xc5,0xc7,0xc9,0xc9,0xc8,0xc6,0xc6,0xc6,0xc7,0xc5,0xc5,0xc5,0xc3,0xc5,0xc3,0xc3,0xc3,0xc5,0xc5,0xc1,0xc4,0xbe,0xbc,0xc2,0xc2,0xbc,0xbc,0xc2,0xc0,0xbd,0xc0,0xbd,0xbd,0xbf,0xb9,0xbb,0xbb,0xbb,0xb9,0xb6,0xb6,0xb7,0xb8,0xb6,0xb6,0xba,0xb7,0xb5,0xb5,0xb2,0xb0,0xb2,0xb4,0xb0,0xaf,0xb2,0xb6,0xb6,0xb4,0xb2,0xb4,0xbc,0xb8,0xab,0xa4,0xab,0xb0,0xaf,0xb4,0xba,0xb6,0xb0,0xb0,0xb0,0xb2,0xb6,0xb0,0xb0,0xb0,0xb2,0xb2,0xb4,0xb4,0xb4,0xb3,0xb2,0xb2,0xb3,0xb3,0xb3,0xb2,0xb3,0xb2,0xb2,0xb2,0xb2,0xb3,0xb3,0xb3,0xb3,0xb4,0xab,0xb8,0xaf,0xb4,0x9b,0xb0,0xb0,0xb4,0xb2,0xb0,0xb6,0xaf,0xb4,0xb4,0xb2}, {0xb6,0xb6,0xb6,0xb4,0xb4,0xb6,0xb4,0xb2,0xb2,0xb8,0xb6,0xb6,0xb6,0xb6,0xb6,0xab,0xb6,0xb4,0xb0,0xb4,0xb5,0xb3,0xb5,0xb2,0xb5,0xb2,0xb8,0xb4,0xb2,0xb6,0xb2,0xb4,0xb8,0xbc,0xb6,0xb2,0xb4,0xb6,0xb6,0xbc,0xb4,0xb4,0xb6,0xb8,0xba,0xbc,0xbc,0xbc,0xbb,0xb9,0xbb,0xbd,0xbf,0xbd,0xbb,0xbb,0xbb,0xbb,0xbb,0xbd,0xbf,0xc1,0xc1,0xbf,0xc3,0xbf,0xb8,0xbf,0xc3,0xbf,0xc1,0xbf,0xc2,0xc0,0xc2,0xc6,0xbb,0xb9,0xc0,0xc6,0xc4,0xc2,0xc0,0xbf,0xbf,0xc0,0xc2,0xc4,0xc6,0xc2,0xc2,0xc4,0xc6,0xc6,0xc4,0xc2,0xc3,0xc3,0xc3,0xc3,0xc5,0xc7,0xc7,0xc5,0xc9,0xc3,0xc1,0xc7,0xc9,0xc5,0xc5,0xc9,0xc4,0xc2,0xc8,0xc4,0xc6,0xc8,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xca,0xca,0xc6,0xc6,0xcc,0xca,0xca,0xca,0xca,0xca,0xbe,0xc8,0xc8,0xc4,0xc8,0xca,0xc6,0xc8,0xc6,0xcc,0xc4,0xc4,0xca,0xc0,0xc6,0xc0,0xca,0xc8,0xd0,0xc4,0xc6,0xc2,0xc6,0xca,0xd0,0xc6,0xc6,0xc6,0xc6,0xc8,0xc8,0xc8,0xca,0xcb,0xc9,0xc9,0xcb,0xcb,0xc9,0xc9,0xc9,0xc9,0xc9,0xc7,0xc7,0xc9,0xc9,0xc9,0xc9,0xcf,0xcb,0xc1,0xcb,0xcc,0xc8,0xca,0xca,0xc5,0xc5,0xc9,0xcd,0xc3,0xc1,0xc6,0xcc,0xc8,0xc6,0xc5,0xc3,0xc3,0xc5,0xc7,0xc9,0xc8,0xc6,0xc4,0xc6,0xc9,0xc9,0xc7,0xc5,0xc1,0xc3,0xc1,0xc1,0xc3,0xc5,0xc5,0xc3,0xc4,0xbe,0xbc,0xc2,0xc2,0xbe,0xbe,0xc0,0xbd,0xb9,0xbd,0xbb,0xbb,0xbf,0xb9,0xbb,0xbb,0xbb,0xbb,0xb9,0xb9,0xb9,0xb8,0xb4,0xb4,0xbb,0xb7,0xb9,0xb7,0xb7,0xb7,0xaa,0xb6,0xb6,0xb0,0xb4,0xb6,0xb2,0xb4,0xb0,0xba,0xb4,0xb2,0xb4,0xb4,0xb0,0xb0,0xb6,0xb4,0xb8,0xb4,0xaf,0xb0,0xb0,0xb2,0xb8,0xb0,0xb0,0xb0,0xb0,0xb2,0xb2,0xb4,0xb4,0xb3,0xb2,0xb2,0xb3,0xb3,0xb2,0xb2,0xb2,0xb3,0xb2,0xb2,0xb2,0xb2,0xb3,0xb3,0xb2,0xb8,0xb2,0xa9,0xb8,0xb0,0xb2,0xb4,0xb4,0xb2,0xb4,0xb8,0xb8,0xad,0xaf,0xb4,0xb6}, {0xb2,0xb4,0xb6,0xb6,0xb4,0xb4,0xb2,0xb0,0xb0,0xb4,0xb2,0xb4,0xb4,0xba,0xb8,0x9d,0xb8,0xb8,0xb0,0xb6,0xb5,0xae,0xb3,0xb0,0xb2,0xa9,0xab,0xaf,0xb8,0xb8,0xaf,0xb0,0xad,0xb8,0xbc,0xb8,0xb6,0xb2,0xb4,0xbc,0xb8,0xb8,0xb6,0xb8,0xb8,0xba,0xba,0xba,0xb7,0xb7,0xb7,0xbb,0xbd,0xbb,0xbb,0xbb,0xbd,0xbb,0xbb,0xbd,0xbd,0xbf,0xbf,0xbf,0xbb,0xb9,0xb2,0xb9,0xc3,0xc3,0xc3,0xb9,0xbd,0xbd,0xc5,0xc7,0xbf,0xbd,0xc1,0xc3,0xc2,0xc2,0xc2,0xc0,0xbf,0xbf,0xc0,0xc2,0xc4,0xc0,0xbd,0xc0,0xc4,0xc4,0xc2,0xc2,0xc3,0xc5,0xc3,0xc3,0xc3,0xc5,0xc5,0xc3,0xc5,0xc3,0xc3,0xc5,0xc7,0xc5,0xc5,0xc7,0xc5,0xc1,0xc6,0xc2,0xc4,0xc6,0xc2,0xc6,0xc6,0xc8,0xc8,0xc6,0xc8,0xc8,0xc6,0xc4,0xc2,0xc8,0xc6,0xca,0xca,0xce,0xcc,0xaf,0xca,0xcc,0xc6,0xca,0xc8,0xc0,0xc4,0xc0,0xca,0xbe,0xbb,0xc8,0xcc,0xce,0xbe,0xc8,0xbe,0xd0,0xc8,0xce,0xc4,0xc2,0xc8,0xce,0xc8,0xc6,0xc6,0xc6,0xc6,0xc6,0xc8,0xc8,0xc6,0xc4,0xc4,0xc8,0xc9,0xc7,0xc7,0xc9,0xc8,0xc6,0xc6,0xc6,0xc7,0xc7,0xc7,0xc7,0xc1,0xc5,0xae,0xcb,0xbd,0xd1,0xc1,0xc1,0xc0,0xc2,0xcb,0xcd,0xc5,0xc1,0xc7,0xc7,0xc9,0xc9,0xc9,0xc7,0xc5,0xc5,0xc4,0xc6,0xc9,0xc3,0xc1,0xc3,0xc7,0xc7,0xc5,0xc5,0xc3,0xc3,0xc3,0xc1,0xc0,0xc2,0xc2,0xc0,0xc0,0xbe,0xbc,0xbe,0xc0,0xbe,0xbd,0xbe,0xbb,0xb7,0xbb,0xb7,0xb9,0xbb,0xb6,0xb9,0xb9,0xbb,0xbb,0xbb,0xb9,0xb9,0xb8,0xb2,0xb2,0xb8,0xb5,0xb7,0xb7,0xbb,0xb9,0x9c,0xb8,0xba,0xb2,0xb6,0xb4,0xad,0xb0,0xad,0xb6,0xa9,0xa6,0xb0,0xba,0xb4,0xaf,0xaf,0xaf,0xb6,0xb6,0xb2,0xb4,0xb2,0xb0,0xb4,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb4,0xb4,0xb2,0xb0,0xb0,0xb2,0xb3,0xb2,0xb2,0xb2,0xb3,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xaf,0x9d,0xb8,0xa9,0xbc,0xb0,0xaf,0xaf,0xb0,0xb8,0xba,0xb2,0xb0,0xb2,0xb2}, {0xb0,0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,0xb0,0xb0,0xb2,0xaf,0xb0,0xaf,0xb4,0xaf,0x89,0xb0,0xb4,0xaf,0xb6,0xb5,0xb0,0xb7,0xb3,0xb7,0xb3,0xb4,0xb4,0xb8,0xb2,0xab,0xba,0xb4,0xb8,0xb4,0xb2,0xb6,0xb8,0xb6,0xb6,0xbc,0xba,0xb8,0xb8,0xb8,0xb8,0xba,0xb8,0xb5,0xb3,0xb3,0xb7,0xb9,0xb9,0xb9,0xbb,0xbd,0xbb,0xbb,0xbb,0xbd,0xbd,0xbd,0xbd,0xbd,0xc1,0xbb,0xbd,0xc1,0xbf,0xbf,0xb5,0xbf,0xbb,0xbf,0xc1,0xc3,0xc3,0xc5,0xbf,0xbf,0xc2,0xc4,0xc2,0xc0,0xbf,0xbf,0xc0,0xc2,0xbd,0xb7,0xbb,0xbf,0xc0,0xc0,0xbf,0xc5,0xc5,0xc3,0xc1,0xc3,0xc3,0xc3,0xc1,0xc5,0xc5,0xc5,0xc5,0xc7,0xc7,0xc7,0xc7,0xc3,0xc1,0xc4,0xc2,0xc2,0xc4,0xc0,0xc2,0xc8,0xc8,0xc6,0xc4,0xc4,0xc6,0xc4,0xc2,0xc2,0xc4,0xc0,0xc4,0xc2,0xc8,0xc2,0x99,0xc4,0xca,0xc2,0xc8,0xc8,0xc0,0xc8,0xc4,0xc4,0xc8,0xc4,0xc6,0xc4,0xc6,0xb9,0xc4,0xc2,0xce,0xbe,0xc8,0xc6,0xc8,0xc6,0xc2,0xc8,0xc8,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc2,0xc0,0xc0,0xc4,0xc6,0xc6,0xc7,0xca,0xc8,0xc6,0xc6,0xc4,0xc7,0xc7,0xc7,0xc5,0xc7,0xc5,0xc5,0xc3,0xcd,0xc3,0xc7,0xbd,0xc8,0xc2,0xc5,0xc3,0xc3,0xc5,0xc9,0xc5,0xc3,0xc7,0xc7,0xc7,0xc5,0xc3,0xc4,0xc4,0xc7,0xc1,0xbb,0xbd,0xc3,0xc5,0xc3,0xc3,0xc5,0xc5,0xc3,0xc1,0xc0,0xc0,0xc0,0xbc,0xc0,0xbe,0xbc,0xbe,0xc0,0xbe,0xbe,0xbd,0xb9,0xb7,0xbb,0xb7,0xb9,0xbb,0xb7,0xb9,0xb7,0xb9,0xb7,0xb6,0xb6,0xb6,0xb4,0xb2,0xb2,0xb4,0xb2,0xb3,0xb2,0xb5,0xb0,0x89,0xb4,0xb6,0xb0,0xb6,0xb6,0xaf,0xb6,0xb2,0xb6,0xb4,0xb2,0xb4,0xb2,0xb0,0xaf,0xaf,0xb0,0xb6,0xb4,0xb0,0xb2,0xb2,0xb0,0xb4,0xb6,0xb4,0xb2,0xb2,0xb2,0xb2,0xb4,0xb4,0xae,0xac,0xac,0xb0,0xb2,0xb2,0xb3,0xb5,0xb2,0xb2,0xb0,0xb0,0xb2,0xb2,0xb2,0xb2,0xb8,0xaf,0xb2,0xad,0xbc,0xad,0xb8,0xa7,0xb6,0xb0,0xb2,0xb4,0xb4,0xb4,0xb6,0xb0}, {0xb3,0xb3,0xb2,0xb2,0xb3,0xb3,0xb2,0xb2,0xb3,0xb5,0xb3,0xb2,0xb2,0xb2,0xb0,0xae,0xa7,0xaf,0xb4,0xb6,0xb4,0xb4,0xb6,0xb6,0xb4,0xb4,0xb0,0xb2,0xb6,0xb6,0xb4,0xb8,0xb3,0xb3,0xb3,0xb5,0xb5,0xb7,0xb7,0xb9,0xb7,0xb7,0xb9,0xb7,0xb5,0xb3,0xb5,0xb9,0xb7,0xbd,0xb5,0xb9,0xb7,0xbd,0xbf,0xb9,0xb5,0xbb,0xbd,0xbd,0xbd,0xbf,0xbf,0xbf,0xb0,0xb8,0xbd,0xbd,0xbf,0xc3,0xc1,0xbf,0xbf,0xc1,0xc1,0xbf,0xbf,0xbf,0xbf,0xbd,0xc5,0xbf,0xbd,0xc3,0xc1,0xbd,0xbd,0xc3,0xc1,0xbd,0xcb,0xbf,0xc1,0xbf,0xc5,0xc1,0xbf,0xc1,0xc3,0xc5,0xc7,0xc5,0xc5,0xc3,0xbb,0xb6,0xc1,0xc9,0xbb,0xbb,0xc5,0xc3,0xc3,0xc3,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc7,0xc7,0xc7,0xc5,0xc5,0xc7,0xc7,0xc7,0xc9,0xc9,0xc7,0xc5,0xc7,0xc5,0xc3,0xb6,0xc3,0xc7,0xc7,0xcd,0xc9,0xc3,0xc9,0xc2,0xc4,0xc4,0xc6,0xc8,0xc4,0xc4,0xca,0xc4,0xc4,0xc4,0xc4,0xc4,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc4,0xc2,0xc2,0xc4,0xc8,0xc2,0xcc,0xc0,0xc2,0xc8,0xca,0xc6,0xc6,0xc2,0xc4,0xc6,0xc6,0xc6,0xc6,0xc6,0xc4,0xb5,0xbc,0xc2,0xc4,0xc4,0xc6,0xc6,0xc4,0xc3,0xc5,0xc5,0xc5,0xc5,0xc7,0xc7,0xc7,0xc9,0xc5,0xc5,0xc7,0xc5,0xbf,0xc1,0xc5,0xc5,0xc7,0xc3,0xc3,0xc1,0xcb,0xbe,0xc2,0xc0,0xc0,0xc0,0xc2,0xc2,0xc2,0xc2,0xc2,0xb3,0xb1,0xbb,0xc0,0xb7,0xb5,0xbb,0xbb,0xb9,0xb9,0xb9,0xb9,0xb9,0xba,0xb8,0xb8,0xba,0xba,0xb8,0xb8,0xb6,0xb6,0xb6,0xb6,0xb9,0xb9,0xb7,0xb3,0xb2,0xb3,0xb2,0xb2,0xa5,0xb2,0xb3,0xb2,0xb7,0xb3,0xb0,0xb5,0xb2,0xb2,0xb0,0xb0,0xb3,0xb3,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb3,0xb3,0xb3,0xb3,0xb2,0xb2,0xb0,0xb0,0xb2,0xb3,0xac,0xb7,0xae,0xb0,0xb5,0xb7,0xb3,0xb2,0xb3,0xb5,0xb5,0xb3,0xb3,0xb3,0xb2,0xae,0xa9,0xaa,0xae,0xb3,0xb5,0xb3,0xb2,0xb3,0xb2,0xb3,0xb3,0xb2,0xb2,0xb2,0xb2,0xb2}, {0xb3,0xb2,0xb2,0xb3,0xb3,0xb3,0xb3,0xb2,0xb2,0xb3,0xb3,0xb2,0xb2,0xb3,0xb2,0xb0,0xa6,0xab,0xb0,0xb0,0xb0,0xb2,0xb2,0xb2,0xb8,0xb6,0xb6,0xb6,0xb4,0xb2,0xb4,0xb4,0xb3,0xb3,0xb3,0xb5,0xb5,0xb7,0xb7,0xb9,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb7,0xb9,0xb7,0xb5,0xbb,0xc6,0xaa,0xb2,0xb3,0xb7,0xb7,0xbb,0xbd,0xbb,0xbb,0xbd,0xbb,0xbb,0xb8,0xbb,0xbf,0xbf,0xbf,0xbf,0xbf,0xbd,0xbb,0xbd,0xbf,0xbd,0xbd,0xc1,0xc3,0xc3,0xc3,0xbf,0xbd,0xbf,0xbf,0xbd,0xbd,0xc1,0xc3,0xb4,0xbf,0xc5,0xc3,0xb8,0xb8,0xc3,0xbd,0xbf,0xc1,0xc3,0xc3,0xc3,0xc1,0xc1,0xc3,0xbb,0xc3,0xc9,0xbf,0xc1,0xc9,0xc5,0xc3,0xc3,0xc3,0xc5,0xc5,0xc5,0xc3,0xc3,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc7,0xc7,0xc5,0xc7,0xc7,0xc5,0xc5,0xc5,0xc5,0xc3,0xb4,0xbf,0xc1,0xc1,0xc5,0xc5,0xc1,0xc7,0xc6,0xc6,0xc8,0xc8,0xc4,0xc2,0xc2,0xc6,0xc4,0xc4,0xc4,0xc4,0xc4,0xc6,0xc6,0xc6,0xc4,0xc4,0xc4,0xc2,0xc2,0xc2,0xc4,0xc6,0xbe,0xc2,0xc6,0xd0,0xbb,0xc0,0xbe,0xc4,0xc0,0xc2,0xc4,0xc4,0xc6,0xc6,0xc6,0xc4,0xbc,0xc0,0xc4,0xc6,0xc6,0xc4,0xc4,0xc4,0xc3,0xc5,0xc5,0xc3,0xc3,0xc7,0xc9,0xc9,0xc7,0xc5,0xc5,0xc5,0xc3,0xc1,0xc1,0xc5,0xc7,0xb9,0xc3,0xc7,0xc7,0xbb,0xb9,0xc2,0xbe,0xbe,0xbe,0xc0,0xc0,0xc0,0xbe,0xbe,0xbc,0xb9,0xbe,0xc2,0xbb,0xb9,0xbd,0xbd,0xb9,0xb9,0xb9,0xb9,0xba,0xba,0xba,0xb8,0xba,0xba,0xb8,0xb8,0xb6,0xb6,0xb8,0xb8,0xb7,0xb7,0xb5,0xb3,0xb2,0xb3,0xb3,0xb2,0xa3,0xae,0xae,0xae,0xb2,0xb2,0xb0,0xb3,0xb5,0xb3,0xb3,0xb3,0xb0,0xb0,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb3,0xb3,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xb2,0xb3,0xb0,0xb2,0xb3,0xbd,0xa7,0xac,0xaa,0xb2,0xae,0xb0,0xb2,0xb2,0xb2,0xb3,0xb3,0xb2,0xae,0xae,0xb0,0xb3,0xb3,0xb2,0xb0,0xb2,0xb0,0xb2,0xb2,0xb0,0xb0,0xb3,0xb5,0xb5}, {0xb3,0xb2,0xb2,0xb3,0xb3,0xb5,0xb3,0xb3,0xb2,0xb3,0xb3,0xb2,0xb2,0xb3,0xb3,0xb3,0xb0,0xb4,0xb6,0xb6,0xb4,0xb4,0xb4,0xb4,0xb4,0xaf,0xb6,0xb8,0xb0,0xb0,0xb6,0xb4,0xb5,0xb3,0xb3,0xb3,0xb3,0xb5,0xb7,0xb7,0xb3,0xb3,0xb3,0xb3,0xb5,0xb5,0xb7,0xb9,0xbf,0xb7,0xb9,0xb0,0xbf,0xbf,0xb5,0xbd,0xb9,0xbb,0xbb,0xb9,0xbb,0xbd,0xbb,0xb9,0xba,0xba,0xbb,0xbd,0xbd,0xba,0xba,0xbb,0xbd,0xbf,0xc1,0xbd,0xbb,0xbd,0xbf,0xc1,0xbf,0xbf,0xbd,0xbd,0xbd,0xbd,0xbf,0xc1,0xbf,0xc3,0xc7,0xbd,0xb4,0xc5,0xc3,0xbd,0xbd,0xbf,0xbf,0xc1,0xc1,0xc1,0xc1,0xbf,0xc1,0xb8,0xbb,0xbf,0xba,0xbb,0xc1,0xbd,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc5,0xc7,0xc7,0xc5,0xc3,0xc5,0xc5,0xc3,0xc3,0xc5,0xc5,0xc5,0xc1,0xc7,0xc7,0xc5,0xc7,0xc7,0xc5,0xc7,0xc2,0xbe,0xc4,0xc8,0xc0,0xc0,0xc6,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc6,0xc4,0xc2,0xc0,0xc0,0xc2,0xc4,0xc4,0xc4,0xc8,0xc6,0xc4,0xb9,0xca,0xcc,0xbe,0xc6,0xc4,0xc6,0xc6,0xc4,0xc4,0xc4,0xc4,0xc2,0xc0,0xc0,0xc2,0xc4,0xc4,0xc0,0xbe,0xc2,0xc5,0xc7,0xc7,0xc3,0xc1,0xc3,0xc5,0xc5,0xc3,0xc5,0xc3,0xc1,0xbf,0xc1,0xc3,0xc3,0xc3,0xc7,0xcf,0xc3,0xb5,0xc4,0xc6,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbc,0xbd,0xb5,0xb7,0xb9,0xb5,0xb5,0xb7,0xb6,0xb9,0xb9,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb8,0xba,0xb8,0xb8,0xb5,0xb5,0xb5,0xb2,0xb2,0xb3,0xb5,0xb3,0xb0,0xb5,0xb5,0xb2,0xb3,0xb3,0xb3,0xb5,0xb3,0xb0,0xb3,0xb5,0xac,0xb0,0xb5,0xb3,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb3,0xb3,0xb2,0xb0,0xb0,0xb0,0xb0,0xb2,0xb2,0xb2,0xb9,0xb2,0xb0,0xa7,0xb7,0xb7,0xac,0xb7,0xb0,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xb2,0xb2,0xb0,0xae,0xae,0xb0,0xb3,0xb3,0xb2,0xb0,0xb0,0xb3,0xb3}, {0xb3,0xb3,0xb3,0xb3,0xb3,0xb5,0xb3,0xb3,0xb2,0xb3,0xb3,0xb2,0xb2,0xb3,0xb5,0xb3,0xb0,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb2,0xb2,0xab,0xb2,0xb8,0xaf,0xaf,0xb6,0xaf,0xb5,0xb5,0xb3,0xb3,0xb3,0xb5,0xb5,0xb7,0xb3,0xb2,0xb3,0xb3,0xb5,0xb7,0xb7,0xb7,0xae,0xc6,0xb9,0x5a,0xc1,0xb7,0xb5,0xb9,0xb9,0xb9,0xb9,0xb9,0xbd,0xbf,0xbf,0xbd,0xbb,0xb8,0xba,0xbd,0xbd,0xba,0xba,0xbd,0xba,0xbd,0xc1,0xbf,0xbb,0xbb,0xbd,0xbd,0xbd,0xbd,0xbd,0xbb,0xbb,0xbf,0xc1,0xbf,0xbd,0xc5,0xb4,0x94,0x8b,0xb8,0xc3,0xbb,0xbf,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc3,0xbd,0xbf,0xc1,0xbb,0xbf,0xc3,0xc1,0xc3,0xc3,0xc3,0xc5,0xc3,0xc3,0xc3,0xc1,0xc5,0xc3,0xc3,0xc3,0xc5,0xc7,0xc5,0xc5,0xc3,0xc5,0xc5,0xc3,0xc3,0xc5,0xc5,0xc5,0xc3,0xc5,0xc5,0xc3,0xc5,0xc5,0xc5,0xc5,0xc2,0xb9,0xc0,0xc6,0xbd,0xbe,0xc4,0xbd,0xc4,0xc4,0xc2,0xc2,0xc2,0xc2,0xc4,0xc4,0xc2,0xc0,0xc0,0xc0,0xc2,0xc4,0xc4,0xc4,0xbb,0xd8,0xc6,0x5d,0xc6,0xc2,0xc0,0xc2,0xc4,0xc6,0xc4,0xc4,0xc2,0xc4,0xc4,0xc2,0xc0,0xbc,0xbc,0xc2,0xc2,0xbc,0xbc,0xc2,0xbf,0xc3,0xc5,0xc3,0xc1,0xc1,0xc3,0xc5,0xc1,0xc3,0xc3,0xbf,0xbd,0xc3,0xc5,0xc3,0xbf,0xcb,0xb4,0xa0,0x82,0xba,0xc4,0xbc,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xbe,0xbe,0xc0,0xbd,0xbb,0xb9,0xb7,0xb9,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xba,0xba,0xba,0xba,0xbb,0xba,0xb8,0xb8,0xba,0xba,0xb8,0xb6,0xb5,0xb5,0xb5,0xb3,0xb3,0xb5,0xb5,0xb5,0xb2,0xb3,0xb3,0xb2,0xb2,0xb3,0xb2,0xb3,0xb2,0xaa,0xb2,0xb5,0xaa,0xae,0xb5,0xae,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xb0,0xae,0xb0,0xb2,0xb3,0xb3,0xb2,0xa9,0xc3,0xb2,0x54,0xb9,0xb0,0xae,0xb3,0xb3,0xb5,0xb3,0xb2,0xb2,0xb3,0xb2,0xb2,0xb0,0xae,0xae,0xb0,0xb0,0xae,0xae,0xb0,0xae,0xb2,0xb3,0xb2,0xb0,0xb0,0xb2,0xb2}, {0xb5,0xb5,0xb3,0xb3,0xb3,0xb3,0xb2,0xb2,0xb2,0xb3,0xb3,0xb2,0xb2,0xb3,0xb3,0xb3,0xb0,0xb0,0xb2,0xb2,0xb4,0xb6,0xb6,0xb4,0xba,0xaf,0xb2,0xb8,0xad,0xad,0xb0,0xa7,0xb5,0xb5,0xb3,0xb2,0xb2,0xb3,0xb5,0xb5,0xb3,0xb3,0xb3,0xb5,0xb7,0xb7,0xb7,0xb7,0xbf,0xac,0xb3,0xb3,0xb7,0xbd,0xae,0xbb,0xb9,0xb9,0xb9,0xb9,0xbb,0xbf,0xbd,0xbb,0xbd,0xba,0xba,0xbd,0xbf,0xbb,0xbb,0xbf,0xb2,0xb8,0xbd,0xbd,0xbd,0xbd,0xbf,0xbf,0xbb,0xbd,0xbd,0xbb,0xbb,0xbf,0xc1,0xc1,0xbd,0xbf,0xbf,0xba,0xae,0xc3,0xbf,0xbb,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc3,0xc3,0xc3,0xc3,0xbf,0xc1,0xc7,0xc7,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc1,0xc7,0xc5,0xc3,0xc5,0xc5,0xc5,0xc5,0xc3,0xc5,0xc5,0xc5,0xc3,0xc3,0xc5,0xc5,0xc3,0xbf,0xc1,0xc3,0xc5,0xc5,0xc7,0xc7,0xc3,0xca,0xbd,0xc0,0xc6,0xbd,0xbe,0xc0,0xb5,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc0,0xc0,0xc0,0xc0,0xc4,0xc4,0xc4,0xc4,0xc8,0xb7,0xbd,0xbb,0xbe,0xca,0xbd,0xc6,0xc0,0xc2,0xc2,0xc2,0xc4,0xc6,0xc6,0xc6,0xc4,0xbe,0xbe,0xc4,0xc4,0xbe,0xbe,0xc4,0xb7,0xbc,0xc0,0xc2,0xc0,0xc2,0xc2,0xc4,0xbe,0xc2,0xc0,0xbc,0xbe,0xc2,0xc4,0xc0,0xbe,0xc0,0xba,0xc4,0xa8,0xca,0xc0,0xbc,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xbe,0xbe,0xbe,0xc0,0xbe,0xbb,0xbb,0xbd,0xbf,0xc3,0xbb,0xbb,0xbb,0xbb,0xba,0xba,0xba,0xb8,0xbb,0xba,0xb8,0xb8,0xba,0xba,0xb7,0xb3,0xb5,0xb7,0xb5,0xb3,0xb3,0xb5,0xb5,0xb3,0xae,0xb0,0xb2,0xb2,0xb2,0xb5,0xb5,0xb2,0xb7,0xae,0xb3,0xb5,0xac,0xae,0xb0,0xa5,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xb3,0xb3,0xb3,0xb2,0xbb,0xa7,0xae,0xae,0xb2,0xb7,0xa9,0xb3,0xb2,0xb2,0xb3,0xb2,0xb2,0xb3,0xb5,0xb3,0xb3,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb3,0xa7,0xac,0xb2,0xb2,0xb2,0xb2,0xb3,0xb3}, {0xb5,0xb5,0xb3,0xb3,0xb3,0xb3,0xb2,0xb0,0xb2,0xb3,0xb2,0xb0,0xb0,0xb2,0xb3,0xb2,0xb6,0xb6,0xb4,0xb4,0xb4,0xb6,0xb4,0xb0,0xba,0xb0,0xb2,0xb6,0xb0,0xb0,0xb2,0xab,0xb5,0xb5,0xb3,0xb2,0xb2,0xb3,0xb3,0xb5,0xb3,0xb3,0xb5,0xb5,0xb7,0xb7,0xb7,0xb7,0xb7,0xb5,0xbf,0xae,0xb2,0xb9,0xb7,0xbb,0xb9,0xb9,0xb9,0xb9,0xb9,0xbb,0xb9,0xb7,0xbf,0xbb,0xbb,0xbb,0xbb,0xbb,0xba,0xbb,0xb4,0xb8,0xbd,0xbd,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbd,0xbf,0xbf,0xc1,0xc5,0xba,0xbb,0xbd,0xb8,0xbd,0xbb,0xc3,0xbd,0xbd,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbd,0xc1,0xc1,0xbf,0xbd,0xbf,0xc1,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc1,0xc1,0xc5,0xc5,0xc5,0xc5,0xc5,0xc3,0xc3,0xc1,0xc3,0xc5,0xc3,0xc1,0xc1,0xc3,0xc3,0xc3,0xc5,0xc3,0xc5,0xc7,0xc3,0xc7,0xc5,0xbf,0xca,0xc0,0xc0,0xc4,0xc0,0xc0,0xc0,0xb9,0xc2,0xc2,0xc0,0xc0,0xc0,0xc0,0xc0,0xc2,0xbe,0xc0,0xc0,0xc2,0xc2,0xc4,0xc4,0xc2,0xc0,0xbd,0xca,0xbd,0xbd,0xc2,0xc2,0xc0,0xc2,0xc4,0xc4,0xc2,0xc2,0xc4,0xc2,0xc0,0xc6,0xc2,0xc0,0xc2,0xc2,0xbe,0xbe,0xc0,0xb9,0xbe,0xc2,0xc0,0xbe,0xbe,0xbe,0xbe,0xbe,0xc0,0xbe,0xbe,0xc0,0xc2,0xc2,0xc0,0xc8,0xb9,0xbc,0xbe,0xba,0xc0,0xc2,0xc4,0xbc,0xbe,0xbe,0xbe,0xbe,0xbe,0xbd,0xbd,0xb7,0xbd,0xbd,0xb9,0xbb,0xbb,0xbb,0xbf,0xbb,0xbb,0xbb,0xba,0xba,0xba,0xb8,0xb8,0xbb,0xba,0xb8,0xb8,0xba,0xb8,0xb5,0xb3,0xb5,0xb7,0xb5,0xb3,0xb3,0xb3,0xb5,0xb3,0xb3,0xb2,0xb3,0xb5,0xb3,0xb5,0xb5,0xae,0xb7,0xb2,0xb3,0xb5,0xb0,0xb0,0xb0,0xa9,0xb2,0xb2,0xb2,0xb2,0xb0,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xb2,0xb3,0xb3,0xb3,0xb2,0xb3,0xae,0xb9,0xac,0xac,0xb3,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xb5,0xb3,0xb2,0xb2,0xb2,0xb0,0xb0,0xb2,0xa9,0xae,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0}, {0xb6,0xb4,0xb4,0xb4,0xb4,0xb4,0xb2,0xb0,0xb2,0xb2,0xb2,0xb0,0xb0,0xb2,0xb4,0xb2,0xb2,0xb2,0xb0,0xaf,0xb0,0xb0,0xad,0xa7,0xb4,0xb2,0xb2,0xb4,0xb2,0xb2,0xb2,0xb2,0xb5,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb2,0xb3,0xb5,0xb5,0xb5,0xb5,0xb5,0xb7,0xb2,0xb0,0xb3,0xbd,0xb9,0xbb,0xb5,0xb3,0xb7,0xb9,0xbb,0xb9,0xb9,0xb9,0xb9,0xb7,0xbb,0xbb,0xb9,0xb7,0xb9,0xb9,0xb9,0xb5,0xbb,0xbd,0xbf,0xbb,0xb9,0xb9,0xb7,0xb5,0xbb,0xb8,0xba,0xbd,0xbf,0xbd,0xbd,0xbf,0xba,0xb6,0xc1,0xbd,0xbd,0xc1,0xbd,0xb8,0xbb,0xbb,0xbd,0xbd,0xbf,0xbf,0xbf,0xbf,0xbf,0xc3,0xc1,0xbf,0xc1,0xc3,0xc3,0xc1,0xbf,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc3,0xc3,0xc3,0xc3,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xbf,0xbf,0xc1,0xc3,0xc3,0xc5,0xbf,0xbf,0xc1,0xbd,0xbf,0xbf,0xb6,0xc5,0xc1,0xbf,0xc1,0xc1,0xc1,0xc1,0xc1,0xc3,0xc3,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xbd,0xbf,0xc1,0xc3,0xc3,0xc3,0xc3,0xc3,0xc1,0xb7,0xbd,0xcf,0xc5,0xc3,0xbd,0xb7,0xc5,0xc5,0xc5,0xc3,0xc1,0xc1,0xbf,0xbb,0xc5,0xc3,0xc1,0xbf,0xbf,0xbf,0xbd,0xbb,0xc0,0xc2,0xc2,0xc0,0xbe,0xbd,0xbd,0xbb,0xbe,0xbd,0xbd,0xbe,0xc0,0xc0,0xbe,0xbe,0xba,0xb9,0xc2,0xbc,0xc2,0xc4,0xbe,0xb9,0xbb,0xbb,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xb9,0xc1,0xbd,0xbb,0xc1,0xc1,0xbb,0xbd,0xbb,0xbb,0xbb,0xba,0xba,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb7,0xb7,0xb5,0xb5,0xb5,0xb5,0xb3,0xb2,0xb2,0xb3,0xb3,0xb2,0xb5,0xb0,0xb0,0xb2,0xae,0xb0,0xb0,0xa7,0xb3,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xb2,0xae,0xb0,0xb2,0xb3,0xb3,0xb2,0xb2,0xb2,0xb0,0xa9,0xb0,0xbb,0xb2,0xb7,0xb3,0xaa,0xb2,0xb3,0xb3,0xb2,0xb2,0xb2,0xb0,0xae,0xb3,0xb2,0xb2,0xb2,0xb0,0xae,0xae,0xb0,0xb2,0xb3,0xb3,0xb2,0xb0,0xb0,0xae,0xac}, {0xb4,0xb4,0xb2,0xb2,0xb4,0xb4,0xb2,0xb2,0xb2,0xb2,0xb0,0xaf,0xb0,0xb2,0xb4,0xb2,0xb0,0xb0,0xb0,0xb2,0xb6,0xb8,0xb4,0xb0,0xb4,0xb6,0xb4,0xb2,0xb2,0xaf,0xad,0xb2,0xb3,0xb3,0xb3,0xb3,0xb3,0xb2,0xb2,0xb2,0xb0,0xb2,0xb5,0xb5,0xb5,0xb3,0xb5,0xb7,0xb0,0xbf,0xb9,0xb0,0xb9,0xb9,0xb9,0xb5,0xb5,0xb9,0xbb,0xbb,0xbb,0xbb,0xbb,0xb9,0xb9,0xbd,0xbb,0xb7,0xb9,0xbd,0xbb,0xb5,0xbd,0xbd,0xbd,0xbb,0xb9,0xbb,0xbb,0xb9,0xbb,0xb6,0xb8,0xbf,0xbf,0xba,0xba,0xbf,0xbf,0xb6,0xc1,0xb8,0xbd,0xbd,0xc1,0xbd,0xbb,0xbb,0xbd,0xbf,0xbf,0xbf,0xbf,0xbf,0xbb,0xbf,0xbd,0xbb,0xc1,0xc3,0xbd,0xbb,0xbd,0xbf,0xbf,0xbf,0xc1,0xbf,0xbf,0xbf,0xbf,0xc1,0xc3,0xc3,0xc1,0xbf,0xbf,0xc1,0xbf,0xbf,0xbf,0xbd,0xbd,0xc1,0xc3,0xc3,0xc5,0xbd,0xbf,0xc3,0xbf,0xc5,0xc9,0xbf,0xc3,0xc5,0xc1,0xbf,0xbf,0xbb,0xbb,0xc1,0xc3,0xc1,0xc1,0xc1,0xbf,0xbf,0xc1,0xc1,0xbd,0xbf,0xc1,0xc3,0xc1,0xc1,0xc1,0xc1,0xc1,0xc3,0xbf,0xbd,0xc1,0xbf,0xc5,0xc1,0xbd,0xbf,0xc1,0xc1,0xc3,0xc3,0xc1,0xbf,0xc3,0xc3,0xc1,0xbd,0xbf,0xc1,0xbf,0xbb,0xbe,0xc0,0xbe,0xbe,0xbe,0xc0,0xc0,0xc0,0xbe,0xbb,0xbb,0xc0,0xc2,0xbe,0xbd,0xbe,0xbc,0xbc,0xba,0xba,0xb9,0xc4,0xb9,0xbe,0xbb,0xbb,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xb7,0xbf,0xb9,0xb7,0xbf,0xbf,0xb7,0xb6,0xbb,0xbb,0xba,0xba,0xba,0xb8,0xb8,0xb6,0xb6,0xb8,0xb8,0xb8,0xb7,0xb5,0xb5,0xb5,0xb3,0xb3,0xb3,0xb0,0xb0,0xb2,0xb3,0xb2,0xb5,0xb0,0xb2,0xb3,0xb2,0xb7,0xb9,0xb0,0xb3,0xb5,0xb3,0xae,0xae,0xac,0xac,0xb2,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xb0,0xac,0xb0,0xb2,0xb3,0xb2,0xb2,0xb2,0xb2,0xb0,0xb7,0xb5,0xae,0xb2,0xb3,0xb7,0xae,0xae,0xb2,0xb3,0xb3,0xb3,0xb5,0xb5,0xb3,0xb3,0xb2,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xb3,0xb3,0xb3,0xb0,0xb0,0xb2,0xb2,0xb0}, {0xb0,0xb2,0xb2,0xb4,0xb4,0xb6,0xb4,0xb0,0xb0,0xb2,0xb4,0xb4,0xb2,0xb2,0xb0,0xb0,0xaf,0xb0,0xaf,0xb0,0xb4,0xb2,0xb0,0xb6,0xb4,0xb4,0xab,0xaf,0xb8,0xab,0xa2,0xb0,0xb2,0xb2,0xb2,0xb2,0xb3,0xb3,0xb3,0xb3,0xb9,0xb3,0xb0,0xb3,0xb5,0xb5,0xb5,0xb7,0xbb,0xac,0xbf,0xb9,0xae,0xb9,0xb5,0xb5,0xbb,0xbb,0xb9,0xb7,0xb9,0xb9,0xb7,0xb0,0xbb,0xbd,0xbb,0xb7,0xb5,0xb7,0xb0,0xa7,0xbb,0xb9,0xb7,0xb7,0xb7,0xb9,0xb7,0xb7,0xbd,0xbd,0xb7,0xb7,0xbf,0xbb,0xb5,0xbb,0xbb,0xbf,0xb2,0xbf,0xc1,0xb5,0xbf,0xb9,0xbb,0xbf,0xbf,0xbd,0xbb,0xbb,0xbb,0xbb,0xb7,0xc5,0xc1,0xbb,0xc1,0xc3,0xbf,0xbd,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xc1,0xc1,0xc1,0xbf,0xbf,0xbd,0xbb,0xbd,0xc1,0xc1,0xc1,0xc1,0xbf,0xbf,0xbd,0xc1,0xbf,0xbf,0xc3,0xbf,0xbd,0xc1,0xc3,0xbf,0xb9,0xbd,0xc3,0xb7,0xb0,0xbb,0xbb,0xbd,0xbf,0xbf,0xc1,0xc1,0xbf,0xbf,0xc3,0xbd,0xbb,0xbf,0xc3,0xc1,0xbf,0xc1,0xc1,0xb6,0xc3,0xc3,0xb7,0xbd,0xc1,0xbb,0xc4,0xc4,0xc1,0xbf,0xc1,0xc1,0xbd,0xb7,0xc1,0xc8,0xc2,0xbb,0xc1,0xbf,0xb3,0xb0,0xbe,0xbd,0xbb,0xbd,0xbd,0xbe,0xbd,0xbd,0xc0,0xc2,0xbb,0xb9,0xc0,0xbe,0xb9,0xbd,0xbd,0xbe,0xb3,0xbe,0xc0,0xb5,0xc0,0xbb,0xbb,0xbf,0xbf,0xbd,0xbb,0xbb,0xb9,0xb7,0xb7,0xc3,0xbf,0xb8,0xbb,0xbd,0xbb,0xbd,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xb5,0xb5,0xb5,0xb7,0xb7,0xb7,0xb5,0xb3,0xb2,0xb3,0xb3,0xb3,0xb4,0xb2,0xb2,0xb2,0xaf,0xaf,0xb0,0xb2,0xb2,0xb2,0xb0,0xb0,0xb6,0xb0,0xaf,0xab,0xb4,0xad,0x9d,0xb0,0xaf,0xb2,0xb2,0xb0,0xb0,0xb4,0xb2,0xb0,0xb6,0xb0,0xaf,0xb0,0xb2,0xb0,0xb0,0xb2,0xb2,0xaf,0xb4,0xb0,0xaf,0xb2,0xaf,0xb2,0xb6,0xb6,0xb2,0xb0,0xb2,0xb4,0xb2,0xad,0xb6,0xb8,0xb6,0xb0,0xb0,0xb0,0xa9,0xa0,0xb2,0xad,0xb4,0xaf,0xaf,0xb4,0xad,0xb2}, {0xb0,0xb2,0xb2,0xb4,0xb4,0xb6,0xb4,0xb2,0xaf,0xb0,0xb0,0xb0,0xaf,0xb0,0xb0,0xb2,0xaf,0xb2,0xb2,0xb2,0xb6,0xb2,0xb0,0xb6,0xb4,0xaf,0xa7,0xab,0xb4,0xb0,0xad,0xb6,0xb2,0xb0,0xae,0xae,0xb0,0xb2,0xb2,0xb2,0xb5,0xb0,0xb0,0xb2,0xb3,0xb3,0xb3,0xb5,0xb5,0xa9,0xb9,0xb5,0xae,0xb7,0xb5,0xb7,0xb9,0xb9,0xb9,0xb9,0xb9,0xbd,0xbb,0xb7,0xbd,0xb9,0xb0,0xaa,0xb0,0xb9,0xbd,0xb9,0xb5,0xb3,0xb3,0xb5,0xb7,0xb9,0xb9,0xb9,0xb3,0xb9,0xb7,0xb3,0xb9,0xbb,0xb7,0xbb,0xb9,0xbb,0xb0,0xbb,0xbd,0xb2,0xbb,0xb5,0xbb,0xbd,0xbf,0xbd,0xbd,0xbf,0xbf,0xbf,0xbb,0xc1,0xbd,0xbb,0xc1,0xbf,0xb9,0xbd,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbd,0xbd,0xbf,0xc1,0xc1,0xc1,0xbf,0xbf,0xbb,0xbb,0xbb,0xbd,0xbd,0xbd,0xbd,0xbf,0xba,0xbd,0xbf,0xbf,0xc3,0xc1,0xc1,0xc5,0xbf,0xb7,0xb2,0xb7,0xbf,0xbd,0xbd,0xc3,0xbf,0xbb,0xb7,0xb7,0xb9,0xbb,0xbd,0xbd,0xbf,0xbb,0xb9,0xbb,0xbd,0xbd,0xbd,0xbf,0xbd,0xb2,0xbf,0xbf,0xb7,0xbf,0xc1,0xbd,0xc1,0xc1,0xc1,0xbf,0xc1,0xc4,0xc1,0xbd,0xc2,0xc2,0xb7,0xb0,0xb9,0xbf,0xbf,0xbf,0xbd,0xbb,0xbb,0xbb,0xbd,0xbe,0xbd,0xbd,0xb5,0xbe,0xb9,0xb3,0xb9,0xbd,0xbb,0xbb,0xbd,0xbe,0xb1,0xbd,0xbd,0xb3,0xbd,0xb7,0xbd,0xbf,0xbf,0xbd,0xbd,0xbd,0xbd,0xbb,0xba,0xbf,0xbb,0xb8,0xbd,0xbb,0xb6,0xba,0xba,0xba,0xba,0xb8,0xb8,0xba,0xba,0xba,0xb7,0xb7,0xb7,0xb7,0xb7,0xb5,0xb3,0xb2,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb2,0xb4,0xaf,0xb0,0xb2,0xb4,0xb6,0xb6,0xb6,0xb6,0xb2,0xad,0xa7,0xa9,0xb2,0xb2,0xab,0xb8,0xb2,0xb2,0xaf,0xab,0xab,0xb0,0xb2,0xb0,0xb2,0xaf,0xad,0xaf,0xb0,0xb0,0xb0,0xb2,0xb0,0xad,0xb2,0xaf,0xad,0xb0,0xad,0xb0,0xb4,0xb4,0xb2,0xb2,0xb4,0xb8,0xb6,0xb0,0xb8,0xb4,0xab,0xa6,0xa9,0xb2,0xb6,0xb2,0xb0,0xad,0xb2,0xaf,0xaf,0xb2,0xad,0xb0}, {0xb2,0xb4,0xb4,0xb2,0xb0,0xb0,0xad,0xa9,0xad,0xad,0xab,0xa9,0xa9,0xab,0xad,0xb0,0xa9,0xaf,0xaf,0xad,0xb0,0xaf,0xad,0xb0,0xb8,0xb0,0xab,0xab,0xb0,0xb2,0xb2,0xb2,0xa9,0xac,0xb0,0xb7,0xb9,0xb5,0xac,0xa5,0xb3,0xb2,0xb2,0xb3,0xb3,0xb3,0xb5,0xb7,0xb8,0xaf,0xbc,0xb8,0xb0,0xb8,0xb6,0xb6,0xb6,0xb8,0xb8,0xb8,0xb8,0xba,0xba,0xb8,0xba,0xb8,0xb2,0xaf,0xb4,0xbc,0xbc,0xb8,0xb6,0xb6,0xb6,0xb6,0xb8,0xb8,0xb8,0xb6,0xae,0xb9,0xb9,0xb3,0xb5,0xbb,0xbb,0xbb,0xbb,0xbd,0xb3,0xbd,0xbd,0xb3,0xbb,0xb7,0xb7,0xbb,0xbb,0xbb,0xbb,0xbd,0xbd,0xbb,0xbd,0xbb,0xb7,0xbb,0xbf,0xbb,0xb7,0xbb,0xbd,0xbd,0xbd,0xbd,0xbd,0xbf,0xbf,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xbb,0xb7,0xb5,0xb8,0xb8,0xb6,0xb4,0xb4,0xb6,0xb8,0xba,0xb4,0xba,0xba,0xb8,0xbb,0xba,0xb8,0xbd,0xc7,0xbd,0xb8,0xba,0xba,0xbb,0xbb,0xb8,0xb6,0xb8,0xbb,0xbf,0xc3,0xbf,0xb8,0xb0,0xbd,0xbb,0xba,0xbb,0xbd,0xbd,0xbf,0xc1,0xc1,0xb8,0xc1,0xc1,0xba,0xbd,0xbf,0xbb,0xbd,0xbd,0xbf,0xbf,0xbf,0xc1,0xc1,0xbd,0xbf,0xbf,0xb7,0xb2,0xb9,0xbf,0xbd,0xbb,0xb9,0xb9,0xb9,0xbb,0xbd,0xbf,0xbd,0xbd,0xb0,0xbd,0xbd,0xb6,0xb7,0xbd,0xbd,0xbb,0xbf,0xc1,0xb7,0xbf,0xbf,0xb6,0xbd,0xb9,0xbb,0xbb,0xbb,0xbb,0xba,0xbb,0xbb,0xbb,0xbd,0xbb,0xb6,0xb8,0xbd,0xb8,0xb4,0xb8,0xba,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xba,0xb7,0xb5,0xb5,0xb5,0xb3,0xb2,0xb0,0xae,0xb0,0xae,0xad,0xa9,0xa9,0xab,0xaf,0xb0,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xba,0xb6,0xab,0xad,0xb0,0xaf,0xaf,0xad,0xab,0xad,0xb0,0xb4,0xb6,0xb4,0xad,0xa6,0xb0,0xaf,0xaf,0xb0,0xb2,0xb0,0xb2,0xb2,0xb2,0xaf,0xb4,0xb0,0xb0,0xb2,0xaf,0xb2,0xb0,0xb2,0xb2,0xb0,0xb2,0xb4,0xb4,0xb2,0xb4,0xb0,0xad,0xa9,0xad,0xb4,0xb4,0xb0,0xaf,0xad,0xb0,0xaf,0xaf,0xb2,0xaf,0xb0}, {0xb4,0xb4,0xb4,0xb0,0xaf,0xad,0xab,0xa6,0xaf,0xad,0xab,0xa7,0xa7,0xa7,0xab,0xad,0xaf,0xb2,0xb0,0xaf,0xb2,0xb4,0xb2,0xb4,0xb8,0xb2,0xb2,0xb0,0xaf,0xb2,0xb0,0xa9,0xb3,0xb2,0xb0,0xb0,0xb2,0xb2,0xb2,0xb2,0xb2,0xb3,0xb3,0xb5,0xb5,0xb3,0xb5,0xb5,0xba,0xb4,0xbe,0xba,0xb2,0xb8,0xb6,0xb8,0xb6,0xb8,0xb8,0xb8,0xb6,0xb6,0xb8,0xb8,0xb6,0xb8,0xb8,0xb8,0xb8,0xba,0xb6,0xb0,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb6,0xb3,0xb9,0xbb,0xb7,0xb7,0xbb,0xb9,0xb9,0xbb,0xbd,0xb7,0xbd,0xbd,0xb7,0xbd,0xb9,0xb9,0xbb,0xbb,0xb9,0xbb,0xbb,0xb9,0xb7,0xbd,0xbb,0xb9,0xb7,0xb9,0xb7,0xb9,0xbd,0xbb,0xbb,0xbd,0xbd,0xbd,0xbd,0xbf,0xbf,0xc1,0xbd,0xbb,0xbb,0xbb,0xb9,0xb3,0xb0,0xba,0xb8,0xb6,0xb2,0xb2,0xb2,0xb4,0xb8,0xbb,0xbf,0xbb,0xba,0xbd,0xbd,0xbb,0xbf,0xbf,0xb8,0xbb,0xbd,0xba,0xbf,0xbf,0xb6,0xbb,0xbb,0xba,0xbb,0xbb,0xbb,0xbb,0xba,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbd,0xbf,0xc3,0xbb,0xc3,0xc1,0xba,0xbd,0xbb,0xbb,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbb,0xbd,0xbd,0xbb,0xbd,0xbd,0xb7,0xb4,0xb7,0xb9,0xb9,0xbb,0xbd,0xbd,0xbd,0xbb,0xb7,0xbf,0xbf,0xbb,0xbb,0xbd,0xbd,0xbb,0xbf,0xc1,0xbb,0xbf,0xbf,0xb9,0xbd,0xbb,0xb9,0xb9,0xb9,0xb9,0xba,0xbb,0xba,0xb8,0xbb,0xba,0xb6,0xb6,0xb8,0xb6,0xb6,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb5,0xb5,0xb3,0xb3,0xb2,0xb0,0xae,0xac,0xb2,0xb0,0xad,0xa9,0xa7,0xa7,0xa9,0xab,0xb0,0xb0,0xb0,0xaf,0xb0,0xb2,0xb2,0xb0,0xb0,0xb4,0xab,0xb2,0xb2,0xb0,0xb6,0xab,0xb2,0xb2,0xb0,0xb0,0xb2,0xb2,0xb0,0xaf,0xaf,0xb0,0xb2,0xb2,0xb2,0xb2,0xb2,0xb4,0xb4,0xb2,0xb6,0xb2,0xb2,0xb4,0xb0,0xb6,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xb0,0xaf,0xb0,0xb2,0xb0,0xb2,0xb2,0xaf,0xa9,0xaf,0xaf,0xb0,0xb2,0xb2,0xb2,0xb0,0xb2}, {0xb2,0xb4,0xb4,0xb2,0xb2,0xb2,0xb0,0xad,0xb0,0xb0,0xaf,0xad,0xad,0xad,0xaf,0xb0,0xb0,0xb4,0xb0,0xaf,0xb4,0xb6,0xb4,0xb4,0xb0,0xb0,0xb2,0xb0,0xad,0xb0,0xb2,0xad,0xb3,0xb3,0xb2,0xb0,0xb0,0xb2,0xb5,0xb7,0xb2,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb2,0xb2,0xb0,0xb6,0xb6,0xb4,0xb6,0xb8,0xba,0xb8,0xb8,0xb8,0xb8,0xb8,0xb6,0xb8,0xb8,0xb8,0xb8,0xb8,0xb6,0xb4,0xb4,0xb6,0xb8,0xb4,0xb4,0xb6,0xb8,0xba,0xba,0xba,0xba,0xb7,0xb5,0xb7,0xb9,0xb7,0xb7,0xb7,0xb7,0xb7,0xb9,0xb5,0xb9,0xb9,0xb7,0xb9,0xb9,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xb9,0xb7,0xb9,0xbd,0xbb,0xb5,0xb2,0xb7,0xbd,0xbd,0xbb,0xbb,0xbb,0xbb,0xbb,0xbd,0xbd,0xbd,0xbd,0xbb,0xbb,0xbb,0xbd,0xbd,0xb9,0xb7,0xbb,0xb9,0xb9,0xb7,0xb7,0xb7,0xb9,0xb9,0xbb,0xbf,0xbb,0xb7,0xbd,0xc1,0xbf,0xc1,0xbb,0xba,0xbd,0xbd,0xb8,0xbb,0xbd,0xb6,0xbb,0xbb,0xbb,0xbb,0xba,0xba,0xbb,0xbd,0xba,0xba,0xbb,0xbb,0xbb,0xba,0xba,0xba,0xbb,0xb8,0xbd,0xbb,0xba,0xbd,0xbb,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xba,0xb8,0xb8,0xbb,0xbb,0xba,0xba,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xba,0xbb,0xbd,0xbb,0xbb,0xbb,0xbb,0xb9,0xbb,0xb9,0xbb,0xbb,0xb7,0xb9,0xb9,0xba,0xbb,0xbb,0xbb,0xbb,0xbb,0xba,0xb6,0xb9,0xbb,0xb9,0xb3,0xb0,0xb5,0xb9,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb3,0xb0,0xae,0xb4,0xb2,0xb0,0xaf,0xad,0xad,0xad,0xaf,0xb0,0xb0,0xaf,0xaf,0xb2,0xb6,0xb6,0xb4,0xaf,0xb4,0xaf,0xb2,0xaf,0xad,0xb6,0xab,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xb2,0xb4,0xaf,0xb0,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xb2,0xaf,0xb4,0xb0,0xaf,0xb2,0xaf,0xb2,0xb4,0xb4,0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,0xb0,0xb2,0xb2,0xaf,0xad,0xaf,0xb0,0xb0,0xaf,0xb0,0xb0,0xb2,0xb2,0xb0,0xb2,0xb0}, {0xb2,0xb4,0xb4,0xb2,0xb2,0xb2,0xb0,0xad,0xaf,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb2,0xab,0xb2,0xb0,0xad,0xaf,0xb0,0xaf,0xb0,0xb0,0xb2,0xb0,0xad,0xad,0xaf,0xb0,0xb2,0xa9,0xae,0xb5,0xb7,0xb5,0xb2,0xb0,0xb0,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb2,0xb2,0xb2,0xb4,0xb4,0xb2,0xb4,0xb4,0xb6,0xb6,0xb4,0xb4,0xb6,0xb8,0xb6,0xb6,0xb8,0xb8,0xb8,0xb8,0xb6,0xb4,0xb2,0xb4,0xb8,0xb2,0xb4,0xb6,0xb6,0xb6,0xb6,0xb6,0xb8,0xb9,0xb3,0xb5,0xbb,0xb7,0xb7,0xb9,0xb7,0xb3,0xb5,0xb5,0xb7,0xb7,0xb5,0xb7,0xb9,0xb9,0xb9,0xb7,0xb7,0xb9,0xbb,0xbb,0xb7,0xb7,0xbb,0xbd,0xb5,0xb0,0xb9,0xc1,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbd,0xbb,0xbb,0xbb,0xbb,0xbd,0xbb,0xb9,0xb7,0xb7,0xb7,0xb9,0xb9,0xb9,0xbb,0xbb,0xbd,0xb5,0xbd,0xbb,0xb5,0xb9,0xbb,0xb9,0xb9,0xbf,0xbf,0xbd,0xba,0xb4,0xb6,0xb8,0xb6,0xb4,0xb8,0xbd,0xbf,0xbb,0xba,0xb8,0xb8,0xba,0xbb,0xbb,0xba,0xba,0xbb,0xba,0xb8,0xbb,0xba,0xbd,0xbb,0xba,0xbd,0xb8,0xbb,0xbb,0xba,0xba,0xbb,0xbd,0xbd,0xbd,0xbd,0xbf,0xbb,0xbd,0xbb,0xb6,0xb6,0xbb,0xba,0xba,0xba,0xbb,0xbb,0xba,0xba,0xba,0xba,0xbd,0xb4,0xb8,0xbd,0xbb,0xb8,0xbb,0xbb,0xb6,0xb7,0xb9,0xb9,0xb7,0xb7,0xb7,0xb7,0xba,0xba,0xba,0xba,0xba,0xbb,0xb8,0xb4,0xb7,0xb9,0xbb,0xb5,0xb0,0xb7,0xbd,0xb7,0xb7,0xb7,0xb7,0xb5,0xb5,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb5,0xb5,0xb3,0xb2,0xb0,0xaf,0xb0,0xb0,0xb0,0xb0,0xb2,0xb2,0xb4,0xad,0xb0,0xb0,0xaf,0xaf,0xb2,0xb2,0xb0,0xb2,0xb8,0xb2,0xaf,0xad,0xab,0xaf,0xad,0xab,0xad,0xb2,0xb4,0xb2,0xaf,0xaf,0xb0,0xb0,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xaf,0xb0,0xaf,0xb2,0xaf,0xaf,0xb0,0xad,0xb0,0xb2,0xb0,0xb0,0xb2,0xb4,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xad,0xad,0xaf,0xb0,0xad,0xaf,0xad,0xb0,0xb0,0xad,0xb0,0xaf}, {0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,0xaf,0xab,0xaf,0xaf,0xb0,0xb0,0xb0,0xb0,0xb0,0xb2,0xa2,0xaf,0xb4,0xb2,0xb2,0xb2,0xb2,0xb6,0xb2,0xb6,0xb0,0xad,0xb0,0xad,0xab,0xb0,0xb2,0xb0,0xb0,0xac,0xac,0xac,0xb2,0xb5,0xb3,0xb3,0xb3,0xb2,0xb2,0xb5,0xb3,0xb0,0xb4,0xb8,0xb6,0xb4,0xb4,0xb0,0xb2,0xb4,0xb6,0xb2,0xb2,0xb4,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb8,0xb8,0xb4,0xb2,0xb0,0xb6,0xb6,0xb6,0xb4,0xb2,0xb2,0xb2,0xb4,0xb7,0xb3,0xb9,0xb9,0xb3,0xb5,0xb9,0xb7,0xb5,0xb5,0xb9,0xb5,0xb5,0xb7,0xb7,0xb9,0xb5,0xb5,0xb3,0xb3,0xb7,0xbb,0xbb,0xb9,0xbb,0xb7,0xbb,0xb9,0xb5,0xb9,0xbd,0xb7,0xbb,0xbb,0xb9,0xb9,0xb9,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xb9,0xb7,0xb5,0xb3,0xb5,0xb5,0xb7,0xb9,0xb9,0xb9,0xb9,0xbb,0xac,0xb9,0xbf,0xbb,0xb9,0xb9,0xb9,0xbb,0xb6,0xb8,0xb6,0xb6,0xba,0xba,0xba,0xbf,0xbb,0xbb,0xb8,0xb4,0xb2,0xb4,0xba,0xbd,0xbb,0xbb,0xba,0xb8,0xb8,0xbb,0xbb,0xb8,0xbb,0xbb,0xbf,0xba,0xbb,0xbb,0xb6,0xbb,0xbb,0xb6,0xb6,0xba,0xbb,0xbb,0xbb,0xbb,0xbf,0xba,0xbb,0xbd,0xb8,0xb8,0xb8,0xb2,0xb8,0xb8,0xba,0xb8,0xb8,0xb6,0xb8,0xb8,0xba,0xb4,0xba,0xbd,0xb6,0xb6,0xbb,0xbb,0xb6,0xb7,0xbb,0xb9,0xb8,0xba,0xb8,0xba,0xb8,0xb8,0xb6,0xb4,0xb6,0xba,0xb8,0xb6,0xb9,0xb7,0xb9,0xb9,0xb3,0xb7,0xbb,0xb3,0xb7,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb7,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb2,0xb0,0xad,0xaf,0xb0,0xb0,0xb0,0xb0,0xb2,0xb2,0xa6,0xb0,0xb6,0xb4,0xb0,0xb2,0xb2,0xb2,0xad,0xaf,0xad,0xab,0xb0,0xb2,0xaf,0xb8,0xb4,0xb0,0xad,0xab,0xa9,0xa9,0xb0,0xb6,0xb2,0xb2,0xb2,0xb0,0xb0,0xb2,0xb0,0xad,0xb2,0xaf,0xb4,0xb0,0xaf,0xb2,0xaf,0xb2,0xb2,0xaf,0xad,0xb0,0xb4,0xb2,0xb0,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xaf,0xab,0xab,0xad,0xb0,0xab,0xaf,0xaf,0xab,0xb0,0xad}, {0xb0,0xb2,0xb4,0xb4,0xb4,0xb6,0xb4,0xb0,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xb0,0x91,0xa6,0xb0,0xaf,0xad,0xad,0xb0,0xb6,0xad,0xb2,0xad,0xaf,0xb8,0xb2,0xa9,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xae,0xb0,0xb0,0xb0,0xae,0xb0,0xb3,0xb2,0xae,0xaf,0xb4,0xb2,0xb2,0xb4,0xb2,0xb4,0xb6,0xba,0xb4,0xb2,0xb6,0xb8,0xb6,0xb6,0xb6,0xb8,0xb2,0xb0,0xb2,0xb6,0xb8,0xb6,0xb6,0xb2,0xb4,0xb4,0xb4,0xb2,0xb2,0xb4,0xb8,0xb2,0xb3,0xbb,0xb5,0xaa,0xb0,0xb7,0xb2,0xb3,0xb5,0xb9,0xb5,0xb3,0xb7,0xb5,0xb7,0xb9,0xb7,0xb5,0xb3,0xb7,0xbb,0xbb,0xb9,0xbd,0xb3,0xb7,0xbd,0xbb,0xb9,0xb9,0xb3,0xbb,0xbb,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb7,0xb9,0xbb,0xbb,0xbb,0xbb,0xb9,0xb9,0xb7,0xb9,0xb9,0xb9,0xb7,0xb7,0xb7,0xb9,0x96,0xaa,0xb7,0xb7,0xb5,0xb5,0xb9,0xbf,0xba,0xbb,0xb8,0xb8,0xbd,0xb8,0xb0,0xb6,0xb8,0xb8,0xba,0xba,0xba,0xb8,0xb6,0xb4,0xba,0xb8,0xb6,0xb2,0xb4,0xba,0xba,0xb8,0xb6,0xb6,0xba,0xb6,0xba,0xbb,0xb6,0xbd,0xbd,0xb8,0xb6,0xba,0xbd,0xbb,0xbb,0xbb,0xbf,0xb4,0xb4,0xb8,0xb4,0xba,0xbd,0xb8,0xb6,0xb8,0xb8,0xb6,0xb4,0xb4,0xb6,0xb8,0xb6,0xb6,0xbb,0xba,0xb0,0xb4,0xbb,0xb8,0xb6,0xb7,0xbb,0xb9,0xb8,0xba,0xb8,0xba,0xba,0xb8,0xb6,0xb4,0xb6,0xba,0xbb,0xba,0xbb,0xb3,0xb7,0xbd,0xb7,0xb5,0xb7,0xb0,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb3,0xb2,0xb2,0xb4,0xb4,0xb2,0xb0,0xaf,0xaf,0xaf,0x90,0xa0,0xaf,0xb0,0xad,0xad,0xb2,0xb4,0xb2,0xb0,0xb2,0xad,0xb6,0xb4,0xa4,0xb0,0xb0,0xad,0xaf,0xb2,0xb2,0xaf,0xad,0xaf,0xaf,0xb0,0xaf,0xad,0xaf,0xb0,0xaf,0xab,0xb2,0xaf,0xb4,0xb0,0xaf,0xb2,0xaf,0xb2,0xb4,0xb0,0xaf,0xb2,0xb6,0xb4,0xb2,0xb2,0xb4,0xb0,0xad,0xad,0xb0,0xb2,0xb0,0xb0,0xaf,0xb2,0xab,0xb0,0xb0,0xab,0xb2,0xaf}, {0xb2,0xb2,0xb0,0xaf,0xb0,0xb4,0xb2,0xaf,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xaf,0xaf,0xab,0xab,0xab,0xaf,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xaf,0xaf,0xaf,0xb4,0xae,0xb2,0xa9,0xab,0xb4,0xab,0xa7,0xb4,0xb0,0xac,0xae,0xb0,0xb2,0xb2,0xb4,0xb2,0xb4,0xb4,0xb6,0xb8,0xb6,0xb4,0xb2,0xb4,0xb2,0xb4,0xb8,0xb6,0xb0,0xb0,0xb6,0xb3,0xb3,0xb2,0xb0,0xb3,0xb5,0xb3,0xb0,0xb3,0xb7,0xb5,0xb2,0xb0,0xb2,0xb0,0xac,0xb2,0xb7,0xb3,0xac,0xb0,0xb3,0xb3,0xb3,0xb2,0xb5,0xb7,0xb7,0xb5,0xb3,0xb3,0xb5,0xb7,0xb7,0xb9,0xb9,0xb5,0xb2,0xb2,0xb3,0xb7,0xb5,0xb5,0xb9,0xbb,0xb9,0xb5,0xb5,0xb2,0xbb,0xbf,0xb9,0xb5,0xb9,0xbb,0xb9,0xbb,0xb7,0xb3,0xb7,0xbb,0xbb,0xb7,0xb5,0xb2,0xb9,0xb7,0xb5,0xb9,0xb5,0xb3,0xb9,0xb3,0xae,0xb5,0xb5,0xb7,0xbb,0xb5,0xbb,0xba,0xba,0xb8,0xb8,0xb8,0xb8,0xb6,0xb4,0xba,0xb4,0xb8,0xae,0xb2,0xbb,0xb0,0xad,0xbb,0xb6,0xb2,0xb2,0xb4,0xb4,0xb4,0xb6,0xb6,0xb8,0xba,0xbb,0xbb,0xb8,0xb6,0xb6,0xbb,0xb8,0xba,0xbb,0xbb,0xb6,0xb6,0xba,0xba,0xb8,0xb6,0xb4,0xb8,0xbb,0xb8,0xb4,0xba,0xb8,0xba,0xb8,0xb0,0xb4,0xb8,0xad,0xb6,0xbb,0xb6,0xb6,0xb0,0xba,0xb6,0xb6,0xb2,0xb6,0xba,0xbb,0xbb,0xb8,0xb6,0xb4,0xb8,0xb8,0xb8,0xb8,0xb6,0xb4,0xb4,0xb8,0xb7,0xb5,0xb3,0xb5,0xb5,0xb5,0xb5,0xb5,0xae,0xb7,0xb9,0xb5,0xb2,0xb7,0xb7,0xb3,0xb7,0xb2,0xae,0xb0,0xb3,0xb5,0xb4,0xb2,0xaf,0xb6,0xb2,0xb0,0xb4,0xb0,0xad,0xb2,0xab,0xa6,0xaf,0xaf,0xb0,0xb6,0xaf,0xb4,0xb4,0xb2,0xb0,0xb0,0xb0,0xb0,0xaf,0xaf,0xb4,0xad,0xaf,0xa9,0xab,0xb2,0xa9,0xa7,0xb4,0xb0,0xaf,0xa6,0xb2,0xab,0xad,0xaf,0xad,0xb4,0xb0,0xaf,0xb6,0xb4,0xad,0xaf,0xb2,0xb0,0xb0,0xb2,0xb2,0xaf,0xaf,0xb2,0xb2,0xaf,0xad,0xaf,0xb2,0xb4,0xb0,0xad,0xb0,0xaf,0xb2,0xb0,0xa7,0xad,0xaf,0xa6}, {0xb2,0xaf,0xab,0xad,0xaf,0xad,0xad,0xaf,0xad,0xaf,0xb0,0xb0,0xb2,0xb0,0xb0,0xb0,0xb2,0xb0,0xaf,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xab,0xae,0xb6,0xae,0xab,0xb0,0xac,0xb0,0xb2,0xae,0xac,0xae,0xae,0xb0,0xb0,0xb2,0xb2,0xb4,0xb4,0xaf,0xa9,0xa9,0xb2,0xba,0xb6,0xb4,0xb6,0xba,0xb8,0xb2,0xb4,0xb8,0xb5,0xb5,0xb3,0xb3,0xb3,0xb5,0xb3,0xb2,0xb2,0xb3,0xb3,0xb2,0xb2,0xb2,0xb2,0xae,0xb0,0xb7,0xb3,0xae,0xb2,0xb3,0xb3,0xb3,0xb3,0xb5,0xb5,0xb3,0xb2,0xb0,0xb0,0xb0,0xb5,0xb5,0xb5,0xb7,0xb9,0xb9,0xb7,0xb9,0xb7,0xb5,0xb5,0xb7,0xb7,0xb5,0xb5,0xb5,0xb7,0xbd,0xbb,0xb3,0xb0,0xb5,0xb9,0xb5,0xb5,0xb3,0xb2,0xb3,0xb5,0xb3,0xb3,0xb5,0xb5,0xb7,0xb7,0xb7,0xb9,0xb9,0xb5,0xb7,0xb7,0xb2,0xb7,0xb5,0xb7,0xbb,0xb3,0xb7,0xba,0xb8,0xb8,0xb8,0xb8,0xb8,0xb6,0xb4,0xb2,0xb6,0xbf,0xb6,0xb2,0xba,0xb6,0xba,0xb6,0xb2,0xb0,0xb2,0xb6,0xb6,0xb8,0xb8,0xba,0xba,0xba,0xb4,0xae,0xae,0xb6,0xbd,0xbb,0xb8,0xba,0xbb,0xbb,0xb8,0xb8,0xbb,0xba,0xb8,0xb6,0xb6,0xb8,0xba,0xb8,0xb2,0xb6,0xb4,0xb8,0xb8,0xb0,0xb4,0xb8,0xb0,0xb4,0xb6,0xb6,0xb0,0xb0,0xb4,0xb6,0xb2,0xb8,0xb8,0xb8,0xb6,0xb2,0xb2,0xb2,0xb4,0xba,0xb8,0xb8,0xb8,0xba,0xb8,0xb6,0xb8,0xb7,0xb5,0xb5,0xb5,0xb5,0xb5,0xb3,0xb5,0xb3,0xb7,0xb5,0xb0,0xae,0xb3,0xb5,0xb3,0xb2,0xb0,0xae,0xb0,0xb0,0xb0,0xb0,0xb0,0xaf,0xb0,0xb0,0xb0,0xb4,0xb2,0xb0,0xb0,0xb4,0xad,0xb2,0xb0,0xb2,0xb6,0xaf,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xaf,0xaf,0xad,0xaf,0xb8,0xb0,0xad,0xb0,0xaf,0xb4,0xad,0xad,0xa7,0xab,0xaf,0xb0,0xaf,0xb4,0xb0,0xb6,0xb2,0xab,0xa7,0xa9,0xaf,0xb8,0xb2,0xb0,0xb2,0xb4,0xb4,0xb0,0xb0,0xb4,0xb2,0xb0,0xaf,0xaf,0xb0,0xb2,0xaf,0xad,0xaf,0xad,0xb0,0xb0,0xab,0xaf,0xb0,0xab}, {0xb6,0xaf,0xad,0xb0,0xb0,0xab,0xab,0xb2,0xaf,0xaf,0xb0,0xb0,0xb2,0xb0,0xb0,0xaf,0xb4,0xb0,0xb0,0xb0,0xb2,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb2,0xa7,0xac,0xb6,0xb0,0xab,0xae,0xae,0xb4,0xb2,0xb0,0xae,0xae,0xb0,0xb0,0xb0,0xb2,0xa9,0xb0,0xb7,0xb7,0xb2,0xae,0xb2,0xb6,0xb4,0xb4,0xb6,0xb7,0xb7,0xb4,0xb4,0xb7,0xb5,0xb7,0xb5,0xb3,0xb2,0xb3,0xb2,0xb0,0xb0,0xb0,0xb0,0xb3,0xb3,0xb2,0xb2,0xb3,0xb0,0xb5,0xb3,0xb0,0xb3,0xb5,0xb3,0xb3,0xb2,0xb2,0xb3,0xb3,0xb2,0xb2,0xb2,0xb3,0xb7,0xb5,0xb3,0xb7,0xb9,0xb9,0xb7,0xb5,0xb9,0xb7,0xb7,0xb7,0xb5,0xb3,0xb3,0xb7,0xb7,0xb9,0xb5,0xb0,0xb0,0xb7,0xb9,0xb5,0xb5,0xb5,0xb5,0xb5,0xb2,0xb2,0xb3,0xb7,0xb7,0xb3,0xb5,0xb7,0xb7,0xb7,0xb7,0xb2,0xb9,0xb3,0xb7,0xb5,0xb7,0xb9,0xb5,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xaa,0xb2,0xbb,0xb3,0xb0,0xb3,0xb3,0xb7,0xb9,0xb5,0xb2,0xb3,0xb5,0xb5,0xb5,0xb3,0xae,0xb3,0xb9,0xb9,0xb5,0xb3,0xb5,0xb7,0xb7,0xb5,0xb7,0xb9,0xb9,0xb5,0xb7,0xb9,0xb9,0xb9,0xb7,0xb5,0xb5,0xb7,0xb5,0xb2,0xb6,0xb0,0xb4,0xb8,0xb4,0xb4,0xb6,0xb6,0xb6,0xb4,0xb8,0xad,0xb6,0xb2,0xb8,0xb4,0xb5,0xb5,0xb3,0xb3,0xb2,0xb3,0xb5,0xb5,0xb7,0xb3,0xb3,0xb7,0xb9,0xb9,0xb7,0xb7,0xb7,0xb5,0xb5,0xb7,0xb5,0xb3,0xb3,0xb5,0xb5,0xb7,0xb3,0xae,0xac,0xb2,0xb3,0xb2,0xb3,0xb2,0xb2,0xb2,0xb0,0xad,0xaf,0xb2,0xb0,0xad,0xaf,0xb2,0xb2,0xb2,0xb2,0xad,0xb6,0xaf,0xb0,0xaf,0xb0,0xb2,0xaf,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xaf,0xa6,0xa9,0xb2,0xad,0xa9,0xab,0xab,0xb2,0xb0,0xb2,0xa9,0xb0,0xad,0xb4,0xab,0xb2,0xa7,0xad,0xb6,0xb4,0xad,0xad,0xb2,0xb2,0xb2,0xb0,0xb2,0xb4,0xb4,0xb2,0xb2,0xb4,0xb4,0xb2,0xb0,0xb0,0xb0,0xaf,0xaf,0xad,0xaf,0xa9,0xad,0xb0,0xaf,0xaf,0xb2,0xb0}, {0xb8,0xb2,0xb2,0xb4,0xb0,0xad,0xad,0xb2,0xb0,0xb0,0xb0,0xb0,0xb0,0xaf,0xaf,0xaf,0xb0,0xaf,0xaf,0xb0,0xb0,0xaf,0xb0,0xb4,0xb2,0xb0,0xb0,0xaf,0xaf,0xaf,0xb0,0xb0,0xae,0xae,0xb0,0xae,0xb0,0xb2,0xae,0xac,0xb2,0xb0,0xae,0xb0,0xb0,0xb0,0xb0,0xb2,0xb6,0xb2,0xae,0xae,0xb0,0xb4,0xb4,0xb4,0xb4,0xb2,0xb4,0xb6,0xb6,0xb2,0xb4,0xb6,0xb3,0xb5,0xb5,0xb2,0xb0,0xb0,0xb0,0xb0,0xb2,0xae,0xb0,0xb3,0xb3,0xb0,0xb0,0xb3,0xae,0xb3,0xb2,0xb0,0xb3,0xb3,0xb2,0xb2,0xb0,0xb0,0xb2,0xb3,0xb3,0xb3,0xb3,0xb3,0xb5,0xb3,0xb3,0xb5,0xb7,0xb5,0xb3,0xb3,0xb7,0xb5,0xb5,0xb7,0xb5,0xb2,0xb3,0xb7,0xb3,0xb7,0xb7,0xb3,0xb5,0xb7,0xb7,0xb3,0xb9,0xb7,0xb7,0xb7,0xb5,0xb2,0xb3,0xb5,0xb7,0xb2,0xb3,0xb7,0xb2,0xb3,0xb7,0xb0,0xb5,0xb3,0xb5,0xb5,0xb7,0xb7,0xb7,0xbb,0xb7,0xb5,0xb5,0xb3,0xb5,0xb5,0xb5,0xb5,0xb3,0xb5,0xb7,0xb5,0xb5,0xb7,0xb5,0xb2,0xb7,0xb5,0xb3,0xb5,0xb5,0xb3,0xb2,0xb0,0xbb,0xb5,0xb0,0xb0,0xb3,0xb7,0xb7,0xb5,0xb5,0xb5,0xb5,0xb7,0xb7,0xb5,0xb5,0xb7,0xb5,0xb7,0xb7,0xb5,0xb3,0xb5,0xb3,0xb3,0xb6,0xb2,0xb2,0xb8,0xb8,0xb4,0xb6,0xb8,0xb2,0xb2,0xb6,0xb0,0xb6,0xb4,0xb6,0xb2,0xb0,0xb2,0xb3,0xb5,0xb7,0xb5,0xb5,0xb5,0xb3,0xb2,0xb2,0xb5,0xb7,0xb7,0xb5,0xb5,0xb5,0xb5,0xb7,0xb7,0xb5,0xb3,0xb3,0xb5,0xb2,0xb5,0xb5,0xb2,0xb0,0xb3,0xb3,0xb2,0xb5,0xb5,0xb5,0xb3,0xb2,0xaf,0xaf,0xb2,0xb4,0xad,0xb0,0xb2,0xad,0xaf,0xb2,0xab,0xaf,0xad,0xaf,0xb0,0xb0,0xb0,0xb0,0xb4,0xb2,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xaf,0xaf,0xaf,0xb0,0xaf,0xb0,0xb2,0xaf,0xad,0xb0,0xb4,0xad,0xb0,0xaf,0xaf,0xa7,0xad,0xb4,0xad,0xad,0xad,0xa9,0xb0,0xb6,0xb0,0xb0,0xb0,0xb2,0xb2,0xb2,0xb0,0xb0,0xb2,0xb2,0xb2,0xb2,0xb0,0xaf,0xaf,0xaf,0xad,0xaf,0xab,0xad,0xb0,0xb0,0xaf,0xaf,0xb2}, {0xaf,0xb2,0xb2,0xb0,0xaf,0xaf,0xaf,0xaf,0xb4,0xb2,0xb0,0xaf,0xaf,0xaf,0xaf,0xb0,0xaf,0xb0,0xb2,0xb2,0xaf,0xad,0xb0,0xb6,0xb2,0xb0,0xb0,0xaf,0xaf,0xaf,0xb0,0xb0,0xb0,0xb0,0xac,0xae,0xb0,0xb0,0xae,0xa9,0xae,0xac,0xae,0xb0,0xb0,0xae,0xae,0xb0,0xab,0xac,0xb0,0xb7,0xbb,0xb6,0xa9,0x9e,0xb4,0xb4,0xb4,0xb6,0xb4,0xb2,0xb2,0xb4,0xb2,0xb4,0xb4,0xb2,0xb0,0xb2,0xb2,0xb0,0xb2,0xaf,0xb0,0xb4,0xb4,0xb0,0xb0,0xb2,0xaa,0xb0,0xae,0xae,0xb2,0xb0,0xac,0xae,0xb0,0xb2,0xb3,0xb3,0xb3,0xb2,0xb0,0xae,0xb0,0xb0,0xb3,0xb5,0xb5,0xb3,0xb5,0xb7,0xb3,0xb3,0xb5,0xb7,0xb5,0xb3,0xb3,0xb5,0xb5,0xb9,0xbb,0xb7,0xb5,0xb5,0xb5,0xb3,0xb5,0xb3,0xb3,0xb5,0xb5,0xb3,0xb2,0xb2,0xb7,0xb2,0xb5,0xb5,0xae,0xb0,0xb7,0xb3,0xb2,0xb5,0xb5,0xb7,0xb3,0xb0,0xb5,0xb9,0xb7,0xb5,0xb3,0xb3,0xb3,0xb5,0xb5,0xb3,0xb5,0xb5,0xb2,0xb3,0xb7,0xb5,0xb3,0xae,0xb2,0xb0,0xb0,0xb3,0xb3,0xb3,0xb2,0xb2,0xb0,0xb2,0xb5,0xbb,0xbd,0xb7,0xac,0xa3,0xb5,0xb5,0xb7,0xb7,0xb7,0xb5,0xb5,0xb7,0xb3,0xb5,0xb7,0xb5,0xb3,0xb3,0xb3,0xb3,0xb5,0xb2,0xb2,0xb5,0xb7,0xb2,0xb2,0xb5,0xac,0xb0,0xb0,0xb5,0xb0,0xb5,0xb0,0xb0,0xb0,0xb2,0xb3,0xb5,0xb5,0xb3,0xb0,0xae,0xb2,0xb2,0xb3,0xb5,0xb5,0xb3,0xb3,0xb5,0xb3,0xb3,0xb5,0xb7,0xb5,0xb2,0xb3,0xb5,0xb0,0xb5,0xb7,0xb5,0xb2,0xb3,0xb5,0xb7,0xb3,0xb2,0xb0,0xb2,0xb2,0xb0,0xaf,0xb0,0xb4,0xaf,0xb2,0xb2,0xab,0xad,0xb2,0xaf,0xad,0xb0,0xb2,0xb4,0xb2,0xad,0xb0,0xb4,0xb0,0xb0,0xaf,0xaf,0xb0,0xb0,0xb0,0xaf,0xb2,0xb2,0xaf,0xaf,0xb2,0xb2,0xb0,0xa9,0xad,0xad,0xad,0xab,0xb2,0xab,0xab,0xad,0xad,0xa9,0xb0,0xb6,0xb4,0xb4,0xab,0x9b,0xb0,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xb0,0xb2,0xb2,0xb0,0xaf,0xaf,0xaf,0xaf,0xb0,0xad,0xad,0xb0,0xb0,0xad,0xab,0xb0}, {0xa9,0xaf,0xb0,0xaf,0xaf,0xb2,0xb2,0xaf,0xb2,0xb0,0xaf,0xaf,0xaf,0xaf,0xb0,0xb2,0xb0,0xb2,0xb4,0xb2,0xad,0xa9,0xab,0xb0,0xb0,0xaf,0xaf,0xaf,0xaf,0xb0,0xb0,0xb0,0xac,0xb0,0xae,0xb2,0xb0,0xab,0xb0,0xae,0xae,0xae,0xb0,0xb0,0xb0,0xae,0xae,0xb0,0xb2,0xb2,0xae,0xae,0xae,0xae,0xb2,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb2,0xb4,0xb4,0xb4,0xb2,0xb2,0xb4,0xb4,0xb2,0xb2,0xb0,0xb0,0xb2,0xb2,0xb0,0xb0,0xb0,0xae,0xb2,0xb0,0xb0,0xb3,0xb2,0xae,0xb0,0xb0,0xb0,0xb2,0xb3,0xb5,0xb5,0xb2,0xb0,0xb2,0xb3,0xb5,0xb7,0xb5,0xb3,0xb3,0xb7,0xb3,0xb3,0xb3,0xb5,0xb5,0xb3,0xb3,0xb3,0xb3,0xb5,0xb7,0xb5,0xb3,0xb5,0xb7,0xb9,0xb2,0xb0,0xb0,0xb3,0xb7,0xb7,0xb3,0xb2,0xb7,0xb5,0xb5,0xb5,0xb0,0xb2,0xb5,0xb7,0xb3,0xb9,0xb7,0xb7,0xb2,0xaa,0xb2,0xb3,0xb5,0xb5,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xae,0xb2,0xb0,0xb3,0xb2,0xac,0xb2,0xb0,0xb2,0xb3,0xb5,0xb5,0xb5,0xb2,0xb2,0xb3,0xb5,0xb5,0xb3,0xb2,0xae,0xb0,0xb3,0xb9,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb3,0xb5,0xb5,0xb3,0xb3,0xb3,0xb3,0xb3,0xb2,0xb3,0xb0,0xb2,0xb3,0xb2,0xae,0xb3,0xac,0xb2,0xae,0xb7,0xb0,0xb5,0xae,0xb0,0xb2,0xb2,0xb2,0xb3,0xb5,0xb5,0xb3,0xb3,0xb2,0xb3,0xb5,0xb7,0xb5,0xb3,0xb3,0xb7,0xb3,0xb2,0xb3,0xb3,0xb3,0xb2,0xb2,0xb3,0xb2,0xb5,0xb5,0xb3,0xb0,0xb2,0xb5,0xb7,0xb0,0xac,0xad,0xaf,0xb2,0xb2,0xb2,0xb0,0xb2,0xb0,0xb2,0xb0,0xad,0xad,0xb2,0xb2,0xad,0xb2,0xb2,0xb6,0xb0,0xa9,0xad,0xaf,0xb2,0xb0,0xaf,0xaf,0xaf,0xb0,0xaf,0xaf,0xa9,0xb0,0xad,0xaf,0xad,0xab,0xaf,0xab,0xaf,0xad,0xb0,0xab,0xb6,0xab,0xaf,0xaf,0xb2,0xaf,0xad,0xab,0xa9,0xad,0xb2,0xb0,0xb0,0xb4,0xb4,0xb2,0xb0,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xb0,0xaf,0xaf,0xaf,0xb0,0xaf,0xb0,0xaf,0xaf,0xb0,0xad,0xa9,0xaf}, {0xaf,0xaf,0xaf,0xb1,0xb2,0xb2,0xb2,0xb1,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xad,0xab,0xab,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xab,0xb0,0xaf,0xb2,0xb0,0xab,0xb2,0xb2,0xb0,0xb0,0xb2,0xb2,0xb0,0xaf,0xad,0xaf,0xab,0xae,0xb4,0xb6,0xb6,0xb6,0xb6,0xb7,0xb2,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb2,0xb4,0xb4,0xb4,0xb2,0xb2,0xb4,0xb4,0xb0,0xae,0xb0,0xb2,0xb0,0xb0,0xb2,0xb2,0xb0,0xb2,0xb4,0xb2,0xb2,0xb6,0xb2,0xaf,0xb2,0xb0,0xb0,0xb0,0xb4,0xb6,0xb8,0xb8,0xb6,0xb6,0xb4,0xb6,0xb6,0xb6,0xb2,0xb2,0xb4,0xb6,0xb4,0xb2,0xb4,0xb4,0xb4,0xb2,0xb4,0xb0,0xb0,0xb2,0xb2,0xb2,0xb4,0xb4,0xb4,0xb2,0xb0,0xb0,0xb4,0xb8,0xb6,0xb4,0xb4,0xb4,0xb6,0xb4,0xb4,0xb6,0xb6,0xb4,0xb8,0xb4,0xb8,0xb4,0xb8,0xb4,0xad,0xb2,0xb0,0xb5,0xb3,0xb3,0xb3,0xb3,0xb3,0xb2,0xb2,0xb0,0xb5,0xb3,0xb7,0xb5,0xb0,0xb7,0xb7,0xb5,0xb7,0xb9,0xb9,0xb3,0xb0,0xb0,0xb2,0xac,0xb2,0xb7,0xb9,0xb7,0xb5,0xb7,0xb9,0xb3,0xb5,0xb7,0xb5,0xb5,0xb5,0xb7,0xb7,0xb3,0xb5,0xb5,0xb3,0xb2,0xb3,0xb3,0xb2,0xae,0xb5,0xb2,0xae,0xb3,0xb3,0xb0,0xb3,0xb3,0xb3,0xb3,0xb5,0xb3,0xb2,0xb0,0xb0,0xb2,0xb0,0xb0,0xb3,0xb5,0xb7,0xb9,0xb7,0xb3,0xb2,0xb3,0xb5,0xb5,0xb3,0xb3,0xb5,0xb4,0xb2,0xb2,0xb2,0xb4,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xb2,0xb2,0xb0,0xaf,0xb0,0xaf,0xaf,0xb0,0xb4,0xb2,0xb2,0xb2,0xb0,0xb2,0xb0,0xaf,0xb1,0xb1,0xaf,0xb2,0xaf,0xb2,0xaf,0xb2,0xaf,0xa7,0xad,0xad,0xb2,0xb0,0xb0,0xaf,0xaf,0xaf,0xaf,0xad,0xab,0xb4,0xb0,0xb2,0xb0,0xad,0xb6,0xb2,0xb0,0xb2,0xb2,0xb0,0xb2,0xad,0xab,0xaf,0xa6,0xaf,0xb2,0xb2,0xb4,0xb4,0xb2,0xb6,0xaf,0xb2,0xb4,0xb1,0xb1,0xb2,0xb2,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xaf,0xaf,0xad,0xb2,0xaf,0xad,0xb1,0xb1,0xad,0xb1}, {0xb6,0xaf,0xad,0xb2,0xb2,0xaf,0xad,0xb1,0xb2,0xb2,0xb2,0xb2,0xb1,0xaf,0xad,0xad,0xaf,0xaf,0xaf,0xb1,0xb2,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xaf,0xaf,0xad,0xad,0xaf,0xb2,0xab,0xb2,0xb2,0xad,0xb4,0xb0,0xb0,0xb0,0xb2,0xb2,0xaf,0xab,0xab,0xad,0xb0,0xb0,0xb0,0xb0,0xb0,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xb2,0xb4,0xb2,0xb0,0xb4,0xb2,0xb0,0xb0,0xb2,0xb4,0xb2,0xae,0xac,0xb0,0xb2,0xae,0xb0,0xb4,0xb4,0xb0,0xb0,0xb2,0xb0,0xb0,0xb4,0xb0,0xad,0xaf,0xb2,0xb0,0xb0,0xb0,0xb2,0xb4,0xb4,0xb2,0xb2,0xaf,0xaf,0xb2,0xb6,0xb6,0xb4,0xb4,0xb8,0xb4,0xb2,0xb2,0xb2,0xb2,0xb2,0xb4,0xb4,0xb2,0xb2,0xb4,0xb4,0xb0,0xa9,0xa4,0xb4,0xb2,0xb2,0xb4,0xb4,0xb2,0xb2,0xb2,0xb2,0xb6,0xb2,0xb0,0xba,0xb8,0xb2,0xb4,0xb0,0xb4,0xaf,0xb6,0xb8,0xb2,0xb8,0xb4,0xb5,0xb3,0xb3,0xb3,0xb3,0xb3,0xb2,0xb0,0xb0,0xb3,0xac,0xb3,0xb3,0xb0,0xb5,0xb2,0xae,0xb2,0xb5,0xb5,0xb0,0xac,0xb0,0xb3,0xb5,0xb3,0xb2,0xb3,0xb5,0xb7,0xb5,0xb3,0xb0,0xb3,0xb3,0xb3,0xb3,0xb5,0xb5,0xb5,0xb5,0xb5,0xb3,0xb2,0xb2,0xb3,0xb2,0xb0,0xac,0xb7,0xb3,0xae,0xb5,0xb7,0xb3,0xb5,0xb5,0xb2,0xb5,0xae,0xb3,0xaa,0xae,0xac,0xb0,0xb0,0xb2,0xb3,0xb5,0xb5,0xb3,0xb0,0xb3,0xb0,0xb0,0xb2,0xb3,0xb3,0xb3,0xb3,0xb6,0xb2,0xb0,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xaf,0xaf,0xb2,0xb4,0xb2,0xab,0xa4,0xb2,0xb0,0xb0,0xb2,0xb2,0xb0,0xaf,0xaf,0xb2,0xb6,0xb0,0xaf,0xb6,0xb2,0xab,0xaf,0xaf,0xb0,0xa9,0xb0,0xb2,0xad,0xb4,0xb0,0xb2,0xb0,0xb0,0xaf,0xaf,0xaf,0xaf,0xad,0xab,0xb0,0xab,0xaf,0xaf,0xad,0xb4,0xaf,0xad,0xb0,0xab,0xb0,0xab,0xaf,0xa7,0xaf,0xaf,0xb4,0xb1,0xad,0xb2,0xb2,0xaf,0xb2,0xad,0xb1,0xb1,0xaf,0xaf,0xb1,0xb1,0xaf,0xb2,0xb1,0xb1,0xb1,0xb1,0xb1,0xaf,0xaf,0xa9,0xb2,0xb1,0xab,0xb2,0xb4,0xb1,0xb2}, {0xaf,0xad,0xaf,0xaf,0xaf,0xaf,0xb1,0xb2,0xad,0xb2,0xb2,0xad,0xad,0xb1,0xb1,0xad,0xaf,0xb2,0xaf,0xaf,0xaf,0xab,0xb1,0xaf,0xb2,0xb1,0xad,0xaf,0xb1,0xb1,0xb1,0xb1,0xb2,0xaf,0xb2,0x9f,0xaf,0xad,0xba,0xb0,0xb2,0xa9,0xb2,0xb2,0xab,0xaf,0xaf,0xaf,0xb0,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb2,0xb6,0xb6,0xb6,0xb2,0xb0,0xb0,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb2,0xb4,0xb2,0xae,0xb0,0xa2,0xb0,0xb4,0xb2,0xb2,0xb4,0xaf,0xb4,0xb2,0xa9,0xaf,0xad,0xb2,0xb2,0xb2,0xb4,0xb4,0xb2,0xb2,0xb0,0xb0,0xb4,0xb8,0xb6,0xb4,0xb4,0xb4,0xb4,0xb2,0xb0,0xb4,0xb6,0xb4,0xb4,0xb2,0xb6,0xb0,0xb4,0xb4,0xb2,0xb2,0xb6,0xb6,0xb2,0xb0,0xb0,0xb0,0xb2,0xb2,0xb0,0xb2,0xb6,0xaf,0xb6,0xb6,0xb0,0xad,0xb2,0xb4,0xb2,0xb0,0xb4,0xb0,0xb2,0xb0,0xad,0xb2,0xb0,0xba,0xb4,0xb0,0xb2,0xb6,0xb6,0xb4,0xb2,0xb4,0xb4,0xb2,0xa4,0xad,0xb0,0xba,0xb4,0xbc,0xad,0xb2,0xb2,0xad,0xaf,0xaf,0xb2,0xb2,0xb4,0xb6,0xb4,0xb2,0xb2,0xb2,0xb2,0xb2,0xb4,0xb4,0xb2,0xb2,0xb2,0xb4,0xb6,0xb0,0xb2,0xb4,0xb4,0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,0xa9,0xb3,0xa0,0xb0,0xb0,0xb3,0xb3,0xb7,0xaa,0xb3,0xb3,0xa9,0xb2,0xaa,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xb4,0xb6,0xb4,0xb2,0xb2,0xb4,0xb4,0xb0,0xb0,0xb6,0xb6,0xb2,0xb2,0xb0,0xb6,0xb0,0xb2,0xb0,0xaf,0xaf,0xb0,0xb2,0xb0,0xaf,0xaf,0xb0,0xb0,0xb0,0xb0,0xb2,0xb4,0xaf,0xb4,0xb4,0xad,0xad,0xb1,0xb1,0xad,0xb1,0xb2,0xad,0xaf,0xb1,0xad,0xb1,0xaf,0xb2,0xb1,0xaf,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xaf,0x9d,0xa8,0xb1,0xb8,0xab,0xb6,0xa9,0xb1,0xb2,0xab,0xab,0xab,0xad,0xad,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xaf,0xb1,0xb2,0xb2,0xb2,0xb1,0xaf,0xaf,0xaf,0xb1,0xb1,0xaf,0xaf,0xb1,0xb1,0xaf,0xad,0xb2,0xb1,0xab,0x9b,0xab,0xb2,0xaf}, {0xb1,0xad,0xad,0xab,0xab,0xa9,0xab,0xaf,0xaf,0xb2,0xb2,0xaf,0xaf,0xb1,0xb1,0xad,0xb1,0xb1,0xab,0xb1,0xb2,0xb2,0xb8,0xb4,0xb4,0xb2,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xaf,0xb0,0xaf,0xb2,0xb4,0xb0,0xa9,0xb0,0xa7,0xb0,0xb2,0xad,0xb0,0xb0,0xb2,0xaf,0xb0,0xb0,0xb0,0xb0,0xb2,0xb2,0xb2,0xb0,0xb0,0xaf,0xaf,0xaf,0xb0,0xb0,0xb2,0xae,0xae,0xae,0xae,0xb0,0xb2,0xb2,0xb0,0xab,0xae,0xb4,0xb2,0xb0,0xb2,0xb2,0xab,0xb2,0xb2,0xad,0xb2,0xb4,0xaf,0xb2,0xb0,0xaf,0xaf,0xb0,0xb0,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xaf,0xaf,0xb2,0xb2,0xb2,0xb8,0xb0,0xad,0xaf,0xb6,0xb8,0xb4,0xb0,0xaf,0xb2,0xb2,0xb0,0xb0,0xb2,0xb2,0xaf,0xb4,0xb0,0xb0,0xb0,0xaf,0xaf,0xaf,0xb2,0xb4,0xb6,0xb6,0xb2,0xb0,0xb4,0xb4,0xb0,0xb2,0xb4,0xaf,0xb2,0xb6,0xb6,0xbc,0xb8,0xb8,0xb4,0xb0,0xb2,0xb4,0xb2,0xb0,0xb0,0xb2,0xb6,0xb4,0xb2,0xb2,0xb4,0xaf,0xa7,0xb2,0xa9,0xb2,0xb6,0xb2,0xb2,0xb2,0xb4,0xb0,0xb2,0xb2,0xb2,0xb2,0xb4,0xb4,0xb2,0xb0,0xb0,0xb0,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xb2,0xb4,0xb4,0xb2,0xae,0xb0,0xb3,0xb5,0xb2,0xb2,0xb2,0xac,0xb2,0xb3,0xa9,0xb2,0xb5,0xae,0xb7,0xb0,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xaf,0xaf,0xb2,0xb2,0xb2,0xb6,0xb0,0xaf,0xaf,0xb4,0xb8,0xb2,0xb0,0xaf,0xb0,0xb0,0xaf,0xaf,0xb0,0xb0,0xaf,0xb0,0xb0,0xaf,0xad,0xad,0xad,0xaf,0xb0,0xb0,0xb4,0xb4,0xaf,0xaf,0xb1,0xb1,0xad,0xb1,0xb2,0xad,0xb1,0xb4,0xb4,0xb8,0xb6,0xb4,0xb1,0xaf,0xaf,0xaf,0xaf,0xad,0xaf,0xa9,0xb1,0xb4,0xb2,0xaf,0xb1,0xaf,0xad,0xb1,0xa8,0xaf,0xb2,0xad,0xaf,0xaf,0xb1,0xab,0xaf,0xaf,0xaf,0xaf,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xad,0xad,0xaf,0xb1,0xb1,0xaf,0xaf,0xab,0xb1,0xb4,0xb2,0xab,0xad,0xad}, {0xad,0xab,0xab,0xad,0xaf,0xad,0xaf,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xaf,0xaf,0xb2,0xb1,0xab,0xaf,0xb2,0xb1,0xaf,0xa6,0xb1,0xaf,0xaf,0xaf,0xaf,0xab,0xab,0xad,0xaf,0xb1,0xa6,0xb1,0xa9,0xb6,0xad,0xaf,0xa9,0xa2,0xab,0xab,0xa8,0xab,0xab,0xad,0xaf,0xb0,0xb0,0xaf,0xb0,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xaf,0xaf,0xb0,0xb2,0xb4,0xb4,0xb0,0xae,0xae,0xb0,0xb0,0xae,0xac,0xae,0xae,0xb2,0xa7,0xb2,0xac,0xb2,0xae,0xad,0xab,0xa6,0xa9,0xad,0xab,0xad,0xab,0xaf,0xb0,0xb0,0xb2,0xb2,0xb2,0xb4,0xb4,0xb4,0xb2,0xaf,0xaf,0xb0,0xb4,0xb4,0xb2,0xb4,0xb6,0xb4,0xb2,0xb2,0xb4,0xb4,0xb2,0xaf,0xb2,0xb4,0xb0,0xb0,0xb2,0xb0,0xad,0xaf,0xaf,0xaf,0xb0,0xb0,0xb0,0xb0,0xb2,0xb6,0xb4,0xb2,0xb2,0xb4,0xb4,0xb4,0xb2,0xb4,0xb4,0xad,0xb2,0xb6,0xb2,0xb2,0xa9,0xb4,0xb2,0xb0,0xb2,0xb2,0xb0,0xaf,0xaf,0xb2,0xb2,0xab,0xb2,0xaf,0xb6,0xaf,0xb0,0xab,0xa2,0xab,0xaf,0xad,0xad,0xab,0xad,0xb0,0xb2,0xb2,0xb0,0xb2,0xb4,0xb4,0xb0,0xb0,0xb0,0xb2,0xb4,0xb6,0xb6,0xb4,0xb2,0xb6,0xb4,0xb2,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xb6,0xa6,0xb4,0xaf,0xb4,0xaf,0xad,0xaf,0xa4,0xab,0xaf,0xa9,0xb0,0xab,0xaf,0xb0,0xb0,0xb2,0xb2,0xb4,0xb4,0xb4,0xb2,0xb2,0xb0,0xb0,0xb2,0xb4,0xb4,0xb0,0xb2,0xb4,0xb4,0xb0,0xb0,0xb2,0xb4,0xb0,0xad,0xaf,0xb0,0xaf,0xaf,0xb0,0xaf,0xad,0xab,0xad,0xad,0xad,0xaf,0xaf,0xb0,0xb0,0xb2,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb2,0xad,0xb1,0xb2,0xaf,0xaf,0xa9,0xb2,0xaf,0xaf,0xaf,0xaf,0xad,0xab,0xad,0xb2,0xad,0xa4,0xb2,0xad,0xb2,0xa9,0xaf,0xa9,0xa2,0xa9,0xab,0xa8,0xa9,0xa9,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xb2,0xb1,0xaf,0xb2,0xaf,0xad,0xad,0xaf,0xb1,0xb2,0xb2,0xb4,0xb1,0xaf,0xaf,0xb1,0xb1,0xad,0xab,0xaf,0xaf,0xb1,0xa4,0xb1,0xad,0xb1,0xa9}, {0xa9,0xab,0xad,0xb2,0xb4,0xb2,0xb1,0xb1,0xaf,0xad,0xad,0xb1,0xb2,0xb1,0xb1,0xb2,0xb2,0xb2,0xad,0xb1,0xb2,0xab,0xa6,0x9a,0xad,0xad,0xaf,0xaf,0xad,0xab,0xab,0xaf,0xb2,0xad,0xa1,0xab,0xa6,0xb2,0xad,0xb6,0xaf,0xa9,0xaf,0xad,0xab,0xad,0xab,0xaf,0xb0,0xb2,0xb0,0xaf,0xb0,0xb0,0xb0,0xad,0xb0,0xb0,0xb0,0xb2,0xb4,0xb4,0xb2,0xb0,0xb4,0xb2,0xb0,0xb0,0xb0,0xae,0xac,0xac,0xb2,0xb2,0xab,0xa0,0xab,0xab,0xb0,0xb4,0xb2,0xaf,0xab,0xab,0xad,0xad,0xad,0xab,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xb0,0xb2,0xb2,0xb4,0xb6,0xb4,0xb0,0xb0,0xb8,0xb6,0xb4,0xb0,0xaf,0xb2,0xaf,0xb0,0xb4,0xb4,0xb2,0xb2,0xb4,0xb2,0xaf,0xab,0xad,0xaf,0xb4,0xb6,0xb4,0xb2,0xb2,0xb2,0xaf,0xaf,0xb2,0xb4,0xb2,0xb2,0xb4,0xb4,0xb4,0xaf,0xb4,0xb4,0xad,0xa7,0x9d,0xb0,0xb0,0xb0,0xb2,0xb0,0xaf,0xaf,0xb0,0xb4,0xad,0xa6,0xab,0xad,0xb2,0xb2,0xb8,0xb4,0xad,0xaf,0xad,0xab,0xad,0xad,0xb0,0xb2,0xb4,0xb2,0xb0,0xb2,0xb2,0xb0,0xaf,0xb2,0xb2,0xb2,0xb4,0xb6,0xb8,0xb6,0xb4,0xb6,0xb4,0xb2,0xb2,0xb2,0xb0,0xaf,0xaf,0xb2,0xb2,0xb0,0x9d,0xaf,0xad,0xb4,0xb2,0xb2,0xb4,0xad,0xaf,0xad,0xa9,0xaf,0xad,0xaf,0xb0,0xb0,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xb2,0xb2,0xb4,0xb6,0xb6,0xb4,0xb0,0xaf,0xb6,0xb6,0xb2,0xb0,0xaf,0xb0,0xab,0xaf,0xb0,0xb2,0xb0,0xb0,0xb2,0xb0,0xaf,0xa9,0xab,0xaf,0xb0,0xb2,0xb2,0xb0,0xaf,0xaf,0xad,0xad,0xb1,0xb2,0xb1,0xb1,0xb2,0xb1,0xb2,0xad,0xb2,0xb2,0xa9,0xa6,0x9b,0xaf,0xad,0xad,0xaf,0xaf,0xaf,0xad,0xad,0xb6,0xa9,0x9f,0xa9,0xab,0xb1,0xad,0xb1,0xb1,0xab,0xaf,0xad,0xa9,0xab,0xa8,0xad,0xb1,0xb1,0xb1,0xaf,0xaf,0xb1,0xaf,0xad,0xb1,0xaf,0xaf,0xb1,0xb2,0xb4,0xb2,0xb1,0xb4,0xb2,0xb1,0xb1,0xaf,0xad,0xab,0xab,0xad,0xb4,0xad,0x9d,0xa9,0xaf,0xb1,0xad}, {0xaf,0xad,0xad,0xaf,0xb1,0xaf,0xad,0xab,0xaf,0xab,0xab,0xaf,0xb1,0xaf,0xaf,0xb1,0xb1,0xb2,0xaf,0xb2,0xb4,0xaf,0xad,0xa6,0xaf,0xaf,0xb1,0xb1,0xaf,0xad,0xad,0xb1,0xad,0xa9,0xa8,0xaf,0xb1,0xb1,0xad,0xb1,0xb2,0xaf,0xaf,0xab,0xab,0xad,0xa9,0xb1,0xaf,0xb0,0xb0,0xaf,0xaf,0xb0,0xaf,0xad,0xb0,0xaf,0xad,0xaf,0xb2,0xb2,0xb0,0xad,0xaf,0xaf,0xb0,0xb2,0xb2,0xaf,0xaf,0xb0,0xab,0xb2,0xa9,0xab,0xaf,0xb2,0xab,0xb0,0xb2,0xb0,0xb0,0xad,0xab,0xad,0xad,0xad,0xb0,0xb0,0xb0,0xb0,0xaf,0xaf,0xaf,0xaf,0xab,0xaf,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb2,0xb4,0xad,0xb2,0xb6,0xb2,0xb0,0xa2,0xb0,0xb4,0xb4,0xb2,0xb2,0xb4,0xb4,0xb0,0xb2,0xb0,0xb0,0xb2,0xb4,0xb2,0xaf,0xaf,0xb1,0xaf,0xaf,0xb2,0xb2,0xb1,0xb1,0xb4,0xb2,0xb4,0xb1,0xb4,0xb6,0xb1,0xb1,0xa8,0xb0,0xb0,0xb0,0xb2,0xb0,0xaf,0xaf,0xb0,0xb2,0xab,0xad,0xaf,0xb6,0xaf,0xaf,0xaf,0xb8,0xb2,0xb2,0xab,0xad,0xaf,0xad,0xb4,0xb2,0xb4,0xb4,0xb2,0xb2,0xb2,0xb0,0xad,0xb2,0xb0,0xaf,0xaf,0xb2,0xb4,0xb2,0xb0,0xaf,0xaf,0xb0,0xb4,0xb2,0xaf,0xaf,0xb0,0xad,0xb4,0xb0,0xa9,0xb2,0xb4,0xb2,0xb2,0xb2,0xb6,0xb2,0xb0,0xab,0xa9,0xaf,0xaf,0xb2,0xb2,0xb2,0xb2,0xb0,0xaf,0xaf,0xad,0xad,0xaf,0xb0,0xb0,0xb0,0xb0,0xb2,0xb0,0xb0,0xb4,0xad,0xb0,0xb4,0xb2,0xaf,0xa0,0xb0,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xaf,0xad,0xab,0xaf,0xab,0xab,0xaf,0xb1,0xb1,0xaf,0xb1,0xb1,0xb2,0xad,0xb2,0xb4,0xb1,0xad,0xa6,0xaf,0xad,0xad,0xaf,0xb1,0xaf,0xad,0xad,0xa9,0xa9,0xaf,0xaf,0xb2,0xad,0xb1,0xb1,0xb4,0xaf,0xb1,0xab,0xa9,0xab,0xa9,0xaf,0xaf,0xb1,0xb1,0xaf,0xaf,0xaf,0xaf,0xab,0xaf,0xad,0xad,0xaf,0xb1,0xb2,0xb1,0xad,0xaf,0xaf,0xaf,0xb1,0xaf,0xad,0xad,0xaf,0xad,0xaf,0xa8,0xb1,0xb2,0xb1,0xa9,0xb4}, {0xb2,0xad,0xab,0xab,0xad,0xad,0xaf,0xb1,0xb1,0xaf,0xad,0xaf,0xaf,0xaf,0xad,0xab,0xb1,0xb2,0xab,0xaf,0xaf,0xaf,0xb4,0xb1,0xb1,0xb1,0xb1,0xb1,0xaf,0xad,0xad,0xaf,0xb1,0xab,0xaf,0xaf,0xb6,0xad,0xaf,0xaf,0xaf,0xad,0xad,0xa8,0xab,0xab,0xa8,0xb2,0xa9,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xb2,0xad,0xab,0xab,0xaf,0xb0,0xb0,0xaf,0xb2,0xb0,0xb0,0xb2,0xb2,0xaf,0xad,0xaf,0xad,0xb2,0xab,0xb2,0xaf,0xb4,0xab,0xb0,0xaf,0xad,0xb0,0xab,0xa9,0xad,0xab,0xad,0xad,0xad,0xaf,0xaf,0xb0,0xb0,0xaf,0xaf,0xad,0xaf,0xaf,0xad,0xab,0xad,0xb0,0xb2,0xb0,0xb4,0xad,0xb4,0xb6,0xad,0xb0,0xa7,0xaf,0xb2,0xb2,0xaf,0xb0,0xb2,0xb2,0xb0,0xb4,0xaf,0xad,0xad,0xaf,0xaf,0xb0,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb1,0xb1,0xaf,0xb1,0xb2,0xad,0xaf,0xb1,0xb1,0xb6,0xb4,0xb2,0xb2,0xb2,0xb2,0xb0,0xad,0xad,0xaf,0xb2,0xad,0xb2,0xaf,0xb8,0xad,0xb0,0xaf,0xaf,0xaf,0xaf,0xab,0xaf,0xb0,0xab,0xb2,0xab,0xaf,0xb2,0xb2,0xb2,0xb2,0xb0,0xaf,0xb0,0xaf,0xad,0xad,0xaf,0xb0,0xb0,0xaf,0xb2,0xb0,0xb2,0xb4,0xb2,0xaf,0xad,0xb0,0xad,0xb2,0xaf,0xb2,0xb0,0xb6,0xb0,0xb2,0xab,0xaf,0xb0,0xad,0xa9,0xa9,0xad,0xb0,0xad,0xaf,0xaf,0xb0,0xb0,0xb0,0xb0,0xaf,0xaf,0xb0,0xaf,0xab,0xab,0xad,0xb0,0xb2,0xaf,0xb4,0xad,0xb4,0xb6,0xad,0xb0,0xa7,0xaf,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xaf,0xb4,0xb0,0xad,0xab,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xad,0xaf,0xaf,0xaf,0xad,0xab,0xb1,0xb1,0xa9,0xad,0xb1,0xb1,0xb4,0xb1,0xb2,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xad,0xab,0xb4,0xad,0xb4,0xaf,0xb2,0xad,0xad,0xad,0xad,0xa8,0xa9,0xad,0xa9,0xb2,0xa9,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xad,0xab,0xab,0xad,0xaf,0xaf,0xaf,0xb2,0xb1,0xb1,0xb2,0xb1,0xad,0xab,0xaf,0xab,0xb1,0xab,0xb4,0xaf,0xb4,0xad,0xb2}, {0xb2,0xad,0xab,0xad,0xaf,0xb1,0xb1,0xb2,0xb1,0xb2,0xb1,0xad,0xad,0xb1,0xad,0xa8,0xb1,0xb1,0xa9,0xab,0xab,0xab,0xb2,0xaf,0xb2,0xaf,0xad,0xaf,0xad,0xab,0xab,0xad,0xb2,0xaf,0xb1,0xab,0xaf,0xab,0xb1,0xb2,0xb1,0xb1,0xb1,0xad,0xb1,0xb1,0xab,0xb6,0xa4,0xa9,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xad,0xad,0xaf,0xaf,0xb1,0xb1,0xb4,0xaf,0xab,0xaf,0xb0,0xaf,0xad,0xad,0xb2,0xaf,0xaf,0xb0,0xab,0xad,0xb0,0xb0,0xb2,0xaf,0xb4,0xaf,0xaf,0xb4,0xaf,0xb0,0xa9,0xab,0xad,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xad,0xad,0xaf,0xb0,0xb2,0xad,0xb2,0xa9,0xb4,0xb0,0xa4,0xb0,0xb2,0xaf,0xb0,0xb0,0xad,0xad,0xb0,0xb0,0xaf,0xb2,0xad,0xab,0xad,0xaf,0xb0,0xb0,0xb2,0xb2,0xb4,0xb2,0xb1,0xb1,0xb2,0xaf,0xa9,0xaf,0xb1,0xa9,0xab,0xad,0xad,0xb2,0xb1,0xb4,0xb1,0xb1,0xb1,0xaf,0xad,0xad,0xaf,0xb1,0xaf,0xaf,0xad,0xaf,0xaf,0xb2,0xb6,0xad,0xb1,0xb2,0xaf,0xb4,0xb6,0xaf,0xb4,0xa6,0xab,0xb1,0xb2,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xb4,0xaf,0xad,0xaf,0xb1,0xaf,0xad,0xaf,0xb0,0xad,0xab,0xb0,0xab,0xaf,0xaf,0xb2,0xaf,0xb0,0xb2,0xaf,0xaf,0xb0,0xb0,0xb0,0xa8,0xa9,0xab,0xaf,0xb1,0xb2,0xb2,0xb2,0xb1,0xb1,0xb1,0xad,0xad,0xaf,0xb1,0xb1,0xad,0xb2,0xab,0xb4,0xb0,0xa4,0xb2,0xb2,0xaf,0xb0,0xb0,0xaf,0xaf,0xb0,0xb0,0xaf,0xb0,0xad,0xab,0xab,0xad,0xb0,0xb2,0xb2,0xaf,0xb1,0xaf,0xad,0xaf,0xb1,0xad,0xa8,0xaf,0xaf,0xa8,0xa9,0xab,0xab,0xb2,0xaf,0xb2,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xb2,0xad,0xa9,0xa8,0xaf,0xb1,0xb1,0xad,0xaf,0xb1,0xb2,0xab,0xb1,0xb2,0xad,0xb6,0xa4,0xa9,0xaf,0xaf,0xaf,0xaf,0xb1,0xb1,0xb1,0xaf,0xaf,0xad,0xad,0xaf,0xaf,0xb1,0xb4,0xad,0xab,0xaf,0xb1,0xad,0xab,0xab,0xad,0xb1,0xaf,0xab,0xa8,0xb1,0xb4,0xad}, {0xb2,0xb1,0xaf,0xb1,0xb2,0xb1,0xad,0xab,0xb1,0xb2,0xb1,0xad,0xad,0xb2,0xb1,0xa9,0xaf,0xaf,0xa9,0xad,0xb1,0xaf,0xb2,0xad,0xb2,0xaf,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xab,0xad,0xaf,0xad,0xad,0xad,0xaf,0xaf,0xad,0xaf,0xaf,0xa9,0xaf,0xad,0xa6,0xaf,0xa1,0xa8,0xaf,0xb1,0xaf,0xad,0xaf,0xaf,0xa9,0xad,0xb1,0xb2,0xb1,0xad,0xad,0xaf,0xad,0xa4,0x9f,0xa6,0xaf,0xb0,0xb0,0xb0,0xaf,0xa7,0xb2,0xaf,0xaf,0xa7,0xb0,0xab,0xb0,0xab,0xb0,0xa9,0xab,0xb2,0xa9,0xa9,0xa7,0xa9,0xab,0xaf,0xaf,0xaf,0xad,0xad,0xb0,0xb0,0xb0,0xb0,0xb2,0xb2,0xb0,0xad,0xb0,0xab,0x9a,0xa7,0xad,0xa4,0xb0,0xb0,0xb0,0xb2,0xb0,0xad,0xad,0xb0,0xb0,0xaf,0xb4,0xb0,0xb0,0xb2,0xb4,0xb0,0xad,0xab,0xb1,0xb2,0xaf,0xab,0xaf,0xb4,0xaf,0xa6,0xad,0xaf,0xa9,0xad,0xb1,0xb1,0xb2,0xaf,0xb2,0xaf,0xad,0xaf,0xaf,0xaf,0xaf,0xb1,0xab,0xb1,0xad,0xb1,0xa8,0xaf,0xad,0xb1,0xad,0xb1,0xaf,0xa8,0xad,0xaf,0xa8,0xaf,0xa2,0xa9,0xb1,0xb2,0xaf,0xaf,0xaf,0xaf,0xaf,0xb1,0xb1,0xb2,0xb1,0xaf,0xaf,0xad,0xad,0xa2,0x9f,0xa6,0xad,0xaf,0xaf,0xb1,0xb0,0xa7,0xad,0xb4,0xad,0xa9,0xaf,0xaf,0xaf,0xaf,0xaf,0xa9,0xab,0xaf,0xab,0xa7,0xab,0xab,0xad,0xaf,0xaf,0xaf,0xaf,0xad,0xaf,0xaf,0xb1,0xb1,0xb2,0xb2,0xaf,0xab,0xaf,0xad,0x9d,0xa9,0xad,0xa4,0xb2,0xb2,0xaf,0xb0,0xb0,0xaf,0xaf,0xb0,0xb0,0xaf,0xb0,0xb0,0xaf,0xb0,0xb2,0xb2,0xaf,0xad,0xaf,0xb1,0xb1,0xad,0xaf,0xb2,0xb1,0xa8,0xab,0xaf,0xa9,0xad,0xaf,0xad,0xb2,0xaf,0xb1,0xaf,0xad,0xad,0xaf,0xad,0xad,0xaf,0xa9,0xad,0xab,0xb2,0xa9,0xad,0xab,0xb4,0xad,0xb1,0xb1,0xa9,0xad,0xaf,0xa6,0xad,0xa2,0xa9,0xaf,0xaf,0xad,0xad,0xaf,0xb1,0xad,0xaf,0xb1,0xb2,0xb1,0xaf,0xaf,0xad,0xa9,0xa2,0x9f,0xa8,0xaf,0xaf,0xad,0xad,0xb4,0xa6,0xad,0xaf,0xb2,0xa9,0xb1,0xab}, {0xb2,0xb2,0xb1,0xb1,0xb1,0xb1,0xaf,0xad,0xab,0xad,0xaf,0xaf,0xaf,0xb1,0xb1,0xb2,0xb4,0xad,0xb1,0xb1,0xab,0xab,0xb1,0xad,0xb1,0xaf,0xab,0xab,0xad,0xaf,0xaf,0xad,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xaf,0xaf,0xad,0xb1,0xb2,0xad,0xb1,0xa8,0xb2,0xad,0xa9,0xaf,0xb1,0xab,0xad,0xb1,0xb1,0xab,0xab,0xaf,0xab,0xb1,0xab,0xb1,0xad,0xb1,0xad,0xad,0xaf,0xb1,0xaf,0xad,0xaf,0xb2,0xb1,0xaf,0xad,0xad,0xaf,0xaf,0xaf,0xad,0xab,0xb1,0xb1,0xb1,0xaf,0xad,0xa9,0xaf,0xad,0xad,0xad,0xad,0xaf,0xb1,0xb1,0xaf,0xab,0xad,0xaf,0xb1,0xb1,0xaf,0xaf,0xb2,0xaf,0xaf,0xb1,0xb1,0xb1,0xb1,0xb2,0xb2,0xaf,0xb2,0xb4,0xb2,0xaf,0xaf,0xad,0xad,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb1,0xaf,0xb1,0xb1,0xb2,0xb2,0xb2,0xb2,0xb2,0xb4,0xb4,0xad,0xb1,0xa9,0xb1,0xaf,0xb4,0xb2,0xb1,0xaf,0xad,0xad,0xaf,0xaf,0xb1,0xb1,0xb1,0xaf,0xaf,0xad,0xaf,0xaf,0xaf,0xb1,0xab,0xba,0xab,0xaf,0xb1,0xab,0xb1,0xa9,0xb1,0xb2,0xaf,0xaf,0xb2,0xb1,0xa9,0xad,0xaf,0xaf,0xb1,0xb1,0xb1,0xb1,0xb2,0xaf,0xad,0xad,0xaf,0xad,0xad,0xad,0xaf,0xb1,0xaf,0xad,0xad,0xaf,0xb1,0xb1,0xaf,0xab,0xb1,0xaf,0xb1,0xb1,0xaf,0xad,0xb2,0xad,0xab,0xab,0xaf,0xb1,0xb1,0xb1,0xaf,0xad,0xad,0xaf,0xb1,0xaf,0xad,0xaf,0xb1,0xad,0xaf,0xb1,0xb1,0xaf,0xaf,0xb2,0xb6,0xaf,0xb1,0xb2,0xb1,0xad,0xab,0xab,0xad,0xb2,0xb2,0xb2,0xb2,0xb2,0xb1,0xaf,0xad,0xad,0xaf,0xb1,0xb1,0xaf,0xb1,0xb1,0xb1,0xb2,0xb1,0xaf,0xaf,0xad,0xad,0xad,0xb1,0xb1,0xb1,0xa9,0xad,0xaf,0xaf,0xb1,0xab,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xb2,0xa9,0xb8,0xa9,0xb1,0xb2,0xad,0xaf,0xab,0xab,0xad,0xaf,0xaf,0xad,0xad,0xaf,0xab,0xad,0xa9,0xb1,0xad,0xb2,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xad,0xaf,0xb1,0xb1,0xaf,0xad,0xad,0xaf,0xb1,0xaf,0xaf}, {0xb1,0xb1,0xb1,0xb2,0xb2,0xb1,0xb1,0xaf,0xaf,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xad,0xad,0xaf,0xaf,0xaf,0xb4,0xb4,0xab,0xb1,0xb1,0xaf,0xaf,0xad,0xad,0xaf,0xaf,0xad,0xad,0xad,0xad,0xad,0xaf,0xaf,0xb1,0xab,0xaf,0xa9,0xaf,0xad,0xa9,0xad,0xab,0xab,0xaf,0xaf,0xad,0xad,0xaf,0xad,0xa9,0xa9,0xad,0xa9,0xb1,0xad,0xb2,0xaf,0xb1,0xaf,0xaf,0xb1,0xb2,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xad,0xab,0xad,0xad,0xad,0xab,0xab,0xaf,0xab,0xad,0xa8,0xab,0xad,0xab,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xa9,0xa9,0xab,0xad,0xad,0xaf,0xb1,0xb2,0xb2,0xb1,0xb1,0xb1,0xb2,0xb4,0xb2,0xb2,0xb2,0xb1,0xb1,0xb2,0xb1,0xab,0xad,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xaf,0xaf,0xb1,0xb2,0xb2,0xb2,0xb1,0xb1,0xb1,0xa9,0xab,0xb4,0xad,0xb6,0xb2,0xb4,0xa9,0xb1,0xb1,0xb2,0xb1,0xaf,0xad,0xaf,0xb1,0xad,0xad,0xad,0xad,0xad,0xad,0xaf,0xaf,0xad,0xab,0xa9,0xad,0xab,0xab,0xa9,0xab,0xad,0xb1,0xb2,0xb1,0xaf,0xb1,0xaf,0xab,0xab,0xab,0xad,0xaf,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb2,0xb2,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xad,0xb1,0xad,0xb1,0xab,0xad,0xad,0xab,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xa9,0xa9,0xab,0xab,0xad,0xad,0xb1,0xb2,0xaf,0xb1,0xb2,0xb4,0xb4,0xb4,0xb2,0xb1,0xb1,0xb1,0xb2,0xb1,0xad,0xab,0xad,0xaf,0xb1,0xb1,0xb1,0xb2,0xb2,0xb1,0xaf,0xad,0xaf,0xb1,0xb2,0xb1,0xb1,0xb1,0xb1,0xaf,0xad,0xaf,0xaf,0xad,0xaf,0xb4,0xb2,0xad,0xb1,0xb2,0xad,0xaf,0xaf,0xad,0xb1,0xaf,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xab,0xab,0xab,0xad,0xab,0xab,0xa9,0xab,0xad,0xad,0xaf,0xb1,0xaf,0xaf,0xad,0xaf,0xa9,0xab,0xa9,0xb1,0xad,0xb2,0xaf,0xb1,0xb1,0xaf,0xaf,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xaf}, {0xaf,0xaf,0xaf,0xb1,0xb1,0xb1,0xb1,0xaf,0xb2,0xb2,0xb2,0xb1,0xb1,0xb1,0xaf,0xaf,0xab,0xb2,0xaf,0xa8,0xab,0xaf,0xa6,0x9a,0xad,0xaf,0xb1,0xaf,0xad,0xab,0xab,0xad,0xad,0xad,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xb1,0xa8,0xb4,0xad,0xaf,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xaf,0xab,0xb2,0xad,0xb2,0xad,0xad,0xaf,0xad,0xaf,0xb1,0xb1,0xad,0xab,0xab,0xab,0xad,0xaf,0xad,0xab,0xab,0xad,0xaf,0xaf,0xab,0xb2,0xad,0xaf,0xa9,0xb1,0xad,0xab,0xaf,0xb1,0xb1,0xaf,0xaf,0xb1,0xb1,0xad,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xb1,0xaf,0xad,0xaf,0xb1,0xb2,0xaf,0xad,0xb6,0xaf,0xaf,0xb2,0xb2,0xab,0xab,0xb2,0xaf,0xaf,0xaf,0xaf,0xb1,0xb1,0xaf,0xaf,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xad,0xaf,0xb2,0xa6,0xad,0xa9,0xa8,0x98,0xab,0xaf,0xb1,0xaf,0xad,0xab,0xad,0xaf,0xab,0xab,0xab,0xad,0xad,0xaf,0xaf,0xaf,0xad,0xb4,0xa4,0xb6,0xaf,0xad,0xb1,0xaf,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xaf,0xad,0xaf,0xad,0xaf,0xaf,0xaf,0xaf,0xad,0xab,0xb1,0xaf,0xad,0xb1,0xb1,0xaf,0xab,0xab,0xab,0xad,0xaf,0xad,0xab,0xab,0xad,0xaf,0xb1,0xab,0xb1,0xab,0xaf,0xa9,0xb1,0xab,0xad,0xaf,0xb1,0xb1,0xaf,0xaf,0xaf,0xb1,0xad,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xb1,0xaf,0xad,0xad,0xb1,0xb4,0xb4,0xaf,0xab,0xb2,0xb2,0xb2,0xb1,0xaf,0xaf,0xaf,0xb1,0xaf,0xaf,0xaf,0xb1,0xb1,0xb1,0xaf,0xad,0xaf,0xb1,0xb2,0xb1,0xaf,0xb1,0xaf,0xad,0xa8,0xaf,0xb1,0xad,0xad,0xaf,0xa4,0x96,0xab,0xb1,0xad,0xaf,0xab,0xa8,0xaf,0xaf,0xad,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xad,0xb4,0xa6,0xb8,0xaf,0xab,0xaf,0xaf,0xaf,0xb1,0xb1,0xb1,0xb1,0xaf,0xaf,0xad,0xad,0xb1,0xad,0xb2,0xad,0xb1,0xad,0xaf,0xb1,0xad,0xad,0xaf,0xaf,0xad,0xab,0xab,0xad,0xad,0xaf,0xad,0xab,0xab,0xad,0xaf}, {0xad,0xad,0xad,0xaf,0xb1,0xb1,0xaf,0xaf,0xb2,0xb1,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xa9,0xb2,0xaf,0xa9,0xb2,0xb2,0xa9,0xa6,0xab,0xad,0xad,0xad,0xab,0xab,0xab,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xa9,0xaf,0xa8,0xad,0xa9,0xab,0xab,0xa9,0xb1,0xad,0xab,0xaf,0xaf,0xaf,0xaf,0xb1,0xb1,0xb2,0xad,0xb2,0xad,0xb2,0xaf,0xaf,0xaf,0xab,0xab,0xad,0xad,0xab,0xa9,0xa9,0xad,0xaf,0xaf,0xaf,0xad,0xad,0xaf,0xaf,0xab,0xa8,0xad,0xab,0xa9,0xab,0xaf,0xa9,0xad,0xaf,0xaf,0xaf,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xb1,0xaf,0xaf,0xaf,0xad,0xab,0xaf,0xad,0xab,0xad,0xaf,0xaf,0xad,0xab,0xb4,0xb1,0xaf,0xb2,0xb2,0xaf,0xaf,0xb1,0xaf,0xaf,0xaf,0xaf,0xb1,0xb1,0xaf,0xaf,0xb1,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xad,0xb2,0xab,0xad,0xa8,0xb4,0xab,0xa6,0xab,0xab,0xad,0xab,0xab,0xa9,0xab,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xa9,0xb1,0xa6,0xb1,0xad,0xab,0xaf,0xab,0xb1,0xad,0xab,0xad,0xaf,0xad,0xad,0xaf,0xb1,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xad,0xaf,0xab,0xa9,0xab,0xad,0xab,0xa9,0xa9,0xad,0xaf,0xaf,0xaf,0xad,0xad,0xaf,0xb1,0xad,0xa9,0xad,0xad,0xad,0xad,0xb2,0xad,0xaf,0xaf,0xaf,0xaf,0xad,0xad,0xaf,0xb1,0xaf,0xb1,0xb1,0xaf,0xb1,0xb1,0xaf,0xad,0xb1,0xad,0xa9,0xab,0xaf,0xb1,0xaf,0xab,0xb4,0xb2,0xb2,0xb1,0xb1,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xb1,0xb1,0xb1,0xaf,0xaf,0xb1,0xb1,0xaf,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xb1,0xaf,0xa8,0xa9,0xb1,0xaf,0xa8,0xa9,0xaf,0xab,0xad,0xab,0xa8,0xad,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xa9,0xb2,0xa8,0xb1,0xab,0xa9,0xaf,0xab,0xaf,0xaf,0xaf,0xad,0xad,0xaf,0xaf,0xad,0xb1,0xb2,0xaf,0xb2,0xab,0xb1,0xad,0xb1,0xaf,0xab,0xa9,0xab,0xad,0xad,0xab,0xa9,0xad,0xaf,0xaf,0xaf,0xad,0xad,0xaf,0xaf}, {0xad,0xad,0xaf,0xaf,0xb1,0xb1,0xaf,0xad,0xb1,0xad,0xab,0xa9,0xab,0xad,0xaf,0xb1,0xab,0xb1,0xad,0xab,0xb1,0xaf,0xa9,0xad,0xad,0xab,0xa9,0xa9,0xab,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xad,0xa9,0xaf,0xaf,0xa9,0xad,0xab,0xb2,0xab,0xb1,0xab,0xa9,0xab,0xad,0xaf,0xaf,0xb1,0xaf,0xaf,0xa9,0xaf,0xab,0xb2,0xaf,0xb2,0xb1,0xad,0xa9,0xa9,0xab,0xad,0xab,0xab,0xaf,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xad,0xab,0xad,0xab,0xad,0xab,0xb1,0xaf,0xab,0xaf,0xad,0xab,0xa9,0xab,0xaf,0xaf,0xad,0xad,0xaf,0xad,0xab,0xab,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xab,0xaf,0xb1,0xaf,0xaf,0xb2,0xb2,0xad,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xaf,0xb1,0xad,0xab,0xab,0xab,0xad,0xaf,0xaf,0xab,0xaf,0xad,0xb4,0xad,0xb2,0xab,0xab,0xaf,0xad,0xa9,0xa9,0xab,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xad,0xad,0xab,0xad,0xb1,0xa8,0xad,0xad,0xb1,0xab,0xaf,0xab,0xa8,0xa9,0xad,0xad,0xaf,0xb1,0xaf,0xad,0xab,0xab,0xad,0xaf,0xb1,0xb2,0xaf,0xab,0xa8,0xa9,0xab,0xab,0xab,0xad,0xaf,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xa9,0xad,0xab,0xb2,0xb1,0xad,0xb1,0xaf,0xab,0xa9,0xab,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xab,0xab,0xaf,0xaf,0xaf,0xb1,0xaf,0xad,0xad,0xaf,0xb1,0xb1,0xb1,0xad,0xad,0xaf,0xb1,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xaf,0xaf,0xb1,0xb1,0xb1,0xaf,0xb1,0xaf,0xad,0xa9,0xab,0xaf,0xaf,0xaf,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xad,0xab,0xad,0xaf,0xab,0xad,0xad,0xab,0xaf,0xad,0xad,0xad,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xab,0xad,0xaf,0xa8,0xad,0xad,0xb1,0xab,0xad,0xad,0xad,0xab,0xab,0xaf,0xaf,0xad,0xaf,0xb1,0xab,0xaf,0xa9,0xaf,0xaf,0xb4,0xb1,0xab,0xa9,0xa9,0xab,0xad,0xad,0xad,0xaf,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xad}, {0xaf,0xaf,0xaf,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xab,0xa9,0xa9,0xab,0xad,0xaf,0xaf,0xaf,0xaf,0xab,0xa9,0xa9,0xa6,0xa4,0xa8,0xad,0xab,0xa8,0xa8,0xab,0xad,0xad,0xad,0xab,0xab,0xab,0xad,0xad,0xad,0xab,0xab,0xad,0xaf,0xaf,0xa8,0xb1,0xab,0xb6,0xaf,0xb1,0xaf,0xab,0xad,0xaf,0xb1,0xb1,0xaf,0xaf,0xb1,0xab,0xad,0xa6,0xad,0xab,0xaf,0xb1,0xab,0xa8,0xa8,0xab,0xab,0xad,0xad,0xad,0xad,0xab,0xad,0xaf,0xaf,0xad,0xab,0xad,0xb1,0xab,0xa8,0xaf,0xb2,0xaf,0xaf,0xb1,0xaf,0xad,0xab,0xad,0xb1,0xb1,0xaf,0xb1,0xb2,0xb1,0xa9,0xa8,0xab,0xaf,0xaf,0xaf,0xb1,0xb1,0xb1,0xaf,0xaf,0xb1,0xb2,0xa4,0xab,0xad,0xab,0xad,0xb2,0xb2,0xad,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xaf,0xaf,0xad,0xa9,0xa9,0xab,0xad,0xad,0xad,0xb1,0xab,0xaf,0xa8,0xad,0xa4,0xa8,0xa8,0xaf,0xab,0xa8,0xa8,0xab,0xad,0xad,0xad,0xab,0xab,0xad,0xad,0xad,0xad,0xad,0xad,0xaf,0xad,0xb2,0xa8,0xaf,0xaf,0xb4,0xaf,0xb1,0xaf,0xab,0xad,0xaf,0xb1,0xb1,0xb1,0xaf,0xaf,0xad,0xab,0xa9,0xab,0xad,0xaf,0xb1,0xad,0xa9,0xa9,0xab,0xab,0xad,0xaf,0xad,0xab,0xab,0xab,0xaf,0xaf,0xad,0xab,0xad,0xb1,0xa9,0xa6,0xad,0xb1,0xad,0xab,0xb2,0xb1,0xad,0xab,0xad,0xaf,0xb1,0xb1,0xb1,0xb2,0xb1,0xab,0xa8,0xab,0xad,0xaf,0xad,0xaf,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xa4,0xa8,0xab,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xab,0xa9,0xab,0xad,0xaf,0xad,0xab,0xab,0xaf,0xb1,0xad,0xa8,0xa4,0xa2,0xad,0xaf,0xa8,0xab,0xad,0xab,0xaf,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xaf,0xab,0xb1,0xa6,0xb1,0xb1,0xb4,0xaf,0xaf,0xb1,0xaf,0xad,0xaf,0xb2,0xb2,0xaf,0xaf,0xb1,0xab,0xad,0xa6,0xab,0xa9,0xaf,0xb1,0xab,0xa8,0xa8,0xa9,0xab,0xad,0xaf,0xad,0xab,0xab,0xab,0xad,0xaf,0xad,0xab}, {0xaf,0xaf,0xaf,0xaf,0xb1,0xb1,0xaf,0xad,0xaf,0xad,0xab,0xab,0xad,0xaf,0xad,0xab,0xad,0xab,0xad,0xaf,0xad,0xb1,0xb2,0xaf,0xab,0xab,0xa9,0xa9,0xa9,0xab,0xab,0xad,0xab,0xab,0xad,0xad,0xad,0xad,0xab,0xab,0xa9,0xa2,0x9d,0xa2,0xa9,0xa6,0xab,0xab,0xaf,0xb1,0xaf,0xaf,0xb1,0xb1,0xad,0xa6,0xad,0xb1,0xad,0xb1,0xa8,0xab,0xa8,0xad,0xaf,0xab,0xa9,0xa9,0xab,0xab,0xab,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xab,0xa8,0xa9,0xa6,0x93,0xad,0xa6,0xa9,0xab,0xaf,0xb1,0xb1,0xaf,0xaf,0xb1,0xb1,0xaf,0xa9,0xb1,0xb2,0xaf,0xab,0xab,0xad,0xab,0xb1,0xaf,0xad,0xad,0xad,0xad,0xaf,0xaf,0xa6,0xab,0xad,0xab,0xab,0xaf,0xb1,0xaf,0xaf,0xaf,0xaf,0xaf,0xb1,0xb1,0xaf,0xad,0xaf,0xad,0xab,0xad,0xaf,0xaf,0xad,0xab,0xaf,0xab,0xaf,0xa6,0xaf,0xad,0xb4,0xb1,0xad,0xab,0xa9,0xa9,0xab,0xad,0xad,0xab,0xab,0xab,0xad,0xad,0xad,0xad,0xab,0xab,0xa9,0xa6,0x9b,0xa6,0xad,0xa6,0xaf,0xab,0xaf,0xb1,0xaf,0xaf,0xb1,0xb2,0xaf,0xa8,0xaf,0xaf,0xaf,0xad,0xa9,0xa8,0xa9,0xab,0xb1,0xad,0xab,0xa9,0xa9,0xa9,0xab,0xaf,0xab,0xab,0xab,0xad,0xad,0xad,0xad,0xab,0xad,0xaf,0xa9,0x96,0xb1,0xa8,0xab,0xad,0xb1,0xb1,0xaf,0xaf,0xaf,0xb1,0xb1,0xb1,0xa9,0xb1,0xb2,0xaf,0xab,0xab,0xad,0xab,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xaf,0xaf,0xa6,0xa9,0xab,0xad,0xad,0xab,0xad,0xaf,0xaf,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xad,0xad,0xab,0xad,0xaf,0xad,0xa9,0xb2,0xb1,0xa9,0xa6,0xa8,0xaf,0xb4,0xb6,0xab,0xad,0xa8,0xab,0xab,0xa9,0xaf,0xab,0xad,0xad,0xad,0xad,0xab,0xab,0xab,0xab,0xab,0xa6,0x9b,0xa6,0xad,0xa6,0xaf,0xab,0xaf,0xb2,0xb1,0xaf,0xb1,0xb2,0xaf,0xa8,0xad,0xb1,0xad,0xb1,0xa8,0xab,0xa8,0xad,0xaf,0xad,0xa9,0xa9,0xa9,0xa9,0xab,0xaf,0xab,0xab,0xad,0xad,0xad,0xad,0xab,0xab}, {0xab,0xab,0xab,0xad,0xaf,0xaf,0xad,0xad,0xaf,0xaf,0xad,0xaf,0xb1,0xaf,0xab,0xa8,0xaf,0xaf,0xb1,0xaf,0xa9,0xb1,0xb1,0xa1,0xab,0xad,0xaf,0xaf,0xad,0xab,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xad,0xad,0xab,0xb1,0xa2,0x95,0xa9,0xad,0xab,0xa9,0xb1,0xa9,0xaf,0xaf,0xad,0xad,0xad,0xa6,0x9b,0xa6,0xad,0xad,0xb2,0xab,0xaf,0xaf,0xb4,0xb1,0xaf,0xad,0xad,0xad,0xad,0xad,0xaf,0xab,0xaf,0xb1,0xb1,0xaf,0xad,0xad,0xaf,0xab,0xab,0xab,0x8b,0xb6,0xa2,0xaf,0xaf,0xa9,0xad,0xb1,0xaf,0xad,0xad,0xad,0xab,0x96,0xa4,0xaf,0xb2,0xb1,0xb1,0xaf,0xab,0xb2,0xaf,0xab,0xab,0xad,0xaf,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xad,0xab,0xad,0xb1,0xad,0xad,0xad,0xad,0xaf,0xaf,0xad,0xad,0xaf,0xad,0xad,0xaf,0xb1,0xaf,0xab,0xa8,0xa9,0xb2,0xad,0xaf,0xa9,0xb4,0xa8,0x9f,0xab,0xab,0xad,0xad,0xad,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xad,0xad,0xab,0xa9,0xad,0xa9,0x8e,0xad,0xb1,0xa4,0xb1,0xad,0xa9,0xad,0xad,0xab,0xab,0xad,0xa8,0x9d,0xa8,0xab,0xaf,0xaf,0xad,0xab,0xaf,0xb2,0xb1,0xaf,0xad,0xad,0xab,0xab,0xab,0xaf,0xab,0xad,0xaf,0xaf,0xad,0xad,0xad,0xaf,0xab,0xab,0xa9,0x89,0xb4,0xa2,0xad,0xaf,0xa9,0xad,0xaf,0xaf,0xad,0xad,0xad,0xad,0x96,0xa2,0xaf,0xb1,0xaf,0xb1,0xaf,0xab,0xb4,0xb1,0xab,0xa9,0xa9,0xad,0xaf,0xb1,0xab,0xaf,0xb1,0xaf,0xab,0xa9,0xab,0xaf,0xad,0xad,0xad,0xad,0xaf,0xaf,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xab,0xa6,0xa9,0xb1,0xb2,0xaf,0xb1,0xb4,0xab,0x9f,0xab,0xaf,0xa9,0xad,0xad,0xab,0xb1,0xaf,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xad,0xad,0xa9,0x90,0xad,0xaf,0xa2,0xb1,0xaf,0xa9,0xad,0xaf,0xab,0xad,0xad,0xa6,0x9d,0xa6,0xab,0xab,0xb2,0xad,0xb1,0xaf,0xb2,0xb1,0xaf,0xaf,0xad,0xad,0xab,0xad,0xaf,0xab,0xad,0xaf,0xaf,0xad,0xad,0xad,0xaf}, {0xaf,0xaf,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xb2,0xb1,0xb1,0xad,0xa9,0xaf,0xb2,0xab,0xb1,0xab,0xa8,0xab,0xaf,0xaf,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xaf,0xaf,0xad,0xab,0xa4,0xa9,0xaf,0xaf,0xaf,0xaf,0xad,0xad,0xa9,0xab,0xaf,0xb1,0xb1,0xaf,0xaf,0xb1,0xad,0xad,0xab,0xa9,0xad,0xaf,0xad,0xa8,0xab,0xad,0xad,0xaf,0xaf,0xaf,0xb1,0xb1,0xb4,0xb1,0xaf,0xaf,0xad,0xab,0xab,0xaf,0xab,0xa4,0xaf,0xab,0xaf,0xab,0xb4,0xad,0xaf,0xa6,0xa9,0xaf,0xb1,0xaf,0xa9,0xaf,0xb1,0xad,0xb2,0xa9,0xa4,0xb1,0xb2,0xa9,0xa9,0xaf,0xaf,0xad,0xab,0xaf,0xb1,0xaf,0xad,0xaf,0xb1,0xa6,0xb2,0xaf,0xb1,0xaf,0xb1,0xad,0xa9,0xb4,0xaf,0xa8,0xb1,0xa8,0xb1,0xad,0xad,0xad,0xaf,0xad,0xaf,0xb1,0xb2,0xb1,0xaf,0xad,0xab,0xb1,0xb2,0xab,0xaf,0xad,0xa8,0xa9,0xb2,0xb1,0xab,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xad,0xad,0xad,0xa6,0xa9,0xad,0xad,0xad,0xaf,0xaf,0xad,0xab,0xa9,0xab,0xaf,0xb1,0xaf,0xaf,0xad,0xaf,0xaf,0xab,0xa9,0xad,0xb1,0xaf,0xa9,0xaf,0xaf,0xaf,0xaf,0xaf,0xb1,0xb1,0xb1,0xb2,0xaf,0xad,0xaf,0xaf,0xad,0xad,0xad,0xa9,0xa4,0xaf,0xab,0xaf,0xad,0xb2,0xa6,0xb1,0xa6,0xab,0xb1,0xaf,0xaf,0xab,0xaf,0xb1,0xb1,0xb1,0xa8,0xa4,0xb2,0xb6,0xa8,0xa9,0xad,0xad,0xab,0xab,0xaf,0xaf,0xad,0xaf,0xaf,0xb1,0xa6,0xb2,0xaf,0xb1,0xaf,0xb1,0xb1,0xab,0xb2,0xb1,0xab,0xb1,0xa8,0xb1,0xaf,0xaf,0xad,0xad,0xaf,0xaf,0xb1,0xb2,0xb1,0xaf,0xad,0xa9,0xb1,0xb2,0xab,0xb1,0xab,0xa8,0xab,0xaf,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xa4,0xa9,0xad,0xad,0xad,0xad,0xaf,0xaf,0xab,0xab,0xad,0xb1,0xb1,0xaf,0xaf,0xb1,0xaf,0xad,0xa9,0xa9,0xab,0xaf,0xad,0xa8,0xb1,0xaf,0xad,0xad,0xaf,0xb1,0xb1,0xb1,0xb2,0xb1,0xaf,0xb1,0xb1,0xad,0xa9,0xab,0xab,0xa6,0xab,0xb1,0xad,0xb1,0xb1,0xa9}, {0xaf,0xaf,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xa8,0xa9,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xab,0xa9,0xad,0xaf,0xad,0xad,0xaf,0xad,0xad,0xab,0xab,0xad,0xad,0xab,0xa9,0xab,0xad,0xad,0xab,0xa9,0xab,0xaf,0xaf,0xa9,0xab,0xad,0xaf,0xaf,0xad,0xab,0xab,0xaf,0xaf,0xad,0xad,0xad,0xad,0xad,0xad,0xb1,0xaf,0xaf,0xad,0xad,0xab,0xab,0xab,0xad,0xaf,0xad,0xab,0xab,0xaf,0xaf,0xad,0xab,0xa9,0xad,0xad,0xad,0xab,0xaf,0xab,0xaf,0xa8,0xab,0xab,0xaf,0xaf,0xa9,0xad,0xad,0xa9,0xaf,0xad,0xab,0xb1,0xad,0xad,0xab,0xaf,0xaf,0xad,0xab,0xad,0xaf,0xad,0xaf,0xaf,0xb1,0xab,0xb2,0xa9,0xad,0xb1,0xb1,0xb1,0xad,0xb2,0xad,0xab,0xb4,0xab,0xb1,0xad,0xad,0xad,0xaf,0xad,0xad,0xaf,0xad,0xa8,0xa9,0xaf,0xad,0xad,0xaf,0xaf,0xad,0xad,0xab,0xad,0xb2,0xaf,0xab,0xaf,0xad,0xad,0xab,0xab,0xad,0xad,0xab,0xab,0xa9,0xab,0xad,0xab,0xab,0xad,0xad,0xad,0xab,0xab,0xad,0xaf,0xaf,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xab,0xab,0xab,0xb1,0xb1,0xaf,0xaf,0xad,0xad,0xad,0xad,0xad,0xaf,0xaf,0xab,0xab,0xad,0xaf,0xad,0xab,0xab,0xad,0xa9,0xa9,0xab,0xb1,0xad,0xb1,0xa6,0xad,0xaf,0xad,0xaf,0xad,0xaf,0xab,0xad,0xaf,0xad,0xab,0xaf,0xb1,0xab,0xad,0xaf,0xaf,0xad,0xad,0xaf,0xaf,0xad,0xaf,0xaf,0xaf,0xa8,0xb2,0xad,0xaf,0xaf,0xaf,0xb2,0xad,0xaf,0xad,0xad,0xb2,0xa9,0xaf,0xaf,0xad,0xad,0xad,0xad,0xaf,0xaf,0xad,0xa8,0xa9,0xad,0xad,0xad,0xaf,0xaf,0xad,0xab,0xa9,0xad,0xaf,0xad,0xad,0xad,0xad,0xab,0xab,0xab,0xad,0xad,0xad,0xab,0xa9,0xad,0xad,0xad,0xab,0xad,0xad,0xad,0xa9,0xa9,0xab,0xad,0xad,0xad,0xab,0xab,0xad,0xaf,0xaf,0xaf,0xaf,0xad,0xad,0xab,0xb1,0xb1,0xaf,0xad,0xad,0xad,0xad,0xad,0xad,0xaf,0xad,0xab,0xa9,0xad,0xaf,0xaf,0xad,0xa9,0xab,0xab,0xa9,0xab,0xaf,0xad}, {0xaf,0xaf,0xad,0xad,0xaf,0xaf,0xaf,0xad,0xad,0xa2,0xa4,0xb1,0xaf,0xa9,0xab,0xb1,0xab,0xa9,0xab,0xaf,0xaf,0xaf,0xad,0xaf,0xab,0xab,0xab,0xab,0xab,0xab,0xa9,0xa9,0xaf,0xaf,0xad,0xa9,0xa9,0xad,0xaf,0xaf,0xab,0xab,0xad,0xaf,0xaf,0xad,0xab,0xab,0xaf,0xad,0xad,0xad,0xa9,0xa6,0xa9,0xb1,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xab,0xb1,0xaf,0xa9,0xa9,0xaf,0xaf,0xa8,0xab,0xaf,0xab,0xad,0xad,0xad,0xa9,0xad,0xaf,0xa9,0xad,0xab,0xad,0xb1,0xab,0xad,0xb2,0xab,0xad,0xaf,0xb1,0xa9,0xa2,0xab,0xad,0xaf,0xaf,0xad,0xab,0xab,0xad,0xab,0xb2,0xaf,0xab,0xa9,0xb4,0xaf,0xad,0xad,0xb1,0xb2,0xb1,0xb1,0xad,0xad,0xb4,0xad,0xaf,0xad,0xad,0xaf,0xaf,0xaf,0xad,0xaf,0xad,0xa2,0xa6,0xb1,0xaf,0xa9,0xab,0xaf,0xab,0xa9,0xab,0xb1,0xaf,0xaf,0xaf,0xad,0xab,0xab,0xab,0xab,0xab,0xab,0xa9,0xa9,0xad,0xad,0xad,0xab,0xab,0xad,0xaf,0xad,0xa9,0xad,0xaf,0xaf,0xaf,0xad,0xab,0xad,0xad,0xad,0xad,0xaf,0xab,0xa6,0xa9,0xaf,0xad,0xad,0xad,0xab,0xad,0xad,0xad,0xaf,0xad,0xb2,0xb2,0xa9,0xa8,0xab,0xad,0xa8,0xab,0xb1,0xab,0xab,0xa8,0xad,0xad,0xb1,0xaf,0xa8,0xaf,0xad,0xab,0xaf,0xad,0xad,0xaf,0xaf,0xaf,0xb1,0xaf,0xa8,0xa4,0xab,0xad,0xaf,0xaf,0xad,0xab,0xad,0xad,0xab,0xb1,0xaf,0xad,0xa9,0xb2,0xad,0xad,0xaf,0xaf,0xb4,0xaf,0xaf,0xad,0xad,0xb2,0xad,0xaf,0xaf,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xa2,0xa4,0xb1,0xaf,0xa9,0xab,0xaf,0xa9,0xa9,0xab,0xad,0xaf,0xad,0xad,0xad,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xad,0xad,0xad,0xab,0xab,0xad,0xaf,0xad,0xab,0xab,0xad,0xaf,0xaf,0xaf,0xab,0xa9,0xad,0xad,0xaf,0xaf,0xab,0xa8,0xa9,0xaf,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xaf,0xab,0xb1,0xb1,0xa8,0xa6,0xad,0xaf,0xab,0xad,0xaf,0xad,0xa9,0xab,0xab,0xad,0xb2}, {0xb1,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xb1,0xa6,0xa8,0xb2,0xaf,0xa9,0xab,0xaf,0xa8,0xa9,0xad,0xb1,0xb2,0xb1,0xaf,0xad,0xab,0xab,0xad,0xab,0xab,0xa9,0xab,0xab,0xab,0xad,0xad,0xad,0xad,0xaf,0xaf,0xad,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0xad,0xaf,0xab,0xab,0xad,0xa9,0xa4,0xa8,0xb1,0xab,0xab,0xab,0xab,0xad,0xad,0xaf,0xaf,0xaf,0xb1,0xaf,0xab,0xab,0xad,0xab,0xa6,0xa8,0xb1,0xa9,0xad,0xad,0xb1,0xa9,0xb1,0xad,0xab,0xaf,0xab,0xad,0xb2,0xaf,0xaf,0xb4,0xaf,0xad,0xab,0xaf,0xa8,0xa1,0xaf,0xad,0xad,0xad,0xad,0xab,0xab,0xab,0xab,0xab,0xaf,0xad,0xa6,0xad,0xb1,0xaf,0xab,0xb1,0xb1,0xb1,0xb1,0xaf,0xab,0xaf,0xaf,0xaf,0xaf,0xaf,0xb1,0xb1,0xaf,0xad,0xad,0xb1,0xa6,0xa9,0xb2,0xaf,0xa8,0xa9,0xad,0xab,0xa6,0xab,0xaf,0xab,0xaf,0xb2,0xad,0xad,0xab,0xab,0xab,0xab,0xab,0xab,0xa9,0xad,0xad,0xab,0xab,0xad,0xaf,0xaf,0xad,0xab,0xad,0xad,0xad,0xad,0xaf,0xaf,0xad,0xb1,0xad,0xab,0xad,0xa8,0xa4,0xa8,0xb2,0xab,0xab,0xab,0xab,0xab,0xad,0xaf,0xaf,0xad,0xb1,0xaf,0xab,0xa9,0xad,0xad,0xa9,0xa6,0xb1,0xa9,0xaf,0xad,0xb1,0xa9,0xb1,0xaf,0xab,0xb1,0xad,0xa9,0xaf,0xaf,0xad,0xb1,0xb1,0xad,0xad,0xaf,0xa6,0xa2,0xad,0xad,0xad,0xad,0xad,0xab,0xab,0xab,0xab,0xaf,0xad,0xa9,0xa9,0xb1,0xad,0xab,0xaf,0xb1,0xb2,0xaf,0xaf,0xaf,0xab,0xad,0xb1,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xad,0xad,0xb1,0xa6,0xa9,0xb2,0xaf,0xa8,0xa9,0xaf,0xa9,0xa9,0xab,0xad,0xaf,0xaf,0xaf,0xaf,0xab,0xab,0xab,0xab,0xad,0xad,0xab,0xab,0xad,0xad,0xad,0xab,0xad,0xaf,0xaf,0xad,0xad,0xaf,0xaf,0xaf,0xb1,0xb1,0xb1,0xad,0xaf,0xab,0xab,0xad,0xa8,0xa4,0xa8,0xb2,0xa9,0xab,0xad,0xad,0xad,0xad,0xaf,0xaf,0xad,0xb1,0xb1,0xad,0xab,0xad,0xab,0xa6,0xa8,0xaf,0xad,0xad,0xb2,0xaf,0xab,0xb1}, {0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xaf,0xaf,0xb1,0xab,0xad,0xaf,0xab,0xab,0xad,0xad,0xad,0xad,0xad,0xad,0xb1,0xb1,0xaf,0xad,0xad,0xad,0xad,0xad,0xad,0xab,0xab,0xad,0xab,0xad,0xaf,0xaf,0xaf,0xaf,0xad,0xa9,0xad,0xaf,0xaf,0xad,0xad,0xaf,0xaf,0xad,0xaf,0xab,0xab,0xaf,0xad,0xa8,0xa8,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xaf,0xaf,0xad,0xad,0xad,0xa9,0xb1,0xa9,0xaf,0xad,0xb2,0xa9,0xb1,0xad,0xab,0xb1,0xab,0xad,0xb2,0xad,0xaf,0xab,0xad,0xad,0xa8,0xad,0xad,0xa6,0xb1,0xad,0xad,0xad,0xad,0xad,0xad,0xab,0xab,0xa9,0xb1,0xaf,0xad,0xab,0xa9,0xab,0xb2,0xb2,0xaf,0xaf,0xb2,0xb1,0xa9,0xa8,0xb1,0xb1,0xaf,0xaf,0xb2,0xb2,0xb1,0xaf,0xaf,0xb1,0xab,0xad,0xb1,0xab,0xa9,0xad,0xab,0xb1,0xa9,0xad,0xaf,0xab,0xb1,0xb2,0xad,0xaf,0xad,0xad,0xad,0xad,0xad,0xad,0xab,0xad,0xad,0xad,0xad,0xaf,0xaf,0xad,0xab,0xad,0xad,0xad,0xab,0xad,0xaf,0xaf,0xab,0xaf,0xab,0xab,0xad,0xab,0xa6,0xa8,0xb1,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,0xab,0xad,0xab,0xab,0xad,0xaf,0xaf,0xaf,0xaf,0xa9,0xb1,0xa9,0xb1,0xb1,0xb2,0xa8,0xad,0xaf,0xab,0xb2,0xad,0xa9,0xaf,0xad,0xab,0xa9,0xad,0xa9,0xa9,0xaf,0xab,0xa8,0xaf,0xaf,0xad,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xaf,0xad,0xa8,0xa9,0xaf,0xaf,0xab,0xad,0xb2,0xb1,0xaf,0xb1,0xb2,0xab,0xa6,0xb2,0xaf,0xaf,0xb1,0xb1,0xb1,0xaf,0xaf,0xad,0xb1,0xad,0xad,0xaf,0xab,0xa9,0xad,0xab,0xaf,0xad,0xad,0xad,0xaf,0xb1,0xb1,0xad,0xad,0xad,0xab,0xad,0xad,0xad,0xad,0xab,0xab,0xad,0xad,0xad,0xad,0xaf,0xad,0xab,0xad,0xaf,0xad,0xab,0xad,0xaf,0xaf,0xad,0xaf,0xab,0xab,0xaf,0xab,0xa6,0xa9,0xb1,0xad,0xaf,0xaf,0xaf,0xad,0xab,0xab,0xad,0xad,0xab,0xad,0xaf,0xb1,0xaf,0xad,0xab,0xa8,0xad,0xab,0xab,0xb2,0xaf,0xa9,0xab}, {0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xaf,0xaf,0xad,0xad,0xaf,0xad,0xa9,0xad,0xb1,0xab,0xb2,0xb1,0xad,0xab,0xab,0xaf,0xb1,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xad,0xaf,0xaf,0xad,0xad,0xad,0xab,0xa9,0xa9,0xad,0xaf,0xab,0xa9,0xab,0xab,0xa9,0xab,0xa9,0xab,0xaf,0xad,0xa9,0xa9,0xab,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xaf,0xb1,0xb1,0xab,0xab,0xaf,0xab,0xaf,0xad,0xaf,0xad,0xaf,0xab,0xad,0xab,0xa9,0xaf,0xab,0xab,0xad,0xa8,0xab,0xa6,0xab,0xb1,0xab,0xad,0xb1,0xa9,0xab,0xad,0xab,0xab,0xad,0xaf,0xad,0xad,0xad,0xb6,0xaf,0xa8,0xb2,0xb2,0xaf,0xa9,0xb2,0xb2,0xaf,0xb1,0xaf,0xb1,0xad,0xa8,0xb2,0xb1,0xb1,0xb1,0xb2,0xb2,0xb1,0xaf,0xaf,0xad,0xad,0xaf,0xad,0xa9,0xad,0xb1,0xab,0xb1,0xaf,0xb1,0xaf,0xad,0xb1,0xb1,0xad,0xaf,0xaf,0xad,0xad,0xaf,0xaf,0xad,0xad,0xab,0xad,0xaf,0xaf,0xaf,0xaf,0xab,0xa8,0xab,0xad,0xad,0xab,0xab,0xaf,0xad,0xa9,0xab,0xa9,0xad,0xb1,0xaf,0xab,0xa9,0xab,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xb1,0xad,0xad,0xb1,0xb1,0xad,0xab,0xad,0xaf,0xaf,0xa9,0xad,0xaf,0xaf,0xa9,0xad,0xad,0xa8,0xaf,0xad,0xab,0xaf,0xab,0xab,0xa6,0xab,0xad,0xad,0xaf,0xaf,0xab,0xa9,0xad,0xab,0xad,0xaf,0xaf,0xad,0xad,0xad,0xb1,0xb4,0xad,0xad,0xaf,0xb2,0xad,0xaf,0xb2,0xaf,0xaf,0xad,0xb2,0xad,0xa4,0xb2,0xb1,0xb1,0xb1,0xb1,0xb1,0xaf,0xaf,0xad,0xad,0xad,0xaf,0xad,0xa8,0xad,0xb1,0xab,0xaf,0xaf,0xaf,0xad,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xad,0xad,0xaf,0xaf,0xad,0xad,0xab,0xad,0xaf,0xaf,0xaf,0xad,0xab,0xa9,0xa9,0xad,0xaf,0xab,0xa9,0xab,0xab,0xa9,0xa9,0xa9,0xad,0xb1,0xaf,0xa9,0xa8,0xa9,0xad,0xad,0xaf,0xaf,0xad,0xad,0xad,0xad,0xb1,0xad,0xab,0xaf,0xaf,0xad,0xad,0xaf,0xaf,0xaf,0xab,0xab,0xaf,0xaf,0xab,0xab}, {0xb1,0xb1,0xaf,0xb1,0xb1,0xaf,0xad,0xad,0xab,0xad,0xb1,0xaf,0xab,0xaf,0xb2,0xad,0xa9,0xad,0xaf,0xad,0xab,0xad,0xaf,0xb1,0xaf,0xad,0xad,0xad,0xaf,0xaf,0xad,0xab,0xa9,0xad,0xaf,0xad,0xab,0xad,0xad,0xad,0xa1,0xa9,0xaf,0xab,0xa9,0xab,0xab,0xa9,0xa9,0xab,0xad,0xad,0xab,0xab,0xab,0xab,0xa9,0xa9,0xab,0xad,0xaf,0xaf,0xaf,0xad,0xa9,0xad,0xb1,0xaf,0xad,0xab,0xab,0xab,0xad,0xa9,0xad,0xad,0xad,0xab,0xaf,0xab,0xa9,0xa4,0xab,0xad,0xad,0xab,0xa6,0xab,0xa8,0xa9,0xb2,0xaf,0xab,0xaf,0xa9,0xa8,0xad,0xab,0xab,0xaf,0xb1,0xaf,0xad,0xad,0xaf,0xb1,0xa8,0xad,0xad,0xb2,0xab,0xaf,0xaf,0xb1,0xb1,0xa6,0xab,0xb2,0xab,0xb1,0xb1,0xaf,0xaf,0xb1,0xb1,0xaf,0xad,0xad,0xa9,0xab,0xb1,0xaf,0xab,0xaf,0xb2,0xad,0xa8,0xaf,0xb1,0xaf,0xaf,0xaf,0xaf,0xb1,0xaf,0xaf,0xad,0xad,0xad,0xad,0xad,0xad,0xa8,0xab,0xaf,0xad,0xad,0xad,0xad,0xab,0xa2,0xa9,0xaf,0xab,0xab,0xab,0xab,0xa9,0xa8,0xab,0xaf,0xaf,0xaf,0xad,0xab,0xab,0xa9,0xab,0xad,0xad,0xaf,0xaf,0xaf,0xaf,0xab,0xaf,0xb1,0xb1,0xad,0xab,0xa9,0xa9,0xaf,0xa9,0xad,0xad,0xad,0xab,0xaf,0xaf,0xab,0xa2,0xa9,0xad,0xab,0xad,0xa9,0xab,0xa9,0xa9,0xaf,0xb1,0xad,0xab,0xab,0xa9,0xab,0xa9,0xab,0xaf,0xaf,0xab,0xab,0xad,0xa8,0xb4,0xaf,0xad,0xa8,0xb1,0xad,0xb1,0xaf,0xb1,0xaf,0xa6,0xaf,0xb1,0xa8,0xb2,0xb1,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xa9,0xab,0xb1,0xaf,0xab,0xaf,0xb2,0xad,0xa8,0xad,0xb1,0xaf,0xab,0xad,0xaf,0xaf,0xad,0xad,0xad,0xad,0xaf,0xaf,0xad,0xad,0xa8,0xab,0xaf,0xaf,0xad,0xad,0xad,0xab,0xa2,0xa9,0xaf,0xad,0xab,0xab,0xab,0xa9,0xa8,0xa9,0xad,0xaf,0xad,0xab,0xa9,0xa9,0xab,0xab,0xab,0xad,0xaf,0xaf,0xaf,0xaf,0xab,0xaf,0xb1,0xaf,0xab,0xab,0xab,0xad,0xaf,0xab,0xad,0xad,0xab,0xad,0xaf,0xad}, {0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xad,0xab,0xab,0xab,0xb1,0xb2,0xaf,0xaf,0xb1,0xad,0x9b,0xa8,0xb2,0xb2,0xaf,0xad,0xaf,0xb1,0xaf,0xad,0xab,0xab,0xaf,0xaf,0xad,0xa9,0xa2,0xa8,0xad,0xaf,0xaf,0xaf,0xaf,0xaf,0x9a,0xa6,0xaf,0xad,0xab,0xad,0xad,0xab,0xa9,0xaf,0xb1,0xaf,0xab,0xad,0xaf,0xb1,0xab,0xad,0xad,0xaf,0xad,0xab,0xa9,0xa8,0xa1,0xab,0xaf,0xab,0xa9,0xad,0xb1,0xad,0xab,0xa4,0xad,0xab,0xad,0xa9,0xb2,0xab,0xa6,0xa1,0xa9,0xad,0xaf,0xad,0xa9,0xb1,0xa9,0xa4,0xaf,0xaf,0xa9,0xad,0xaf,0xaf,0xaf,0xab,0xab,0xaf,0xb1,0xaf,0xad,0xad,0x91,0xb1,0xb4,0xa6,0x96,0xa8,0xab,0xaf,0xab,0xb1,0xaf,0x9d,0xa6,0xb4,0xad,0xaf,0xb1,0xaf,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,0xb1,0xb2,0xaf,0xb1,0xb2,0xaf,0x9a,0xa9,0xaf,0xad,0xaf,0xad,0xab,0xb2,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xab,0xa4,0xa8,0xab,0xad,0xad,0xaf,0xaf,0xaf,0x98,0xa4,0xaf,0xad,0xa9,0xab,0xab,0xab,0xa9,0xaf,0xaf,0xab,0xa9,0xab,0xaf,0xb1,0xad,0xad,0xaf,0xaf,0xaf,0xad,0xab,0xa9,0x9f,0xa9,0xb1,0xad,0xa9,0xad,0xaf,0xaf,0xab,0xa2,0xaf,0xaf,0xaf,0xa9,0xb2,0xaf,0xa8,0x9d,0xa6,0xab,0xad,0xad,0xa9,0xab,0xa9,0xa6,0xad,0xb1,0xa9,0xa9,0xb1,0xb2,0xad,0xab,0xad,0xb1,0xb1,0xad,0xab,0xad,0x9a,0xad,0xab,0xa6,0x9d,0xa9,0xa9,0xaf,0xab,0xb4,0xaf,0x9f,0xa9,0xb6,0xab,0xb2,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xab,0xab,0xb1,0xb2,0xaf,0xaf,0xb2,0xaf,0x9d,0xa8,0xaf,0xaf,0xab,0xab,0xaf,0xb2,0xad,0xad,0xad,0xad,0xad,0xaf,0xad,0xad,0xa4,0xa9,0xad,0xad,0xad,0xaf,0xaf,0xb1,0x9a,0xa4,0xad,0xad,0xab,0xad,0xad,0xa9,0xa9,0xaf,0xb1,0xad,0xab,0xad,0xaf,0xb1,0xaf,0xad,0xad,0xad,0xaf,0xad,0xab,0xa9,0x9d,0xa9,0xb2,0xaf,0xab,0xad,0xaf,0xad,0xa8,0xa6,0xab,0xaf,0xa9,0xab,0xb1,0xad} }; ================================================ FILE: face-detection/src/host/typedefs.h ================================================ /*===============================================================*/ /* */ /* typedefs.h */ /* */ /* Typedefs for the host */ /* */ /*===============================================================*/ #ifndef __HAAR_H__ #define __HAAR_H__ // constants const int IMAGE_HEIGHT = 240; const int IMAGE_WIDTH = 320; const int RESULT_SIZE = 100; const int IMAGE_MAXGREY = 255; const int IMAGE_SIZE = ( IMAGE_HEIGHT * IMAGE_WIDTH ); const int TOTAL_NODES = 2913; const int TOTAL_STAGES = 25; const int TOTAL_COORDINATES = TOTAL_NODES * 12; const int TOTAL_WEIGHTS = TOTAL_NODES * 3; const int WINDOW_SIZE = 25; const int SQ_SIZE = 2; const int PYRAMID_HEIGHT = 12; const int ROWS = 25; const int COLS = 25; const int NUM_BANKS = 12; const int SIZE = 2913; #ifdef OCL #include // target device // change here to map to a different device const std::string TARGET_DEVICE = "xilinx_aws-vu9p-f1-04261818_dynamic_5_0"; #endif #ifndef SW #include "ap_int.h" // HLS-specific datatypes typedef ap_uint<18> uint18_t; typedef ap_uint<10> uint10_t; typedef ap_uint<1> bit; typedef ap_uint<5> uint5_t; typedef ap_uint<13> int_I; typedef ap_uint<21> int_SI; typedef ap_uint<18> int_II; typedef ap_uint<26> int_SII; #endif // standard datatypes typedef struct MyPoint { int x; int y; } MyPoint; typedef struct { int width; int height; } MySize; typedef struct { int x; int y; int width; int height; } MyRect; typedef struct { int width; int height; int maxgrey; int flag; } MyInputImage; #endif ================================================ FILE: face-detection/src/host/utils.cpp ================================================ /*===============================================================*/ /* */ /* utils.cpp */ /* */ /* Utility functions */ /* */ /*===============================================================*/ #include #include #include #include #include "utils.h" void print_usage(char* filename) { printf("usage: %s \n", filename); printf(" -f [kernel file]\n"); printf(" -o [output file]\n"); } void parse_sdaccel_command_line_args( int argc, char** argv, std::string& kernelFile, std::string& outFile) { int c = 0; while ((c = getopt(argc, argv, "f:o:")) != -1) { switch (c) { case 'f': kernelFile = optarg; break; case 'o': outFile = optarg; break; default: { print_usage(argv[0]); exit(-1); } } // matching on arguments } // while args present } void parse_sdsoc_command_line_args( int argc, char** argv, std::string& outFile) { int c = 0; while ((c = getopt(argc, argv, "o:")) != -1) { switch (c) { case 'o': outFile = optarg; break; default: { print_usage(argv[0]); exit(-1); } } // matching on arguments } // while args present } ================================================ FILE: face-detection/src/host/utils.h ================================================ /*===============================================================*/ /* */ /* utils.h */ /* */ /* Utility functions */ /* */ /*===============================================================*/ void print_usage(char* filename); void parse_sdaccel_command_line_args( int argc, char** argv, std::string& kernelFile, std::string& outFile); void parse_sdsoc_command_line_args( int argc, char** argv, std::string& outFile); ================================================ FILE: face-detection/src/ocl/face_detect.cpp ================================================ /*===============================================================*/ /* */ /* face_detect.cpp */ /* */ /* Hardware function for the Face Detection application. */ /* */ /*===============================================================*/ #include "host/typedefs.h" // for banking #include "ocl/haar_mapping.h" uint5_t get_bank(uint10_t addr) { #pragma HLS inline return bank_mapping[addr]; } uint5_t get_offset(uint10_t addr) { #pragma HLS inline return offset_mapping[addr]; } uint18_t get_data0(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[19 ]; break; case 1: a = aa[29 ]; break; case 2: a = aa[52 ]; break; case 3: a = aa[100]; break; case 4: a = aa[132]; break; case 5: a = aa[161]; break; case 6: a = aa[193]; break; case 7: a = aa[220]; break; case 8: a = aa[239]; break; case 9: a = aa[253]; break; case 10:a = aa[284]; break; case 11:a = aa[309]; break; case 12:a = aa[362]; break; case 13:a = aa[385]; break; case 14:a = aa[396]; break; case 15:a = aa[447]; break; case 16:a = aa[448]; break; case 17:a = aa[449]; break; case 18:a = aa[451]; break; case 19:a = aa[466]; break; case 20:a = aa[492]; break; case 21:a = aa[531]; break; case 22:a = aa[562]; break; default: a = 0; break; }; return a; } uint18_t get_data1(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[7 ]; break; case 1: a = aa[18 ]; break; case 2: a = aa[65 ]; break; case 3: a = aa[72 ]; break; case 4: a = aa[148]; break; case 5: a = aa[149]; break; case 6: a = aa[153]; break; case 7: a = aa[164]; break; case 8: a = aa[191]; break; case 9: a = aa[208]; break; case 10:a = aa[229]; break; case 11:a = aa[240]; break; case 12:a = aa[251]; break; case 13:a = aa[256]; break; case 14:a = aa[280]; break; case 15:a = aa[384]; break; case 16:a = aa[450]; break; case 17:a = aa[478]; break; case 18:a = aa[506]; break; case 19:a = aa[517]; break; case 20:a = aa[527]; break; case 21:a = aa[542]; break; case 22:a = aa[554]; break; case 23:a = aa[573]; break; case 24:a = aa[576]; break; case 25:a = aa[621]; break; default: a = 0; break; }; return a; } uint18_t get_data2(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[9 ]; break; case 1: a = aa[20 ]; break; case 2: a = aa[28 ]; break; case 3: a = aa[48 ]; break; case 4: a = aa[74 ]; break; case 5: a = aa[97 ]; break; case 6: a = aa[168]; break; case 7: a = aa[187]; break; case 8: a = aa[188]; break; case 9: a = aa[213]; break; case 10:a = aa[233]; break; case 11:a = aa[260]; break; case 12:a = aa[261]; break; case 13:a = aa[277]; break; case 14:a = aa[303]; break; case 15:a = aa[314]; break; case 16:a = aa[329]; break; case 17:a = aa[356]; break; case 18:a = aa[375]; break; case 19:a = aa[376]; break; case 20:a = aa[452]; break; case 21:a = aa[499]; break; case 22:a = aa[519]; break; case 23:a = aa[529]; break; case 24:a = aa[536]; break; case 25:a = aa[551]; break; case 26:a = aa[567]; break; case 27:a = aa[597]; break; case 28:a = aa[615]; break; default: a = 0; break; }; return a; } uint18_t get_data3(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[41 ]; break; case 1: a = aa[56 ]; break; case 2: a = aa[79 ]; break; case 3: a = aa[96 ]; break; case 4: a = aa[109]; break; case 5: a = aa[141]; break; case 6: a = aa[155]; break; case 7: a = aa[201]; break; case 8: a = aa[249]; break; case 9: a = aa[263]; break; case 10:a = aa[293]; break; case 11:a = aa[322]; break; case 12:a = aa[383]; break; case 13:a = aa[394]; break; case 14:a = aa[408]; break; case 15:a = aa[415]; break; case 16:a = aa[428]; break; case 17:a = aa[445]; break; case 18:a = aa[459]; break; case 19:a = aa[479]; break; case 20:a = aa[532]; break; case 21:a = aa[564]; break; case 22:a = aa[575]; break; case 23:a = aa[598]; break; case 24:a = aa[611]; break; default: a = 0; break; }; return a; } uint18_t get_data4(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[24 ]; break; case 1: a = aa[34 ]; break; case 2: a = aa[47 ]; break; case 3: a = aa[58 ]; break; case 4: a = aa[105]; break; case 5: a = aa[128]; break; case 6: a = aa[162]; break; case 7: a = aa[179]; break; case 8: a = aa[218]; break; case 9: a = aa[226]; break; case 10:a = aa[346]; break; case 11:a = aa[364]; break; case 12:a = aa[369]; break; case 13:a = aa[388]; break; case 14:a = aa[406]; break; case 15:a = aa[425]; break; case 16:a = aa[440]; break; case 17:a = aa[453]; break; case 18:a = aa[458]; break; case 19:a = aa[486]; break; case 20:a = aa[510]; break; case 21:a = aa[552]; break; case 22:a = aa[594]; break; default: a = 0; break; }; return a; } uint18_t get_data5(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[23 ]; break; case 1: a = aa[53 ]; break; case 2: a = aa[94 ]; break; case 3: a = aa[95 ]; break; case 4: a = aa[101]; break; case 5: a = aa[139]; break; case 6: a = aa[171]; break; case 7: a = aa[180]; break; case 8: a = aa[222]; break; case 9: a = aa[267]; break; case 10:a = aa[275]; break; case 11:a = aa[311]; break; case 12:a = aa[312]; break; case 13:a = aa[333]; break; case 14:a = aa[365]; break; case 15:a = aa[390]; break; case 16:a = aa[397]; break; case 17:a = aa[409]; break; case 18:a = aa[410]; break; case 19:a = aa[426]; break; case 20:a = aa[443]; break; case 21:a = aa[463]; break; case 22:a = aa[537]; break; case 23:a = aa[571]; break; case 24:a = aa[599]; break; case 25:a = aa[608]; break; default: a = 0; break; }; return a; } uint18_t get_data6(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[15 ]; break; case 1: a = aa[42 ]; break; case 2: a = aa[55 ]; break; case 3: a = aa[122]; break; case 4: a = aa[138]; break; case 5: a = aa[177]; break; case 6: a = aa[204]; break; case 7: a = aa[215]; break; case 8: a = aa[228]; break; case 9: a = aa[231]; break; case 10:a = aa[250]; break; case 11:a = aa[287]; break; case 12:a = aa[307]; break; case 13:a = aa[308]; break; case 14:a = aa[366]; break; case 15:a = aa[391]; break; case 16:a = aa[411]; break; case 17:a = aa[424]; break; case 18:a = aa[435]; break; case 19:a = aa[468]; break; case 20:a = aa[497]; break; case 21:a = aa[539]; break; case 22:a = aa[555]; break; case 23:a = aa[609]; break; default: a = 0; break; }; return a; } uint18_t get_data7(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[38 ]; break; case 1: a = aa[82 ]; break; case 2: a = aa[93 ]; break; case 3: a = aa[135]; break; case 4: a = aa[159]; break; case 5: a = aa[195]; break; case 6: a = aa[212]; break; case 7: a = aa[237]; break; case 8: a = aa[238]; break; case 9: a = aa[258]; break; case 10:a = aa[269]; break; case 11:a = aa[283]; break; case 12:a = aa[310]; break; case 13:a = aa[328]; break; case 14:a = aa[355]; break; case 15:a = aa[421]; break; case 16:a = aa[427]; break; case 17:a = aa[465]; break; case 18:a = aa[523]; break; case 19:a = aa[547]; break; case 20:a = aa[557]; break; case 21:a = aa[570]; break; case 22:a = aa[593]; break; case 23:a = aa[606]; break; default: a = 0; break; }; return a; } uint18_t get_data8(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0:a = aa[0]; break; default: a = 0; break; }; return a; } uint18_t get_data9(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[14 ]; break; case 1: a = aa[46 ]; break; case 2: a = aa[119]; break; case 3: a = aa[147]; break; case 4: a = aa[150]; break; case 5: a = aa[151]; break; case 6: a = aa[163]; break; case 7: a = aa[185]; break; case 8: a = aa[198]; break; case 9: a = aa[242]; break; case 10:a = aa[262]; break; case 11:a = aa[286]; break; case 12:a = aa[302]; break; case 13:a = aa[315]; break; case 14:a = aa[340]; break; case 15:a = aa[343]; break; case 16:a = aa[358]; break; case 17:a = aa[359]; break; case 18:a = aa[429]; break; case 19:a = aa[481]; break; case 20:a = aa[489]; break; case 21:a = aa[507]; break; case 22:a = aa[520]; break; case 23:a = aa[525]; break; case 24:a = aa[572]; break; case 25:a = aa[577]; break; case 26:a = aa[591]; break; default: a = 0; break; }; return a; } uint18_t get_data10(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[6 ]; break; case 1: a = aa[40 ]; break; case 2: a = aa[103]; break; case 3: a = aa[146]; break; case 4: a = aa[173]; break; case 5: a = aa[174]; break; case 6: a = aa[232]; break; case 7: a = aa[268]; break; case 8: a = aa[279]; break; case 9: a = aa[341]; break; case 10:a = aa[374]; break; case 11:a = aa[386]; break; case 12:a = aa[405]; break; case 13:a = aa[420]; break; case 14:a = aa[439]; break; case 15:a = aa[471]; break; case 16:a = aa[488]; break; case 17:a = aa[509]; break; case 18:a = aa[526]; break; case 19:a = aa[612]; break; default: a = 0; break; }; return a; } uint18_t get_data11(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[22 ]; break; case 1: a = aa[45 ]; break; case 2: a = aa[102]; break; case 3: a = aa[136]; break; case 4: a = aa[137]; break; case 5: a = aa[156]; break; case 6: a = aa[157]; break; case 7: a = aa[183]; break; case 8: a = aa[184]; break; case 9: a = aa[210]; break; case 10:a = aa[221]; break; case 11:a = aa[235]; break; case 12:a = aa[291]; break; case 13:a = aa[324]; break; case 14:a = aa[344]; break; case 15:a = aa[353]; break; case 16:a = aa[377]; break; case 17:a = aa[398]; break; case 18:a = aa[417]; break; case 19:a = aa[418]; break; case 20:a = aa[454]; break; case 21:a = aa[511]; break; case 22:a = aa[524]; break; case 23:a = aa[540]; break; case 24:a = aa[559]; break; case 25:a = aa[584]; break; case 26:a = aa[613]; break; default: a = 0; break; }; return a; } uint18_t get_data12(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[5 ]; break; case 1: a = aa[39 ]; break; case 2: a = aa[54 ]; break; case 3: a = aa[61 ]; break; case 4: a = aa[75 ]; break; case 5: a = aa[76 ]; break; case 6: a = aa[106]; break; case 7: a = aa[140]; break; case 8: a = aa[165]; break; case 9: a = aa[209]; break; case 10:a = aa[245]; break; case 11:a = aa[246]; break; case 12:a = aa[316]; break; case 13:a = aa[347]; break; case 14:a = aa[412]; break; case 15:a = aa[413]; break; case 16:a = aa[444]; break; case 17:a = aa[464]; break; case 18:a = aa[490]; break; case 19:a = aa[530]; break; case 20:a = aa[534]; break; case 21:a = aa[535]; break; case 22:a = aa[560]; break; case 23:a = aa[586]; break; case 24:a = aa[618]; break; default: a = 0; break; }; return a; } uint18_t get_data13(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[1 ]; break; case 1: a = aa[27 ]; break; case 2: a = aa[59 ]; break; case 3: a = aa[87 ]; break; case 4: a = aa[118]; break; case 5: a = aa[131]; break; case 6: a = aa[167]; break; case 7: a = aa[175]; break; case 8: a = aa[247]; break; case 9: a = aa[319]; break; case 10:a = aa[334]; break; case 11:a = aa[335]; break; case 12:a = aa[371]; break; case 13:a = aa[387]; break; case 14:a = aa[395]; break; case 15:a = aa[414]; break; case 16:a = aa[442]; break; case 17:a = aa[501]; break; case 18:a = aa[544]; break; case 19:a = aa[548]; break; case 20:a = aa[565]; break; case 21:a = aa[603]; break; case 22:a = aa[604]; break; default: a = 0; break; }; return a; } uint18_t get_data14(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[3 ]; break; case 1: a = aa[10 ]; break; case 2: a = aa[17 ]; break; case 3: a = aa[35 ]; break; case 4: a = aa[66 ]; break; case 5: a = aa[99 ]; break; case 6: a = aa[152]; break; case 7: a = aa[178]; break; case 8: a = aa[248]; break; case 9: a = aa[259]; break; case 10:a = aa[270]; break; case 11:a = aa[290]; break; case 12:a = aa[321]; break; case 13:a = aa[336]; break; case 14:a = aa[337]; break; case 15:a = aa[361]; break; case 16:a = aa[382]; break; case 17:a = aa[393]; break; case 18:a = aa[416]; break; case 19:a = aa[473]; break; case 20:a = aa[502]; break; case 21:a = aa[545]; break; case 22:a = aa[600]; break; default: a = 0; break; }; return a; } uint18_t get_data15(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[8 ]; break; case 1: a = aa[25 ]; break; case 2: a = aa[30 ]; break; case 3: a = aa[57 ]; break; case 4: a = aa[120]; break; case 5: a = aa[123]; break; case 6: a = aa[169]; break; case 7: a = aa[192]; break; case 8: a = aa[217]; break; case 9: a = aa[241]; break; case 10:a = aa[271]; break; case 11:a = aa[274]; break; case 12:a = aa[285]; break; case 13:a = aa[306]; break; case 14:a = aa[327]; break; case 15:a = aa[368]; break; case 16:a = aa[403]; break; case 17:a = aa[434]; break; case 18:a = aa[474]; break; case 19:a = aa[476]; break; case 20:a = aa[504]; break; case 21:a = aa[538]; break; case 22:a = aa[563]; break; case 23:a = aa[568]; break; case 24:a = aa[596]; break; default: a = 0; break; }; return a; } uint18_t get_data16(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[12 ]; break; case 1: a = aa[26 ]; break; case 2: a = aa[49 ]; break; case 3: a = aa[68 ]; break; case 4: a = aa[83 ]; break; case 5: a = aa[121]; break; case 6: a = aa[219]; break; case 7: a = aa[234]; break; case 8: a = aa[252]; break; case 9: a = aa[265]; break; case 10:a = aa[281]; break; case 11:a = aa[282]; break; case 12:a = aa[300]; break; case 13:a = aa[313]; break; case 14:a = aa[342]; break; case 15:a = aa[378]; break; case 16:a = aa[389]; break; case 17:a = aa[483]; break; case 18:a = aa[496]; break; case 19:a = aa[516]; break; case 20:a = aa[578]; break; case 21:a = aa[582]; break; case 22:a = aa[595]; break; default: a = 0; break; }; return a; } uint18_t get_data17(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[11 ]; break; case 1: a = aa[67 ]; break; case 2: a = aa[77 ]; break; case 3: a = aa[104]; break; case 4: a = aa[125]; break; case 5: a = aa[160]; break; case 6: a = aa[203]; break; case 7: a = aa[207]; break; case 8: a = aa[243]; break; case 9: a = aa[244]; break; case 10:a = aa[264]; break; case 11:a = aa[299]; break; case 12:a = aa[323]; break; case 13:a = aa[367]; break; case 14:a = aa[400]; break; case 15:a = aa[401]; break; case 16:a = aa[441]; break; case 17:a = aa[456]; break; case 18:a = aa[480]; break; case 19:a = aa[528]; break; case 20:a = aa[579]; break; case 21:a = aa[589]; break; case 22:a = aa[619]; break; default: a = 0; break; }; return a; } uint18_t get_data18(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[21 ]; break; case 1: a = aa[43 ]; break; case 2: a = aa[62 ]; break; case 3: a = aa[144]; break; case 4: a = aa[145]; break; case 5: a = aa[196]; break; case 6: a = aa[197]; break; case 7: a = aa[199]; break; case 8: a = aa[292]; break; case 9: a = aa[301]; break; case 10:a = aa[317]; break; case 11:a = aa[330]; break; case 12:a = aa[331]; break; case 13:a = aa[332]; break; case 14:a = aa[350]; break; case 15:a = aa[363]; break; case 16:a = aa[381]; break; case 17:a = aa[433]; break; case 18:a = aa[469]; break; case 19:a = aa[484]; break; case 20:a = aa[522]; break; case 21:a = aa[561]; break; case 22:a = aa[587]; break; case 23:a = aa[623]; break; case 24:a = aa[624]; break; default: a = 0; break; }; return a; } uint18_t get_data19(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[16 ]; break; case 1: a = aa[60 ]; break; case 2: a = aa[69 ]; break; case 3: a = aa[80 ]; break; case 4: a = aa[112]; break; case 5: a = aa[117]; break; case 6: a = aa[170]; break; case 7: a = aa[186]; break; case 8: a = aa[206]; break; case 9: a = aa[223]; break; case 10:a = aa[255]; break; case 11:a = aa[288]; break; case 12:a = aa[289]; break; case 13:a = aa[325]; break; case 14:a = aa[326]; break; case 15:a = aa[345]; break; case 16:a = aa[357]; break; case 17:a = aa[372]; break; case 18:a = aa[487]; break; case 19:a = aa[508]; break; case 20:a = aa[521]; break; case 21:a = aa[543]; break; case 22:a = aa[581]; break; default: a = 0; break; }; return a; } uint18_t get_data20(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[2 ]; break; case 1: a = aa[13 ]; break; case 2: a = aa[44 ]; break; case 3: a = aa[63 ]; break; case 4: a = aa[90 ]; break; case 5: a = aa[111]; break; case 6: a = aa[126]; break; case 7: a = aa[154]; break; case 8: a = aa[181]; break; case 9: a = aa[200]; break; case 10:a = aa[230]; break; case 11:a = aa[257]; break; case 12:a = aa[294]; break; case 13:a = aa[295]; break; case 14:a = aa[296]; break; case 15:a = aa[339]; break; case 16:a = aa[373]; break; case 17:a = aa[399]; break; case 18:a = aa[422]; break; case 19:a = aa[436]; break; case 20:a = aa[462]; break; case 21:a = aa[518]; break; case 22:a = aa[533]; break; case 23:a = aa[585]; break; case 24:a = aa[610]; break; default: a = 0; break; }; return a; } uint18_t get_data21(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[4 ]; break; case 1: a = aa[32 ]; break; case 2: a = aa[73 ]; break; case 3: a = aa[81 ]; break; case 4: a = aa[108]; break; case 5: a = aa[172]; break; case 6: a = aa[190]; break; case 7: a = aa[194]; break; case 8: a = aa[224]; break; case 9: a = aa[266]; break; case 10:a = aa[318]; break; case 11:a = aa[338]; break; case 12:a = aa[360]; break; case 13:a = aa[392]; break; case 14:a = aa[437]; break; case 15:a = aa[475]; break; case 16:a = aa[505]; break; case 17:a = aa[574]; break; case 18:a = aa[601]; break; default: a = 0; break; }; return a; } uint18_t get_data22(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[71 ]; break; case 1: a = aa[85 ]; break; case 2: a = aa[92 ]; break; case 3: a = aa[124]; break; case 4: a = aa[133]; break; case 5: a = aa[143]; break; case 6: a = aa[166]; break; case 7: a = aa[211]; break; case 8: a = aa[225]; break; case 9: a = aa[304]; break; case 10:a = aa[305]; break; case 11:a = aa[351]; break; case 12:a = aa[352]; break; case 13:a = aa[407]; break; case 14:a = aa[423]; break; case 15:a = aa[431]; break; case 16:a = aa[472]; break; case 17:a = aa[495]; break; case 18:a = aa[515]; break; case 19:a = aa[549]; break; case 20:a = aa[553]; break; case 21:a = aa[558]; break; case 22:a = aa[588]; break; case 23:a = aa[614]; break; default: a = 0; break; }; return a; } uint18_t get_data23(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[37 ]; break; case 1: a = aa[50 ]; break; case 2: a = aa[88 ]; break; case 3: a = aa[114]; break; case 4: a = aa[134]; break; case 5: a = aa[189]; break; case 6: a = aa[205]; break; case 7: a = aa[214]; break; case 8: a = aa[236]; break; case 9: a = aa[273]; break; case 10:a = aa[297]; break; case 11:a = aa[349]; break; case 12:a = aa[354]; break; case 13:a = aa[432]; break; case 14:a = aa[457]; break; case 15:a = aa[477]; break; case 16:a = aa[498]; break; case 17:a = aa[512]; break; case 18:a = aa[605]; break; case 19:a = aa[616]; break; default: a = 0; break; }; return a; } uint18_t get_data24(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[31 ]; break; case 1: a = aa[84 ]; break; case 2: a = aa[113]; break; case 3: a = aa[116]; break; case 4: a = aa[129]; break; case 5: a = aa[158]; break; case 6: a = aa[182]; break; case 7: a = aa[227]; break; case 8: a = aa[276]; break; case 9: a = aa[380]; break; case 10:a = aa[404]; break; case 11:a = aa[460]; break; case 12:a = aa[470]; break; case 13:a = aa[493]; break; case 14:a = aa[494]; break; case 15:a = aa[503]; break; case 16:a = aa[514]; break; case 17:a = aa[566]; break; case 18:a = aa[580]; break; case 19:a = aa[602]; break; case 20:a = aa[617]; break; default: a = 0; break; }; return a; } uint18_t get_data25(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[33 ]; break; case 1: a = aa[51 ]; break; case 2: a = aa[64 ]; break; case 3: a = aa[78 ]; break; case 4: a = aa[86 ]; break; case 5: a = aa[110]; break; case 6: a = aa[130]; break; case 7: a = aa[216]; break; case 8: a = aa[254]; break; case 9: a = aa[298]; break; case 10:a = aa[320]; break; case 11:a = aa[402]; break; case 12:a = aa[419]; break; case 13:a = aa[438]; break; case 14:a = aa[446]; break; case 15:a = aa[455]; break; case 16:a = aa[491]; break; case 17:a = aa[500]; break; case 18:a = aa[590]; break; case 19:a = aa[622]; break; default: a = 0; break; }; return a; } uint18_t get_data26(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[70 ]; break; case 1: a = aa[89 ]; break; case 2: a = aa[115]; break; case 3: a = aa[127]; break; case 4: a = aa[142]; break; case 5: a = aa[272]; break; case 6: a = aa[348]; break; case 7: a = aa[370]; break; case 8: a = aa[379]; break; case 9: a = aa[430]; break; case 10:a = aa[461]; break; case 11:a = aa[485]; break; case 12:a = aa[513]; break; case 13:a = aa[541]; break; case 14:a = aa[550]; break; case 15:a = aa[583]; break; case 16:a = aa[607]; break; default: a = 0; break; }; return a; } uint18_t get_data27(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[36 ]; break; case 1: a = aa[91 ]; break; case 2: a = aa[98 ]; break; case 3: a = aa[107]; break; case 4: a = aa[176]; break; case 5: a = aa[202]; break; case 6: a = aa[278]; break; case 7: a = aa[467]; break; case 8: a = aa[482]; break; case 9: a = aa[546]; break; case 10:a = aa[556]; break; case 11:a = aa[569]; break; case 12:a = aa[592]; break; case 13:a = aa[620]; break; default: a = 0; break; }; return a; } void get_all_data(uint18_t output[12], uint10_t addr_list[12], uint18_t aa[ROWS*COLS]) { #pragma HLS inline #pragma HLS interface ap_stable port=aa uint5_t bank[12]; #pragma HLS array_partition variable=bank complete dim=0 uint5_t offset[12]; #pragma HLS array_partition variable=offset complete dim=0 uint5_t offset_for_banks[28]; #pragma HLS array_partition variable=offset_for_banks complete dim=0 uint18_t data_from_banks[28]; #pragma HLS array_partition variable=data_from_banks complete dim=0 COMPUTE_BANK_AND_OFFSET: for (int i = 0; i < 12; i ++ ) { #pragma HLS unroll bank[i] = get_bank(addr_list[i]); offset[i] = get_offset(addr_list[i]); } ASSIGN_OFFSET_FOR_BANKS: for (int i = 0; i < 28; i ++ ) { #pragma HLS unroll offset_for_banks[i] = (bank[ 0] == i) ? offset[ 0] : (bank[ 1] == i) ? offset[ 1] : (bank[ 2] == i) ? offset[ 2] : (bank[ 3] == i) ? offset[ 3] : (bank[ 4] == i) ? offset[ 4] : (bank[ 5] == i) ? offset[ 5] : (bank[ 6] == i) ? offset[ 6] : (bank[ 7] == i) ? offset[ 7] : (bank[ 8] == i) ? offset[ 8] : (bank[ 9] == i) ? offset[ 9] : (bank[10] == i) ? offset[10] : (bank[11] == i) ? offset[11] : uint5_t("0",10); } READ_ALL_BANKS: data_from_banks[ 0] = get_data0 (offset_for_banks[ 0], aa); data_from_banks[ 1] = get_data1 (offset_for_banks[ 1], aa); data_from_banks[ 2] = get_data2 (offset_for_banks[ 2], aa); data_from_banks[ 3] = get_data3 (offset_for_banks[ 3], aa); data_from_banks[ 4] = get_data4 (offset_for_banks[ 4], aa); data_from_banks[ 5] = get_data5 (offset_for_banks[ 5], aa); data_from_banks[ 6] = get_data6 (offset_for_banks[ 6], aa); data_from_banks[ 7] = get_data7 (offset_for_banks[ 7], aa); data_from_banks[ 8] = get_data8 (offset_for_banks[ 8], aa); data_from_banks[ 9] = get_data9 (offset_for_banks[ 9], aa); data_from_banks[10] = get_data10(offset_for_banks[10], aa); data_from_banks[11] = get_data11(offset_for_banks[11], aa); data_from_banks[12] = get_data12(offset_for_banks[12], aa); data_from_banks[13] = get_data13(offset_for_banks[13], aa); data_from_banks[14] = get_data14(offset_for_banks[14], aa); data_from_banks[15] = get_data15(offset_for_banks[15], aa); data_from_banks[16] = get_data16(offset_for_banks[16], aa); data_from_banks[17] = get_data17(offset_for_banks[17], aa); data_from_banks[18] = get_data18(offset_for_banks[18], aa); data_from_banks[19] = get_data19(offset_for_banks[19], aa); data_from_banks[20] = get_data20(offset_for_banks[20], aa); data_from_banks[21] = get_data21(offset_for_banks[21], aa); data_from_banks[22] = get_data22(offset_for_banks[22], aa); data_from_banks[23] = get_data23(offset_for_banks[23], aa); data_from_banks[24] = get_data24(offset_for_banks[24], aa); data_from_banks[25] = get_data25(offset_for_banks[25], aa); data_from_banks[26] = get_data26(offset_for_banks[26], aa); data_from_banks[27] = get_data27(offset_for_banks[27], aa); CHOOSE_DATA: for (int i = 0; i < 12; i ++ ) { #pragma HLS unroll output[i] = data_from_banks[bank[i]]; } } // classifiers int classifier0( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[4][6]; coord[1] = II[4][18]; coord[2] = II[13][6]; coord[3] = II[13][18]; coord[4] = II[7][6]; coord[5] = II[7][18]; coord[6] = II[10][6]; coord[7] = II[10][18]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-129 * stddev)) return_value = -567; else return_value = 534; return return_value; } int classifier1( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[4][6]; coord[1] = II[4][18]; coord[2] = II[11][6]; coord[3] = II[11][18]; coord[4] = II[4][10]; coord[5] = II[4][14]; coord[6] = II[11][10]; coord[7] = II[11][14]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (50 * stddev)) return_value = 339; else return_value = -477; return return_value; } int classifier2( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[9][3]; coord[1] = II[9][21]; coord[2] = II[18][3]; coord[3] = II[18][21]; coord[4] = II[12][3]; coord[5] = II[12][21]; coord[6] = II[15][3]; coord[7] = II[15][21]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (89 * stddev)) return_value = 272; else return_value = -386; return return_value; } int classifier3( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[18][8]; coord[1] = II[18][17]; coord[2] = II[24][8]; coord[3] = II[24][17]; coord[4] = II[20][8]; coord[5] = II[20][17]; coord[6] = II[22][8]; coord[7] = II[22][17]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (23 * stddev)) return_value = 301; else return_value = -223; return return_value; } int classifier4( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[5][3]; coord[1] = II[5][7]; coord[2] = II[24][3]; coord[3] = II[24][7]; coord[4] = II[5][5]; coord[5] = II[5][7]; coord[6] = II[24][5]; coord[7] = II[24][7]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (61 * stddev)) return_value = 322; else return_value = -199; return return_value; } int classifier5( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[5][6]; coord[1] = II[5][18]; coord[2] = II[21][6]; coord[3] = II[21][18]; coord[4] = II[13][6]; coord[5] = II[13][18]; coord[6] = II[21][6]; coord[7] = II[21][18]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (407 * stddev)) return_value = -479; else return_value = 142; return return_value; } int classifier6( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[8][5]; coord[1] = II[8][17]; coord[2] = II[14][5]; coord[3] = II[14][17]; coord[4] = II[11][5]; coord[5] = II[11][17]; coord[6] = II[14][5]; coord[7] = II[14][17]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (11 * stddev)) return_value = 112; else return_value = -432; return return_value; } int classifier7( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[14][11]; coord[1] = II[14][15]; coord[2] = II[24][11]; coord[3] = II[24][15]; coord[4] = II[19][11]; coord[5] = II[19][15]; coord[6] = II[24][11]; coord[7] = II[24][15]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-77 * stddev)) return_value = 113; else return_value = -378; return return_value; } int classifier8( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[0][4]; coord[1] = II[0][11]; coord[2] = II[6][4]; coord[3] = II[6][11]; coord[4] = II[3][4]; coord[5] = II[3][11]; coord[6] = II[6][4]; coord[7] = II[6][11]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (24 * stddev)) return_value = 218; else return_value = -219; return return_value; } int classifier9( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][6]; coord[1] = II[6][18]; coord[2] = II[12][6]; coord[3] = II[12][18]; coord[4] = II[8][6]; coord[5] = II[8][18]; coord[6] = II[10][6]; coord[7] = II[10][18]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-86 * stddev)) return_value = -402; else return_value = 318; return return_value; } int classifier10( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[4][6]; coord[1] = II[4][18]; coord[2] = II[11][6]; coord[3] = II[11][18]; coord[4] = II[4][10]; coord[5] = II[4][14]; coord[6] = II[11][10]; coord[7] = II[11][14]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (83 * stddev)) return_value = 302; else return_value = -414; return return_value; } int classifier11( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[8][1]; coord[1] = II[8][20]; coord[2] = II[20][1]; coord[3] = II[20][20]; coord[4] = II[12][1]; coord[5] = II[12][20]; coord[6] = II[16][1]; coord[7] = II[16][20]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (87 * stddev)) return_value = 179; else return_value = -497; return return_value; } int classifier12( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[2][0]; coord[1] = II[2][24]; coord[2] = II[5][0]; coord[3] = II[5][24]; coord[4] = II[2][8]; coord[5] = II[2][16]; coord[6] = II[5][8]; coord[7] = II[5][16]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (375 * stddev)) return_value = 442; else return_value = -142; return return_value; } int classifier13( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[9][9]; coord[1] = II[9][15]; coord[2] = II[24][9]; coord[3] = II[24][15]; coord[4] = II[14][9]; coord[5] = II[14][15]; coord[6] = II[19][9]; coord[7] = II[19][15]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (148 * stddev)) return_value = -558; else return_value = 68; return return_value; } int classifier14( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][5]; coord[1] = II[6][19]; coord[2] = II[16][5]; coord[3] = II[16][19]; coord[4] = II[11][5]; coord[5] = II[11][19]; coord[6] = II[16][5]; coord[7] = II[16][19]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-78 * stddev)) return_value = 116; else return_value = -684; return return_value; } int classifier15( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[0][5]; coord[1] = II[0][19]; coord[2] = II[9][5]; coord[3] = II[9][19]; coord[4] = II[3][5]; coord[5] = II[3][19]; coord[6] = II[6][5]; coord[7] = II[6][19]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (33 * stddev)) return_value = 137; else return_value = -277; return return_value; } int classifier16( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[11][13]; coord[1] = II[11][22]; coord[2] = II[17][13]; coord[3] = II[17][22]; coord[4] = II[11][16]; coord[5] = II[11][19]; coord[6] = II[17][16]; coord[7] = II[17][19]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (75 * stddev)) return_value = 238; else return_value = -90; return return_value; } int classifier17( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[5][7]; coord[1] = II[5][13]; coord[2] = II[15][7]; coord[3] = II[15][13]; coord[4] = II[5][9]; coord[5] = II[5][11]; coord[6] = II[15][9]; coord[7] = II[15][11]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-28 * stddev)) return_value = -169; else return_value = 237; return return_value; } int classifier18( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[8][10]; coord[1] = II[8][16]; coord[2] = II[18][10]; coord[3] = II[18][16]; coord[4] = II[8][12]; coord[5] = II[8][14]; coord[6] = II[18][12]; coord[7] = II[18][14]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-40 * stddev)) return_value = -76; else return_value = 296; return return_value; } int classifier19( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[5][2]; coord[1] = II[5][6]; coord[2] = II[14][2]; coord[3] = II[14][6]; coord[4] = II[5][4]; coord[5] = II[5][6]; coord[6] = II[14][4]; coord[7] = II[14][6]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (64 * stddev)) return_value = 347; else return_value = -107; return return_value; } int classifier20( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[0][18]; coord[1] = II[0][24]; coord[2] = II[11][18]; coord[3] = II[11][24]; coord[4] = II[0][20]; coord[5] = II[0][22]; coord[6] = II[11][20]; coord[7] = II[11][22]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-84 * stddev)) return_value = -50; else return_value = 373; return return_value; } int classifier21( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][0]; coord[1] = II[6][24]; coord[2] = II[19][0]; coord[3] = II[19][24]; coord[4] = II[6][8]; coord[5] = II[6][16]; coord[6] = II[19][8]; coord[7] = II[19][16]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-563 * stddev)) return_value = -135; else return_value = 286; return return_value; } int classifier22( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][9]; coord[1] = II[6][15]; coord[2] = II[15][9]; coord[3] = II[15][15]; coord[4] = II[6][11]; coord[5] = II[6][13]; coord[6] = II[15][11]; coord[7] = II[15][13]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (58 * stddev)) return_value = 292; else return_value = -89; return return_value; } int classifier23( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[18][7]; coord[1] = II[18][17]; coord[2] = II[24][7]; coord[3] = II[24][17]; coord[4] = II[20][7]; coord[5] = II[20][17]; coord[6] = II[22][7]; coord[7] = II[22][17]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (41 * stddev)) return_value = 197; else return_value = -155; return return_value; } int classifier24( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[7][5]; coord[1] = II[7][19]; coord[2] = II[19][5]; coord[3] = II[19][19]; coord[4] = II[13][5]; coord[5] = II[13][19]; coord[6] = II[19][5]; coord[7] = II[19][19]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (374 * stddev)) return_value = -387; else return_value = 99; return return_value; } int classifier25( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[3][0]; coord[1] = II[3][24]; coord[2] = II[6][0]; coord[3] = II[6][24]; coord[4] = II[3][8]; coord[5] = II[3][16]; coord[6] = II[6][8]; coord[7] = II[6][16]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (285 * stddev)) return_value = 375; else return_value = -259; return return_value; } int classifier26( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[8][5]; coord[1] = II[8][20]; coord[2] = II[14][5]; coord[3] = II[14][20]; coord[4] = II[11][5]; coord[5] = II[11][20]; coord[6] = II[14][5]; coord[7] = II[14][20]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (129 * stddev)) return_value = 256; else return_value = -421; return return_value; } int classifier27( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][9]; coord[1] = II[6][14]; coord[2] = II[20][9]; coord[3] = II[20][14]; coord[4] = II[13][9]; coord[5] = II[13][14]; coord[6] = II[20][9]; coord[7] = II[20][14]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (58 * stddev)) return_value = -408; else return_value = 118; return return_value; } int classifier28( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[5][9]; coord[1] = II[5][15]; coord[2] = II[15][9]; coord[3] = II[15][15]; coord[4] = II[5][11]; coord[5] = II[5][13]; coord[6] = II[15][11]; coord[7] = II[15][13]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (59 * stddev)) return_value = 212; else return_value = -167; return return_value; } int classifier29( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][6]; coord[1] = II[6][9]; coord[2] = II[18][6]; coord[3] = II[18][9]; coord[4] = II[12][6]; coord[5] = II[12][9]; coord[6] = II[18][6]; coord[7] = II[18][9]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-12 * stddev)) return_value = 108; else return_value = -357; return return_value; } int classifier30( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[21][3]; coord[1] = II[21][21]; coord[2] = II[24][3]; coord[3] = II[24][21]; coord[4] = II[21][9]; coord[5] = II[21][15]; coord[6] = II[24][9]; coord[7] = II[24][15]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (134 * stddev)) return_value = 269; else return_value = -129; return return_value; } int classifier31( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][5]; coord[1] = II[6][18]; coord[2] = II[12][5]; coord[3] = II[12][18]; coord[4] = II[8][5]; coord[5] = II[8][18]; coord[6] = II[10][5]; coord[7] = II[10][18]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-29 * stddev)) return_value = -344; else return_value = 93; return return_value; } int classifier32( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[1][18]; coord[1] = II[1][24]; coord[2] = II[16][18]; coord[3] = II[16][24]; coord[4] = II[1][18]; coord[5] = II[1][21]; coord[6] = II[16][18]; coord[7] = II[16][21]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (206 * stddev)) return_value = 371; else return_value = -77; return return_value; } int classifier33( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[1][1]; coord[1] = II[1][7]; coord[2] = II[16][1]; coord[3] = II[16][7]; coord[4] = II[1][4]; coord[5] = II[1][7]; coord[6] = II[16][4]; coord[7] = II[16][7]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (192 * stddev)) return_value = 310; else return_value = -103; return return_value; } int classifier34( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[8][0]; coord[1] = II[8][24]; coord[2] = II[23][0]; coord[3] = II[23][24]; coord[4] = II[8][8]; coord[5] = II[8][16]; coord[6] = II[23][8]; coord[7] = II[23][16]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-284 * stddev)) return_value = -117; else return_value = 269; return return_value; } int classifier35( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][5]; coord[1] = II[6][19]; coord[2] = II[18][5]; coord[3] = II[18][19]; coord[4] = II[6][5]; coord[5] = II[6][12]; coord[6] = II[12][5]; coord[7] = II[12][12]; coord[8] = II[12][12]; coord[9] = II[12][19]; coord[10] = II[18][12]; coord[11] = II[18][19]; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 8192; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-200 * stddev)) return_value = 39; else return_value = -416; return return_value; } int classifier36( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[12][2]; coord[1] = II[12][23]; coord[2] = II[24][2]; coord[3] = II[24][23]; coord[4] = II[16][2]; coord[5] = II[16][23]; coord[6] = II[20][2]; coord[7] = II[20][23]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (347 * stddev)) return_value = -400; else return_value = 72; return return_value; } int classifier37( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[1][8]; coord[1] = II[1][12]; coord[2] = II[11][8]; coord[3] = II[11][12]; coord[4] = II[1][10]; coord[5] = II[1][12]; coord[6] = II[11][10]; coord[7] = II[11][12]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-7 * stddev)) return_value = 59; else return_value = -259; return return_value; } int classifier38( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[13][2]; coord[1] = II[13][22]; coord[2] = II[23][2]; coord[3] = II[23][22]; coord[4] = II[13][2]; coord[5] = II[13][12]; coord[6] = II[23][2]; coord[7] = II[23][12]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (473 * stddev)) return_value = 327; else return_value = -42; return return_value; } int classifier39( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[1][0]; coord[1] = II[1][6]; coord[2] = II[14][0]; coord[3] = II[14][6]; coord[4] = II[1][2]; coord[5] = II[1][4]; coord[6] = II[14][2]; coord[7] = II[14][4]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-210 * stddev)) return_value = -77; else return_value = 388; return return_value; } int classifier40( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[2][20]; coord[1] = II[2][24]; coord[2] = II[15][20]; coord[3] = II[15][24]; coord[4] = II[2][20]; coord[5] = II[2][22]; coord[6] = II[15][20]; coord[7] = II[15][22]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-174 * stddev)) return_value = -13; else return_value = 451; return return_value; } int classifier41( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[5][0]; coord[1] = II[5][22]; coord[2] = II[24][0]; coord[3] = II[24][22]; coord[4] = II[5][11]; coord[5] = II[5][22]; coord[6] = II[24][11]; coord[7] = II[24][22]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (1522 * stddev)) return_value = 393; else return_value = -80; return return_value; } int classifier42( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[4][18]; coord[1] = II[4][24]; coord[2] = II[13][18]; coord[3] = II[13][24]; coord[4] = II[4][20]; coord[5] = II[4][22]; coord[6] = II[13][20]; coord[7] = II[13][22]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (79 * stddev)) return_value = 239; else return_value = -25; return return_value; } int classifier43( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[3][0]; coord[1] = II[3][6]; coord[2] = II[14][0]; coord[3] = II[14][6]; coord[4] = II[3][2]; coord[5] = II[3][4]; coord[6] = II[14][2]; coord[7] = II[14][4]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (71 * stddev)) return_value = 246; else return_value = -103; return return_value; } int classifier44( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[1][12]; coord[1] = II[1][16]; coord[2] = II[10][12]; coord[3] = II[10][16]; coord[4] = II[1][12]; coord[5] = II[1][14]; coord[6] = II[10][12]; coord[7] = II[10][14]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (162 * stddev)) return_value = -757; else return_value = 43; return return_value; } int classifier45( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][0]; coord[1] = II[6][19]; coord[2] = II[9][0]; coord[3] = II[9][19]; coord[4] = II[7][0]; coord[5] = II[7][19]; coord[6] = II[8][0]; coord[7] = II[8][19]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-37 * stddev)) return_value = -112; else return_value = 227; return return_value; } int classifier46( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[1][12]; coord[1] = II[1][16]; coord[2] = II[10][12]; coord[3] = II[10][16]; coord[4] = II[1][12]; coord[5] = II[1][14]; coord[6] = II[10][12]; coord[7] = II[10][14]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (7 * stddev)) return_value = 102; else return_value = -95; return return_value; } int classifier47( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[1][8]; coord[1] = II[1][12]; coord[2] = II[10][8]; coord[3] = II[10][12]; coord[4] = II[1][10]; coord[5] = II[1][12]; coord[6] = II[10][10]; coord[7] = II[10][12]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (123 * stddev)) return_value = -677; else return_value = 16; return return_value; } int classifier48( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[5][5]; coord[1] = II[5][19]; coord[2] = II[19][5]; coord[3] = II[19][19]; coord[4] = II[5][12]; coord[5] = II[5][19]; coord[6] = II[12][12]; coord[7] = II[12][19]; coord[8] = II[12][5]; coord[9] = II[12][12]; coord[10] = II[19][5]; coord[11] = II[19][12]; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 8192; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-322 * stddev)) return_value = 72; else return_value = -447; return return_value; } int classifier49( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[10][1]; coord[1] = II[10][19]; coord[2] = II[12][1]; coord[3] = II[12][19]; coord[4] = II[11][1]; coord[5] = II[11][19]; coord[6] = II[12][1]; coord[7] = II[12][19]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (8 * stddev)) return_value = 59; else return_value = -240; return return_value; } int classifier50( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[13][17]; coord[1] = II[13][21]; coord[2] = II[24][17]; coord[3] = II[24][21]; coord[4] = II[13][17]; coord[5] = II[13][19]; coord[6] = II[24][17]; coord[7] = II[24][19]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (110 * stddev)) return_value = 275; else return_value = -13; return return_value; } int classifier51( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[4][0]; coord[1] = II[4][6]; coord[2] = II[13][0]; coord[3] = II[13][6]; coord[4] = II[7][0]; coord[5] = II[7][6]; coord[6] = II[10][0]; coord[7] = II[10][6]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-184 * stddev)) return_value = 25; else return_value = -468; return return_value; } /****************************************************************************************/ /* FUNCTION DECLARATIONS ****************************************************************************************/ void imageScaler ( int src_height, int src_width, unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH], int dest_height, int dest_width, unsigned char IMG1_data[IMAGE_HEIGHT][IMAGE_WIDTH] ); void processImage ( float _factor, int sum_row, int sum_col, int *AllCandidates_x, int *AllCandidates_y, int *AllCandidates_w, int *AllCandidates_h, int *AllCandidates_size, unsigned char IMG1_data[IMAGE_HEIGHT][IMAGE_WIDTH], MySize winSize ); int cascadeClassifier ( MyPoint pt, int_II II[WINDOW_SIZE][WINDOW_SIZE], int_SII SII[SQ_SIZE][SQ_SIZE] ); int weakClassifier ( int stddev, uint18_t coord[12], int haar_counter, int w_id ); void groupRectangles ( MyRect *rectList, int *rectList_size, int groupThreshold, float eps ); unsigned int int_sqrt ( ap_uint<32> value ); inline int myRound ( float value ) { return (int)(value + (value >= 0 ? 0.5 : -0.5)); } //======================================================================================== // TOP LEVEL MODULE OR DUT (DEVICE UNDER TEST) //======================================================================================== extern "C" { void face_detect ( unsigned char inData[IMAGE_HEIGHT * IMAGE_WIDTH], int result_x[RESULT_SIZE], int result_y[RESULT_SIZE], int result_w[RESULT_SIZE], int result_h[RESULT_SIZE], int *result_size ) { #pragma HLS INTERFACE m_axi port=inData offset=slave bundle=gmem0 #pragma HLS INTERFACE m_axi port=result_x offset=slave bundle=gmem1 #pragma HLS INTERFACE m_axi port=result_y offset=slave bundle=gmem2 #pragma HLS INTERFACE m_axi port=result_w offset=slave bundle=gmem3 #pragma HLS INTERFACE m_axi port=result_h offset=slave bundle=gmem4 #pragma HLS INTERFACE m_axi port=result_size offset=slave bundle=gmem5 #pragma HLS INTERFACE s_axilite port=inData bundle=control #pragma HLS INTERFACE s_axilite port=result_x bundle=control #pragma HLS INTERFACE s_axilite port=result_y bundle=control #pragma HLS INTERFACE s_axilite port=result_w bundle=control #pragma HLS INTERFACE s_axilite port=result_h bundle=control #pragma HLS INTERFACE s_axilite port=result_size bundle=control #pragma HLS INTERFACE s_axilite port=return bundle=control static unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH]; int i, j; int result_x_Scale[RESULT_SIZE]; int result_y_Scale[RESULT_SIZE]; int result_w_Scale[RESULT_SIZE]; int result_h_Scale[RESULT_SIZE]; int res_size_Scale = 0; int *result_size_Scale = &res_size_Scale; for (int i = 0; i < IMAGE_HEIGHT; i ++ ) for (int j = 0; j < IMAGE_WIDTH; j ++ ) #pragma HLS pipeline Data[i][j] = inData[i * IMAGE_WIDTH + j]; float scaleFactor = 1.2; unsigned char IMG1_data[IMAGE_HEIGHT][IMAGE_WIDTH]; int height, width; float factor; MySize winSize0; winSize0.width = 24; winSize0.height= 24; factor = scaleFactor ; L1: while ( IMAGE_WIDTH/factor > WINDOW_SIZE && IMAGE_HEIGHT/factor > WINDOW_SIZE ) { /* size of the image scaled up */ MySize winSize = { myRound(winSize0.width*factor), myRound(winSize0.height*factor) }; /* size of the image scaled down (from bigger to smaller) */ MySize sz = { ( IMAGE_WIDTH/factor ), ( IMAGE_HEIGHT/factor ) }; height = sz.height; width = sz.width; imageScaler ( IMAGE_HEIGHT, IMAGE_WIDTH, Data, height, width, IMG1_data ); processImage ( factor, height, width, result_x_Scale, result_y_Scale, result_w_Scale, result_h_Scale, result_size_Scale, IMG1_data, winSize ); factor *= scaleFactor; } /* end of the factor loop, finish all scales in pyramid*/ for ( i = 0; i < RESULT_SIZE; i++){ result_x[i] = result_x_Scale[i]; result_y[i] = result_y_Scale[i]; result_w[i] = result_w_Scale[i]; result_h[i] = result_h_Scale[i]; } *result_size = *result_size_Scale; } } void processImage ( float factor, int sum_row, int sum_col, int *AllCandidates_x, int *AllCandidates_y, int *AllCandidates_w, int *AllCandidates_h, int *AllCandidates_size, unsigned char IMG1_data[IMAGE_HEIGHT][IMAGE_WIDTH], MySize winSize ) { #pragma HLS inline off MyPoint p; int result; int step; int u,v; int x,y,i,j,k; /** Image Line buffer ( 24 BRAMs ) */ unsigned char L[WINDOW_SIZE-1][IMAGE_WIDTH]; #pragma HLS array_partition variable=L complete dim=1 /** Image Window buffer ( 1250 registers )*/ static int_I I[WINDOW_SIZE][2*WINDOW_SIZE]; #pragma HLS array_partition variable=I complete dim=0 /** Integral Image Window buffer ( 625 registers )*/ static int_II II[WINDOW_SIZE][WINDOW_SIZE]; #pragma HLS array_partition variable=II complete dim=0 /** Square Image Window buffer ( 1250 registers ) **/ static int_SI SI[WINDOW_SIZE][2*WINDOW_SIZE]; #pragma HLS array_partition variable=SI complete dim=0 /** Square Integral Image Window buffer ( 625 registers )*/ static int_SII SII[SQ_SIZE][SQ_SIZE]; #pragma HLS array_partition variable=SII complete dim=0 Initialize0u : for ( u = 0; u < WINDOW_SIZE; u++ ){ #pragma HLS unroll Initailize0v: for ( v = 0; v < WINDOW_SIZE; v++ ){ #pragma HLS unroll II[u][v] = 0; } } SII[0][0] = 0; SII[0][1] = 0; SII[1][0] = 0; SII[1][1] = 0; Initialize1i: for ( i = 0; i < WINDOW_SIZE ; i++ ){ #pragma HLS unroll Initialize1j: for ( j = 0; j < 2*WINDOW_SIZE; j++ ){ #pragma HLS unroll I[i][j] = 0; SI[i][j] = 0; } } Initialize2y : for ( y = 0; y < WINDOW_SIZE-1; y++ ){ #pragma HLS unroll Initialize2x : for ( x = 0; x < IMAGE_WIDTH ; x++){//IMAGE_WIDTH; x++ ){ L[y][x] = 0; } } int element_counter = 0; int x_index = 0; int y_index = 0; int ii, jj; /** Loop over each point in the Image ( scaled ) **/ Pixely: for( y = 0; y < sum_row; y++ ){ Pixelx : for ( x = 0; x < sum_col; x++ ){ /* Updates for Integral Image Window Buffer (I) */ SetIIu: for ( u = 0; u < WINDOW_SIZE; u++){ #pragma HLS unroll SetIIj: for ( v = 0; v < WINDOW_SIZE; v++ ){ #pragma HLS unroll II[u][v] = II[u][v] + ( I[u][v+1] - I[u][0] ); } } /* Updates for Square Image Window Buffer (SI) */ SII[0][0] = SII[0][0] + ( SI[0][1] - SI[0][0] ); SII[0][1] = SII[0][1] + ( SI[0][WINDOW_SIZE] - SI[0][0] ); SII[1][0] = SII[1][0] + ( SI[WINDOW_SIZE-1][1] - SI[WINDOW_SIZE-1][0] ); SII[1][1] = SII[1][1] + ( SI[WINDOW_SIZE-1][WINDOW_SIZE] - SI[WINDOW_SIZE-1][0] ); /* Updates for Image Window Buffer (I) and Square Image Window Bufer (SI) */ SetIj: for( j = 0; j < 2*WINDOW_SIZE-1; j++){ #pragma HLS unroll SetIi: for( i = 0; i < WINDOW_SIZE; i++ ){ #pragma HLS unroll if( i+j != 2*WINDOW_SIZE-1 ){ I[i][j] = I[i][j+1]; SI[i][j] = SI[i][j+1]; } else if ( i > 0 ){ I[i][j] = I[i][j+1] + I[i-1][j+1]; SI[i][j] = SI[i][j+1] + SI[i-1][j+1]; } } } /** Last column of the I[][] matrix **/ Ilast: for( i = 0; i < WINDOW_SIZE-1; i++ ){ #pragma HLS unroll I[i][2*WINDOW_SIZE-1] = L[i][x]; SI[i][2*WINDOW_SIZE-1] = L[i][x]*L[i][x]; } I[WINDOW_SIZE-1][2*WINDOW_SIZE-1] = IMG1_data[y][x]; SI[WINDOW_SIZE-1][2*WINDOW_SIZE-1] = IMG1_data[y][x]*IMG1_data[y][x]; /** Updates for Image Line Buffer (L) **/ LineBuf: for( k = 0; k < WINDOW_SIZE-2; k++ ){ #pragma HLS unroll L[k][x] = L[k+1][x]; } L[WINDOW_SIZE-2][x] = IMG1_data[y][x]; /* Pass the Integral Image Window buffer through Cascaded Classifier. Only pass * when the integral image window buffer has flushed out the initial garbage data */ if ( element_counter >= ( ( (WINDOW_SIZE-1)*sum_col + WINDOW_SIZE ) + WINDOW_SIZE -1 ) ) { /* Sliding Window should not go beyond the boundary */ if ( x_index < ( sum_col - (WINDOW_SIZE-1) ) && y_index < ( sum_row - (WINDOW_SIZE-1) ) ){ p.x = x_index; p.y = y_index; result = cascadeClassifier ( p, II, SII ); if ( result > 0 ) { MyRect r = {myRound(p.x*factor), myRound(p.y*factor), winSize.width, winSize.height}; AllCandidates_x[*AllCandidates_size]=r.x; AllCandidates_y[*AllCandidates_size]=r.y; AllCandidates_w[*AllCandidates_size]=r.width; AllCandidates_h[*AllCandidates_size]=r.height; *AllCandidates_size=*AllCandidates_size+1; } }// inner if if ( x_index < sum_col-1 ) x_index = x_index + 1; else{ x_index = 0; y_index = y_index + 1; } } // outer if element_counter +=1; } } } int cascadeClassifier ( MyPoint pt, int_II II[WINDOW_SIZE][WINDOW_SIZE], int_SII SII[SQ_SIZE][SQ_SIZE] ) { #pragma HLS INLINE int i, j, k; int mean; int stddev = 0; int haar_counter = 0; int w_index = 0; int r_index = 0; int stage_sum=0; /* The rectangle co-ordinagte values for all the classifiers */ #include "ocl/haar_dataRcc_with_partitioning.h" static uint18_t coord[12]; #pragma HLS array_partition variable=coord complete dim=0 static int s0[9]; #pragma HLS array_partition variable=s0 complete dim=0 static int s1[16]; #pragma HLS array_partition variable=s1 complete dim=0 static int s2[27]; #pragma HLS array_partition variable=s2 complete dim=0 /* Banking */ /* 12 (x,y,w,h) values corresponding to 3 rectangles that need to be read */ uint18_t values[12]; #pragma HLS array_partition variable=values complete dim=0 /* location/address of those 12 values in the 25 X 25 window */ uint10_t addr_list[12]; #pragma HLS array_partition variable=addr_list complete dim=0 /* among the 12 values which of them are needed to be read from the 25 X 25 window */ bit enable_list[12] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; #pragma HLS array_partition variable=enable_list complete dim=0 uint18_t _II[WINDOW_SIZE*WINDOW_SIZE]; #pragma HLS array_partition variable=_II complete dim=0 COPY_LOOP1: for (int i = 0; i < WINDOW_SIZE; i ++ ){ #pragma HLS unroll COPY_LOOP2: for (int j = 0; j < WINDOW_SIZE; j ++ ){ #pragma HLS unroll _II[i*25+j] = II[i][j]; } } stddev = SII[0][0] - SII[0][SQ_SIZE- 1] - SII[SQ_SIZE-1][0] + SII[SQ_SIZE-1][SQ_SIZE-1]; mean = II[0][0] - II[0][WINDOW_SIZE - 1] - II[WINDOW_SIZE - 1][0] + II[WINDOW_SIZE - 1][WINDOW_SIZE - 1]; stddev = (stddev*(WINDOW_SIZE-1)*(WINDOW_SIZE-1)); stddev = stddev - mean*mean; if( stddev > 0 ) stddev = int_sqrt(stddev); else stddev = 1; MyRect tr0,tr1,tr2; int r_id; int w_id; int s; /* Hard-Coding Classifier 0 */ stage_sum = 0; s0[0] = classifier0( II, stddev ); s0[1] = classifier1( II, stddev ); s0[2] = classifier2( II, stddev ); s0[3] = classifier3( II, stddev ); s0[4] = classifier4( II, stddev ); s0[5] = classifier5( II, stddev ); s0[6] = classifier6( II, stddev ); s0[7] = classifier7( II, stddev ); s0[8] = classifier8( II, stddev ); stage_sum = s0[0] + s0[1] + s0[2] + s0[3] + s0[4] + s0[5] + s0[6] + s0[7] + s0[8]; if( stage_sum < 0.4*stages_thresh_array[0] ) return -1; haar_counter += 9; /* Hard-Coding Classifier 1 */ stage_sum = 0; s1[0] = classifier9( II, stddev ); s1[1] = classifier10( II, stddev ); s1[2] = classifier11( II, stddev ); s1[3] = classifier12( II, stddev ); s1[4] = classifier13( II, stddev ); s1[5] = classifier14( II, stddev ); s1[6] = classifier15( II, stddev ); s1[7] = classifier16( II, stddev ); s1[8] = classifier17( II, stddev ); s1[9] = classifier18( II, stddev ); s1[10] = classifier19( II, stddev ); s1[11] = classifier20( II, stddev ); s1[12] = classifier21( II, stddev ); s1[13] = classifier22( II, stddev ); s1[14] = classifier23( II, stddev ); s1[15] = classifier24( II, stddev ); stage_sum = s1[0] + s1[1] + s1[2] + s1[3] + s1[4] + s1[5] + s1[6] + s1[7]; stage_sum+= s1[8] + s1[9] + s1[10] + s1[11] + s1[12] + s1[13] + s1[14] + s1[15]; if( stage_sum < 0.4*stages_thresh_array[1] ) return -1; haar_counter += 16; /* Hard-Coding Classifier 2 */ stage_sum = 0; s2[0] = classifier25( II, stddev ); s2[1] = classifier26( II, stddev ); s2[2] = classifier27( II, stddev ); s2[3] = classifier28( II, stddev ); s2[4] = classifier29( II, stddev ); s2[5] = classifier30( II, stddev ); s2[6] = classifier31( II, stddev ); s2[7] = classifier32( II, stddev ); s2[8] = classifier33( II, stddev ); s2[9] = classifier34( II, stddev ); s2[10] = classifier35( II, stddev ); s2[11] = classifier36( II, stddev ); s2[12] = classifier37( II, stddev ); s2[13] = classifier38( II, stddev ); s2[14] = classifier39( II, stddev ); s2[15] = classifier40( II, stddev ); s2[16] = classifier41( II, stddev ); s2[17] = classifier42( II, stddev ); s2[18] = classifier43( II, stddev ); s2[19] = classifier44( II, stddev ); s2[20] = classifier45( II, stddev ); s2[21] = classifier46( II, stddev ); s2[22] = classifier47( II, stddev ); s2[23] = classifier48( II, stddev ); s2[24] = classifier49( II, stddev ); s2[25] = classifier50( II, stddev ); s2[26] = classifier51( II, stddev ); stage_sum = s2[0] + s2[1] + s2[2] + s2[3] + s2[4] + s2[5] + s2[6] + s2[7]; stage_sum+= s2[8] + s2[9] + s2[10] + s2[11] + s2[12] + s2[13] + s2[14] + s2[15]; stage_sum+= s2[16] + s2[17] + s2[18] + s2[19] + s2[20] + s2[21] + s2[22] + s2[23]; stage_sum+= s2[24] + s2[25] + s2[26]; if( stage_sum < 0.4*stages_thresh_array[2] ) return -1; haar_counter += 27; /******************************************/ // REST 23 STAGES /*****************************************/ Stages: for ( i = 3; i < 25; i++ ){ Filters: for ( j = 0; j < stages_array[i] ; j++ ){ #pragma HLS pipeline if ( j == 0 ) { stage_sum = 0; s=0; } r_id = r_index; w_id = w_index; tr0.x = rectangles_array0[haar_counter]; tr0.width = rectangles_array2[haar_counter]; tr0.y = rectangles_array1[haar_counter]; tr0.height = rectangles_array3[haar_counter]; tr1.x = rectangles_array4[haar_counter]; tr1.width = rectangles_array6[haar_counter]; tr1.y = rectangles_array5[haar_counter]; tr1.height = rectangles_array7[haar_counter]; tr2.x = rectangles_array8[haar_counter]; tr2.width = rectangles_array10[haar_counter]; tr2.y = rectangles_array9[haar_counter]; tr2.height = rectangles_array11[haar_counter]; /* Calculates addresses/locations of all the 12 co-ordinates */ addr_list[ 0] = tr0.y *25+ tr0.x; addr_list[ 1] = tr0.y *25+tr0.x+tr0.width; addr_list[ 2] = (tr0.y+tr0.height)*25+tr0.x; addr_list[ 3] = (tr0.y+tr0.height)*25+tr0.x+tr0.width; addr_list[ 4] = tr1.y *25+tr1.x; addr_list[ 5] = tr1.y *25+tr1.x+tr1.width; addr_list[ 6] = (tr1.y+tr1.height)*25+tr1.x; addr_list[ 7] = (tr1.y+tr1.height)*25+tr1.x+tr1.width; if (!(tr2.x ==0 && tr2.width==0 && tr2.y==0 && tr2.height==0 ) && tr2.width!=0 && tr2.height!=0) { addr_list[ 8] = tr2.y *25+tr2.x; addr_list[ 9] = tr2.y *25+tr2.x+tr2.width; addr_list[10] = (tr2.y+tr2.height)*25+tr2.x; addr_list[11] = (tr2.y+tr2.height)*25+tr2.x+tr2.width; enable_list[ 8] = 1; enable_list[ 9] = 1; enable_list[10] = 1; enable_list[11] = 1; } else { addr_list[ 8] = addr_list[0]; addr_list[ 9] = addr_list[1]; addr_list[10] = addr_list[2]; addr_list[11] = addr_list[3]; enable_list[ 8] = 0; enable_list[ 9] = 0; enable_list[10] = 0; enable_list[11] = 0; } /* Read the values corresponding to the 12 locations from _II which is the copy of integral image window */ get_all_data(values, addr_list, _II); for ( k = 0; k < 12; k++ ){ if ( enable_list[k] == 0 ) coord[k] = 0; else coord[k] = values[k]; } s = weakClassifier ( stddev, coord, haar_counter, w_id ); stage_sum = stage_sum + s; haar_counter = haar_counter+1; w_index = w_index+3; r_index = r_index+12; } /* end of j loop */ if( stage_sum < 0.4*stages_thresh_array[i] ){ return -i; } } /* end of i loop */ return 1; } int weakClassifier ( int stddev, uint18_t coord[12], int haar_counter, int w_id ) { /* weights and threshold values for various classifiers */ #include "ocl/haar_dataEWC_with_partitioning.h" # pragma HLS INLINE int t = tree_thresh_array[haar_counter] * stddev; int sum0 =0; int sum1 =0; int sum2 =0; int final_sum =0; int return_value; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * weights_array0[haar_counter]; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * weights_array1[haar_counter]; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * weights_array2[haar_counter]; final_sum = sum0+sum1+sum2; if(final_sum >= t) return_value = alpha2_array[haar_counter]; else return_value = alpha1_array[haar_counter]; return return_value ; } void imageScaler ( int src_height, int src_width, unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH], int dest_height, int dest_width, unsigned char IMG1_data[IMAGE_HEIGHT][IMAGE_WIDTH] ) { int y; int j; int x; int i; unsigned char* t; unsigned char* p; int w1 = src_width; int h1 = src_height; int w2 = dest_width; int h2 = dest_height; int rat = 0; int x_ratio = (int)((w1<<16)/w2) +1; int y_ratio = (int)((h1<<16)/h2) +1; imageScalerL1: for ( i = 0 ; i < IMAGE_HEIGHT ; i++ ){ imageScalerL1_1: for (j=0;j < IMAGE_WIDTH ;j++){ #pragma HLS pipeline if ( j < w2 && i < h2 ) IMG1_data[i][j] = Data[(i*y_ratio)>>16][(j*x_ratio)>>16]; } } } unsigned int int_sqrt ( ap_uint<32> value ) { int i; unsigned int a = 0, b = 0, c = 0; for ( i = 0 ; i < (32 >> 1) ; i++ ) { #pragma HLS unroll c<<= 2; #define UPPERBITS(value) (value>>30) c += UPPERBITS(value); #undef UPPERBITS value <<= 2; a <<= 1; b = (a<<1) | 1; if ( c >= b ) { c -= b; a++; } } return a; } int max ( int a, int b ) { if ( a > b ) return a; else return b; } int min ( int a, int b ) { if ( a < b ) return a; else return b; } ================================================ FILE: face-detection/src/ocl/haar_dataEWC_with_partitioning.h ================================================ static int weights_array0[2913] = { -4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096}; static int weights_array1[2913] = { 12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,12288,8192,8192,12288,8192,12288,12288,8192,8192,12288,8192,12288,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,12288,12288,8192,8192,12288,8192,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,8192,12288,8192,8192,8192,8192,8192,8192,12288,8192,8192,12288,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,12288,8192,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,12288,12288,8192,12288,8192,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,8192,8192,12288,12288,8192,8192,12288,12288,8192,8192,12288,12288,8192,8192,12288,12288,12288,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,12288,12288,8192,12288,12288,8192,12288,12288,12288,8192,8192,8192,8192,12288,12288,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,8192,12288,12288,12288,8192,8192,8192,8192,12288,8192,12288,8192,8192,12288,12288,8192,12288,12288,12288,8192,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,12288,8192,8192,8192,12288,8192,12288,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,8192,12288,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,12288,8192,12288,12288,12288,8192,12288,12288,8192,8192,12288,12288,12288,8192,12288,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,8192,8192,12288,12288,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,8192,12288,8192,8192,12288,8192,12288,12288,12288,12288,12288,8192,12288,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,12288,12288,12288,8192,12288,8192,12288,12288,12288,12288,8192,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,8192,12288,12288,12288,8192,8192,8192,8192,8192,12288,8192,8192,12288,12288,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,12288,12288,8192,8192,12288,12288,8192,8192,8192,12288,12288,8192,8192,8192,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,12288,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,8192,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,8192,8192,8192,12288,12288,8192,12288,12288,8192,8192,8192,12288,12288,12288,8192,12288,12288,8192,12288,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,12288,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,12288,8192,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,12288,12288,8192,12288,12288,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,12288,12288,8192,8192,12288,12288,8192,12288,8192,8192,8192,8192,8192,8192,12288,8192,12288,8192,12288,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,12288,8192,8192,12288,8192,12288,8192,8192,8192,8192,8192,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,12288,8192,12288,8192,8192,12288,12288,8192,8192,12288,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,12288,8192,12288,12288,8192,8192,8192,12288,8192,8192,8192,12288,12288,8192,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,12288,8192,8192,12288,12288,12288,12288,8192,12288,8192,8192,8192,12288,12288,8192,8192,8192,12288,12288,12288,8192,8192,8192,8192,12288,8192,12288,8192,12288,8192,12288,12288,8192,12288,12288,12288,12288,8192,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,8192,12288,8192,12288,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,12288,8192,12288,12288,12288,12288,8192,12288,8192,8192,12288,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,12288,8192,12288,8192,12288,8192,8192,8192,12288,8192,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,8192,8192,12288,8192,12288,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,12288,8192,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,8192,8192,12288,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,12288,8192,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,8192,8192,12288,8192,12288,8192,12288,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,12288,12288,8192,8192,12288,12288,8192,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,12288,8192,12288,8192,12288,8192,12288,12288,8192,8192,12288,12288,8192,12288,12288,8192,12288,12288,8192,12288,8192,12288,12288,8192,8192,12288,8192,12288,12288,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,8192,8192,12288,12288,12288,8192,8192,12288,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,12288,12288,8192,12288,8192,12288,8192,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,8192,12288,8192,12288,8192,8192,12288,12288,12288,8192,8192,8192,12288,12288,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,8192,8192,8192,8192,12288,12288,8192,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,8192,12288,12288,8192,8192,8192,12288,12288,8192,12288,8192,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,12288,8192,8192,8192,12288,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,8192,8192,12288,8192,12288,8192,12288,8192,8192,12288,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,8192,12288,12288,8192,12288,8192,12288,8192,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,8192,12288,8192,8192,12288,8192,8192,8192,8192,12288,8192,12288,12288,8192,12288,8192,8192,12288,8192,12288,8192,8192,12288,12288,12288,8192,12288,12288,12288,12288,8192,12288,12288,8192,12288,12288,12288,8192,8192,12288,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,8192,8192,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,12288,12288,8192,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,12288,8192,12288,8192,12288,8192,8192,12288,8192,12288,8192,12288,8192,12288,8192,8192,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,12288,12288,8192,8192,12288,12288,8192,8192,8192,12288,8192,8192,12288,8192,8192,8192,12288,8192,12288,8192,12288,8192,12288,12288,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,8192,8192,12288,8192,8192,8192,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,12288,8192,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,8192,12288,12288,8192,12288,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,8192,8192,8192,12288,8192,12288,8192,8192,12288,12288,8192,8192,12288,12288,12288,8192,8192,8192,12288,12288,12288,12288,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,8192,12288,12288,12288,8192,12288,12288,8192,8192,12288,12288,8192,12288,12288,12288,12288,8192,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,12288,8192,12288,12288,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,8192,12288,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,12288,8192,8192,8192,8192,8192,12288,8192,12288,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,8192,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,12288,12288,8192,8192,8192,12288,12288,12288,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,8192,8192,8192,12288,12288,8192,8192,12288,12288,8192,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,8192,12288,12288,8192,12288,8192,12288,12288,8192,8192,8192,8192,8192,12288,8192,8192,12288,8192,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,12288,8192,8192,8192,12288,12288,8192,8192,8192,12288,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,8192,12288,12288,8192,12288,8192,12288,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,12288,8192,12288,12288,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,12288,8192,8192,8192,12288,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,12288,12288,8192,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,8192,12288,12288,8192,8192,8192,12288,12288,8192,12288,8192,8192,12288,12288,8192,8192,12288,12288,8192,12288,8192,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,8192,8192,12288,8192,8192,12288,12288,12288,8192,12288,8192,12288,12288,12288,12288,12288,8192,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,8192,8192,8192,12288,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,12288,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,12288,12288,12288,8192,12288,8192,12288,8192,8192,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,8192}; static int weights_array2[2913] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,8192,0,0,0,0,0,8192,8192,0,0,0,0,0,8192,0,0,0,8192,8192,0,0,0,0,0,8192,8192,0,0,0,0,0,8192,8192,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,8192,8192,0,0,8192,8192,0,0,0,0,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,8192,8192,0,0,0,0,8192,8192,8192,0,8192,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,0,8192,8192,0,0,0,0,8192,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,8192,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,8192,0,0,8192,0,0,8192,0,0,0,0,8192,0,0,8192,0,0,0,0,8192,8192,0,0,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,8192,8192,8192,0,0,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,8192,0,0,0,0,0,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,0,0,0,8192,0,8192,8192,0,0,8192,8192,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,8192,8192,8192,0,8192,0,8192,0,8192,0,8192,0,0,8192,0,0,8192,8192,0,8192,0,0,0,0,0,0,0,0,8192,8192,0,8192,8192,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,0,0,8192,8192,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,8192,8192,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,8192,0,8192,0,0,0,8192,0,0,0,0,0,0,8192,8192,8192,0,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,8192,8192,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,8192,0,0,0,8192,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,8192,0,8192,0,8192,0,8192,8192,8192,0,8192,8192,8192,8192,8192,8192,8192,8192,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,8192,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,8192,8192,0,8192,0,0,0,0,0,0,0,0,0,8192,8192,8192,8192,0,8192,8192,8192,8192,8192,0,8192,0,0,8192,8192,0,0,8192,0,8192,8192,8192,8192,0,0,0,0,8192,8192,0,8192,0,8192,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,8192,0,0,0,0,8192,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,0,8192,0,0,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,8192,0,0,0,8192,8192,0,8192,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,0,8192,0,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,8192,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,0,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,0,0,8192,0,0,8192,0,0,8192,0,0,0,8192,8192,0,0,0,0,0,0,0,0,8192,0,0,8192,0,0,0,8192,8192,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,8192,8192,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,8192,0,8192,8192,8192,0,0,0,0,8192,0,8192,0,0,0,0,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,0,0,8192,0,0,0,0,0,8192,0,8192,0,8192,8192,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,8192,8192,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,8192,0,8192,8192,8192,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,8192,8192,8192,8192,0,0,8192,8192,0,0,0,0,0,8192,8192,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,8192,0,0,8192,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,8192,0,0,8192,0,0,0,0,8192,0,8192,0,0,0,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,8192,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,8192,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,8192,8192,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,8192,8192,0,8192,0,0,0,0,8192,8192,0,0,8192,8192,0,0,8192,0,8192,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,0,0,0,0,8192,0,0,0,8192,0,0,0,8192,8192,0,0,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,0,0,0,8192,0,0,8192,8192,8192,0,0,8192,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,8192,8192,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,8192,8192,8192,8192,0,0,8192,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,8192,8192,0,8192,8192,8192,0,0,0,0,0,0,0,0,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,8192,8192,0,0,8192,0,8192,8192,0,8192,0,0,8192,0,8192,8192,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,8192,0,8192,0,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,8192,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,0,8192,0,8192,8192,8192,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,8192,0,8192,8192,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,8192,8192,8192,8192,8192,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,8192,0,8192,0,0,0,0,0,0,0,0,0,0,8192}; static int alpha1_array[2913] = { 534,-477,-386,-223,-199,142,-432,-378,-219,318,-414,-497,-142,68,-684,-277,-90,237,296,-107,373,286,-89,-155,99,-259,-421,118,-167,-357,-129,93,-77,-103,269,-416,72,-259,-42,388,451,-80,-25,-103,43,227,-95,16,-447,-240,-13,-468,295,-400,-147,-373,-213,-80,-111,381,-246,-626,44,124,45,-501,253,-660,368,-126,-596,-216,-369,46,17,100,37,63,-193,-93,-594,108,284,-851,-311,-123,-276,-307,-112,-47,77,319,-152,72,123,68,-335,116,-443,-49,-412,190,-68,-15,-89,-268,211,52,52,-332,-335,-269,-351,-9,-255,370,-95,-147,4,-20,-294,95,67,193,57,-323,222,-355,16,-137,-90,-150,-85,178,220,49,-228,-322,-220,-191,-323,-251,164,-61,-87,281,402,-70,-280,78,66,-315,104,-24,-105,64,-240,318,-83,89,14,-262,263,55,-408,-263,-378,-61,74,-59,-309,62,-350,54,83,-72,-591,73,-69,-392,19,36,-282,3,-88,51,-104,-569,-73,-227,-285,-258,66,-146,-141,-329,446,-269,145,334,-118,-106,92,-228,75,-203,39,8,-100,22,141,-473,-123,-115,-216,90,47,-320,-208,-237,144,205,-217,-103,-391,161,150,-65,74,-101,53,112,240,2,-259,-96,-206,-270,51,-97,54,-262,-263,-53,225,267,35,-425,204,-245,50,-265,-315,-194,-99,-183,141,-114,-279,214,-65,80,-268,41,-176,63,-129,10,36,-229,-116,86,-202,-584,100,8,-277,-481,37,-260,39,-197,-29,17,-450,245,119,181,-281,-279,-67,-56,47,-237,502,54,-300,-287,-43,211,-295,-268,-279,108,-235,-408,-169,49,-162,-48,-27,-276,87,121,249,-556,-164,-377,108,6,40,-103,-510,-159,259,-262,-291,-145,78,-440,59,-311,83,-81,-28,101,0,192,-212,-152,40,8,-133,-136,51,11,-233,23,54,-69,-26,16,-237,34,50,-292,43,-121,-553,11,-8,-337,94,-65,-19,-201,435,198,-382,-546,145,173,63,3,-2,115,-243,-515,101,-63,-14,11,-125,-76,-153,-7,95,-255,36,-54,-337,126,108,-7,-202,-576,-65,-57,-73,-8,152,-122,58,-66,-153,181,-143,-182,-285,-104,-97,-179,-139,-25,216,67,39,-509,-82,152,5,-112,-228,54,3,257,-376,-208,29,33,-301,161,47,-238,9,93,50,-429,-787,54,-293,214,-71,45,246,2,-136,210,-50,-6,-347,-165,215,49,-186,-92,14,120,-290,251,-72,-163,95,-334,-523,198,44,-384,73,354,-57,-406,-305,-39,66,-22,192,31,-93,-19,200,-229,211,4,289,-147,-5,-139,-313,37,-71,-62,-219,177,-42,112,-250,-231,-202,-77,-230,-107,117,233,-376,-268,74,-329,-219,41,40,5,-42,-249,252,121,-245,-134,43,-290,66,50,-13,272,-47,-7,255,-7,0,-391,8,196,41,-250,118,65,-206,-336,51,249,-48,-174,48,-60,63,-266,131,414,764,154,-158,169,-287,-275,207,-5,173,14,-33,-96,-149,-77,151,248,233,-154,11,-239,46,-330,-11,-3,-68,-131,106,-63,-57,16,48,-242,94,246,-785,58,0,243,-25,2,165,-9,177,-103,-165,250,-26,156,-260,-105,-149,-237,30,-148,-98,301,-220,-191,235,68,-72,-157,147,83,22,88,60,-190,-231,-88,-239,-136,235,-181,-222,-58,-77,68,-302,-139,-69,-233,-112,6,202,205,-51,-11,-231,90,-50,-358,0,-125,-312,95,-75,-368,-577,96,-75,-255,12,38,-3,-36,-4,-443,-61,1,9,19,-434,161,-85,58,49,23,-446,-61,301,35,-139,-55,16,175,445,78,-54,-203,95,-3,310,-5,-271,-8,9,-20,-491,123,-50,50,-49,463,199,39,-42,-26,-9,-14,71,32,5,48,18,12,-69,13,97,39,6,41,-157,-217,-208,-93,-304,84,-130,-268,-129,-254,-24,59,-26,0,-167,72,39,-74,349,312,-209,-312,30,-299,-273,-92,125,150,-19,70,-1,210,33,-232,2,455,146,-82,49,17,-99,-6,-491,-328,-103,-186,148,234,-132,61,42,-349,-437,-80,38,190,-104,208,84,-321,353,-9,-47,-114,173,-3,86,-271,37,-62,33,-268,-387,35,73,-69,47,83,29,-283,205,-67,4,3,-78,-411,19,-1,-61,490,-64,-177,46,-7,16,2,38,99,-397,55,-12,-65,-46,139,-177,75,236,-203,84,-351,16,92,-39,34,27,-2,0,-120,-2,-88,383,-254,-147,-8,102,46,139,174,-230,-144,92,-142,-274,-183,-120,54,171,-244,208,315,-78,54,-231,57,-101,47,39,55,-378,-43,9,85,1,115,39,-333,-62,7,-57,52,175,-2,-51,121,-283,259,106,54,-296,90,-393,51,-6,43,-306,-279,71,-11,-67,154,97,33,30,-87,-43,156,-124,-1030,-100,-22,293,-5,9,144,-44,323,171,-105,-234,0,-95,-108,-42,38,352,-86,195,-177,-3,-26,273,47,-56,65,-2,-73,-9,84,-89,-368,-302,566,-478,-196,-161,218,-8,-49,527,-29,-4,-10,-170,-14,156,-146,14,44,-171,75,-72,-27,-13,115,-520,43,-5,77,-79,-460,-13,53,-51,-244,-36,-279,26,15,-343,12,-262,21,-37,168,-232,-127,-108,-122,130,-59,103,115,-217,-238,-327,149,-13,-222,-19,-63,-287,-371,137,17,292,-63,-10,150,39,43,-38,-102,71,0,105,-365,-64,11,-240,-69,-264,161,41,-64,-74,-2,28,-49,79,-1,-117,-3,-19,-68,46,-48,-37,-134,-98,-1,-148,5,-166,-86,38,-64,-28,-249,97,-266,-1410,244,2,57,42,-221,-721,-331,-208,168,1,78,65,-367,-43,-166,-13,-235,137,-139,39,-62,-130,-55,29,-3,311,-64,57,64,-83,-14,0,-78,-62,120,98,-12,54,-43,29,-11,-103,-84,-185,-40,49,210,-110,-7,28,557,-12,-83,294,-99,-429,-249,53,-42,60,-237,-188,36,2,-304,622,183,40,-208,238,-144,-202,-362,97,-104,-61,-223,39,-293,39,10,111,111,-24,-97,228,220,153,-406,43,130,-110,-80,270,-183,63,-176,-151,11,-157,-78,-351,-143,1,400,-404,-397,44,-334,-353,-181,-10,147,-126,-125,-154,60,-20,-308,59,-207,157,-75,-156,-136,-329,-43,-28,261,-200,-225,29,-207,-18,-329,121,-15,44,-51,-17,-326,31,3,158,-92,134,-43,-304,214,90,-225,-36,-74,-8,177,-165,-7,-2,217,-531,-219,98,-441,140,-9,149,-3,38,132,-5,-220,-116,33,33,-64,5,-100,21,-46,-158,-12,45,-215,-48,-203,-60,-14,67,-171,172,77,37,-47,48,115,34,-53,82,-51,40,-160,42,-64,39,145,146,-98,56,-73,-166,-74,116,-131,4,100,304,-174,-217,-282,-50,-104,-75,-334,60,74,-620,225,205,37,-208,-181,-186,43,708,29,-1,59,-79,-12,-297,-69,-138,46,160,61,-240,-19,10,43,-8,24,-101,-58,-70,-27,-12,38,-5,-205,-53,51,-46,127,299,-16,-59,-210,155,-10,-294,-2,96,-25,171,40,97,38,-174,65,-7,-90,-9,-6,27,119,-72,-5,-83,-313,-4,167,-133,-200,0,-13,4,-159,45,11,116,85,-598,-169,117,-68,-47,-6,-8,1,108,-5,-8,28,74,30,37,-137,-15,-115,310,-590,-183,18,-313,34,-7,34,-37,49,-95,207,214,-242,11,-497,-54,153,-56,161,-59,46,-178,88,-224,60,-15,-50,247,-15,-116,29,463,59,126,155,102,-217,-202,-172,9,35,-35,35,-51,-119,-241,83,70,60,-147,-156,-144,-205,-207,35,-42,369,34,-86,-29,-254,-123,9,-278,244,-265,230,-259,157,-21,16,-239,-215,155,-7,33,-289,194,76,5,-218,-15,91,0,-8,151,152,-300,-4,41,-57,70,-194,-58,49,42,328,-138,162,-127,-303,5,7,-53,0,-56,-2,114,-52,-196,-361,49,215,32,-119,132,-7,62,250,51,-65,43,-219,143,-65,1,-154,107,58,23,-68,-185,-89,29,-2,52,148,4,-84,351,0,-3,96,-703,121,-148,-2,89,364,61,-2,-4,-231,-54,50,-23,-141,47,496,-67,-140,-655,-63,41,56,79,-244,32,-15,10,-11,10,7,264,-17,-152,-16,14,-1,37,-45,-152,-276,199,-16,-4,-14,87,-67,-33,7,6,115,-50,-138,-3,17,174,-52,182,-94,-220,-69,-88,-81,-176,-53,-126,343,11,-182,257,-3,-209,138,-86,-306,-227,42,160,-72,-163,-196,116,-195,11,-12,-5,-245,-179,-72,-64,-178,117,46,-161,-263,88,-74,-113,45,-2,423,-1,0,-158,180,100,-6,120,82,-314,11,-42,86,-218,14,133,160,-157,-216,-16,-45,-7,-62,-60,100,-68,44,-277,184,-304,161,338,-86,-65,36,-298,-101,126,479,-227,-298,-171,-122,30,-19,-51,236,-68,-138,4,-3,-45,53,5,-4,-48,104,-52,-434,-7,-51,-115,60,-46,-70,-118,106,37,192,-48,90,-164,4,270,76,-55,61,-8,-1,19,20,-35,-476,-47,36,411,-207,-356,8,-141,5,113,46,-16,51,-81,222,163,44,61,138,612,40,0,-29,-269,-51,-54,28,-439,165,-2,50,-221,35,86,-640,129,-750,-153,86,-283,114,-266,8,135,-137,-128,-84,-81,27,-36,241,-139,3,-80,-1,-195,61,-24,-202,-26,-103,52,0,-1,-93,-365,-10,67,-214,-125,-48,59,-9,-456,-55,-45,-2,77,-243,8,250,-5,-14,167,6,-1,87,-1,-134,-149,5,-93,9,-37,-55,-277,-39,11,-396,42,-197,28,283,70,-206,36,50,-12,-42,-32,-8,-16,-93,30,-133,166,44,-50,-130,-17,-104,-54,-127,-52,46,3,-53,63,-488,-182,-43,48,1,43,-578,616,-69,80,-371,-4,-59,36,-56,-29,6,45,-37,-134,225,-123,-54,-18,-63,2,-45,33,-11,44,-289,-57,116,-38,-174,166,114,-22,-119,74,-309,-11,-68,-33,497,39,-182,235,-57,-185,319,-370,-200,-218,-38,140,93,-8,-157,-16,-87,-77,19,-249,47,-15,83,-75,-310,33,-169,42,-13,51,-201,73,442,4,-19,81,196,47,-60,44,-11,205,-209,38,-186,145,10,-507,128,102,-196,221,-143,10,-49,47,-12,362,337,12,-53,-319,66,58,-220,80,64,68,-138,183,-149,-190,45,-275,6,-115,-69,-125,106,41,-282,166,107,90,-74,-338,-224,66,-253,162,6,-144,0,-24,-167,-119,-271,129,-78,-285,-222,168,-58,46,-84,-30,98,-228,137,-14,-390,19,-50,-163,21,-110,102,135,-99,224,-298,279,35,34,-3,45,-135,-28,100,-65,-6,202,-122,-44,0,4,51,47,-15,-83,-159,-8,50,52,-145,191,217,42,-340,-15,195,57,-407,30,-335,0,167,18,-172,85,116,-11,68,-212,-172,-18,7,34,-152,103,-278,74,167,-501,-58,40,-99,439,-97,-791,-35,-16,-144,64,-670,15,239,35,-3,15,182,37,-95,-60,-7,47,-39,38,-42,-18,-5,-46,-116,68,-39,17,70,-787,-374,226,35,-263,19,30,172,54,114,9,-50,34,215,44,-45,-36,267,28,-201,-155,-3,-523,-107,6,-44,-56,-17,330,-297,17,-45,56,158,-118,-32,-77,-57,64,74,49,-193,21,-68,34,-103,41,79,-68,39,293,-182,106,-341,36,-12,163,-55,-206,-81,-164,-117,117,93,6,44,-246,-181,18,-191,174,-32,18,244,-72,98,0,217,-236,-139,-1,184,49,29,-13,-27,-46,42,52,239,0,0,185,256,-11,3,-241,-111,-45,148,-5,-36,249,-21,-529,112,73,-146,88,143,-37,61,110,5,46,38,-50,0,323,166,-264,-122,-53,132,-54,46,-37,-72,-114,10,101,563,-71,87,73,163,20,-114,-251,58,214,29,-9,-346,-45,32,205,41,39,-471,-206,-35,-6,-188,-116,53,102,-5,-127,45,11,44,-118,13,38,35,-73,-77,-251,12,60,120,-53,42,-144,-911,-9,-144,-7,-136,-56,36,-88,245,445,355,13,-23,9,243,-34,58,-56,329,-1012,96,-6,43,-239,33,-292,126,-79,-97,-47,-151,-39,82,-40,193,-226,61,-479,33,-6,119,102,-400,-492,34,261,-24,28,154,-48,29,-71,185,-49,39,-14,-412,-15,41,-45,1190,-43,233,56,-230,-96,-97,-46,-57,181,122,-47,10,-59,-117,85,-42,57,38,-380,-49,34,-277,-151,-125,152,-302,-156,-292,-421,-79,-177,-183,57,264,115,-218,148,-96,-67,-7,52,171,44,-214,-8,107,17,-40,-181,-41,99,4,12,-69,216,39,-237,132,35,-230,50,24,-15,62,156,232,-80,-170,15,204,48,150,-65,-3,52,-274,-148,-169,-123,147,-13,31,28,-444,34,-120,178,431,203,-259,36,129,-40,-139,-44,64,238,-8,89,17,36,-263,-50,-198,33,-39,38,-182,284,238,-50,107,-132,-11,13,-60,-226,-52,34,-44,14,40,182,-40,-88,-142,-924,132,-22,7,60,-10,117,-195,-957,-163,49,-41,5,-434,303,-104,39,125,-62,-12,111,48,-112,-52,79,-79,35,-130,122,115,33,-10,-88,1,20,297,-82,-46,0,-37,-101,-46,37,-15,87,79,-9,-45,-258,-137,123,67,9,-153,39,-37,3,-4,91,306,-158,-467,-7680,-61,-8,-39,-15,-165,278,-66,35,-53,37,7,323,-32,-175,-122,-120,65,-123,-61,194,-89,-202,120,171,63,-55,71,14,-255,-305,38,-363,-72,121,-15,-219,42,-300,67,9,-10,73,-360,-54,86,-64,10,135,64,1,-127,21,-133,-161,329,213,28,-345,-346,103,-67,150,-42,3,-4,-61,-137,192,-41,-44,59,64,33,-214,603,48,37,-11,45,-252,-41,-61,36,-266,50,-232,-7,-255,187,71,1,-51,165,-47,-74,-17,-3,-53,-91,277,54,132,-112,8,3,87,84,-64,35,-3,48,89,-9,-109,170,-125,33,-14,-147,249,45,-207,71,-34,-17,-46,-40,74,113,-49,-2,-108,-218,214,25,-47,64,-90,41,-37,-54,-182,8,-69,92,-12,33,-275,6,-66,-454,76,50,-110,-130,199,-161,-11,30,-4,22,10,-486,-15,227,-56,147,-138,-20,-51,106,-7,-30,84,-5,-112,30,234,28,-36,51,83,40,-19,29,-42,57,-49,29,-229,91,-117,60,-7,-130,-138,-227,206,3,-11,18,-50,-1391,114,-3,-38,118,-422,-9,88,31,-15,4,-70,-45,-82,32,-127,11,-10,0,-391,9,25,159,-238,-103,24,95,-59,10,-127,8,-128,9,-16,124,34,-113,7,3,3,74,-103,84,-136,-369,-202,-68,-139,5,-127,-202,204,-84,-69,-135,-144,-44,-23,-14,60,45,-109,148,8,17,-321,136,298,100,-188,-36,30,-362,113,-356,131,-14,-20,-221,133,-41,-43,-1,162,-86,-8,165,13,167,49,-238,-174,3,257,-59,-185,-56,42,-61,130,231,35,-169,205,-85,-142,-15,87,71,300,209,-47,83,50,-239,6,-54,189,-49,178,100,-18,244,-13,19,13,184,36,10,137,-11,8,-66,40,-187,21,-90,72,-215,38,-48,113,-14,-79,420,-199,-59,-92,199,302,-120,56,-9,107,-42,40,-1,-7,-58,-15,-76,56,311,3,-382,-98,-54,0,-159,-108,6,33,301,8,-81,216,94,-133,-15,202,-299,10,-91,53,-48,65,8,-253,-34,86,-46,-251,-8,298,163,-59,-56,41,-43,66,-196,-69,19,-9,-45,48,180,17,192,49,-12,-114,166,-14,-39,-156,-12,28,-204,-48,-34,124 }; static int alpha2_array[2913] = { -567,339,272,301,322,-479,112,113,218,-402,302,179,442,-558,116,137,238,-169,-76,347,-50,-135,292,197,-387,375,256,-408,212,108,269,-344,371,310,-117,39,-400,59,327,-77,-13,393,239,246,-757,-112,102,-677,72,59,275,25,-274,196,353,132,149,299,244,-35,70,60,-343,-230,-418,46,-97,63,-75,161,13,99,25,-322,-609,-70,-291,-324,69,181,9,-12,-89,54,277,359,189,96,323,117,-245,11,138,-381,-134,-409,39,-184,17,174,19,-55,335,312,217,76,-83,-214,-171,35,19,49,17,199,31,3,135,100,-542,252,24,-37,-148,-43,-163,64,-69,60,-323,77,135,61,132,-3,-66,-151,267,141,163,136,92,92,-128,218,292,-46,-80,267,50,-340,-179,57,-131,158,121,-175,29,-14,211,-45,-396,61,-81,-211,13,33,9,126,-146,163,16,-255,9,-266,-138,113,0,-165,205,54,-270,-219,16,162,144,-385,96,31,173,243,125,127,-320,152,77,57,-25,47,-119,-67,106,151,-117,36,-249,46,-339,-536,131,-328,-118,11,88,109,42,-120,-427,9,59,25,-48,-97,50,129,59,-81,-3,266,-213,116,-384,-98,-27,-430,61,119,45,18,-395,96,-317,13,58,314,-11,-55,-486,1,-21,16,-195,210,75,148,229,129,-180,181,68,-98,66,-150,43,-224,60,-144,98,-355,-273,50,111,-114,57,-1,-133,-386,47,0,-568,15,-303,31,181,-269,49,-64,-54,-71,62,14,50,269,-440,15,7,-123,41,10,82,-67,38,10,39,-108,47,0,79,-166,39,391,166,9,-25,-87,-4,-7,42,0,-45,-327,-388,83,38,284,-157,101,73,115,-174,15,-442,31,-207,172,215,-121,242,-80,45,63,-109,-409,96,63,-369,-348,69,-208,-191,207,220,-253,39,-180,-103,18,-184,67,37,-275,311,3,-39,180,85,19,12,-62,31,-6,-30,-68,-165,-317,260,-92,52,-5,-75,277,311,-272,43,132,63,-592,-83,18,-441,260,38,-74,-86,-600,39,-7,60,236,79,-693,-8,58,-267,196,71,-65,280,135,103,189,188,97,93,203,-84,-247,-271,34,154,-54,-375,52,26,-102,-411,-34,2,66,-183,-421,6,-26,-137,51,-258,-70,-136,53,-9,-182,4,-16,203,-175,-55,319,37,-3,276,291,-1,61,-52,-312,13,74,-171,4,6,7,151,67,-85,40,-6,-11,-114,36,-97,16,203,29,-1,104,-98,196,-57,-372,66,124,-56,37,-51,69,-48,40,-419,61,-1,-115,112,64,6,0,389,-55,5,164,147,336,74,136,-114,-70,52,17,-133,11,47,-176,-215,-349,66,16,-4,-83,51,57,-274,9,-183,-136,249,-60,117,-682,6,-555,191,2,254,-63,-156,7,-34,-133,38,0,-157,-53,122,28,-383,208,-17,12,-1,-47,24,-69,40,-60,50,5,-4,-444,-14,-197,171,79,65,105,4,-53,10,43,209,6,-87,0,64,-366,85,33,-79,181,49,-227,-70,6,-44,-51,29,-116,100,-51,52,-261,-23,-493,-17,47,56,-47,95,-68,147,258,144,79,-286,84,134,-8,30,53,-72,-179,187,39,-87,-33,-245,-119,-134,55,16,55,12,44,-56,46,14,134,143,-179,11,66,148,50,54,197,-63,-9,282,184,11,-96,286,49,-297,42,-3,-21,152,34,-8,4,136,41,-192,-167,-314,110,-305,36,138,144,-203,379,-7,8,76,-97,-135,538,-10,91,-45,-332,35,100,-184,16,-42,-42,187,52,-75,103,-44,178,0,137,-191,85,-9,4,186,-125,197,17,-47,-410,304,100,-412,138,-81,-263,-202,-214,-160,402,98,134,-72,-78,-223,-51,20,145,114,173,49,-182,29,51,93,32,147,-134,122,-398,48,-114,-54,133,7,-57,37,4,-252,5,50,97,-37,-71,154,-96,264,-57,-303,11,274,-44,-18,102,-311,-182,46,-395,42,-4,60,14,-4,-54,47,-101,-657,-3,42,84,-124,-57,48,-53,-153,-5,15,-394,95,35,-4,-313,0,-3,-317,131,-181,0,37,-119,-106,111,-243,-78,-506,-2,-8,99,150,-242,54,-7,297,-285,53,-40,46,11,-191,-428,195,-226,-630,-76,41,-95,152,141,104,-60,40,-87,24,8,-13,-5,234,-73,136,-113,-655,-283,145,32,223,53,14,-2,43,-355,0,-106,4,-50,132,180,-171,91,48,67,68,-276,-71,61,-63,1,181,-368,12,-114,88,-343,-132,-186,-6,49,-224,-61,-320,-21,-124,46,159,236,198,-278,-59,158,258,11,1,4,-73,-42,-2,-75,-7,-182,-388,-99,-5,37,-105,105,141,4,-75,-118,-132,53,367,-10,34,27,57,96,-50,149,-171,-19,298,11,-55,51,10,91,49,62,325,-551,-41,54,-50,55,-255,125,-44,-191,139,-129,-245,43,-336,3,61,39,-3,16,-11,39,13,1,-341,95,-38,65,-267,101,8,96,-53,45,-165,-253,8,0,120,146,-487,-2,-13,-314,-277,-94,60,39,-486,5,156,47,550,33,-132,316,-8,411,-1,243,495,-178,78,146,148,110,-51,281,14,-85,57,15,47,-66,182,19,232,185,53,-3,-29,-196,10,151,83,-65,-143,-134,75,64,-120,-289,-67,-4,40,-179,59,116,36,-65,-453,138,85,-298,-638,245,-65,-258,49,-256,106,100,-92,237,85,23,62,-322,43,-224,33,56,-129,117,142,4,-43,1,28,-47,210,-88,-356,0,29,-6,30,-53,136,-79,-13,-3,107,10,162,2,-16,21,-102,131,35,160,-698,-276,8,112,-61,-78,66,-501,189,67,43,-66,-73,-451,-6,263,-319,-439,52,52,51,427,-90,-46,31,-296,-1198,-37,87,78,6,55,40,-2,-176,311,-105,-4,49,-107,200,-8,16,-48,-202,150,-75,106,43,6,-106,91,220,25,-177,9,-177,-247,0,-83,185,77,-26,-55,-40,-5,-97,-69,67,142,7,16,-53,16,71,-226,40,108,40,31,210,-43,37,-7,-177,-6,37,9,205,-63,50,34,47,-89,53,-3,-116,3,8,69,44,17,30,284,117,-47,36,2,-282,0,89,-7,-37,-634,-112,180,157,-6,-275,-181,8,44,3,287,44,-46,-61,0,66,66,150,-55,39,-290,318,-48,31,2,-29,-14,-10,-276,0,-216,-203,-54,109,0,57,-98,-203,104,203,29,320,197,40,-471,-39,0,43,1,63,-469,-98,5,-3,-72,-360,204,-21,-56,-330,139,-41,136,-43,10,-264,81,-418,-51,-172,231,-327,193,57,79,-98,70,-310,-79,-52,52,9,40,302,84,106,45,-114,-28,-10,-12,-52,-290,4,57,10,-285,-37,-1014,-252,-191,77,134,-1,60,20,-171,-53,-267,0,157,-217,-130,-325,696,39,35,87,123,-514,-28,-298,36,157,-192,256,-8,-47,74,152,45,-54,154,-6,145,-69,63,-52,-194,-65,-73,8,-68,-293,76,-339,180,-115,-15,112,180,61,29,-280,19,29,42,-218,107,-166,39,-87,202,-57,-1,-15,51,-57,63,186,73,-285,170,-67,48,-281,-750,-70,-160,-94,49,-498,47,-39,28,5,252,-11,-301,-239,-383,400,-173,27,7,-43,33,-133,33,124,2,138,-5,127,-56,4,18,-2,-73,-571,104,-51,69,22,-280,-37,-108,-52,7,-55,36,-3,32,-162,-120,499,-542,126,195,101,-162,-147,-175,70,62,69,29,61,-169,107,-48,-234,100,113,0,43,-205,46,-53,56,-48,37,-60,55,-154,39,3,-23,-358,-126,-3,0,-75,51,12,38,-67,266,-301,-14,-62,43,-273,-342,116,-95,4,60,-82,-261,-44,61,-53,44,-8,257,-153,96,-183,82,-198,-15,147,32,-13,-162,-46,-543,22,4,-282,-98,-43,-98,90,-233,-5,0,88,89,10,-13,-82,2560,85,45,42,-394,-255,3,-51,277,50,17,-215,93,-70,27,-59,44,-214,-44,-37,3,-194,195,-2,56,-91,66,7,-171,-37,53,12,33,102,-182,-74,0,-2,-301,-475,99,-284,252,-177,17,-639,38,-547,200,-184,-349,186,49,-10,0,-465,53,-362,-30,66,44,-156,77,-58,53,17,133,-126,20,128,-149,153,55,156,129,105,24,60,46,10,-209,57,-50,206,5,-19,108,39,2,-232,-66,68,25,57,-67,35,-185,131,-277,37,7,64,119,33,-61,-157,8,44,-70,61,36,-61,-242,24,-220,98,7,12,-61,64,-59,-52,-10,154,229,-69,5,163,-59,8,8,42,-508,97,-235,58,138,-32,82,-155,-7,7,-11,2,-38,43,121,-89,-10,40,-51,22,-1,36,1,38,-115,71,172,23,85,35,-174,138,201,-122,-156,106,189,-34,157,37,-279,57,14,-54,158,64,10,0,-86,2,123,-44,2,81,-44,-2,121,-68,-261,146,-107,737,534,36,138,-400,-37,33,-14,147,5,95,-58,-104,-433,-117,39,8,-47,-122,-67,13,-34,-173,-187,78,-8,83,111,-1218,-15,-8,-196,-21,-6,-570,-61,32,-50,35,7,-36,-12,-17,-10,209,-48,155,112,140,118,-251,182,-55,64,-276,131,-318,52,-89,52,5,140,68,-261,-223,205,58,36,-489,-83,0,42,213,-18,-295,38,129,74,-228,-11,-5,247,-44,70,-455,-6,-180,84,-77,148,11,48,-176,39,-153,96,132,36,302,234,-14,-256,-1,-431,-39,-47,-4,-65,-79,107,237,103,-253,65,30,-263,8,0,-87,38,7,47,20,57,16,56,-111,97,102,-68,-17,40,198,-154,-158,-181,-18,21,70,-15,-15,129,78,-128,100,51,-136,-160,363,40,-42,38,108,37,68,110,177,-86,-346,-15,-10,60,-54,53,-2,11,-60,70,19,-5,-10,128,67,81,-35,-7,-3,11,81,43,-37,31,-6,42,288,9,-52,138,0,107,32,55,-105,28,-76,63,-59,39,-13,-595,-2,-171,-324,3,-6,-7,-36,96,-867,4,-45,-79,84,-46,-289,17,-4,-47,-4,3,-106,30,-50,-6,-6,16,0,125,130,-41,-289,22,-37,219,86,30,-62,-75,0,-36,-72,-72,156,-105,75,36,-175,31,-262,54,124,80,-76,-255,5,-7,-68,-96,105,33,0,-54,-2,-14,-187,42,-238,64,17,41,-5,-39,188,46,-3,-9,108,-252,54,76,-62,36,-52,102,-13,318,153,40,-116,57,-61,10,36,21,-8,13,-86,-104,-209,-83,11,56,-56,45,-223,5,13,88,-167,150,-82,-60,-411,38,3,142,-96,-109,11,11,-45,-76,-12,47,-46,-16,-15,-361,-13,113,-47,208,0,14,-51,58,-66,33,4,36,-143,-75,3,0,-10,-64,-46,37,87,-258,21,15,21,30,486,66,11,-10,-18,220,-40,-654,-181,422,-44,-20,25,68,-217,-143,248,-281,210,73,-200,52,16,-45,283,178,-64,29,-13,11,-88,29,-112,-186,-46,9,-53,71,139,-28,-42,-201,170,41,-40,-1149,3,33,-187,35,20,107,165,36,-599,21,-13,188,178,-52,-45,48,839,60,76,-34,-74,-174,-3,278,50,-145,36,-142,-58,50,-87,23,0,6,-12,-131,-305,9,126,102,176,65,79,-70,-69,-226,-139,6,54,-174,60,-54,172,-206,4,120,-15,-260,1,0,63,-240,2,-91,-417,-434,132,243,-296,-84,0,-198,190,-47,8,-327,170,-5,59,219,7,-247,132,-46,81,-15,5,-74,59,-66,15,419,-114,-60,206,-84,-363,149,99,-40,2,-8,41,139,-3,194,-189,393,52,13,75,-72,22,64,4,-64,22,-104,44,-9,-206,-44,-503,-263,31,190,-113,-44,-31,-85,37,-7,84,-213,45,17,-96,-53,116,19,-72,-141,-53,17,193,-81,-291,48,42,-5,135,-71,16,130,-371,6,30,-261,47,-212,36,122,-156,30,16,-36,16,-138,100,-138,9,586,-153,95,12,-18,-11,-204,-161,-10,-404,-12,-8,43,41,144,30,237,-41,260,8,-2,-29,-17,-172,-190,-6,-54,36,-17,-579,-38,106,-106,15,118,-338,49,19,117,-127,-394,29,-375,-28,146,24,222,14,-71,75,155,100,150,163,-37,-74,134,-228,113,45,-76,409,-136,-107,33,251,-144,-2,34,24,-10,-7,57,-7,32,65,39,0,-141,-44,10,-3,-4,35,60,-331,-47,-50,-83,-1,151,-60,187,279,43,257,-13,-240,139,103,8,-89,43,-51,-126,-4,-42,-106,181,-78,6,-42,51,1,224,-44,-155,-49,41,-196,-29,-9,47,1,31,-49,62,-99,-7680,-16,-179,15,0,-36,0,-4,-107,-52,45,7,77,-67,18,-219,-12,-115,-119,-11,73,-2,-902,375,-333,-2,21,-43,64,-62,51,-272,127,106,34,149,-805,177,77,-81,14,235,51,5,33,-49,40,-141,-11,-241,-1,-5,28,2,-21,290,195,-15,23,21,-281,-51,36,-315,3,-82,58,130,18,40,-45,14,-18,-50,-220,-290,40,-157,178,-38,44,158,108,320,36,152,-201,-364,7,-57,81,166,28,5,8,-65,232,2,-245,350,55,-226,16,-38,32,-16,28,93,70,276,52,6,14,53,-400,134,-335,-130,16,787,99,115,109,-170,71,113,-64,88,8,-15,-62,-123,184,-87,-210,48,-7,-138,-10,39,-56,155,-3,-70,-10,-14,-140,123,-84,32,138,11,106,176,-58,-55,-185,47,-118,61,8,19,-47,-7680,-12,40,-64,47,-49,58,-170,165,89,53,-45,78,256,-16,-78,-240,-6,21,-79,-216,-342,-155,-9,83,75,-384,-11,-37,-9,153,-9,14,-67,91,131,0,157,46,-493,157,113,62,-38,-46,-48,58,-132,89,-55,-73,67,-127,-197,-82,-57,131,12,1,17,-485,-365,46,-42,-71,-4,-1,650,73,167,69,-64,14,119,65,18,43,-45,611,159,-16,27,-234,381,50,0,267,69,14,-247,-89,-13,71,53,29,-57,-25,20,41,-44,32,-284,-1234,-163,628,-130,28,-362,10,85,11,0,91,112,-11,-235,51,-59,68,12,-724,-40,-510,334,-11,-52,-244,-541,-412,179,-102,113,-403,-10,-3,6,-16,-215,41,1,34,-41,141,-275,299,97,28,-47,47,243,9,-16,107,-54,-544,-380,82,48,71,68,-155,5,124,-238,87,-15,164,-101,-117,55,108,-162,-77,103,-199,41,-204,65,-181,189,-62,-33,35,229,-220,218,-75,49,-65,55,-11,48,80,42,-159,49,-3,-8,53,47,13,49,244,63,-419,-23,-91,51,-48,209,-117,36,-52,13,-56,36,458,-483,-14,-26,-12,-23,-365,82,-8,-4,279,79,-176,-1,32,100,-51,232,-50,-132,-8,32,-162,16,79,43,90,-190,106,0,-42,-133,0,15,37,33,-350,-1,-79,21,-45,36,-60,-5,-5,118,102,7,111,17,-53,92,-39,71,-93,106,-43,-167,-117,18,-257,108,67,-266,-5,400,37,0,-9,-223,152,-14,-348,65,-36,43,73,52,-39,19,20,-94,-236,20,183,-224,-151,123,86,80,45,-75,-36,142,-16,50,75,171,0,30,-129,-55,-38,102,29,21,-48,40,-273,13,-15,169,15,-63,101,-24,-117,37,404,19,120,30,-214,20,-45,32,69,-110,150,-9,-5,36,-106,53,162,-131,-45,175,-40,-62,-225,45,-42,88,221,30,-230,-277,-8,55,430,0 }; static int tree_thresh_array[2913] = { -129,50,89,23,61,407,11,-77,24,-86,83,87,375,148,-78,33,75,-28,-40,64,-84,-563,58,41,374,285,129,58,59,-12,134,-29,206,192,-284,-200,347,-7,473,-210,-174,1522,79,71,162,-37,7,123,-322,8,110,-184,-269,64,596,25,27,75,81,-1136,37,-154,75,-45,138,-146,-46,-267,-173,7,-529,93,-139,107,91,-23,178,234,9,53,-108,-23,-67,-279,163,770,319,0,348,36,36,-96,28,138,-13,119,-34,-44,-100,15,-50,-19,314,117,80,-119,-119,80,17,-145,-66,-90,-93,68,-54,-138,69,13,342,1056,-149,-67,-15,-26,-15,-186,-98,-317,96,-10,491,9,285,-191,-205,123,373,52,65,9,130,11,-49,87,124,-184,-293,242,27,168,-3,-124,-52,153,100,233,-66,-722,721,-30,249,-119,-186,152,-99,-244,-123,30,-8,85,-27,76,-181,93,-4,70,-141,274,973,-52,43,69,-29,43,25,53,12,-447,33,128,130,27,107,52,107,-61,-159,-23,-6,-116,271,36,46,-11,46,29,130,103,30,134,-11,-155,-159,11,-221,-34,138,-460,-42,-20,-38,-48,-95,69,-98,-151,-252,88,-15,183,234,-46,-49,92,-81,65,-37,-18,521,195,219,-162,-275,546,-856,-268,253,-104,-142,-74,61,189,63,52,201,51,-76,171,-210,-290,68,-25,-161,0,-91,7,4,160,254,8,3,-28,-97,-420,-39,163,-53,-207,102,-31,175,0,37,45,-214,-942,-67,-70,-150,-42,-56,120,98,25,-91,-28,-166,-100,10,-80,-121,-61,-248,-52,-82,-125,-84,-7,-128,77,25,-41,-5,-16,-180,-248,-134,-603,-48,594,210,12,-178,528,-373,58,134,51,60,-137,583,-25,74,102,190,-36,167,-140,-162,10,112,143,18,11,144,106,-64,-31,85,245,159,88,-112,42,101,-65,199,5,-360,75,144,-835,-68,154,9,-60,-197,-120,-189,-114,-23,-41,46,212,136,-59,-140,-330,-3,397,149,211,-100,1340,31,662,-19,-75,318,77,-325,-278,-24,130,-122,-329,15,137,33,413,-40,29,102,1143,-181,-57,564,141,76,102,234,61,36,124,-180,75,43,-188,339,-36,175,-35,-17,33,396,-125,-249,-156,-39,200,-170,-82,-4,-137,79,-1,-1,-382,-318,69,-87,-52,32,421,-153,104,2,-1182,373,493,-302,-135,-179,741,-48,18,28,-97,-275,-267,93,-77,-28,-164,-166,-50,-111,-361,-32,-171,187,-577,-242,17,-8,1127,-108,167,22,130,-169,-393,-47,75,-139,-100,200,-84,-94,264,51,-49,-108,-104,160,-24,-139,166,104,817,50,160,-126,-145,-252,-48,274,-84,-91,4,146,125,22,-25,-124,-39,-233,16,138,-141,192,-35,268,-180,70,135,-86,121,226,-137,80,-85,133,-44,-40,-15,-171,-140,41,-368,106,-15,130,79,7,-180,-183,-440,-526,-183,-180,-502,-81,-63,-200,229,-40,55,26,29,19,39,-112,-161,-125,-6,781,21,98,-108,22,222,0,62,69,124,26,580,79,-70,-25,-65,-414,-30,181,-476,19,91,-49,229,-35,27,-74,-93,52,-56,128,381,106,67,-7,-36,92,-154,-22,-97,-108,50,395,-112,-64,-8,49,-63,-17,-86,-69,-167,-33,-78,-181,-255,-4,97,87,82,-117,14,233,-384,72,935,-749,-286,62,27,-65,53,53,-163,61,-84,-91,-32,62,-129,-126,-63,144,-73,-13,64,122,12,347,-240,183,165,154,248,-81,-679,282,46,6,326,-234,30,-73,387,22,28,141,-212,-283,-22,280,-274,-86,83,-192,768,-177,81,33,111,-375,-51,60,119,35,-224,-60,102,190,72,668,53,-64,329,144,135,49,176,124,145,-59,51,41,118,2,198,132,136,26,-23,52,24,10,-69,115,42,40,106,-104,-14,37,86,-209,-255,-135,-153,508,-36,-245,25,-72,72,21,-43,855,-108,241,-47,188,-93,-33,14,202,14,-126,354,-559,-23,-73,-81,-235,-340,-220,-34,226,-275,-97,22,87,-100,-80,-218,29,-92,-337,536,58,26,-188,236,-24,-213,190,30,88,-73,-152,-1,102,38,132,-25,210,-108,-63,79,137,118,0,-201,313,97,15,-366,-61,-45,387,2254,169,101,208,-69,-498,-14,474,151,47,-82,-117,-23,-227,-60,-29,-184,263,-60,184,-4,202,119,142,-25,63,11,-219,-78,-226,230,-97,7,-154,-98,112,473,-91,54,-15,-10,13,154,-56,-11,-157,-142,95,143,-54,52,14,412,0,47,-147,-86,60,-21,96,-102,-3,-165,115,187,162,206,-70,328,400,-63,-62,-67,-107,36,-110,31,-65,85,350,97,-160,-319,-69,486,639,-188,-42,392,56,9,136,-136,11,-269,8,91,-235,27,50,-33,150,-1647,-90,-53,-52,88,48,-80,263,446,-139,-15,-44,-47,106,17,-195,1,472,65,231,-43,508,-22,48,-176,-135,-87,-50,-69,-10,-184,159,27,-67,25,187,16,0,29,-204,-102,126,189,-13,-99,49,53,242,-168,-344,182,100,-17,100,-348,89,-68,133,10,226,-435,-32,309,-380,202,-48,351,331,-138,63,224,87,32,-153,652,-282,-138,-259,30,-39,-535,235,-29,127,146,-129,-79,-29,33,-178,108,131,-295,128,-1,11,134,-59,155,11,-170,-101,41,-85,91,-152,-43,227,88,0,59,441,147,-16,85,-122,106,43,35,87,305,19,7,4,115,-133,92,-88,31,59,114,23,-40,-16,-92,-162,-71,36,-32,110,-84,-294,-110,-194,-446,55,-27,-16,-154,35,-131,239,-167,-81,-18,68,38,-80,44,155,67,-81,45,21,-45,-43,431,224,72,-127,-234,-46,125,7,46,333,219,-98,27,-132,155,63,-181,-94,79,425,-77,158,93,-128,39,-201,-161,196,210,58,-375,26,146,207,-59,-158,-165,97,35,-544,40,20,-250,-1,13,86,30,101,-145,81,61,-94,-76,1846,48,-101,-183,-59,-100,94,-102,4,63,-109,5,-2,-130,-20,127,-137,49,-142,40,244,-267,-380,-168,87,-104,-168,-72,36,-47,-30,3,-125,-77,-33,-142,77,-77,-364,28,-115,-1,-443,65,35,-103,-55,-31,293,-55,12,-208,-36,877,57,174,81,-137,260,89,-321,58,-275,534,-189,-122,-1,-91,-6,49,99,-193,-101,89,770,-318,-199,-70,-11,-404,-89,250,-100,138,156,-82,101,-99,-108,-14,438,184,181,4,292,146,-85,1741,46,-62,-62,-77,-13,381,-51,-110,-96,-58,115,208,47,-60,935,454,13,349,90,-64,1356,36,188,-154,-335,891,60,214,37,32,-106,-12,234,-25,-165,-83,-70,-99,232,1,40,-215,-56,-124,-1230,-147,-225,138,-33,-22,12,219,-513,379,157,-8,39,98,-73,-43,-29,98,-75,64,-199,27,40,60,397,197,40,-163,93,27,244,28,64,-203,214,91,168,-88,-339,34,323,-369,-119,28,-33,80,-60,103,-64,120,-34,100,-138,-8,124,16,113,32,180,-132,85,103,26,-239,130,-124,61,-200,340,97,67,-48,0,78,-41,-57,-422,-391,-169,9,439,13,119,46,-49,-52,100,188,-111,164,94,-97,317,-54,-88,-292,-22,109,-161,106,200,151,323,118,25,-269,-282,-477,-5,-182,209,-129,86,-566,213,106,-49,-99,-103,51,234,68,-93,0,-31,385,-255,71,-90,-42,-38,-118,-86,-151,43,670,388,144,52,569,48,-40,-24,-5,132,-57,4,0,-1,16,58,-226,383,109,15,-130,-92,103,-127,-108,-56,-257,-183,-83,-32,35,-111,-67,-56,119,153,-102,-261,-38,-3,-89,-73,-101,643,282,-45,-56,-126,87,381,121,0,-172,-92,-52,114,-113,-25,-83,-50,-165,121,28,66,205,8,102,-64,152,-324,-70,134,-481,493,17,-297,725,34,-53,77,87,259,-132,-96,76,127,-45,-52,-52,281,21,-158,25,717,476,-94,-210,920,38,-485,154,90,-148,-540,-170,-135,64,-161,-277,-109,163,412,-331,-87,-43,3,14,77,-104,-16,-3,-202,47,141,-33,-91,-126,179,176,111,38,386,697,-193,458,-58,139,88,89,337,346,-225,-265,-93,224,0,402,-29,205,-23,57,87,-119,1,7,35,260,-114,200,-120,508,32,124,103,41,-68,-11,173,-198,118,-164,-168,48,-87,-97,73,-178,-37,194,-58,15,14,-119,-26,-123,32,36,393,-134,-54,62,49,-312,-49,89,-11,-199,-42,-27,35,81,90,-213,80,94,-61,-204,-283,19,-138,-66,-205,233,167,-12,-133,403,-156,-188,-489,-493,289,34,93,2,141,-18,96,52,-46,-170,-382,-111,-89,-39,284,127,-203,-83,-62,-207,-84,-126,-18,-187,68,13,100,-326,182,-513,73,78,163,55,66,45,160,-39,114,-96,110,1,-168,27,196,-12,-35,-30,-7,-353,191,0,-66,187,-112,-113,31,-2,452,281,7,787,644,-202,212,204,-174,-153,-152,57,-1,131,-17,40,382,70,34,-57,-31,114,-77,-76,-149,132,244,40,-144,11,33,364,-123,-89,154,11,-43,531,-72,-315,-78,-209,8,104,-97,-26,-154,886,-54,291,229,165,258,42,256,-161,-22,441,69,127,-94,-45,-19,-71,77,29,77,127,85,46,-233,295,-81,-68,-163,110,-16,93,-282,176,35,59,-47,-449,185,-110,73,206,-122,155,760,-16,41,-47,-26,43,-83,9,-6,35,-99,304,69,-100,123,49,355,-173,-10,-232,96,-85,29,1399,25,133,0,2,223,-41,-77,-21,-44,-204,49,-9,12,16,-30,212,75,716,221,-1312,-110,317,97,47,133,-181,-239,79,-183,-247,47,114,267,39,10,130,135,194,-80,-224,-92,438,-149,57,85,201,148,168,64,-66,-12,-564,-39,-101,-571,-336,15,-27,-65,-208,68,65,14,-352,135,-16,-98,35,-113,-796,-445,-79,12,242,-222,-161,337,-30,30,28,-63,-11,-289,-47,2,-151,-133,-306,169,-118,189,1041,9,-339,-46,-528,157,417,-78,-248,101,109,61,107,-153,-21,72,-139,-65,80,-424,-78,-52,-66,-522,78,133,38,20,169,-312,-298,244,83,-328,-73,46,-104,-3,-59,35,224,-443,94,11,-8,-92,340,-27,313,22,-42,113,-95,-227,-166,-30,69,-151,-80,-96,-177,-90,67,-134,292,3,-34,-70,-76,-37,75,-206,-96,-111,26,95,53,-27,-92,-261,-204,27,-228,1308,331,-61,191,24,-140,-143,12,-57,-27,-216,-8,75,51,52,-73,7,-60,-61,59,-44,-37,18,96,130,-75,80,1685,-170,-42,50,-35,66,-42,-50,-206,202,-168,4,-205,-35,-205,418,-58,42,-48,295,-77,-19,-238,4,-202,-487,-74,-32,212,273,-56,-72,-172,-55,-45,-503,195,130,17,-251,-11,-280,424,64,-40,-36,-261,159,-163,206,189,254,-265,112,1,-17,193,51,188,813,68,8,91,-56,-31,-54,200,83,-68,-693,-464,-318,-63,-270,34,145,-159,-40,-94,12,53,60,-246,212,101,-49,-404,481,-77,-116,53,-477,-15,127,103,-115,149,-296,-170,195,269,56,-113,-65,303,-3,73,-10,-37,201,-125,410,13,145,1,103,-21,6,-66,-121,-6,-221,-271,114,118,-83,50,177,762,130,57,-25,-22,68,106,-109,-69,24,-11,-179,211,33,-216,215,-51,47,-97,-252,-7,144,-75,-157,408,345,164,241,612,2,-136,38,176,-276,-1276,121,43,-118,-23,116,-118,102,49,-174,42,-283,-19,-57,-62,-41,-208,125,-45,-25,321,-41,127,164,66,-186,-74,-57,-158,129,-44,49,289,2176,-60,-9,204,-195,-374,155,-63,-63,-235,-24,-286,-102,70,-181,180,65,-379,290,236,-67,98,51,-222,-54,25,118,-90,21,352,-35,27,-26,36,13,169,-27,125,-30,364,29,-74,-105,447,-46,-235,420,110,-55,-1317,837,-288,154,-287,258,149,16,-201,-293,-155,-12,79,46,-137,376,15,52,-586,-396,-36,65,288,-155,2113,-134,-148,27,-66,34,-563,724,32,449,-124,-94,-12,-136,54,60,-54,-66,-118,-415,154,-1169,629,0,-84,153,234,20,-223,103,99,147,-409,345,65,138,-253,286,-114,-52,88,411,106,116,158,-190,-175,15,173,80,3,-17,69,147,-290,-258,121,155,-136,-129,4,-293,-332,18,-172,-268,74,-211,-193,71,-103,-166,-154,-54,0,-46,152,13,-92,95,-57,30,-47,215,215,-48,392,-65,142,142,66,-181,-22,-269,-300,67,-37,24,-3,841,-69,-78,-106,-89,-98,193,-188,108,-199,-76,51,-4,-201,-71,-60,-938,-520,42,28,1188,-975,255,19,-113,-69,-203,-306,131,-386,-63,-16,12,-41,-158,141,-19,2,144,-96,-7,-68,2705,449,55,-93,-335,-215,-103,-179,-74,96,140,105,-108,249,592,218,46,-9,-121,111,-14,-51,-363,-78,-68,52,-55,77,-26,-99,-121,20,-23,68,156,-233,-220,-10,1217,-364,-230,151,-34,-9,-293,21,-25,63,106,-49,-277,-60,102,77,-87,38,940,-155,-55,148,27,395,-146,44,324,134,-113,-16,30,459,-486,-170,-114,-512,969,-120,154,295,40,213,-179,-157,-404,-499,-490,126,44,232,4,-115,-655,20,192,99,287,40,-230,449,85,143,163,-19,9,103,-131,308,-75,-52,-108,90,600,14,38,-35,-160,101,-143,-75,-55,25,-75,58,-133,-10,-3,194,-28,-176,84,-91,204,253,-171,-13,99,-70,-16,-58,-37,-506,-336,268,-129,-326,-77,-20,-50,5,121,115,124,-70,-344,30,231,-21,-61,224,-80,-275,-58,122,212,168,-526,9,31,186,-322,32,-55,118,-112,-298,-57,177,120,-130,155,-91,241,127,153,-85,-104,-29,-208,-84,43,130,-97,-24,97,114,59,445,-57,16,-20,-348,8,1490,904,-66,-197,71,-140,-18,528,124,180,12,-107,-114,48,6,-14,-129,-131,636,360,-6,38,152,328,-3,-20,489,-18,-121,109,181,-99,80,22,-950,-104,-26,16,-146,-58,-517,281,351,63,332,75,-353,296,-320,396,-163,-39,1,49,-85,237,0,-70,125,-3,360,-159,328,161,84,-274,191,321,271,123,70,82,135,-60,-42,-117,-19,1318,-69,-30,-122,-46,19,20,792,22,-279,-143,20,390,-257,-697,43,-170,520,338,349,227,18,53,237,-93,197,105,28,-141,120,-9,-392,68,106,1,-27,77,0,-312,205,-11,66,154,-50,237,19,187,87,642,-42,9,-95,-28,-140,-86,8,-17,-58,-33,-38,-155,19,-18,21,-39,184,58,670,10,-15,-103,-79,59,211,-155,-121,-160,-119,-342,1720,245,-77,-24,-238,-50,190,4,-363,-94,176,0,36,-72,25,93,-88,252,-319,46,-104,-155,40,-56,34,-292,40,450,144,-457,-465,68,-32,-135,51,-172,103,-99,-50,-466,-347,-100,-36,45,-120,26,57,-54,1164,-971,-457,523,-257,71,5,112,-178,45,85,-91,133,50,34,153,-57,233,20,-100,-46,141,99,-32,143,18,-340,-57,5,-68,-314,-969,-411,5,90,-460,67,278,65,19,27,19,10,11,-123,58,-247,-81,127,74,4,-150,49,306,-961,577,25,-234,-226,-88,105,-53,9,36,-36,16,102,-24,17,-138,182,-167,161,-288,146,-175,-86,-644,32,96,305,-2,-66,-135,199,9,185,438,-165,130,-235,55,292,-61,-41,15,66,-164,110,214,-78,-15,310,-90 }; ================================================ FILE: face-detection/src/ocl/haar_dataRcc_with_partitioning.h ================================================ static int stages_array[25] = { 9,16,27,32,52,53,62,72,83,91,99,115,127,135,136,137,159,155,169,196,197,181,199,211,200 }; static int rectangles_array0[2913] = { 6,6,3,8,3,6,5,11,4,6,6,1,0,9,5,5,13,7,10,2,18,0,9,7,5,0,5,9,9,6,3,5,18,1,0,5,2,8,2,0,20,0,18,0,12,0,12,8,5,1,17,0,6,6,0,4,2,19,1,0,1,14,3,6,8,15,1,4,0,3,1,5,3,14,1,11,5,6,9,9,7,10,8,3,6,0,4,11,0,11,4,11,9,9,1,10,6,7,0,6,1,6,2,20,0,2,0,12,5,11,0,12,6,8,0,10,3,2,2,3,5,9,4,4,6,3,0,6,6,3,1,8,0,12,0,19,0,6,7,9,0,4,7,18,0,18,0,16,2,9,2,14,5,15,0,8,7,0,1,14,7,10,4,10,1,10,5,8,6,7,0,1,5,12,6,7,0,2,2,14,8,14,8,17,6,13,3,9,0,0,6,7,10,1,5,9,20,2,5,0,5,0,6,0,1,2,2,0,9,7,11,6,18,3,18,1,11,0,13,7,11,8,13,2,3,0,9,4,7,0,7,7,3,0,3,4,13,9,5,1,10,0,1,4,0,2,9,5,17,1,14,3,15,9,17,3,7,1,10,0,15,3,12,6,14,1,13,7,12,6,6,7,7,8,7,0,15,0,15,7,15,0,8,0,3,0,9,10,7,5,14,2,0,4,9,0,18,0,8,8,11,7,12,6,15,5,9,7,14,2,5,9,12,9,3,6,12,1,12,1,10,3,10,0,6,6,5,4,11,7,3,2,3,8,16,7,18,0,18,3,18,0,5,6,10,8,15,3,15,2,8,8,15,4,13,7,18,1,14,1,4,1,10,0,15,3,15,3,15,0,4,2,14,6,17,1,16,7,12,4,10,2,15,0,6,1,6,0,8,9,6,0,16,0,14,1,5,4,16,0,10,9,9,3,6,8,0,14,5,9,0,3,3,20,0,8,6,9,1,9,7,13,7,14,2,18,6,18,7,18,0,9,0,17,1,14,6,3,9,12,6,6,1,10,5,5,0,0,1,6,4,1,5,0,3,2,6,14,0,14,0,0,0,5,3,6,0,13,7,9,1,13,5,16,4,0,5,12,2,15,0,12,11,9,8,12,3,6,7,12,10,16,4,2,5,10,8,6,6,0,1,3,3,0,10,8,5,0,14,9,14,1,15,0,17,2,3,9,18,0,4,2,14,0,18,5,21,6,8,7,21,10,15,0,11,7,12,6,14,6,3,3,0,10,11,6,16,3,16,0,10,0,13,7,5,0,6,3,8,2,15,3,17,1,19,1,4,6,15,0,15,3,8,6,5,10,10,0,15,0,12,9,12,6,15,0,11,6,10,0,3,3,0,0,12,2,7,0,3,6,5,11,0,18,3,9,0,13,0,13,4,13,5,7,6,14,4,11,0,13,2,10,8,14,6,8,7,8,5,3,0,5,0,3,1,5,1,1,3,6,6,14,1,11,10,11,7,12,2,14,6,14,0,5,1,13,7,12,0,7,7,8,1,13,5,14,4,12,9,11,5,8,1,9,3,12,8,2,0,14,2,2,6,5,1,7,3,9,2,18,3,20,2,1,0,19,0,18,0,7,0,10,8,4,2,7,3,16,5,10,4,2,6,1,12,0,15,5,8,1,17,8,17,7,15,2,10,0,20,1,15,0,16,2,10,1,11,3,3,10,3,0,12,8,10,9,4,0,9,8,13,5,0,1,19,0,16,0,12,7,9,0,1,1,13,0,12,4,15,1,3,2,13,1,3,7,12,0,13,0,15,0,13,5,0,2,0,1,15,0,6,8,10,8,12,6,13,1,15,6,13,5,6,0,11,9,10,8,3,10,4,9,5,2,13,8,12,2,7,3,11,0,3,1,11,9,9,1,6,1,8,2,11,7,11,5,11,5,4,2,7,9,2,8,3,8,0,6,0,20,0,0,0,14,0,1,5,4,8,6,2,11,2,5,9,8,6,10,0,18,2,3,2,13,6,9,7,18,9,6,0,13,0,13,5,11,4,6,0,12,0,12,5,5,5,3,7,13,2,19,1,5,0,2,5,1,3,8,6,10,1,8,3,5,4,6,7,0,0,3,2,7,5,10,9,18,4,10,9,11,7,4,2,13,7,3,1,8,3,5,8,9,0,6,0,13,5,1,9,9,5,4,0,16,9,8,8,10,7,5,2,18,1,6,9,10,6,8,1,9,6,17,2,7,1,1,9,3,16,0,16,0,8,5,4,0,6,0,20,8,6,0,6,0,20,0,15,0,13,5,5,3,6,6,10,1,11,5,12,5,13,0,8,1,2,2,17,1,7,0,15,1,9,0,16,4,7,9,12,8,15,3,15,1,15,6,10,6,11,6,11,9,3,2,3,3,4,0,10,0,5,8,11,5,5,10,10,7,1,0,12,2,12,1,12,0,5,6,14,5,9,1,8,3,12,0,8,4,12,9,9,1,8,3,7,10,10,3,12,3,10,5,7,6,12,2,0,0,0,5,1,9,2,5,4,2,7,0,2,3,6,9,15,8,3,2,19,1,14,4,14,6,14,4,0,1,20,0,8,7,16,5,11,10,10,7,14,5,12,6,11,1,15,9,10,3,16,7,15,0,13,2,5,1,5,1,14,4,14,4,18,1,2,0,12,3,16,3,9,9,15,7,17,3,3,0,2,0,13,5,5,5,18,0,3,2,2,5,6,6,13,5,6,0,18,0,12,6,0,3,9,5,4,10,8,2,8,0,18,0,9,1,2,7,8,4,10,2,15,3,15,4,15,0,15,0,10,1,7,10,8,3,7,0,10,7,5,5,6,3,16,0,0,0,10,10,4,0,9,3,6,11,5,4,2,7,1,13,5,11,6,3,0,10,6,6,0,18,0,11,0,2,1,18,0,17,0,0,0,10,7,15,3,15,0,15,0,5,0,9,3,9,5,9,8,10,5,9,7,11,9,6,1,16,0,8,0,3,0,6,0,14,1,13,4,12,2,16,3,14,8,9,0,4,5,15,0,8,1,14,4,16,3,18,1,11,0,15,7,22,0,18,0,3,6,7,2,4,9,4,3,18,2,4,7,7,6,12,0,8,2,13,5,9,5,3,2,11,3,9,1,15,1,9,6,10,7,10,4,0,3,19,0,17,1,18,0,3,2,9,5,10,8,7,9,5,8,8,6,14,6,8,2,2,0,0,7,6,14,4,2,6,9,7,6,5,18,0,18,2,5,11,15,7,7,10,10,2,14,8,14,3,14,1,3,1,18,0,5,6,14,4,15,0,0,3,3,0,1,0,2,2,0,10,10,6,11,9,2,1,13,6,10,6,14,6,9,8,17,1,14,7,3,1,14,0,12,0,10,1,15,6,6,8,14,0,10,6,7,9,10,8,7,4,17,3,10,2,3,4,15,7,15,1,11,5,10,4,0,4,10,0,6,1,18,4,6,1,1,2,12,0,10,7,9,4,6,5,10,8,9,3,4,6,8,0,11,2,8,0,0,2,4,10,7,9,17,0,16,1,12,3,12,3,12,8,10,6,13,1,7,2,0,9,0,9,2,13,4,20,8,0,0,3,3,13,5,13,2,9,8,12,8,8,11,9,0,9,1,12,6,13,1,9,2,15,0,9,2,15,4,17,0,15,0,9,3,16,0,13,0,0,5,8,4,10,8,11,4,14,2,4,8,1,7,13,8,4,3,14,8,3,4,3,9,9,7,12,6,18,3,18,0,13,5,11,3,16,5,7,1,2,3,17,5,13,0,15,1,12,1,3,6,5,9,11,4,6,5,11,5,1,7,6,6,11,5,6,0,2,0,9,9,12,0,1,3,2,5,10,8,5,6,7,5,4,0,9,9,6,9,10,5,14,5,14,0,16,4,8,0,13,0,0,6,10,1,0,2,2,1,10,7,9,7,3,7,3,8,3,6,1,5,8,3,0,2,4,9,9,14,7,14,4,17,1,14,0,9,3,14,4,7,7,14,10,14,5,4,9,3,4,16,4,6,10,9,6,5,3,6,0,6,0,4,0,15,0,6,3,12,6,6,9,10,7,14,2,11,1,15,1,10,4,7,10,13,3,13,5,10,7,15,5,8,7,12,6,7,6,5,3,3,0,14,0,1,1,7,9,10,2,8,0,5,2,14,3,9,4,0,7,11,0,14,2,11,7,6,4,14,4,13,8,17,4,15,3,12,0,16,2,15,0,18,0,16,5,12,0,5,0,8,5,10,6,6,3,12,0,0,5,10,9,8,0,16,3,6,0,14,0,2,4,12,0,6,1,11,3,15,6,9,4,7,5,11,7,8,0,10,0,20,0,12,1,5,1,6,5,11,1,11,0,3,1,0,1,11,4,12,4,13,1,9,0,6,6,10,6,13,2,11,1,1,0,13,5,18,0,11,0,12,1,7,8,6,2,14,3,15,5,11,7,11,9,4,9,17,1,7,6,9,1,19,0,3,1,2,4,6,4,15,3,8,3,15,3,5,1,14,0,15,3,9,1,13,1,6,8,0,0,4,1,14,1,10,6,10,7,14,6,8,3,5,0,9,4,10,8,7,8,11,7,4,0,7,1,11,6,7,7,9,0,7,1,9,0,1,1,9,3,9,9,16,2,13,1,14,3,13,7,4,9,7,0,15,1,14,4,15,3,0,7,1,1,6,1,15,3,4,0,6,4,6,0,3,4,20,0,11,6,11,1,11,1,11,0,3,7,17,5,16,0,6,0,3,2,10,10,11,9,5,6,10,0,6,4,14,0,1,8,13,10,7,8,7,2,11,7,13,0,12,8,12,6,14,0,14,0,4,1,4,0,3,9,0,6,2,18,0,11,9,7,1,18,5,18,0,9,2,10,5,9,7,10,4,6,0,3,9,6,2,19,0,5,5,1,8,6,9,2,5,8,9,14,2,10,1,11,4,6,5,9,7,7,2,5,7,0,0,16,5,5,0,11,0,4,2,3,2,6,0,3,0,5,1,19,3,19,7,9,0,15,1,9,7,9,7,9,7,9,10,5,0,9,2,15,1,6,0,6,0,13,2,13,5,11,7,10,3,14,4,4,5,7,2,10,3,16,0,0,4,10,7,13,3,16,2,3,4,4,3,8,2,14,7,4,0,10,5,0,0,3,9,0,6,8,2,12,5,14,5,6,7,11,7,13,0,1,6,10,3,0,0,3,7,10,8,12,6,16,2,10,8,14,0,11,3,10,0,19,4,4,0,6,19,0,18,0,5,10,9,0,7,1,8,0,13,10,13,7,4,0,0,6,7,0,13,3,12,2,9,6,14,5,10,6,14,4,14,0,13,2,6,0,19,1,15,3,11,7,14,3,20,7,7,2,15,7,13,5,3,5,9,3,19,0,20,0,7,4,10,0,7,0,13,1,7,0,6,8,7,1,16,5,7,4,6,9,15,6,12,7,6,10,10,3,4,2,13,7,1,0,0,3,3,3,13,2,10,6,2,2,10,8,13,3,3,2,14,3,5,2,17,2,0,7,15,5,11,6,11,5,15,4,12,6,5,9,12,4,4,5,14,9,9,9,1,2,12,6,12,8,7,0,4,2,15,0,6,6,8,1,6,7,10,3,15,1,15,10,15,6,15,6,16,2,2,6,9,2,16,0,15,8,15,0,12,3,13,0,10,7,4,0,6,3,9,5,5,3,5,6,0,2,8,18,0,4,6,4,4,7,0,13,5,3,0,14,0,14,0,6,0,14,6,15,8,4,5,7,10,5,1,18,0,13,0,12,7,14,0,14,2,14,1,3,5,5,8,9,6,5,8,6,3,13,3,12,7,13,7,11,7,5,8,4,0,0,0,9,3,12,8,10,5,2,6,8,9,15,1,11,5,6,1,2,7,10,3,7,7,9,1,13,3,8,6,4,0,3,2,16,4,16,1,15,3,18,0,4,2,17,1,8,0,11,0,19,2,3,4,7,3,8,4,10,3,15,0,6,9,12,8,16,8,6,0,17,0,9,1,7,7,7,3,9,3,6,1,16,0,0,3,4,0,20,1,18,0,8,4,7,6,7,9,8,8,8,4,7,0,12,4,8,9,14,7,4,10,12,0,16,5,10,2,2,7,3,2,15,2,10,4,15,0,18,0,15,3,12,0,11,9,12,3,5,0,8,6,14,9,6,6,1,12,3,9,4,11,3,5,4,9,8,16,3,6,8,0,0,5,0,2,9,9,9,5,2,6,5,18,0,10,6,3,5,17,0,9,5,11,0,6,4,9,5,6,7,11,1,18,0,0,0,6,0,19,4,19,1,3,0,12,7,12,2,14,0,15,0,14,0,5,0,3,5,4,3,4,4,16,6,13,3,12,5,10,6,6,0,12,0,12,9,6,0,2,0,6,0,0,4,12,6,15,3,6,5,12,0,11,10,9,1,6,1,7,0,10,9,10,8,9,1,0,6,8,5,4,4,8,1,10,1,0,1,5,0,9,1,8,8,5,9,6,2,10,7,14,8,9,3,5,4,6,9,12,6,9,5,5,9,11,2,15,3,3,5,16,0,13,1,15,5,6,2,14,10,13,3,13,3,11,0,0,6,18,0,15,1,15,0,3,0,15,0,12,3,16,0,9}; static int rectangles_array1[2913] = { 4,4,9,18,5,5,8,14,0,6,4,8,2,9,6,0,11,5,8,5,0,6,6,18,7,3,8,6,5,6,21,6,1,1,8,6,12,1,13,1,2,5,4,3,1,6,1,1,5,10,13,4,4,5,1,10,17,3,3,1,7,7,12,6,7,15,17,4,1,0,5,8,14,15,15,6,5,0,0,6,0,6,6,8,0,0,7,6,20,6,13,6,6,12,22,7,7,6,14,18,1,16,4,4,4,16,12,0,10,8,8,0,0,14,16,8,19,10,9,0,6,5,5,14,13,16,0,6,1,2,8,9,12,16,16,1,2,8,5,17,7,1,5,1,1,0,0,7,10,9,15,7,6,8,8,6,7,14,10,12,0,0,3,0,1,0,0,18,3,3,10,10,11,11,11,10,13,4,0,0,0,1,1,6,14,14,18,4,17,2,8,5,5,4,0,15,0,0,22,0,6,1,5,1,2,8,12,12,7,1,2,4,1,15,5,5,0,4,0,0,6,7,17,18,18,20,15,4,6,14,9,6,6,10,16,6,0,0,7,20,5,2,1,0,0,21,7,7,8,15,15,0,6,1,2,14,6,2,4,17,7,1,13,13,6,12,1,0,2,2,18,6,7,3,4,1,2,3,3,0,8,8,14,14,10,0,1,6,9,0,0,0,11,9,8,12,12,12,7,7,0,0,3,3,2,10,14,13,5,17,18,0,4,4,3,1,16,3,5,2,14,21,14,2,4,6,8,14,6,6,7,3,12,6,6,9,6,6,2,18,2,2,10,0,0,0,12,6,12,5,8,6,12,12,1,1,9,21,13,13,6,0,7,4,0,0,12,12,12,12,14,13,15,0,1,1,14,3,1,0,6,10,15,1,9,0,15,15,7,12,8,14,10,3,17,13,0,3,5,7,6,8,15,1,8,5,2,7,7,6,1,1,18,4,16,7,7,2,20,12,2,0,0,15,8,3,5,4,6,4,4,4,22,14,14,11,11,9,12,0,0,17,17,6,6,4,0,0,15,8,12,2,20,0,13,10,3,5,7,0,0,1,17,15,15,16,13,0,4,5,4,0,0,7,7,5,13,0,7,2,2,2,6,5,6,0,3,7,7,7,6,14,0,2,4,3,4,0,6,0,10,21,6,5,2,7,7,17,18,6,18,18,9,9,3,17,15,17,3,3,0,0,0,0,3,11,0,0,8,12,0,6,0,2,7,6,1,4,3,1,0,0,13,5,1,2,10,4,10,10,14,7,1,1,5,9,16,12,14,13,5,5,5,5,1,1,15,9,2,2,0,0,17,5,2,2,7,7,0,0,6,7,6,6,3,0,9,7,6,0,14,14,12,2,16,16,0,0,8,5,13,14,6,0,1,6,0,11,20,11,12,11,11,4,15,0,0,2,0,18,7,14,2,3,6,8,4,8,2,16,0,2,11,3,16,17,13,9,7,8,2,17,18,3,6,0,0,10,11,5,6,5,3,21,10,4,8,9,6,6,5,4,4,10,10,2,2,4,4,4,4,18,18,2,2,5,8,7,5,14,14,11,9,6,19,5,5,4,6,10,7,2,18,9,2,0,3,2,5,0,3,14,9,11,5,6,6,5,5,10,10,0,3,1,7,12,6,7,18,2,3,2,0,0,5,22,10,1,0,3,15,13,8,8,2,5,8,8,6,0,9,0,5,5,5,4,16,16,9,13,10,9,0,11,5,5,6,6,5,6,13,5,2,15,17,13,10,6,14,12,10,0,11,2,4,0,17,6,10,16,16,16,11,11,3,4,0,16,15,15,17,8,6,8,8,5,6,7,5,9,8,8,11,0,2,0,0,3,10,0,3,4,0,5,0,4,10,10,11,10,12,21,20,15,17,12,6,13,16,5,1,19,1,2,10,11,9,10,7,0,6,0,2,17,0,0,17,7,3,2,2,1,16,13,15,5,13,2,14,12,13,8,12,16,1,2,6,7,0,8,12,21,0,6,4,7,8,8,14,11,12,0,10,2,0,6,6,11,11,16,6,16,7,10,4,18,0,3,0,1,1,16,3,16,3,9,4,7,7,4,12,3,6,6,3,3,6,1,17,18,5,6,2,7,0,8,7,5,9,14,14,8,11,0,0,1,11,18,9,10,6,14,7,4,16,13,8,16,0,5,5,6,7,10,12,10,0,4,10,6,11,8,11,9,12,4,4,9,5,9,0,9,9,4,3,1,6,18,8,19,8,8,12,7,1,12,0,0,3,6,11,8,17,14,3,3,0,0,11,11,11,20,6,0,3,5,12,0,0,5,12,13,1,0,2,2,10,10,6,12,14,1,11,15,14,3,6,6,1,1,15,15,1,3,0,3,5,0,1,7,3,3,7,7,13,5,1,1,15,2,5,15,12,12,0,2,7,9,5,5,17,18,17,17,17,0,0,14,13,20,9,10,8,10,10,15,5,13,17,12,9,9,7,4,8,7,15,8,17,17,1,7,5,4,16,16,0,6,4,0,1,6,9,2,2,3,1,9,10,0,4,1,8,0,22,15,0,7,14,14,5,5,5,5,2,2,0,4,16,0,12,21,5,5,6,5,14,5,8,6,13,10,13,0,1,4,3,13,13,13,16,16,16,16,0,1,2,15,2,2,2,2,0,12,2,10,3,7,11,8,0,0,3,18,18,3,7,3,17,5,6,16,2,2,4,13,1,12,7,5,11,11,4,2,0,0,0,0,2,13,7,8,14,0,15,9,4,10,5,18,18,20,8,8,5,5,6,0,4,4,12,0,12,12,15,15,0,0,6,12,4,22,7,0,1,16,7,10,2,9,2,2,3,13,14,2,4,1,6,21,5,6,6,3,10,15,4,0,0,0,7,0,10,2,5,0,0,2,2,0,0,2,10,7,0,3,7,6,2,6,0,0,0,17,17,14,15,15,14,8,7,8,0,8,5,6,7,8,8,10,5,12,9,14,9,18,6,6,16,16,11,6,7,6,7,10,12,14,12,13,0,1,16,17,2,0,0,2,1,8,8,5,5,4,7,15,2,1,1,1,1,11,11,6,10,9,18,21,12,6,6,4,12,14,7,13,7,12,2,0,9,10,10,15,16,2,5,0,16,12,15,10,9,11,7,15,8,4,6,6,7,8,8,3,3,2,2,3,3,3,3,11,11,8,6,18,4,1,11,12,12,0,12,20,4,2,8,7,0,11,0,7,17,10,5,11,4,0,4,4,18,0,4,4,11,6,0,9,15,7,15,12,12,12,7,7,4,4,11,16,15,15,1,21,20,1,17,16,16,16,10,18,5,2,7,6,0,7,1,18,2,7,1,0,3,15,10,3,0,0,0,4,17,20,3,3,6,6,9,18,0,1,0,10,16,16,12,16,6,6,9,9,4,8,3,3,1,5,6,10,4,2,4,4,8,8,13,13,13,2,2,2,0,2,5,3,21,10,10,8,8,8,15,13,8,13,15,4,15,15,11,6,2,2,1,7,6,11,16,0,11,9,5,2,3,15,0,0,1,0,2,2,2,4,1,1,5,4,5,5,5,0,8,6,3,18,8,2,5,4,6,1,4,6,17,6,6,5,2,2,6,3,3,3,1,2,2,14,8,0,0,6,5,7,16,17,8,13,17,17,0,2,3,17,17,18,15,13,14,18,13,14,2,9,3,2,4,5,5,6,4,4,7,9,0,3,1,22,10,0,0,2,13,21,1,7,0,1,1,2,5,2,2,11,7,9,9,4,6,21,21,5,10,0,2,0,12,13,0,1,13,21,3,10,3,2,1,0,1,18,15,10,9,11,7,2,2,4,5,7,4,0,1,0,0,1,0,5,0,14,14,18,0,4,2,1,8,15,10,17,4,0,6,9,9,11,2,0,15,18,17,11,11,9,16,16,1,2,15,11,18,14,7,8,1,14,7,12,0,0,0,0,8,8,21,0,0,6,6,0,0,16,0,0,1,1,13,0,5,10,7,10,6,2,13,6,13,20,4,6,0,13,16,0,6,5,15,7,6,6,0,0,18,15,3,3,14,14,15,17,0,0,16,0,7,8,9,0,1,4,1,2,1,0,17,14,15,21,15,15,6,3,1,4,1,2,2,2,7,3,6,1,8,0,16,16,19,16,8,15,18,18,3,5,5,6,2,6,2,8,5,8,0,12,12,7,14,6,6,13,10,10,9,3,0,12,0,0,2,2,0,0,6,6,1,1,0,10,9,9,7,15,10,4,2,0,9,2,0,15,14,1,0,3,2,4,16,16,18,0,3,12,3,3,8,15,13,6,9,0,3,3,5,4,7,0,0,0,1,2,13,13,2,9,6,8,7,12,10,6,12,15,14,8,10,10,9,12,12,12,12,12,10,15,10,1,4,5,10,12,0,10,2,20,10,17,0,0,2,2,7,1,14,13,6,2,6,19,15,5,6,6,0,0,5,5,1,13,1,17,13,18,14,1,4,0,5,5,1,1,0,4,6,18,18,15,7,7,9,13,15,15,13,13,5,18,19,19,19,14,0,1,9,15,0,10,10,8,5,5,4,4,7,6,4,0,1,1,14,3,3,2,2,7,22,16,3,10,16,0,5,8,1,6,3,13,12,5,5,6,1,19,14,6,0,0,1,8,7,12,1,1,7,10,7,3,0,0,5,5,0,0,2,1,0,17,18,17,15,15,14,10,18,12,10,10,2,6,14,14,1,21,1,16,1,0,1,1,7,14,1,0,1,1,0,14,7,11,5,6,1,1,9,4,16,0,5,3,12,11,10,9,2,6,8,1,1,14,16,16,4,19,8,1,8,8,5,6,12,12,6,6,0,1,6,6,17,22,12,12,12,14,6,7,3,1,1,2,2,12,2,6,6,0,0,6,1,7,7,20,6,2,3,4,1,0,2,2,15,17,6,0,4,6,12,14,14,18,3,3,6,5,4,16,8,6,5,1,1,10,2,0,1,6,1,4,0,16,16,0,3,7,9,14,14,21,21,4,7,4,15,13,6,16,5,8,8,8,8,8,6,8,5,5,1,10,17,16,10,4,18,18,16,15,15,1,1,5,5,0,4,0,0,5,6,2,2,0,4,0,0,7,7,8,0,10,0,1,1,6,12,9,10,18,16,14,14,10,13,13,0,8,5,0,11,5,18,8,7,0,0,2,8,9,7,2,0,14,12,12,6,0,8,6,11,3,12,16,6,10,10,12,12,15,15,20,20,17,2,1,15,2,12,7,1,8,3,6,0,0,15,7,6,21,3,7,2,10,9,5,9,11,13,0,18,4,8,3,15,18,14,15,6,6,6,14,8,6,9,9,15,20,18,18,16,16,2,2,0,20,6,9,6,6,4,6,0,1,0,0,12,12,5,6,5,16,8,8,4,4,7,19,11,1,2,13,0,11,1,10,19,10,1,1,4,4,6,9,5,2,0,0,7,2,0,6,8,18,14,15,0,0,4,0,0,2,6,1,0,0,2,0,2,11,8,8,8,11,9,4,17,21,4,15,8,12,17,16,1,1,13,1,4,8,7,7,6,6,9,1,6,5,6,4,8,10,5,4,4,7,6,5,7,7,2,1,13,13,15,15,0,6,7,9,6,7,12,14,17,12,17,3,17,1,17,5,7,4,1,5,0,11,7,7,17,6,15,15,10,10,15,1,0,0,1,21,9,4,1,9,1,0,0,6,1,12,17,1,0,6,0,7,12,9,1,11,11,10,2,16,16,13,16,16,18,13,2,8,13,20,8,7,6,20,20,1,1,3,2,9,3,0,9,4,4,13,13,15,13,0,2,1,1,6,2,11,1,0,3,1,7,0,0,9,15,7,9,17,3,1,15,0,3,1,0,6,0,0,11,7,6,14,14,0,0,1,12,8,6,5,9,8,12,19,0,4,16,7,7,6,17,17,4,0,0,0,4,12,9,5,5,7,1,0,6,8,6,12,4,1,1,10,4,13,13,15,14,14,8,10,10,7,10,1,15,6,1,6,18,0,13,6,6,6,7,8,8,8,2,10,10,7,7,9,2,2,1,2,3,8,8,18,6,6,3,6,8,2,14,2,3,6,2,17,7,11,1,0,0,7,2,1,0,0,0,15,18,8,6,2,7,6,2,9,4,8,8,0,0,0,0,2,2,6,0,1,4,5,13,14,2,1,1,4,5,1,12,12,18,13,3,9,3,2,6,6,9,9,6,6,16,20,10,6,1,13,15,12,11,6,0,0,3,3,5,5,2,2,0,0,11,11,6,16,16,6,7,6,1,9,5,11,8,8,6,5,7,0,0,6,6,6,21,19,18,18,16,16,0,0,14,14,14,14,18,18,5,3,0,0,12,3,4,4,14,14,6,11,5,4,8,8,6,14,6,6,14,5,5,0,3,3,12,10,8,14,10,10,12,8,11,11,2,2,12,10,9,8,7,0,0,5,6,0,1,0,3,14,9,2,4,4,5,7,5,5,4,14,17,16,17,20,14,6,4,3,8,6,6,5,5,5,2,1,2,0,9,0,0,0,1,9,8,9,9,0,1,1,20,0,8,8,13,13,8,8,11,11,12,1,11,10,8,8,14,18,16,20,12,12,17,6,17,18,15,13,17,17,17,17,2,13,1}; static int rectangles_array2[2913] = { 12,12,18,9,4,12,12,4,7,12,12,19,24,6,14,14,9,6,6,4,6,24,6,10,14,24,15,5,6,3,18,13,6,6,24,14,21,4,20,6,4,22,6,6,4,19,4,4,14,18,4,6,12,12,24,18,12,4,4,24,8,3,16,12,6,9,18,16,4,18,20,14,7,9,9,8,14,12,6,6,6,6,6,18,12,24,16,6,24,4,15,4,4,6,18,4,8,10,10,18,22,18,6,4,4,20,8,6,6,12,12,6,6,9,9,6,12,20,18,18,14,10,12,18,8,18,6,12,4,19,22,11,15,12,12,5,24,12,9,6,22,17,6,6,6,6,6,8,19,6,17,3,8,9,9,10,3,24,18,6,10,9,16,9,20,9,9,10,6,12,18,22,8,6,6,11,24,22,20,2,2,2,2,3,9,9,18,8,18,12,14,6,6,9,18,5,4,18,19,4,19,6,14,20,22,7,22,22,6,9,4,12,6,18,6,16,6,24,4,4,6,6,9,14,18,15,15,16,10,15,10,6,18,18,18,14,2,2,15,21,5,24,22,15,24,18,10,10,6,20,10,16,7,6,6,12,10,6,5,24,5,6,6,6,3,13,4,9,6,6,12,6,12,8,10,6,2,6,2,2,9,9,9,9,18,24,8,4,10,3,6,6,24,13,6,16,6,6,10,6,6,6,6,6,9,6,6,5,3,18,19,6,3,3,18,6,9,20,6,22,5,18,6,24,12,12,14,8,5,3,18,20,19,6,6,6,6,6,6,15,6,6,18,12,6,6,9,13,9,6,9,3,9,10,4,4,6,18,10,22,16,18,8,6,6,6,6,6,9,9,19,19,10,10,6,6,6,9,4,14,6,18,9,21,17,11,13,9,15,6,18,24,3,24,10,18,18,16,3,18,6,6,6,18,12,6,24,5,5,6,6,19,12,4,10,10,10,9,21,9,9,4,4,9,18,6,11,6,9,6,6,9,19,6,6,4,4,18,6,6,6,18,18,11,14,15,22,24,18,12,7,22,14,24,18,22,11,6,24,10,10,24,18,16,16,18,21,6,6,9,2,6,6,6,4,24,10,6,6,9,6,10,2,15,6,6,9,14,8,7,4,6,6,21,5,4,5,11,12,24,23,18,21,6,4,8,15,10,9,6,9,9,9,9,6,18,21,6,6,6,16,10,10,10,6,12,3,6,9,8,3,4,9,24,6,6,6,12,2,12,18,18,24,4,6,6,8,16,8,8,11,24,4,4,16,6,18,6,9,8,3,18,6,6,4,4,18,12,9,9,6,6,9,3,14,3,14,14,9,9,6,6,6,6,8,9,8,10,4,6,18,8,24,3,10,10,10,24,15,12,14,4,6,6,18,14,6,6,24,6,10,6,6,11,10,6,6,4,20,10,6,10,4,10,12,8,4,9,14,19,10,16,24,18,18,18,9,23,18,12,3,10,10,6,4,6,6,9,6,3,9,3,6,18,18,8,9,9,5,14,3,15,15,6,6,6,6,6,6,8,8,10,21,12,12,12,6,20,12,8,8,20,12,16,9,12,14,9,19,6,18,4,20,22,4,4,6,6,10,12,24,4,4,17,18,14,14,3,3,14,9,18,12,8,7,22,4,7,9,22,6,8,6,6,9,18,12,4,4,6,9,8,6,6,4,19,9,12,18,4,18,4,4,4,6,4,18,20,6,8,3,14,24,18,5,5,8,8,12,6,6,12,23,19,11,8,10,9,9,9,20,9,9,8,21,10,12,23,8,18,9,9,6,6,24,18,24,18,9,9,18,6,6,5,6,6,8,21,3,11,10,12,18,22,6,6,6,6,18,3,16,6,16,18,6,8,10,10,12,8,9,24,18,9,10,4,9,6,12,20,9,9,4,8,9,12,9,6,5,21,10,6,18,8,18,9,18,12,6,4,4,24,9,9,19,22,6,20,6,16,8,6,16,16,4,8,12,6,8,6,6,21,16,7,4,6,6,4,6,12,23,6,12,10,6,9,9,18,18,12,21,12,6,19,14,18,4,11,9,4,4,18,11,20,13,22,14,10,10,6,9,8,16,14,9,18,9,24,10,18,6,11,12,4,4,6,15,6,6,6,6,16,20,4,4,18,6,9,15,19,7,9,8,18,12,9,14,22,6,10,10,16,6,8,6,8,4,8,10,14,20,4,12,12,6,8,8,9,16,6,3,5,5,10,23,21,6,12,8,24,8,8,8,5,19,24,13,24,4,6,12,12,18,9,4,4,9,9,6,6,19,18,16,9,4,15,8,6,6,12,11,21,8,6,21,19,6,6,14,9,8,22,9,18,7,16,12,4,4,4,6,6,3,6,3,12,4,3,3,10,3,6,19,18,18,6,20,20,6,24,18,6,8,8,14,4,5,8,22,6,9,19,9,18,9,24,14,9,6,13,6,21,9,9,10,24,9,6,9,6,14,14,9,6,10,4,6,6,9,9,9,4,12,9,10,10,24,9,24,11,22,6,20,14,16,19,10,4,21,6,14,6,9,4,19,20,4,8,6,6,4,4,6,6,24,6,4,4,9,6,7,14,6,4,6,6,10,14,12,12,6,20,9,6,5,16,8,6,9,9,9,9,18,18,18,19,6,15,6,6,6,22,21,18,6,18,8,18,6,6,2,2,7,9,21,7,22,24,9,12,14,14,6,6,20,9,21,14,12,9,6,6,18,6,6,6,6,6,24,18,10,12,19,4,9,15,12,6,6,16,14,20,20,6,12,12,6,6,6,6,9,15,9,9,9,9,8,4,10,4,10,18,11,12,12,9,15,12,12,12,8,8,24,8,4,4,15,24,5,18,3,4,9,20,18,10,4,6,6,6,9,18,20,4,6,18,18,6,6,6,20,20,18,6,22,6,6,24,6,6,6,6,6,9,18,9,23,18,9,8,15,8,6,8,6,4,12,8,8,6,6,12,18,8,22,12,20,20,10,18,19,6,22,7,11,10,9,6,6,6,6,6,9,18,13,8,8,8,6,6,6,5,5,6,6,12,24,2,2,2,2,6,6,18,7,12,18,20,6,18,18,6,9,18,6,12,12,6,4,9,12,6,6,9,12,20,12,3,15,6,12,8,8,9,12,6,9,8,6,24,6,5,5,6,6,6,6,18,9,10,10,6,6,10,6,18,6,9,6,4,4,12,10,22,2,24,10,8,6,5,20,12,6,10,12,6,4,6,4,4,19,2,2,2,10,4,6,16,6,6,6,12,9,9,18,22,6,6,16,9,6,6,6,24,24,6,18,18,22,9,21,12,24,4,6,6,6,6,20,12,4,12,4,3,10,12,6,4,6,6,6,4,18,22,10,10,12,12,5,21,9,12,12,8,10,10,12,10,12,4,6,6,11,6,4,4,8,16,18,16,8,9,8,8,8,8,5,7,24,8,8,24,12,12,6,8,18,18,22,12,12,12,6,9,7,9,18,4,6,6,12,14,17,12,9,24,9,18,9,9,24,20,16,4,10,6,7,7,6,19,9,9,10,18,4,4,8,12,6,12,10,21,9,6,6,12,20,10,5,4,8,24,4,18,16,6,14,8,20,9,6,4,4,8,2,9,19,9,18,6,6,4,18,14,18,9,12,7,20,9,15,6,6,9,9,12,6,8,24,6,8,24,12,9,16,4,5,9,9,6,20,17,7,23,6,4,6,18,9,2,2,18,15,18,4,10,10,6,6,6,18,6,6,11,10,10,10,6,10,16,16,22,8,6,6,6,7,8,6,3,8,19,4,18,5,4,16,18,10,12,12,22,9,12,10,8,8,18,10,21,22,6,3,12,12,22,18,22,6,6,6,18,6,12,12,18,6,6,6,18,6,6,10,5,5,9,23,8,6,9,18,11,11,24,8,14,21,24,8,21,12,4,4,6,9,19,10,18,6,17,12,6,16,5,18,6,20,15,6,6,6,9,6,6,6,6,6,6,6,9,3,14,12,4,6,4,6,14,16,6,21,6,5,16,14,4,12,12,14,18,18,24,18,9,19,24,9,9,18,18,3,8,18,3,4,10,6,10,5,12,9,8,5,14,10,4,6,18,6,6,4,6,9,14,15,8,6,6,12,12,16,18,18,24,9,24,22,9,10,6,12,12,16,10,18,9,10,18,15,15,24,6,6,6,10,18,10,10,14,9,6,6,8,4,3,16,6,6,12,12,6,6,9,9,6,6,4,12,12,12,14,20,8,13,6,6,12,15,12,18,24,3,4,4,12,17,5,5,18,12,6,6,21,6,12,16,18,15,9,15,3,3,10,16,12,9,6,6,10,18,14,14,3,5,12,20,19,9,14,14,9,18,6,18,20,20,24,20,9,9,8,8,4,20,6,21,13,12,10,5,6,18,9,21,22,18,6,6,6,6,6,4,9,9,15,3,12,20,6,18,4,4,6,6,6,6,16,6,6,18,10,10,9,6,5,8,19,12,21,16,18,10,4,18,12,6,6,6,18,12,10,10,6,6,8,12,10,10,18,4,24,6,20,19,10,21,8,10,4,6,4,4,9,16,16,24,9,14,7,8,12,4,3,9,20,24,12,8,6,10,14,10,9,24,12,22,12,9,23,19,6,18,6,4,6,6,4,8,7,18,4,4,20,6,10,4,8,8,6,6,6,6,24,10,23,19,18,9,6,6,20,6,18,9,18,18,18,10,4,4,4,12,4,10,4,3,4,6,19,9,7,14,8,8,18,9,18,6,6,4,4,4,18,6,8,18,14,15,10,4,22,6,6,4,10,8,12,12,6,6,4,19,6,8,6,6,6,24,10,10,19,19,16,24,6,6,18,18,6,6,6,4,6,10,6,6,6,6,6,15,20,4,12,6,9,6,12,18,18,18,6,12,18,4,19,15,14,22,6,18,3,20,5,12,6,8,8,12,6,3,14,12,4,15,6,10,18,15,8,24,6,8,10,18,24,6,8,18,18,18,20,14,12,21,21,18,18,4,18,4,10,11,4,9,4,8,8,12,9,12,9,12,4,14,11,6,11,9,18,12,18,18,9,9,9,6,6,6,6,6,4,6,6,18,6,15,15,4,6,8,8,24,14,8,10,8,4,6,6,18,16,16,8,16,12,9,9,16,19,9,3,24,5,19,6,24,9,10,20,7,7,2,10,12,3,12,6,9,22,22,9,4,18,24,24,18,4,10,6,6,6,6,6,6,6,10,10,9,14,10,10,3,9,5,24,12,4,9,6,6,19,4,6,18,10,18,9,24,8,4,8,10,18,19,24,8,10,6,7,12,6,15,6,7,6,6,6,4,6,6,9,18,9,9,18,18,4,4,2,16,4,10,6,7,4,6,10,18,2,2,6,6,18,9,9,10,5,5,4,4,10,14,12,24,14,6,4,14,16,21,15,6,16,16,3,3,10,6,12,5,9,11,4,9,13,4,6,10,20,9,4,4,22,9,24,16,18,6,9,9,4,7,20,19,6,6,4,9,18,2,8,18,15,12,6,20,24,9,4,4,8,6,3,12,5,5,6,6,14,3,6,4,16,7,8,6,9,3,22,18,6,9,4,4,10,3,18,18,9,9,18,6,10,18,18,9,6,18,9,10,9,3,9,11,9,11,8,20,21,12,6,8,8,8,9,8,9,9,9,9,10,6,6,10,16,19,18,9,6,6,14,8,7,12,8,22,6,6,6,17,12,18,10,10,24,6,6,19,6,10,10,9,18,18,9,9,6,4,8,18,4,12,4,18,18,6,6,4,6,12,4,6,12,8,8,9,9,18,9,18,6,9,9,14,6,12,18,6,16,3,6,4,4,5,9,18,5,17,18,24,18,6,14,3,6,6,6,21,12,9,6,8,8,8,8,12,18,20,9,8,16,10,10,15,18,10,18,10,10,18,18,18,6,8,8,8,18,9,18,6,6,18,12,6,2,10,20,12,3,3,3,18,10,14,14,9,8,4,5,9,9,12,5,3,6,7,4,14,19,6,15,10,8,12,9,14,14,13,6,17,17,8,8,24,15,18,18,3,3,6,6,11,12,12,9,12,6,9,6,9,16,10,7,11,12,8,4,3,3,18,4,3,18,3,3,5,18,20,9,19,19,9,18,14,6,9,9,6,6,6,6,12,12,4,6,3,18,16,10,9,9,10,3,12,12,8,6,12,12,6,7,18,19,12,6,6,5,5,14,3,24,20,18,6,20,6,6,6,18,15,18,3,6,6,8,8,20,13,7,7,10,10,3,18,18,9,15,12,12,6,13,22,6,6,24,10,18,10,3,12,4,4,18,9,12,9,10,10,10,10,9,9,10,10,18,18,18,7,19,16,16,12,2,2,8,8,3,12,8,12,18,18,3,18,3,3,18,18,22,21,18,18,24,16,6,8,6,6,18,10,9,9,3,3,6,6,16,9,16,18,6,6,4,6,6,18,24,9,8,13,16,14,9,16,13,13,24,10,18,18,9,22,8,8,18,5,12,18,4,6,2,2,10,18,17,12,16,5,6,6,6,13,19,6,4,6,6,6,18,4,8,8,10,10,4,4,16,16,7,3,9,17,8,8,10,22,24,12,6,6,9,22,9,18,19,18,9,9,9,9,3,24,6}; static int rectangles_array3[2913] = { 9,7,9,6,19,16,6,10,6,6,7,12,3,15,10,9,6,10,10,9,11,13,9,6,12,3,6,14,10,12,3,6,15,15,15,12,12,10,10,13,13,19,9,11,9,3,9,9,14,2,11,9,9,6,5,6,6,13,13,23,12,14,6,6,12,6,3,12,20,2,14,12,9,6,6,10,14,5,9,9,9,9,9,4,9,6,12,6,3,9,4,9,9,12,2,10,10,6,4,2,3,3,15,10,10,6,9,9,6,6,6,9,9,6,6,10,3,2,12,24,10,12,12,3,8,6,6,18,14,2,13,4,10,6,6,12,4,4,6,6,15,9,10,8,7,22,22,16,6,12,6,14,10,11,11,18,14,8,14,6,16,6,4,6,4,6,6,6,9,6,3,3,8,6,6,6,4,12,17,24,24,22,22,18,6,4,3,18,3,4,6,6,16,16,9,8,9,3,2,9,18,9,12,2,3,9,4,4,11,6,10,12,15,3,9,6,9,14,13,13,9,9,6,6,4,4,9,4,6,10,14,9,3,3,4,6,18,18,10,4,18,6,8,9,19,3,4,4,16,4,6,9,15,13,14,10,6,14,12,5,12,12,6,6,16,6,9,6,9,9,6,9,3,21,12,9,20,9,21,23,4,4,6,6,4,19,12,10,12,19,10,12,2,4,9,4,9,9,4,9,9,9,15,15,4,7,10,8,16,3,3,9,18,18,9,14,6,16,12,16,10,3,10,4,9,5,12,10,14,16,8,2,6,9,14,12,18,18,9,6,9,9,2,6,9,9,6,6,6,15,6,14,6,4,19,19,9,3,9,4,6,22,14,20,9,9,12,12,6,6,3,3,6,12,12,12,9,12,12,8,9,3,6,23,4,18,6,6,4,9,3,4,12,3,6,3,9,9,12,4,9,10,9,21,7,9,4,12,12,9,17,9,6,19,7,12,12,6,4,6,6,14,14,6,5,11,14,9,6,9,9,4,2,9,9,9,9,7,10,9,9,3,3,12,6,4,2,24,4,9,12,6,3,16,4,2,8,6,6,10,10,4,3,6,6,3,10,24,11,6,20,24,24,14,12,14,6,9,14,15,9,14,18,6,10,9,7,3,6,12,18,9,13,3,12,10,8,9,5,5,6,3,6,12,15,10,12,6,6,16,6,6,6,6,9,3,6,6,9,9,10,16,5,5,10,6,18,9,7,10,18,9,6,3,9,10,12,12,21,8,8,3,4,9,9,22,14,15,14,14,6,9,16,16,8,9,3,9,6,10,18,3,11,11,9,9,9,4,6,6,17,17,4,18,12,12,15,15,6,6,14,9,15,15,9,21,12,12,18,9,3,10,4,20,8,8,9,3,4,6,6,10,7,6,3,18,6,6,3,7,6,6,7,12,4,9,9,15,3,6,11,9,9,4,6,10,16,4,9,8,8,18,11,5,3,3,6,10,3,3,22,6,6,12,9,9,9,6,9,19,6,19,9,3,4,10,6,8,12,6,19,20,20,6,6,14,14,7,9,10,10,6,6,6,6,6,9,6,6,10,10,13,5,6,4,5,12,6,3,9,2,18,3,3,18,23,19,9,6,12,6,10,15,6,8,6,6,18,18,4,4,9,8,5,8,4,15,8,4,4,17,18,12,9,12,2,6,11,10,17,6,9,12,12,15,3,7,9,3,12,14,9,18,18,10,11,3,3,12,8,12,14,10,2,12,12,18,18,12,9,11,12,3,3,4,5,4,9,6,6,8,18,10,5,6,14,4,4,10,3,4,4,6,6,6,3,4,3,6,6,3,10,9,8,8,11,9,6,12,12,8,3,4,22,8,9,9,14,8,14,20,10,4,4,9,5,4,4,5,10,8,3,4,6,4,12,6,9,4,3,9,4,18,12,8,5,6,9,12,6,6,15,2,6,2,6,3,5,9,9,9,4,6,6,3,12,6,3,10,6,9,14,6,8,12,10,6,9,12,9,6,3,6,6,14,9,14,16,10,5,3,12,5,4,12,6,6,13,13,6,3,6,14,2,4,4,9,4,6,23,23,3,4,3,4,15,3,4,4,9,6,10,6,6,6,2,6,3,6,3,16,6,22,10,18,9,10,9,10,10,10,9,3,13,13,7,9,6,6,2,16,6,12,3,6,4,14,6,9,10,10,6,9,14,12,12,9,16,6,14,2,16,10,4,7,16,16,6,12,8,18,14,14,6,18,3,9,6,16,4,16,16,10,8,2,9,8,3,11,9,8,6,3,6,9,9,19,19,8,8,3,4,6,6,14,12,5,9,9,8,6,3,12,12,2,3,14,14,14,6,9,4,6,3,9,4,5,9,10,10,9,9,19,9,19,4,9,19,12,5,18,12,3,3,4,9,4,4,6,8,3,6,5,5,6,15,12,14,6,6,4,3,4,3,4,3,4,6,9,4,12,3,6,7,8,3,6,9,4,6,10,10,17,20,4,9,9,16,4,4,6,10,6,8,8,8,4,6,6,4,4,18,4,14,6,3,4,15,3,6,9,9,9,21,2,3,13,8,9,9,10,10,6,6,21,13,21,20,6,9,9,3,9,10,9,9,4,14,6,12,10,8,6,9,14,6,9,10,6,6,6,6,3,3,3,2,11,6,11,11,9,4,12,3,9,3,9,3,9,9,18,18,9,6,3,9,3,16,4,8,6,6,9,9,10,8,15,8,4,6,6,6,2,11,15,13,9,9,4,4,4,3,3,20,6,4,7,9,9,6,6,4,6,9,8,8,9,16,12,12,6,22,6,6,6,6,10,16,6,10,6,2,6,10,6,4,16,13,6,9,6,6,11,10,10,21,9,6,16,3,12,9,8,2,3,6,18,9,9,9,6,2,4,12,12,22,22,11,11,9,3,2,2,9,9,9,9,6,10,9,9,9,9,6,3,6,6,3,6,10,6,10,12,10,9,18,4,10,10,14,19,6,6,10,8,6,18,12,8,3,3,9,4,12,9,8,7,9,12,6,9,23,6,3,14,12,12,7,9,12,12,15,15,9,15,8,4,19,19,20,20,12,12,14,8,12,5,3,12,3,3,9,6,4,14,6,9,6,10,6,6,9,9,6,6,3,6,24,4,12,8,14,14,10,6,9,7,10,9,12,14,8,8,6,6,9,9,6,6,8,8,12,11,4,7,3,9,7,6,11,11,18,5,3,20,4,4,10,14,8,9,8,6,4,9,8,17,6,17,17,3,18,18,18,8,9,9,8,9,9,9,6,6,6,3,6,6,6,6,4,9,9,23,3,4,23,3,3,4,6,3,6,4,15,12,9,9,9,3,6,13,4,13,18,5,8,9,9,14,14,16,10,6,4,5,5,16,16,15,2,6,4,12,12,8,8,5,8,6,18,14,14,12,16,21,21,18,8,12,12,20,6,20,20,14,14,8,9,10,11,16,6,9,12,9,10,3,2,3,9,6,6,9,6,12,6,4,16,9,9,10,6,8,21,9,3,10,3,4,6,6,6,12,15,4,8,10,10,12,8,4,4,6,2,9,9,10,13,6,3,6,5,9,9,7,6,6,4,18,9,14,6,9,3,6,9,6,10,3,6,9,11,11,10,18,6,3,6,5,9,9,15,3,6,3,6,6,8,3,6,4,6,9,6,6,6,9,10,4,6,10,6,8,6,4,10,8,12,12,9,12,16,6,2,9,9,13,2,6,24,24,10,6,3,11,4,18,16,16,6,2,6,6,6,4,7,7,6,8,3,3,14,10,12,18,9,9,10,12,12,10,2,13,3,12,15,4,3,8,6,3,4,6,5,7,10,10,6,9,6,16,22,12,18,18,4,4,6,9,9,9,3,13,4,6,3,12,9,13,2,9,9,8,8,8,6,15,12,9,4,3,6,6,6,8,6,3,3,5,3,6,10,10,12,6,2,10,12,12,9,11,13,6,12,3,6,3,10,9,9,9,6,9,9,16,16,9,9,6,6,16,12,6,20,9,9,9,4,12,9,4,9,8,16,6,15,8,4,6,10,21,21,3,6,2,2,4,4,2,3,23,6,3,23,10,12,14,9,12,10,4,10,12,24,4,10,9,3,9,9,18,11,4,8,9,10,12,12,4,10,6,9,5,22,6,8,4,6,4,9,6,6,9,6,3,6,9,3,6,6,4,12,9,12,6,9,9,8,6,7,12,12,6,14,18,12,14,14,20,20,17,17,6,6,13,13,9,7,6,6,9,3,10,9,18,9,4,12,5,3,5,18,14,9,6,4,8,8,2,5,12,12,3,12,6,9,5,6,6,11,18,18,8,8,3,13,9,9,9,2,6,6,21,12,6,3,3,6,12,18,7,4,9,4,6,6,2,8,7,7,5,5,10,2,6,3,9,5,6,8,9,6,4,3,2,3,9,9,20,20,14,9,4,4,6,18,6,4,9,14,18,18,9,9,9,6,6,11,12,3,8,6,4,12,12,8,3,6,8,8,3,14,10,3,6,9,8,8,6,6,6,6,9,9,8,6,4,4,3,10,6,9,6,8,6,14,8,4,9,10,13,13,6,6,14,4,6,4,9,10,5,13,19,6,2,4,5,14,6,24,14,8,6,3,5,4,6,6,6,12,21,3,9,12,9,9,22,12,9,4,22,22,4,7,4,15,12,12,16,16,16,16,3,4,8,3,2,6,9,9,6,14,3,7,5,5,9,10,9,9,20,3,20,8,20,19,20,9,4,6,6,8,6,6,4,6,8,9,9,18,20,20,6,9,6,8,12,7,6,10,3,10,12,18,16,12,14,6,6,6,10,3,8,22,8,8,9,4,6,6,3,3,9,5,15,9,3,2,9,9,9,10,16,10,13,13,9,11,11,6,3,9,14,9,6,9,20,3,3,3,9,15,3,18,3,4,5,14,9,3,18,3,12,5,12,10,10,6,9,20,6,13,15,4,14,6,3,8,18,3,13,10,9,3,3,11,10,3,3,10,21,3,6,4,4,3,3,18,3,18,6,9,10,6,18,10,10,5,7,5,7,5,18,12,4,10,6,6,2,13,3,3,6,6,6,16,16,10,10,24,20,9,9,5,9,8,8,9,12,18,18,6,3,15,14,10,9,8,8,12,4,15,10,6,5,4,6,12,6,6,23,6,12,18,12,8,4,6,3,20,20,18,12,8,14,16,9,4,4,6,6,9,7,6,10,21,10,8,9,12,12,12,12,9,9,4,4,6,4,4,4,19,8,12,3,4,10,6,22,22,3,15,9,3,15,3,6,14,10,9,10,10,4,2,6,16,4,9,9,6,9,8,16,12,9,9,9,18,12,12,6,4,6,6,3,3,22,22,24,4,18,14,9,9,20,9,14,6,24,24,7,7,19,6,6,8,15,15,20,20,4,4,3,3,20,9,19,3,20,9,5,6,20,20,12,12,8,6,4,15,6,10,12,4,6,18,9,6,3,6,19,19,2,6,18,8,6,10,6,6,15,10,4,3,9,9,9,9,5,20,6,2,6,6,9,4,6,4,22,22,9,9,18,6,8,8,12,12,8,14,12,18,18,20,12,14,6,18,14,2,12,7,12,12,22,20,4,4,6,6,24,12,4,6,3,8,12,3,7,6,7,19,7,9,7,6,5,19,6,14,9,5,5,5,7,10,9,9,7,7,8,12,12,12,8,3,4,6,15,6,9,20,9,5,14,4,6,7,6,18,6,4,6,12,3,6,6,3,9,6,6,6,3,3,6,6,9,12,8,3,12,3,9,3,3,20,20,18,12,6,18,9,6,20,20,6,6,3,6,3,7,6,6,6,13,6,15,7,6,12,9,24,24,12,6,6,12,6,14,2,3,9,12,12,9,10,9,7,5,8,18,10,10,10,10,5,2,6,7,16,8,4,8,4,9,8,4,12,12,7,3,3,10,24,15,24,9,6,6,9,9,4,20,23,18,6,6,5,19,18,18,3,9,7,7,6,10,10,16,6,6,9,8,12,9,6,22,3,3,24,6,14,10,5,6,14,14,4,12,6,6,9,9,10,8,8,4,18,19,16,16,6,5,5,6,5,7,6,9,6,20,12,12,6,8,10,9,22,22,4,15,12,13,24,24,8,2,3,6,10,3,4,8,4,16,16,16,14,14,22,22,20,20,9,16,12,6,8,6,6,6,8,12,9,6,5,8,6,6,6,18,3,2,6,9,9,15,15,6,14,5,3,2,10,3,11,8,9,2,6,3,18,10,10,9,9,3,4,14,14,6,6,18,3,3,10,4,6,9,12,6,13,6,6,3,6,3,6,19,16,18,18,3,4,6,4,8,8,12,12,6,6,6,6,2,3,12,9,15,4,12,15,19,19,10,10,18,6,10,10,10,10,18,3,18,18,3,3,3,10,17,17,11,6,8,7,14,14,2,6,4,6,18,18,10,9,6,6,6,3,9,6,18,9,9,9,3,4,10,9,9,9,6,6,9,9,6,9,3,3,6,4,6,15,3,10,3,6,18,6,18,18,6,12,22,6,6,18,9,9,12,4,3,8,15,14,14,14,4,20,12,12,8,8,15,15,12,12,9,21,4,9,15,15,8,6,4,3,12,12,6,10,6,2,3,3,6,6,6,6,20,8,22}; static int rectangles_array4[2913] = { 6,10,3,8,5,6,5,11,4,6,10,1,8,9,5,5,16,9,12,4,20,8,11,7,5,8,5,9,11,6,9,5,18,4,8,5,2,10,2,2,20,11,20,2,12,0,12,10,12,1,17,0,6,10,8,4,2,19,3,8,1,14,3,6,8,15,1,4,2,3,1,5,3,14,1,15,5,10,9,11,9,12,10,9,6,8,4,11,8,11,9,11,11,9,1,10,6,7,0,6,1,6,5,20,2,12,4,14,8,17,0,14,8,8,0,12,9,2,2,3,5,14,4,4,6,3,3,10,8,3,12,8,5,16,4,19,8,6,10,9,0,4,9,18,3,18,3,16,2,9,2,14,5,18,3,8,7,8,10,14,7,13,12,13,1,13,8,8,8,7,0,1,9,12,9,7,0,13,12,14,9,14,9,18,6,13,3,13,0,6,6,10,10,4,5,9,20,2,5,2,5,2,13,0,1,2,13,0,11,10,11,6,18,3,18,1,13,0,13,9,13,10,13,2,12,5,14,4,7,5,12,9,3,0,12,4,13,10,10,8,10,0,12,4,8,11,9,10,20,1,14,3,15,11,17,3,7,4,10,8,15,3,12,6,14,1,13,10,12,9,6,9,7,8,7,0,15,0,15,8,15,0,8,0,9,8,9,12,12,6,16,2,0,4,9,0,18,0,8,10,13,9,14,8,15,8,9,7,14,2,5,11,13,10,9,8,12,1,15,1,10,3,12,8,6,10,5,4,11,7,9,2,3,10,16,9,21,0,18,3,18,0,5,6,12,10,15,3,15,5,11,8,15,9,13,9,18,1,14,1,12,1,14,0,17,5,18,3,15,0,4,2,14,6,20,1,16,7,12,4,12,8,15,7,6,1,6,0,13,9,12,8,16,0,14,7,5,4,16,6,12,11,11,12,6,10,8,14,5,11,3,3,3,20,5,13,6,12,8,9,10,13,9,14,8,20,6,18,7,18,0,9,0,17,1,14,8,9,9,14,8,6,1,10,5,5,0,8,10,6,4,12,12,12,3,2,6,14,0,19,0,12,0,13,3,6,0,15,9,12,1,15,7,19,6,8,5,14,2,18,2,17,12,14,10,14,6,6,11,12,10,16,6,9,5,10,8,6,10,8,1,9,3,2,10,8,10,0,14,9,14,1,15,0,19,2,3,9,18,0,12,2,14,5,18,5,22,8,11,7,22,12,15,0,13,9,14,6,14,6,3,3,12,12,13,8,20,3,20,0,10,8,13,9,13,0,6,3,8,2,15,3,19,3,19,3,4,6,15,0,17,5,8,6,5,10,10,0,15,0,14,11,14,8,15,3,11,6,12,0,3,3,12,1,17,2,7,8,3,10,5,11,3,18,3,9,3,13,8,13,4,13,8,7,6,16,6,11,0,13,5,10,10,14,6,12,7,8,5,3,5,5,8,3,1,5,1,1,3,6,7,14,1,13,12,13,9,15,5,15,6,15,0,5,7,17,10,15,0,14,8,13,6,13,8,17,4,12,11,11,9,8,1,9,9,18,8,2,0,18,2,2,12,13,1,11,3,12,2,18,3,22,2,1,0,19,3,20,0,13,0,10,8,4,2,14,3,17,6,10,4,2,10,5,12,0,15,5,8,1,19,8,20,9,15,2,16,2,20,3,15,0,16,2,10,1,14,3,3,10,3,2,12,10,12,11,4,0,9,8,13,5,12,1,19,0,20,0,18,9,11,0,1,1,13,4,12,4,15,1,13,5,16,5,10,7,12,0,17,0,15,0,13,8,12,2,12,1,15,0,6,10,12,8,12,8,13,1,15,6,18,11,12,0,11,11,12,8,9,10,4,11,5,8,15,12,12,7,11,3,14,8,9,1,11,9,12,1,6,1,8,2,11,7,14,9,14,7,4,9,7,11,2,8,3,11,0,10,2,20,2,12,0,14,0,12,8,4,10,14,2,14,2,5,9,12,6,12,0,18,5,10,2,13,6,11,7,18,11,10,0,15,4,13,7,14,7,12,6,16,0,16,5,5,5,9,9,13,5,19,3,5,0,2,5,1,10,8,11,12,4,12,3,5,4,6,10,0,0,3,2,7,5,10,9,18,9,12,11,13,9,4,2,13,9,9,1,8,3,5,8,9,0,6,4,13,5,12,11,14,5,12,0,20,9,12,10,14,7,12,2,18,1,6,12,14,6,11,1,9,7,17,2,7,1,8,11,3,20,8,20,0,8,5,4,8,6,0,20,10,12,0,6,0,20,2,18,3,13,8,5,9,6,9,10,1,11,7,14,5,13,0,12,1,2,2,20,1,14,0,15,1,9,0,16,12,7,11,12,10,15,3,16,3,16,12,10,7,11,11,12,11,3,2,12,5,14,0,10,8,5,11,11,9,5,10,10,7,12,0,12,2,12,1,12,0,5,6,14,5,9,8,11,6,17,8,8,4,12,9,16,1,11,3,7,12,12,3,12,3,13,5,11,9,17,2,12,0,12,5,12,9,2,5,4,2,7,0,2,6,6,11,15,8,3,2,19,1,14,4,14,8,14,4,8,3,20,2,8,9,16,12,11,12,12,10,14,5,18,6,13,1,15,9,10,3,16,9,15,0,13,2,5,1,5,1,16,9,16,6,18,1,9,0,14,3,16,3,11,11,15,8,17,3,3,0,2,0,13,5,12,5,18,0,13,5,9,12,6,9,13,8,6,2,20,2,14,8,8,12,9,11,4,10,8,7,12,0,18,0,16,1,12,9,12,8,12,4,15,3,15,4,15,0,15,0,14,3,7,10,8,12,7,0,16,7,10,11,12,3,16,0,0,0,10,10,4,8,9,9,6,11,8,4,8,7,1,15,7,13,9,3,0,10,6,15,0,20,2,13,0,2,1,18,0,17,0,0,2,12,9,17,5,15,0,15,0,5,0,13,8,13,8,13,10,12,11,13,7,14,12,12,1,20,0,14,0,13,0,6,0,14,1,13,4,17,5,16,3,14,10,11,0,4,5,19,0,8,3,17,4,16,3,18,1,17,0,15,8,22,1,20,2,3,6,7,11,4,9,4,3,18,2,13,7,13,10,12,0,11,2,13,5,9,5,3,6,12,8,9,1,19,1,9,6,12,10,14,4,8,6,19,0,17,1,18,0,3,2,14,5,10,11,7,12,5,10,11,9,14,8,12,7,2,1,8,7,6,17,4,2,6,9,7,10,8,18,3,18,4,5,11,15,7,12,12,12,2,14,10,14,3,14,1,3,1,18,0,5,6,14,4,17,8,8,5,3,0,12,0,9,2,0,10,10,8,13,11,2,1,13,12,10,7,14,10,11,10,20,1,17,9,12,12,14,5,16,4,10,1,15,12,12,8,19,0,14,6,13,9,13,8,7,4,17,3,14,2,3,4,19,10,19,1,15,5,10,4,0,8,14,0,6,1,18,4,6,1,1,2,18,0,12,7,9,7,12,7,12,10,15,3,4,6,8,12,11,2,8,0,0,2,12,10,7,9,17,0,19,1,12,3,12,12,12,10,14,10,13,7,7,9,0,11,3,15,2,13,4,20,8,12,2,3,3,13,5,17,2,12,10,12,10,12,12,12,0,9,7,14,8,13,1,9,2,15,0,9,2,15,4,17,0,15,0,15,3,20,8,13,0,0,5,11,4,10,8,11,4,14,2,4,8,1,9,13,10,4,6,14,9,9,9,9,11,9,12,14,8,18,3,18,0,13,10,11,8,16,5,7,9,13,3,20,7,15,0,19,1,12,1,3,8,5,9,11,4,6,5,17,11,1,10,10,11,11,9,15,0,2,0,9,9,18,0,12,3,2,5,12,10,5,9,7,9,4,0,11,11,6,11,12,5,14,5,14,0,16,4,8,0,13,0,12,6,10,1,0,6,9,1,10,7,9,10,3,7,3,10,3,10,4,5,8,9,3,2,9,11,11,16,7,16,6,19,3,14,0,9,6,14,4,7,9,14,12,14,5,4,11,3,4,16,4,13,10,15,12,12,3,12,8,6,0,4,0,15,0,6,3,13,6,6,10,10,7,17,2,11,1,15,1,10,11,7,10,15,3,15,7,12,9,15,5,8,7,12,9,7,10,13,9,9,0,14,0,12,1,7,11,16,2,8,0,5,2,14,3,9,4,12,9,13,0,14,2,11,7,13,7,17,4,13,10,18,12,17,5,16,4,18,4,15,0,20,2,16,9,12,0,5,0,12,5,10,8,6,3,16,6,8,6,10,11,14,0,16,3,6,4,17,2,2,4,18,8,6,6,14,8,15,6,14,4,7,8,13,9,8,0,17,0,21,0,12,1,5,1,6,5,14,1,11,0,13,1,0,1,14,7,12,8,13,11,9,7,6,10,10,6,15,8,11,8,1,0,15,7,20,2,14,2,12,1,7,8,12,2,14,3,17,5,13,9,13,12,12,11,20,1,7,6,9,1,19,4,3,1,9,4,6,4,15,9,12,6,15,3,14,1,14,0,15,3,9,1,13,1,6,8,0,0,14,1,14,8,10,11,10,9,14,8,11,3,13,0,12,11,10,8,11,10,12,10,4,0,11,1,11,6,14,7,12,12,11,1,9,0,1,1,9,9,11,11,18,4,15,1,14,3,15,7,14,12,7,0,19,1,16,6,17,5,0,7,1,1,6,1,15,3,4,0,6,7,12,6,9,4,20,2,13,12,13,1,13,2,13,2,3,7,17,5,16,0,15,0,9,4,12,10,13,9,14,8,10,0,13,9,14,0,1,10,16,10,12,8,13,2,11,7,13,0,12,8,12,6,14,0,14,0,4,1,4,8,3,11,0,6,2,18,0,11,9,7,3,18,7,18,3,9,2,10,5,11,10,12,4,6,9,9,11,10,2,21,0,5,12,1,10,6,9,2,5,12,9,18,2,16,1,12,4,10,5,14,7,7,2,5,7,0,2,20,5,5,0,13,0,4,2,12,12,6,0,10,7,11,7,21,3,21,7,9,0,15,1,13,7,13,10,13,10,13,10,5,0,11,2,15,1,10,0,6,0,13,2,13,8,13,9,12,3,16,6,10,7,12,7,10,3,16,4,0,11,10,12,17,5,16,5,3,4,4,3,16,6,14,7,4,0,10,6,0,0,3,9,12,6,8,2,12,5,14,10,12,7,17,9,13,0,12,9,10,9,0,8,9,9,15,10,15,6,19,2,12,10,14,5,11,3,10,5,20,7,4,8,6,19,3,20,2,5,10,11,0,7,1,11,0,17,12,17,7,13,0,8,6,7,0,13,3,12,2,9,6,14,5,12,6,17,4,14,0,13,2,6,0,21,1,15,11,13,7,14,3,22,7,12,11,15,8,13,8,9,8,12,3,19,0,22,0,7,11,10,0,14,2,13,8,15,7,11,11,15,1,16,5,12,4,6,9,15,6,12,7,6,10,12,3,4,2,13,9,1,0,0,3,3,5,16,5,10,6,12,2,12,10,13,6,9,2,14,3,10,2,17,2,0,7,17,5,11,8,11,5,15,4,15,6,12,9,12,4,4,5,14,9,12,10,12,2,12,9,12,8,7,1,13,2,15,0,15,6,8,1,6,10,12,3,18,1,18,11,18,6,18,6,16,12,9,6,11,6,16,4,18,8,18,3,15,6,18,0,13,7,4,0,15,3,9,8,5,3,5,10,4,2,8,18,3,4,6,13,4,12,8,13,8,3,0,14,0,14,0,6,0,14,8,15,8,10,7,7,12,11,7,21,0,15,0,18,7,16,0,18,2,14,1,9,5,5,11,12,9,12,10,12,9,13,3,12,9,13,9,11,7,5,8,4,0,0,0,11,3,12,10,12,7,9,10,11,9,19,1,15,5,6,10,12,10,14,3,7,7,14,7,18,9,13,6,10,0,3,4,16,8,16,7,15,3,18,0,13,2,17,1,8,0,15,1,20,3,9,9,7,10,11,4,10,3,15,0,6,9,12,10,16,10,6,0,17,5,14,1,7,10,14,3,9,3,6,1,16,0,12,8,10,0,21,2,20,2,8,8,11,9,7,12,11,8,11,4,12,0,12,4,12,11,15,8,13,10,12,9,17,6,10,2,2,7,3,2,15,8,10,7,18,3,20,2,17,5,16,4,11,12,12,3,13,0,8,9,19,9,6,10,5,12,3,15,4,11,9,5,4,11,10,16,3,13,8,8,10,5,2,2,11,9,9,5,2,6,6,20,2,10,10,3,5,17,0,9,10,11,0,6,4,9,5,6,7,11,12,18,0,0,0,6,0,20,4,21,1,3,0,18,7,17,2,19,0,15,0,14,0,5,0,12,5,4,3,4,10,16,7,17,3,12,5,14,6,15,0,12,0,12,9,6,0,2,7,12,6,8,4,12,10,18,3,6,5,12,0,12,11,11,1,14,1,7,0,12,12,12,10,9,1,0,6,12,5,4,4,8,1,10,1,12,1,5,0,9,1,8,8,5,9,6,2,12,10,14,8,9,12,5,4,14,9,14,8,11,5,5,9,11,2,18,3,12,5,20,0,18,1,15,5,6,2,14,10,13,3,13,3,16,0,0,12,21,0,15,1,15,0,3,0,15,0,12,3,17,0,12}; static int rectangles_array5[2913] = { 7,4,12,20,5,13,11,19,3,8,4,12,2,14,11,3,11,5,8,5,0,6,6,20,13,3,11,13,5,12,21,8,1,1,8,6,16,1,13,1,2,5,4,3,1,7,1,1,5,11,13,7,7,5,1,12,17,3,3,1,11,14,12,8,13,17,18,10,1,1,5,12,17,17,17,6,5,0,3,6,0,6,6,8,3,0,11,6,20,6,13,6,6,18,23,12,12,8,16,19,2,17,4,4,4,16,12,0,10,8,8,0,0,16,18,8,19,11,9,0,6,5,5,15,17,19,0,6,1,3,8,11,12,16,16,5,2,10,5,20,12,4,5,1,1,0,0,7,12,13,17,14,6,8,8,15,14,14,10,15,0,0,3,0,1,0,0,20,3,5,11,11,11,11,11,12,13,4,0,0,0,1,1,6,16,16,19,4,18,2,11,5,13,4,3,19,0,1,23,0,12,1,5,2,3,11,12,12,7,1,7,10,6,16,8,5,0,4,0,0,6,7,19,18,18,20,15,6,8,14,9,6,7,11,16,6,0,0,7,20,14,2,1,3,0,21,7,7,8,15,17,3,11,1,2,14,8,2,8,17,11,1,16,16,14,14,1,0,2,2,20,6,7,10,8,4,2,6,3,0,10,10,16,16,10,0,7,6,9,0,0,0,12,11,11,14,15,15,7,7,0,0,3,3,4,10,19,17,13,18,19,0,4,4,3,1,19,3,5,2,19,22,14,2,7,6,12,14,13,14,7,4,14,6,6,9,6,6,5,20,5,5,11,2,0,0,14,8,14,5,8,13,14,12,1,1,12,22,16,13,6,0,7,4,0,0,12,12,14,14,15,14,17,0,1,1,17,9,7,4,6,10,17,1,11,6,17,17,7,15,8,14,16,4,19,13,3,6,11,7,6,8,15,1,8,5,2,11,11,6,1,4,18,4,16,7,7,2,20,14,2,0,0,17,8,3,12,7,8,7,7,6,23,17,17,11,11,9,17,0,0,18,18,12,6,6,1,0,15,11,16,2,20,0,13,11,7,8,9,0,0,1,18,15,15,17,18,0,4,5,14,0,0,7,7,5,15,0,7,2,2,2,6,5,6,0,3,7,7,13,6,17,0,2,8,8,8,3,6,0,12,21,8,5,7,12,7,19,20,14,20,20,11,11,3,18,17,20,6,6,0,0,0,0,3,11,0,0,8,12,0,6,2,3,7,6,1,10,3,5,4,1,13,5,1,2,10,9,10,10,17,7,1,1,5,12,17,15,16,13,11,6,5,5,1,1,15,11,4,4,0,0,19,11,8,8,12,12,2,2,6,7,6,6,3,0,13,7,6,3,15,14,12,2,16,16,3,0,10,5,16,19,6,0,2,12,0,11,20,11,14,11,11,8,17,0,0,7,1,20,7,17,2,3,6,8,12,10,5,20,0,2,11,3,17,18,15,14,8,8,2,19,20,3,6,0,0,10,11,5,8,5,6,22,10,4,8,9,10,6,5,4,4,10,10,2,2,4,4,4,4,20,20,2,2,5,11,9,5,14,14,11,9,6,21,5,5,4,7,13,8,2,19,10,2,0,3,2,7,0,3,19,14,14,5,6,6,5,5,12,12,3,3,1,11,14,11,11,20,4,3,11,0,0,11,23,10,1,0,3,17,16,12,12,7,6,8,11,7,6,9,0,5,5,5,4,17,17,13,17,16,9,0,12,9,9,6,6,5,6,13,5,3,16,19,13,10,9,16,14,10,0,11,2,4,0,19,8,10,17,18,18,11,11,3,5,0,17,17,17,18,8,6,12,12,5,9,9,11,13,8,8,11,11,6,0,0,3,10,7,13,4,2,5,0,4,10,10,11,10,12,21,20,17,19,18,6,16,18,6,4,21,7,2,10,11,9,10,11,0,8,0,3,20,1,0,18,7,3,2,2,1,18,15,16,5,13,3,14,12,16,8,12,20,7,2,6,7,0,11,12,21,3,9,11,7,8,16,14,11,13,0,10,4,0,6,6,11,11,16,7,16,14,11,6,18,0,5,0,1,1,17,5,17,5,9,4,7,7,4,12,3,6,9,5,4,6,2,19,19,5,8,13,12,6,11,7,5,9,14,14,11,12,0,0,1,14,20,11,11,14,16,11,5,16,15,8,16,0,5,5,6,10,10,18,10,0,4,12,6,12,16,11,11,12,4,4,9,5,9,0,16,16,7,9,1,6,18,8,19,8,8,17,11,2,12,4,1,3,6,11,8,18,16,3,3,0,0,11,11,12,20,8,0,10,11,12,0,0,5,14,14,1,0,3,3,10,10,6,14,17,1,13,16,17,3,6,6,1,1,18,18,1,3,0,3,5,0,7,7,3,3,8,8,13,5,1,1,15,2,6,15,12,12,2,7,11,9,5,8,19,19,19,18,19,1,2,16,16,22,13,10,8,10,10,15,7,16,19,15,9,9,7,4,8,7,15,8,19,19,1,12,5,4,16,16,0,8,4,2,1,15,11,9,5,4,3,14,11,0,7,1,11,7,23,16,0,11,17,17,5,5,8,8,2,2,0,4,18,0,15,21,5,5,6,5,16,5,8,6,13,10,15,3,8,6,6,13,15,15,18,18,17,17,1,2,2,15,2,2,5,2,0,13,2,11,6,8,11,8,0,0,6,20,19,6,8,3,19,5,6,16,5,5,4,13,1,12,7,5,11,11,5,2,0,0,0,0,2,13,7,8,15,10,17,9,4,13,8,18,18,20,8,8,5,5,6,0,8,8,14,11,14,14,17,17,0,0,8,17,6,22,9,0,1,18,7,10,2,12,5,5,3,13,19,9,7,1,14,21,11,6,6,4,10,17,4,0,0,0,7,1,10,8,5,0,0,2,2,0,1,3,11,10,3,6,10,8,2,6,0,0,0,19,18,16,17,16,16,8,7,8,0,8,5,6,7,8,8,10,5,12,9,14,9,18,6,6,16,17,12,9,7,10,10,10,12,17,16,16,0,1,18,18,9,0,0,2,1,8,8,10,10,7,12,15,2,1,1,1,1,11,11,13,14,13,18,22,12,7,7,7,14,14,7,13,7,12,7,0,12,13,13,17,19,3,5,0,16,18,15,10,9,16,9,15,8,4,9,6,7,12,12,6,6,5,5,5,5,3,3,11,11,8,6,19,4,1,11,12,12,0,12,21,4,2,10,7,0,15,3,7,20,12,5,11,4,0,4,4,19,9,13,13,11,6,0,9,18,7,18,14,14,14,8,9,7,7,14,18,18,18,1,21,20,1,18,17,16,18,10,18,7,7,13,6,0,7,2,18,2,7,1,0,3,15,10,3,0,0,0,4,17,20,3,3,6,6,14,19,2,1,0,10,16,16,12,16,6,6,9,9,10,8,10,10,1,5,10,14,4,2,4,4,8,8,17,16,18,2,2,2,3,2,8,3,22,11,11,11,8,8,15,15,14,13,15,4,15,15,11,8,6,9,4,7,11,12,18,2,13,12,5,7,5,19,5,5,1,4,4,4,4,4,1,1,5,4,5,5,7,0,11,6,3,18,8,4,11,4,13,1,4,7,19,9,6,5,3,2,6,3,3,3,1,2,3,16,8,0,0,11,6,9,17,19,8,17,18,19,2,5,6,19,19,18,18,13,14,18,13,17,2,9,5,7,8,9,9,9,8,12,10,10,0,3,1,23,10,0,0,2,13,21,1,7,0,1,1,5,6,5,5,13,7,9,9,4,6,21,21,5,10,0,2,0,15,13,0,7,13,22,3,11,7,7,3,1,1,18,15,10,9,11,7,2,2,4,8,9,4,11,7,0,0,1,2,7,3,14,14,19,0,4,2,2,12,15,10,18,4,0,6,13,13,13,7,6,18,20,18,13,13,9,20,18,2,2,15,11,18,19,12,12,1,15,7,12,0,3,0,0,11,14,21,0,1,6,6,0,0,18,0,0,1,1,16,3,5,10,15,10,8,2,16,6,16,22,10,6,2,16,20,0,6,10,15,7,6,6,0,0,19,17,4,4,16,16,16,18,0,3,17,0,12,12,9,3,7,4,3,2,5,0,19,19,15,22,15,15,6,3,3,8,4,2,2,2,7,3,6,1,8,0,18,20,19,18,8,15,18,18,6,7,6,9,5,7,4,10,5,8,0,12,14,10,17,6,6,13,10,10,9,3,0,12,0,0,2,2,0,0,8,8,1,1,0,10,11,11,10,16,10,7,8,0,11,6,0,15,14,1,0,3,2,6,20,20,19,0,3,12,4,3,8,15,13,6,9,0,9,9,5,4,7,0,0,0,4,3,13,13,2,13,8,9,8,14,14,12,12,17,17,8,10,10,9,12,12,12,12,12,10,15,10,1,7,5,12,16,0,10,4,20,11,18,0,0,2,2,7,1,16,15,8,8,6,19,18,5,6,6,0,0,5,5,1,13,1,18,17,20,16,1,8,0,6,5,1,5,1,11,11,18,18,15,11,11,9,15,17,17,16,16,5,18,21,21,20,19,2,4,9,19,2,10,10,8,5,5,4,4,7,6,4,0,1,1,17,3,3,2,2,7,22,16,3,10,19,0,5,8,1,6,3,13,14,7,7,10,8,19,14,6,0,0,1,14,10,12,1,1,7,10,7,8,0,0,5,5,0,0,3,3,4,18,19,19,18,18,17,10,19,12,10,10,2,6,14,14,1,21,1,16,1,0,1,1,9,16,4,4,4,4,0,16,7,11,5,6,1,1,9,4,16,0,5,3,14,16,11,9,2,6,8,1,1,16,19,19,4,20,12,12,12,12,8,8,14,14,7,7,3,1,11,6,18,23,15,15,15,19,14,12,3,1,1,2,2,14,3,6,6,0,0,6,1,7,7,20,6,2,4,4,2,2,2,2,15,18,12,1,8,6,12,14,14,18,6,3,6,5,9,16,8,8,6,5,10,11,2,0,4,7,2,4,0,17,17,0,3,7,9,14,14,21,21,4,8,4,17,16,11,18,5,8,8,8,8,8,6,8,11,11,3,10,19,18,11,4,19,19,18,17,17,1,1,5,5,0,4,0,0,5,6,2,2,0,4,0,0,9,7,8,0,10,0,1,1,10,14,14,10,18,16,16,16,14,15,15,0,10,9,9,11,5,20,10,8,10,10,11,8,9,14,2,0,16,12,12,6,0,8,8,11,3,12,16,6,10,10,12,12,15,15,20,20,19,4,3,15,2,12,11,1,10,3,6,0,0,16,12,6,22,8,8,2,17,9,5,9,11,13,1,18,12,10,6,18,18,17,19,14,10,9,17,8,6,9,9,17,20,20,20,17,17,2,2,0,20,6,9,9,9,4,9,0,1,0,0,12,12,5,6,5,16,13,13,4,4,7,19,11,2,2,13,0,11,1,10,19,10,1,1,10,10,6,12,7,7,2,5,13,4,2,6,8,20,15,17,0,0,5,2,9,6,8,1,0,0,7,5,2,12,8,8,8,11,9,14,20,22,4,17,11,12,19,18,1,1,16,1,10,8,11,11,6,6,9,8,10,5,12,14,14,10,5,4,4,8,10,5,13,13,13,1,13,13,17,17,0,10,9,9,7,7,12,15,17,14,17,3,17,4,17,8,7,4,1,5,0,11,7,7,17,6,15,15,10,10,15,1,0,0,1,22,9,6,6,9,4,0,3,6,1,14,20,1,0,12,0,7,14,9,1,11,11,11,5,18,18,15,17,17,20,15,2,8,17,20,8,7,6,20,20,1,1,3,6,9,3,0,9,4,4,15,15,15,15,1,2,1,1,6,2,11,1,0,6,7,7,0,0,13,17,9,13,19,3,2,16,0,9,7,0,6,0,0,11,7,6,14,14,0,0,1,12,8,6,5,9,8,12,19,0,4,16,7,7,6,18,18,4,0,0,0,4,14,9,8,8,7,1,0,15,10,6,12,4,1,1,10,4,13,13,15,14,19,16,12,12,10,14,7,15,9,1,6,19,0,13,6,6,6,7,8,8,10,2,13,13,10,10,9,2,2,1,2,3,8,8,20,6,6,3,6,8,2,17,2,3,6,6,19,7,11,1,0,0,7,7,7,0,0,0,19,19,9,8,7,8,8,2,9,4,8,8,0,0,0,0,2,2,6,0,7,4,5,15,16,2,1,7,7,5,1,16,14,18,16,12,9,4,2,6,6,14,14,6,13,16,20,11,6,2,13,19,15,12,8,1,0,3,3,5,5,3,4,7,7,11,11,12,17,17,11,9,6,4,9,7,11,11,11,7,7,8,2,0,6,6,6,22,21,18,20,16,16,0,0,16,16,16,16,19,19,5,6,5,2,12,3,4,4,14,14,12,11,5,4,8,8,12,15,12,12,15,6,6,0,3,3,12,13,12,14,10,10,13,10,13,13,2,2,12,13,9,10,9,1,0,5,6,0,4,3,4,16,9,5,7,7,7,9,8,8,4,17,18,17,19,20,17,11,5,8,8,6,6,5,14,14,2,1,13,2,9,9,0,0,1,11,9,13,14,0,1,1,20,0,8,8,13,13,13,13,15,15,15,8,13,13,13,13,14,18,16,20,12,12,19,6,19,19,16,14,19,19,19,19,2,17,1}; static int rectangles_array6[2913] = { 12,4,18,9,2,12,12,4,7,12,4,19,8,6,14,14,3,2,2,2,2,8,2,10,14,8,15,5,2,3,6,13,3,3,8,7,21,2,10,2,2,11,2,2,2,19,2,2,7,18,2,6,12,4,8,18,6,2,2,8,8,3,8,12,6,9,18,16,2,18,10,14,7,9,9,4,7,4,6,2,2,2,2,6,12,8,16,3,8,2,5,2,2,6,18,4,8,10,10,18,22,18,3,2,2,10,4,2,3,6,6,2,2,9,9,2,6,20,9,9,7,5,6,18,8,18,3,4,2,19,11,11,5,4,4,5,8,12,3,6,22,17,2,3,3,3,3,4,19,6,17,3,4,3,3,10,3,8,9,6,5,3,8,3,10,3,3,10,2,12,18,22,4,3,3,11,12,11,10,1,1,1,1,1,9,9,18,4,18,6,14,3,6,3,18,5,2,18,19,2,19,2,7,20,22,7,11,11,2,3,4,12,6,18,6,8,2,12,2,2,2,2,9,7,9,5,5,16,10,5,5,2,18,18,9,7,1,1,5,7,5,12,11,15,8,9,5,5,3,10,10,16,7,2,3,6,10,3,5,8,5,3,6,6,3,13,2,3,3,3,12,2,6,8,10,6,1,6,1,1,9,9,9,9,6,8,8,2,5,1,2,3,24,13,6,16,6,6,5,2,2,2,2,2,9,3,6,5,3,18,19,2,1,1,6,2,9,10,3,11,5,18,2,8,12,4,14,4,5,3,6,20,19,2,3,2,3,3,6,15,6,6,18,12,2,2,9,13,9,3,3,3,9,5,2,2,6,18,10,11,8,9,4,3,2,2,3,3,9,9,19,19,10,5,3,3,6,9,4,14,2,6,9,7,17,11,13,9,5,6,6,8,3,24,10,6,18,16,3,6,2,2,2,9,6,2,8,5,5,2,3,19,6,2,5,5,5,3,7,9,3,2,2,9,6,2,11,6,9,6,6,9,19,6,6,2,2,6,6,2,2,18,18,11,7,15,22,8,9,12,7,11,7,12,9,22,11,6,24,5,5,12,18,8,8,18,21,2,2,3,2,2,2,3,2,8,10,2,3,3,2,5,1,5,2,2,3,7,4,7,2,6,2,7,5,4,5,11,4,8,23,6,21,2,4,8,5,10,9,6,9,9,9,9,2,18,21,6,6,6,8,5,5,5,3,6,1,2,3,4,1,2,9,24,2,2,2,12,1,12,18,18,12,2,2,2,4,16,4,4,11,8,2,2,8,6,18,6,9,4,3,18,2,2,2,2,9,12,9,9,2,2,9,3,14,3,14,14,9,9,2,2,2,2,4,3,8,5,2,6,18,4,12,1,5,5,10,8,15,4,14,4,3,3,18,14,3,3,8,3,10,3,3,11,10,2,2,4,20,10,3,10,2,5,6,4,4,9,14,19,5,8,8,9,18,18,9,23,18,6,1,10,10,2,2,2,2,3,3,1,9,1,6,18,6,4,3,3,5,7,1,5,5,3,3,3,3,3,2,4,4,10,21,6,6,6,6,20,6,4,4,10,6,8,9,4,7,3,19,6,18,2,20,22,2,2,3,2,10,6,12,4,4,17,9,7,7,1,1,14,9,18,4,4,7,22,4,7,9,22,2,8,3,2,9,18,6,2,2,2,9,8,6,6,4,19,3,12,18,4,9,2,2,2,2,2,18,20,6,8,3,7,12,18,5,5,4,4,6,2,2,6,23,19,11,4,5,9,9,9,10,3,3,4,7,5,12,23,4,18,9,9,3,3,12,18,12,18,9,9,18,2,2,5,6,2,8,21,3,11,5,6,6,22,6,2,2,3,6,3,16,2,16,6,2,4,5,5,4,4,3,8,6,9,10,4,3,6,12,20,9,9,4,4,3,4,3,2,5,7,10,2,18,8,18,3,18,4,2,2,2,12,9,9,19,11,3,20,2,8,8,3,8,16,4,4,6,2,4,6,3,7,16,7,4,2,3,4,2,4,23,2,4,10,2,3,3,6,6,4,21,4,6,19,14,6,2,11,3,2,2,18,11,20,13,11,7,5,5,2,3,4,8,14,9,18,3,24,10,18,3,11,12,4,4,6,5,2,2,2,2,16,20,2,2,6,6,9,15,19,7,9,8,18,4,9,7,11,2,5,5,8,6,4,6,4,2,4,10,7,20,4,6,12,3,4,4,3,8,3,1,5,5,10,23,7,2,6,4,8,4,4,8,5,19,8,13,24,2,2,6,6,18,9,2,2,3,3,3,3,19,6,16,3,4,15,4,2,2,6,11,21,4,3,21,19,3,3,7,9,8,11,9,18,7,8,6,2,2,2,6,6,1,2,1,6,2,1,3,5,1,2,19,18,9,2,10,10,3,8,18,3,4,4,14,4,5,4,11,6,9,19,9,18,9,24,14,9,6,13,6,7,3,3,5,8,9,6,9,6,7,7,3,3,5,2,2,3,9,9,3,4,4,3,5,5,12,9,12,11,11,6,20,14,16,19,10,4,21,3,14,2,9,4,19,20,2,8,6,6,2,2,6,6,8,2,2,2,9,2,7,7,3,2,2,3,10,7,6,6,2,10,9,6,5,16,8,2,9,9,9,9,18,18,18,19,2,5,2,2,6,11,7,18,2,18,8,18,2,2,1,1,7,9,21,7,22,12,9,6,7,7,6,6,10,3,7,7,6,3,3,3,18,2,2,2,2,2,8,9,5,6,19,4,9,5,4,6,6,8,7,10,10,2,4,4,2,2,6,6,9,15,9,9,9,9,4,2,10,4,10,9,11,6,6,9,5,6,6,12,8,8,12,4,4,4,15,8,5,6,3,2,3,20,6,10,2,2,2,2,3,18,10,4,3,9,9,2,2,2,20,20,18,6,22,6,6,24,2,2,2,2,2,9,18,9,23,18,9,4,5,4,3,4,2,2,6,4,4,3,3,6,9,4,11,6,10,10,5,18,19,6,11,7,11,5,3,6,6,6,2,2,9,18,13,4,4,4,2,3,3,5,5,6,6,6,12,1,1,1,1,2,2,18,7,12,9,20,3,18,18,6,9,9,3,6,4,3,4,3,12,6,6,9,12,20,4,1,5,6,6,4,4,9,12,2,3,4,6,8,3,5,5,6,6,6,6,18,9,5,5,3,3,5,3,18,2,3,3,2,2,4,5,22,1,8,10,4,3,5,20,6,6,10,4,3,2,3,2,2,19,2,2,2,5,2,2,8,6,2,6,12,9,9,18,22,6,6,16,9,6,6,2,8,8,2,18,18,11,9,7,6,24,4,6,2,2,2,20,6,2,6,2,1,5,4,2,2,3,3,3,2,9,11,5,5,4,4,5,21,9,6,6,4,5,5,4,5,6,2,3,3,11,3,4,4,4,8,18,16,4,3,4,4,4,4,5,7,24,4,4,12,12,6,6,4,18,18,22,12,6,6,2,9,7,3,6,2,2,2,6,14,17,12,9,12,9,18,9,9,24,20,8,4,10,6,7,7,3,19,9,9,10,9,2,2,4,4,3,6,10,7,9,2,3,6,10,10,5,2,8,12,2,18,16,6,7,4,20,3,2,2,2,4,1,3,19,9,6,2,2,4,18,14,18,9,6,7,20,9,15,6,6,9,9,6,6,4,8,3,4,24,6,3,16,4,5,9,9,6,20,17,7,23,2,2,2,18,3,1,1,6,5,6,2,5,5,2,2,6,18,6,6,11,5,5,5,3,5,8,8,11,4,3,2,2,7,4,3,3,4,19,2,18,5,4,16,18,5,6,6,11,3,4,5,4,4,9,10,21,11,6,3,6,6,11,18,22,6,2,2,18,3,6,4,18,6,2,2,18,2,2,5,5,5,9,23,8,6,9,18,11,11,12,8,14,21,12,4,7,6,4,4,6,3,19,5,9,2,17,4,3,16,5,6,3,20,5,2,2,2,9,2,2,2,2,6,6,3,3,3,7,12,2,6,2,6,14,16,2,21,6,5,8,7,4,6,6,7,9,6,8,18,9,19,24,9,9,18,18,1,8,18,1,4,10,3,10,5,6,9,4,5,7,10,4,2,18,2,2,2,2,9,14,15,4,3,3,6,4,8,6,6,12,9,24,11,9,5,2,6,6,16,10,18,9,10,18,15,15,12,2,2,3,10,18,10,5,7,3,3,3,4,2,1,8,2,2,4,4,2,2,9,9,2,2,2,4,12,12,14,20,4,13,6,2,12,15,4,6,8,1,2,2,6,17,5,5,18,4,3,2,21,3,6,8,9,5,3,5,3,3,5,8,6,3,2,2,10,18,7,7,1,5,12,20,19,9,14,14,3,18,6,9,10,10,12,10,3,3,4,4,2,10,3,7,13,4,10,5,2,6,9,7,22,18,2,2,2,2,3,2,9,9,15,3,6,10,6,9,2,2,2,2,2,3,8,2,3,18,10,10,9,3,5,4,19,6,7,16,18,10,4,6,4,3,6,6,9,12,10,10,6,6,4,6,10,10,18,4,24,6,10,19,10,7,4,5,2,2,2,2,3,8,8,12,3,7,7,4,4,2,1,3,10,12,4,4,6,5,7,5,3,12,4,11,12,9,23,19,6,6,2,2,2,2,2,8,7,9,2,2,10,3,5,4,4,4,2,2,2,2,24,10,23,19,18,9,6,6,20,3,18,3,6,6,6,5,2,2,2,6,2,5,2,1,2,2,19,9,7,14,8,8,9,9,6,2,2,2,2,2,9,2,4,9,7,5,10,4,22,2,3,2,5,4,6,12,6,6,2,19,6,8,6,6,6,24,10,10,19,19,16,8,6,2,18,18,6,6,6,4,6,10,2,3,2,3,3,15,20,2,6,2,3,2,6,9,9,6,2,4,18,2,19,15,7,11,2,18,3,20,5,4,3,4,4,6,6,1,7,4,4,5,3,10,18,15,8,24,2,4,10,18,24,2,4,18,18,9,10,7,6,7,7,6,6,2,18,2,10,11,4,9,2,4,4,4,3,4,3,4,4,14,11,2,11,9,18,4,18,18,9,9,9,3,3,2,2,2,2,2,2,6,2,5,5,2,3,4,4,24,7,4,5,4,2,3,3,18,16,16,4,8,4,9,9,16,19,9,1,24,5,19,3,12,9,10,20,7,7,2,5,6,3,6,2,9,11,11,3,2,6,24,8,6,2,5,2,3,3,3,3,2,2,5,5,9,14,10,5,1,3,5,8,12,2,3,2,2,19,4,2,18,10,18,3,24,4,2,4,5,9,19,8,8,10,6,7,6,6,15,6,7,6,6,2,2,3,3,9,9,9,9,18,18,2,2,1,8,2,5,6,7,2,6,5,9,1,1,3,3,6,3,3,5,5,5,2,2,5,7,6,24,7,2,2,7,8,7,5,3,8,8,3,3,5,6,12,5,9,11,4,9,13,2,2,10,20,9,2,2,22,9,24,16,18,2,3,3,4,7,10,19,2,2,2,3,6,2,8,18,5,12,6,10,24,9,2,2,8,2,3,6,5,5,3,3,7,3,6,2,16,7,8,3,3,1,11,18,6,3,4,4,10,1,9,9,9,9,9,6,10,9,18,3,2,18,3,10,3,1,3,11,3,11,4,10,7,6,2,4,4,4,3,4,3,3,3,3,5,3,3,5,8,19,9,9,6,3,14,4,7,4,4,22,6,3,3,17,6,9,10,5,8,3,3,19,6,10,10,9,18,18,9,9,2,2,8,6,2,6,2,6,6,3,3,2,6,6,2,2,6,4,4,9,9,6,9,18,3,3,3,7,2,6,6,3,16,3,2,2,2,5,9,18,5,17,9,24,18,2,14,3,2,2,2,7,4,3,3,4,4,4,4,6,9,10,3,4,8,5,5,5,6,5,6,5,5,6,18,18,2,4,4,4,6,9,9,6,6,9,6,3,2,10,10,4,1,1,1,6,5,7,7,3,4,4,5,9,9,12,5,3,2,7,2,7,19,3,5,5,4,6,3,7,7,13,3,17,17,8,8,12,5,6,9,1,1,2,2,11,4,4,3,6,3,3,6,3,8,5,7,11,6,4,2,1,1,9,4,3,9,1,1,5,18,20,9,19,19,9,6,7,3,3,3,2,2,2,2,4,4,2,3,3,9,8,10,9,3,5,3,12,4,4,6,12,6,6,7,6,19,6,2,2,5,5,7,3,8,10,18,2,20,2,6,6,18,15,18,1,2,2,4,4,20,13,7,7,5,5,3,18,18,9,15,6,12,3,13,11,6,6,24,10,18,10,1,6,2,2,18,9,6,9,5,5,5,5,9,9,10,10,18,18,9,7,19,16,8,6,1,1,4,4,3,6,4,6,9,9,3,18,3,3,18,18,22,7,6,6,8,16,6,4,3,3,18,10,9,9,1,1,2,6,8,9,16,18,2,3,2,2,6,18,24,9,4,13,16,14,9,16,13,13,12,10,18,18,9,11,8,8,18,5,6,9,2,3,2,2,5,9,17,12,8,5,2,2,2,13,19,6,4,3,3,3,9,2,4,4,5,5,4,4,16,16,7,3,9,17,8,8,5,11,12,6,3,3,9,11,9,18,19,18,9,9,9,9,1,24,3}; static int rectangles_array7[2913] = { 3,7,3,2,19,8,3,5,3,2,7,4,3,5,5,3,6,10,10,9,11,13,9,2,6,3,3,7,10,6,3,2,15,15,15,6,4,10,10,13,13,19,9,11,9,1,9,9,7,1,11,3,3,6,5,2,3,13,13,23,4,7,3,2,6,2,1,6,20,1,7,4,3,2,2,5,7,5,3,9,9,9,9,4,3,6,4,6,3,9,4,9,9,6,1,5,5,2,2,1,1,1,15,10,10,3,9,9,6,3,3,9,9,2,2,10,3,1,6,24,5,6,6,1,4,3,6,18,14,1,13,2,10,6,6,4,4,2,6,3,5,3,10,8,7,22,22,16,2,4,2,7,5,11,11,9,7,8,14,3,8,6,4,6,2,6,6,2,9,2,1,1,8,6,6,2,2,6,17,24,24,22,22,18,2,2,1,9,1,4,3,6,8,16,3,4,9,1,1,9,6,9,6,1,1,3,2,2,11,6,5,6,5,1,3,3,9,7,13,13,9,9,2,3,2,4,9,2,2,10,7,9,1,1,2,3,18,18,10,4,9,3,4,3,19,3,4,4,8,2,2,3,5,13,14,5,2,14,4,5,4,6,3,3,8,2,9,6,9,9,2,9,3,7,4,3,20,3,21,23,2,2,2,2,4,19,6,10,6,19,10,6,1,2,3,2,3,3,4,9,9,9,15,15,2,7,5,4,8,1,1,9,18,18,9,14,3,8,6,8,5,1,10,4,3,5,4,5,7,8,8,1,2,9,14,12,9,9,3,2,3,3,1,2,9,9,2,2,2,15,6,7,2,4,19,19,3,1,3,2,3,11,7,10,9,9,6,6,2,2,1,1,2,6,6,6,3,6,6,4,9,3,2,23,2,6,2,2,4,3,3,4,6,1,2,3,3,3,6,4,9,10,9,21,7,9,4,4,4,9,17,3,3,19,7,6,6,6,4,2,6,14,14,2,5,11,7,3,2,3,3,2,1,3,3,9,9,7,5,9,9,1,1,6,3,2,1,24,4,3,4,3,3,8,2,1,4,3,2,5,5,2,1,3,3,1,5,24,11,6,10,24,24,7,12,14,2,9,7,15,9,7,18,6,10,9,7,3,6,6,9,3,13,3,4,5,4,3,5,5,2,3,2,12,5,5,12,2,2,8,2,2,2,2,9,1,2,3,3,3,5,8,5,5,10,3,18,9,7,5,18,9,2,1,9,10,12,6,21,4,4,1,2,9,9,22,7,5,7,7,3,9,16,16,4,3,1,3,2,5,6,1,11,11,9,9,9,2,2,2,17,17,2,6,6,6,5,5,2,2,14,9,15,15,9,21,4,6,9,3,1,5,2,20,4,4,3,3,2,6,3,5,7,6,1,6,6,6,3,7,2,6,7,4,2,9,9,5,1,2,11,3,9,4,3,5,8,2,3,4,8,18,11,5,1,1,2,5,1,3,22,2,2,12,9,9,9,6,9,19,2,19,3,1,4,5,6,8,4,3,19,20,20,6,6,7,7,7,9,10,10,2,2,6,6,3,3,2,3,5,5,13,5,3,2,5,6,6,1,3,1,9,1,1,9,23,19,9,2,6,3,5,5,3,4,3,3,18,18,2,2,3,8,5,4,2,5,4,2,2,17,9,6,9,6,1,3,11,10,17,2,3,4,4,5,1,7,3,1,6,14,9,18,18,10,11,1,1,4,4,6,7,5,1,4,4,9,9,6,9,11,6,1,1,2,5,4,3,2,2,4,18,10,5,6,7,2,2,5,1,2,2,6,6,3,1,2,1,2,2,1,10,9,4,4,11,3,2,6,4,4,3,4,11,4,9,9,7,8,7,10,10,2,4,9,5,4,4,5,5,8,3,4,2,2,6,6,3,2,1,3,2,6,6,8,5,6,9,4,6,2,15,1,3,1,6,1,5,9,9,9,2,2,2,1,6,6,1,10,3,3,7,3,4,6,5,3,9,6,3,6,3,3,3,7,9,7,8,10,5,1,12,5,2,12,6,6,13,13,6,1,6,7,1,2,4,9,2,6,23,23,1,2,1,2,15,3,4,4,9,6,5,3,3,2,1,6,1,2,1,8,2,11,5,6,3,10,9,10,10,10,3,1,13,13,7,3,2,2,1,8,2,4,1,6,2,7,3,9,5,5,3,3,7,6,6,9,8,2,7,1,8,5,2,7,8,8,6,6,8,18,7,7,3,6,3,9,3,8,4,8,8,5,4,1,9,4,1,11,9,4,3,1,2,9,9,19,19,8,8,1,4,2,6,7,6,5,9,9,4,2,1,6,6,1,1,7,7,7,2,3,2,2,1,3,4,5,9,10,10,3,3,19,9,19,4,9,19,6,5,18,12,1,1,2,9,2,2,6,8,1,6,5,5,2,5,4,7,3,3,2,1,2,1,2,1,2,2,3,2,4,3,6,7,4,3,2,3,2,3,5,5,17,10,4,9,9,8,2,2,6,5,6,8,4,4,2,2,3,2,2,9,2,7,3,1,2,5,1,6,3,9,3,7,1,1,13,4,3,3,10,10,3,3,21,13,21,20,2,9,3,3,9,10,9,9,2,7,3,6,10,4,2,3,7,2,3,10,2,2,2,2,1,1,1,1,11,6,11,11,3,2,12,1,9,1,3,1,9,9,18,18,3,2,1,3,1,8,2,4,3,3,3,3,5,8,15,8,4,6,6,6,1,11,15,13,9,9,4,4,4,3,1,10,2,4,7,3,3,3,3,2,3,9,8,8,9,16,4,4,2,11,2,2,2,2,5,16,2,5,2,2,2,5,3,2,16,13,3,3,3,3,11,5,5,7,3,6,8,3,6,9,8,1,3,2,9,9,9,9,6,1,2,6,6,11,11,11,11,9,1,1,1,3,3,3,3,2,10,9,9,9,9,2,1,2,2,1,2,5,6,5,12,5,9,9,4,5,5,7,19,3,3,5,4,3,9,6,4,1,1,3,2,4,3,4,7,3,4,3,9,23,2,1,7,6,6,7,9,6,6,5,5,3,5,4,2,19,19,20,20,12,12,7,4,4,5,1,6,1,1,3,2,2,7,3,9,6,5,6,3,3,3,2,3,1,6,24,4,6,4,7,7,5,2,9,7,5,3,12,14,4,4,3,3,3,3,2,2,4,4,12,11,4,7,1,9,7,6,11,11,18,5,1,20,4,2,5,7,4,3,4,3,2,9,8,17,6,17,17,1,9,9,9,4,9,9,4,3,9,3,2,2,2,1,2,3,3,3,2,3,3,23,3,4,23,1,1,2,2,3,3,2,5,6,9,9,9,1,3,13,4,13,18,5,8,9,9,7,7,8,10,3,4,5,5,16,16,5,1,2,4,6,6,4,4,5,4,3,9,7,7,6,8,7,7,9,4,4,4,10,6,10,10,7,7,4,3,5,11,8,3,3,6,3,5,1,1,1,3,3,3,9,2,6,6,4,16,9,9,5,2,4,7,3,3,5,1,2,2,2,3,6,5,2,4,5,5,6,4,2,2,2,2,9,9,5,13,6,3,2,5,3,9,7,3,3,2,6,9,7,3,9,1,2,3,3,5,1,6,9,11,11,5,18,6,1,2,5,9,9,5,1,2,1,2,3,4,1,2,2,3,3,2,2,3,3,5,4,6,5,3,4,6,2,5,4,4,4,3,4,8,3,1,9,9,13,1,6,24,24,10,6,3,11,4,18,16,16,3,1,3,3,2,4,7,7,6,4,3,3,7,5,6,18,9,3,5,6,6,5,1,13,1,4,5,2,1,4,3,3,4,6,5,7,10,10,3,3,2,8,11,6,9,9,2,2,2,3,9,9,1,13,4,6,1,4,9,13,1,9,9,4,4,4,2,5,6,3,2,1,2,2,3,4,2,1,3,5,3,3,5,5,4,6,1,5,12,12,3,11,13,3,6,3,6,1,10,9,9,9,2,9,9,16,16,3,3,6,6,8,6,2,20,3,9,3,2,6,9,2,3,4,8,3,5,4,4,3,5,21,21,1,2,1,1,2,2,1,1,23,3,1,23,5,4,7,3,6,5,2,5,4,24,2,5,9,1,9,9,9,11,2,4,3,5,12,12,4,10,3,9,5,11,2,4,2,2,4,9,3,3,3,2,1,3,3,1,2,2,2,12,9,6,2,3,3,4,3,7,6,6,6,14,18,12,14,14,20,20,17,17,2,2,13,13,9,7,2,2,3,1,5,3,6,9,2,4,5,3,5,18,14,9,3,2,4,4,1,5,6,12,1,6,3,9,5,6,6,11,6,6,4,4,3,13,9,9,3,1,3,3,21,4,2,1,1,2,4,6,7,2,3,2,3,3,2,4,7,7,5,5,10,2,6,3,3,5,2,4,9,6,2,3,1,1,9,9,20,20,7,9,2,2,2,6,3,2,3,7,9,9,9,9,9,6,3,11,6,1,4,2,2,6,4,8,1,3,8,4,1,7,5,3,6,9,4,4,3,2,2,2,3,3,8,3,2,2,1,5,2,3,3,4,2,14,8,4,9,10,13,13,6,3,7,2,6,4,3,5,5,13,19,6,2,2,5,7,3,12,7,4,6,3,5,2,2,2,2,4,7,3,9,12,9,9,11,6,3,2,11,11,2,7,4,5,6,6,16,16,16,16,1,2,4,1,1,2,3,3,3,7,1,7,5,5,9,5,9,9,10,3,10,4,10,19,10,9,2,2,3,4,3,3,2,2,8,9,9,9,10,10,3,9,6,4,6,7,2,5,1,10,6,9,8,6,7,2,3,3,10,1,4,11,4,4,3,2,2,2,1,1,3,5,5,9,1,1,3,3,3,5,8,5,13,13,9,11,11,2,1,9,7,9,6,9,10,3,3,3,9,15,1,9,1,2,5,14,9,1,6,1,4,5,6,5,5,3,3,20,3,13,5,4,7,2,1,4,9,1,13,5,3,1,1,11,5,1,1,5,21,3,3,4,4,3,3,9,1,9,2,3,5,2,9,5,5,5,7,5,7,5,6,6,2,10,2,2,1,13,1,1,2,2,2,16,16,10,10,24,10,9,9,5,9,8,8,9,6,18,18,2,3,15,14,5,9,8,8,4,2,5,5,3,5,2,2,4,2,2,23,2,4,9,6,4,2,2,1,10,10,9,12,4,7,8,9,2,2,3,6,9,7,2,10,21,10,4,9,6,6,6,6,9,9,4,4,2,2,2,4,19,8,4,3,2,10,6,22,22,1,5,9,1,5,1,6,7,5,9,5,5,2,1,6,8,2,3,3,3,3,4,8,4,3,3,9,9,6,6,2,2,2,2,1,1,11,11,24,4,9,7,3,3,10,3,7,6,24,24,7,7,19,6,6,4,5,5,10,10,4,4,3,1,10,9,19,3,10,9,5,6,10,10,6,6,4,3,2,5,2,5,6,2,2,9,9,2,1,2,19,19,1,2,9,4,2,10,6,6,5,5,2,1,9,9,9,9,5,10,3,1,6,2,3,2,2,2,11,11,3,9,6,3,4,4,6,6,4,7,4,9,6,10,6,7,6,18,7,1,4,7,6,6,11,20,2,2,2,2,12,4,2,3,1,8,12,1,7,2,7,19,7,3,7,3,5,19,6,7,9,5,5,5,7,5,9,9,7,7,4,6,6,6,8,1,2,2,5,6,3,10,3,5,14,2,3,7,6,6,3,2,2,6,3,6,6,1,3,2,2,2,1,1,2,2,9,12,4,3,12,3,9,3,3,10,10,9,4,3,9,9,3,10,10,2,2,3,2,1,7,6,6,3,13,3,15,7,3,6,9,24,24,4,2,2,4,2,7,1,1,9,6,6,9,10,9,7,5,8,9,5,5,5,5,5,2,3,7,8,4,4,4,4,9,4,4,6,6,7,1,1,10,24,15,24,9,2,3,3,3,2,10,23,9,2,3,5,19,18,18,3,9,7,7,6,5,5,8,2,2,3,4,6,9,3,22,3,1,24,6,7,5,5,6,7,7,2,6,3,3,3,3,5,8,8,2,18,19,16,16,2,5,5,6,5,7,6,3,6,10,6,4,2,4,5,9,22,22,2,5,6,13,24,24,4,1,1,2,5,1,2,8,4,16,16,16,14,14,22,22,20,20,9,16,6,3,4,2,2,6,4,6,3,6,5,4,2,3,3,9,3,1,3,9,9,5,5,3,7,5,3,1,10,1,11,4,3,1,2,1,18,10,10,9,9,1,2,7,7,6,6,6,1,1,5,2,3,3,6,2,13,3,3,1,2,1,2,19,8,9,9,1,2,3,2,4,4,6,6,2,2,2,2,1,1,6,3,5,2,12,15,19,19,5,5,6,3,5,5,5,5,6,1,6,6,1,1,1,10,17,17,11,3,4,7,7,7,1,2,2,2,18,18,10,3,3,2,2,1,9,6,9,9,3,3,1,2,5,3,3,3,2,2,3,3,3,3,1,1,2,2,3,5,1,5,3,3,9,6,9,9,6,12,11,2,3,9,9,9,12,2,1,4,5,7,7,7,2,10,6,6,4,4,5,5,4,4,3,7,2,3,5,5,4,3,4,3,6,6,2,5,2,1,1,1,2,2,2,2,20,4,11}; static int rectangles_array8[2913] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,8,0,0,0,0,0,11,0,0,0,0,0,0,0,11,0,0,0,0,11,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,11,6,0,0,0,0,0,0,0,11,0,12,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,12,2,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,2,11,0,0,0,0,0,0,0,9,0,12,0,0,0,0,0,9,3,0,0,0,0,0,7,0,0,0,3,11,0,0,0,0,0,12,1,0,0,0,0,0,17,11,0,0,0,0,0,9,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,12,12,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,18,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,4,10,10,3,0,0,15,6,0,0,0,0,0,11,17,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,8,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,1,0,0,12,0,0,0,0,14,5,0,0,5,11,0,0,0,0,0,0,0,0,16,0,0,0,0,5,0,0,12,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,0,0,0,11,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,4,0,0,0,0,5,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,10,0,0,7,0,0,12,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,7,0,0,0,0,0,14,7,0,0,0,0,0,0,0,0,12,0,0,6,14,6,0,0,5,0,0,10,0,0,0,0,20,0,0,2,0,0,0,0,7,12,0,0,0,11,7,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,16,4,12,0,0,6,0,0,0,0,0,0,0,0,3,0,0,0,0,12,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,6,0,11,10,0,0,8,12,0,4,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,11,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,1,0,9,10,4,0,16,0,8,0,10,0,5,0,0,7,0,0,10,10,0,9,0,0,0,0,0,0,0,0,9,16,0,16,4,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,8,4,0,0,17,4,7,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,4,10,0,0,0,0,0,0,0,0,0,11,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,9,8,0,6,0,0,0,6,0,0,0,0,0,0,12,7,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,11,5,12,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,9,11,2,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,6,10,0,0,0,6,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,10,0,9,6,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,9,0,10,0,9,11,11,0,6,10,16,11,8,10,3,5,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,15,4,0,0,14,7,0,0,0,0,11,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,4,10,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,5,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,14,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,8,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,17,4,14,0,3,0,0,0,0,0,0,0,0,0,6,12,14,5,0,11,7,11,10,11,0,7,0,0,10,10,0,0,15,0,15,5,11,9,0,0,0,0,10,12,0,7,0,8,0,0,0,0,12,6,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,16,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,9,12,0,0,0,0,0,0,0,0,0,12,13,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,9,0,16,0,0,4,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,2,7,17,0,0,0,15,4,0,5,0,0,0,0,0,0,0,10,11,0,0,0,0,0,0,0,6,0,0,11,0,0,12,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,12,6,0,9,0,5,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,7,0,5,0,0,0,0,0,0,0,0,10,0,0,0,0,11,0,0,0,0,5,0,0,12,0,0,1,0,0,0,10,8,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,12,6,0,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,14,0,0,7,12,0,0,0,0,0,0,0,9,12,0,0,0,0,0,0,10,7,0,0,0,0,0,0,0,0,0,0,0,9,3,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,6,12,0,12,15,7,0,0,0,0,4,0,17,0,0,0,0,4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,7,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,11,5,12,0,0,0,12,0,0,0,0,0,12,0,5,0,11,7,12,0,0,0,12,0,0,0,0,0,0,0,0,0,0,13,0,0,12,13,9,4,0,0,0,15,5,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,9,0,0,11,0,11,6,11,0,11,0,0,0,0,0,0,0,6,0,0,0,0,12,11,11,5,0,0,9,6,0,0,0,0,0,13,12,7,12,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,10,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,12,14,6,10,0,0,11,0,0,0,10,0,0,0,0,0,0,16,0,0,0,0,4,0,0,3,0,0,6,0,0,0,0,19,0,19,0,0,0,0,3,9,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,13,0,0,0,0,0,0,7,8,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,6,0,11,0,0,11,1,0,0,0,0,0,0,0,10,0,12,9,16,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,13,12,4,0,0,0,0,0,0,9,0,0,0,0,0,0,0,8,14,7,0,9,0,0,0,0,19,3,0,0,11,12,0,0,20,0,7,0,0,0,0,0,0,0,0,8,0,0,20,2,0,0,0,0,7,0,0,0,7,0,0,0,7,9,0,0,7,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,15,7,0,0,0,11,0,0,12,9,5,0,0,6,0,0,0,12,0,0,1,0,0,0,0,0,0,0,4,11,0,0,6,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,13,3,10,12,0,0,6,0,0,0,0,7,0,0,0,0,0,0,0,0,12,4,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,3,13,0,12,9,0,6,14,6,0,0,0,0,0,0,0,0,5,0,6,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,12,15,5,11,9,0,0,2,0,10,11,0,12,0,0,13,0,8,11,0,0,0,0,0,0,0,0,0,12,0,0,4,8,0,0,0,10,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,5,0,0,7,10,0,6,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,12,7,0,0,10,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,5,0,0,0,14,0,0,0,0,0,0,9,0,0,0,0,10,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,10,0,0,0,0,0,0,0,0,0,10,19,3,0,0,12,0,12,7,14,5,0,0,0,0,0,0,3,0,0,0,0,0,0,0,13,7,0,11,10,12,6,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,6,0,0,0,0,0,0,0,0,6,0,0,0,0,0,10,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,11,10,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,5,15,6,3,7,16,4,13,6,0,0,0,0,0,0,0,0,0,0,11,11,0,0,18,3,0,12,0,0,0,0,0,0,0,0,0,0,9}; static int rectangles_array9[2913] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,20,0,0,0,0,0,15,0,0,0,0,0,0,0,12,0,0,0,0,11,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,11,11,0,0,0,0,0,0,0,15,0,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,8,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,15,10,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,14,14,0,0,0,0,0,0,0,8,0,11,0,0,0,0,0,21,20,0,0,0,0,0,16,0,0,0,18,9,0,0,0,0,0,5,5,0,0,0,0,0,16,17,0,0,0,0,0,19,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,10,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,9,11,14,14,0,0,18,18,0,0,0,0,0,6,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,5,0,8,15,0,0,0,0,5,5,3,0,18,18,0,0,0,0,0,0,0,0,14,0,0,0,0,14,0,0,9,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,8,0,0,0,14,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,17,0,17,17,0,0,0,0,9,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,15,0,0,19,14,0,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,8,0,0,8,19,19,0,0,9,0,0,11,0,0,0,0,11,0,0,11,0,0,0,0,6,6,0,0,0,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,5,0,0,0,15,15,11,0,0,11,0,0,0,0,0,0,0,0,14,0,0,0,0,7,0,0,15,0,0,0,0,0,6,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,11,0,0,0,15,0,15,15,0,0,7,9,0,6,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,9,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,19,0,10,10,9,0,17,0,16,0,12,0,13,0,0,16,0,0,12,12,0,11,0,0,0,0,0,0,0,0,21,16,0,16,16,0,0,0,0,0,0,0,0,15,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,7,6,0,0,17,17,13,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,3,3,0,0,0,0,0,0,0,0,0,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,14,14,0,14,0,0,0,16,0,0,0,0,0,0,20,20,2,0,7,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,11,12,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,9,9,19,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,22,11,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,5,4,0,0,0,5,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,12,0,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,13,0,13,0,15,0,13,13,17,0,15,12,19,13,21,15,12,20,0,0,0,9,0,0,14,0,0,0,0,0,0,0,0,0,6,6,0,0,14,14,0,0,0,0,19,4,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,16,14,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,17,16,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,7,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,21,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,7,7,8,0,20,0,0,0,0,0,0,0,0,0,6,16,20,20,0,20,9,15,16,16,0,16,0,0,10,9,0,0,14,0,14,14,15,15,0,0,0,0,10,5,0,8,0,8,0,0,0,0,11,11,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,7,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,21,11,0,0,0,0,4,0,0,0,0,9,10,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,21,0,18,0,0,18,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,12,15,6,0,0,0,18,6,0,18,0,0,0,0,0,0,0,5,21,0,0,0,0,0,0,0,7,0,0,12,0,0,9,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,21,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,8,9,0,19,0,9,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,9,0,7,0,0,0,0,0,0,0,0,15,0,0,0,0,7,0,0,0,0,9,0,0,11,0,0,21,0,0,0,21,21,0,0,0,0,0,0,0,0,7,0,0,18,0,0,0,10,9,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,9,0,0,9,11,0,0,0,0,0,0,0,9,8,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,10,13,13,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,9,21,0,12,15,15,0,0,0,0,4,0,7,0,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,21,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,9,11,2,0,0,0,8,0,0,0,0,0,18,0,17,0,12,12,12,0,0,0,15,0,0,0,0,0,0,0,0,0,0,12,0,0,14,12,12,9,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,11,0,0,11,0,11,20,11,0,11,0,0,0,0,0,0,0,2,0,0,0,0,15,11,11,12,0,0,4,11,0,0,0,0,0,8,15,16,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,11,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,18,19,19,21,0,0,9,0,0,0,15,0,0,0,0,0,0,5,0,0,0,0,5,0,0,5,0,0,12,0,0,0,0,13,0,13,0,0,0,0,14,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,10,0,0,0,0,0,0,15,0,0,0,0,0,0,15,21,0,0,0,0,0,0,0,0,0,0,17,9,0,0,0,0,0,0,0,13,0,10,0,0,14,15,0,0,0,0,0,0,0,20,0,16,16,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,16,15,0,0,0,0,0,0,21,0,0,0,0,0,0,0,15,15,15,0,22,0,0,0,0,13,13,0,0,15,16,0,0,14,0,7,0,0,0,0,0,0,0,0,20,0,0,14,14,0,0,0,0,12,0,0,0,11,0,0,0,11,11,0,0,10,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,12,12,0,0,0,11,0,0,12,12,13,0,0,14,0,0,0,17,0,0,11,0,0,0,0,0,0,0,15,15,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,11,0,0,0,0,19,7,6,6,0,0,11,0,0,0,0,10,0,0,0,0,0,0,0,0,3,9,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,12,0,12,12,0,12,14,14,0,0,0,0,0,0,0,0,9,0,14,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,15,19,19,5,5,0,0,11,0,13,13,0,16,0,0,8,0,13,13,0,0,0,0,0,0,0,0,0,12,0,0,9,11,0,0,0,9,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,11,0,0,15,15,0,8,0,0,0,0,14,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,13,12,0,0,11,16,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,0,0,0,5,0,0,0,0,0,0,21,0,0,0,0,5,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,15,0,0,0,0,0,0,0,0,0,14,15,15,0,0,21,0,20,20,6,6,0,0,0,0,0,0,11,0,0,0,0,0,0,0,19,19,0,14,10,9,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,12,0,0,0,0,0,15,0,0,0,0,0,14,0,0,0,0,0,0,0,7,0,0,0,0,22,0,0,0,0,0,9,15,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,7,8,8,22,10,14,14,17,17,0,0,0,0,0,0,0,0,0,0,18,21,0,0,18,18,0,11,0,0,0,0,0,0,0,0,0,0,12}; static int rectangles_array10[2913] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,6,0,0,0,0,0,8,0,0,0,0,0,0,0,10,0,0,0,0,4,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,6,6,0,0,0,0,0,0,0,9,0,7,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,5,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,12,11,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,11,11,0,0,0,0,0,0,0,8,0,12,0,0,0,0,0,7,9,0,0,0,0,0,5,0,0,0,9,7,0,0,0,0,0,12,11,0,0,0,0,0,3,10,0,0,0,0,0,6,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,3,11,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,8,9,4,3,0,0,3,3,0,0,0,0,0,5,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,11,0,12,9,0,0,0,0,5,5,12,0,8,8,0,0,0,0,0,0,0,0,3,0,0,0,0,3,0,0,5,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,5,0,0,0,6,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,4,0,4,4,0,0,0,0,8,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,0,0,4,12,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,7,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,6,0,0,6,4,4,0,0,8,0,0,7,0,0,0,0,2,0,0,2,0,0,0,0,6,12,0,0,0,9,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,12,0,0,0,4,4,6,0,0,6,0,0,0,0,0,0,0,0,10,0,0,0,0,5,0,0,4,0,0,0,0,0,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,8,0,3,8,0,0,4,6,0,4,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,8,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,11,0,5,5,8,0,4,0,4,0,4,0,7,0,0,6,0,0,4,4,0,8,0,0,0,0,0,0,0,0,6,4,0,4,4,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,4,3,0,0,3,3,7,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,10,10,0,0,0,0,0,0,0,0,0,4,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,7,7,0,3,0,0,0,3,0,0,0,0,0,0,5,5,12,0,12,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,6,6,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,6,7,7,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,7,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,6,6,0,0,0,6,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,10,0,3,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,4,0,2,0,4,4,3,0,6,9,4,11,6,10,10,5,0,0,0,11,0,0,5,0,0,0,0,0,0,0,0,0,4,4,0,0,3,3,0,0,0,0,6,12,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,9,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,4,4,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,3,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,6,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,3,3,3,0,9,0,0,0,0,0,0,0,0,0,6,4,5,5,0,5,6,2,3,3,0,3,0,0,4,8,0,0,4,0,4,4,4,4,0,0,0,0,4,12,0,6,0,4,0,0,0,0,6,6,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,6,10,0,0,0,0,12,0,0,0,0,7,4,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,6,0,4,0,0,4,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,11,4,3,0,0,0,4,3,0,4,0,0,0,0,0,0,0,5,6,0,0,0,0,0,0,0,9,0,0,11,0,0,6,6,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,6,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,8,7,0,6,0,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,6,0,4,0,0,0,0,0,0,0,0,2,0,0,0,0,4,0,0,0,0,8,0,0,12,0,0,11,0,0,0,6,6,0,0,0,0,0,0,0,0,12,0,0,3,0,0,0,5,7,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,3,0,0,3,6,0,0,0,0,0,0,0,5,8,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,9,10,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,6,10,0,9,2,2,0,0,0,0,8,0,3,0,0,0,0,3,0,0,0,6,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,6,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,8,8,12,0,0,0,4,0,0,0,0,0,12,0,4,0,5,7,5,0,0,0,11,0,0,0,0,0,0,0,0,0,0,2,0,0,9,2,2,10,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,5,0,0,2,0,2,5,2,0,2,0,0,0,0,0,0,0,9,0,0,0,0,2,2,2,9,0,0,9,7,0,0,0,0,0,3,2,5,4,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,3,4,4,6,0,0,7,0,0,0,3,0,0,0,0,0,0,4,0,0,0,0,4,0,0,9,0,0,6,0,0,0,0,2,0,2,0,0,0,0,2,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,0,0,0,0,0,0,4,0,0,0,0,0,0,4,8,0,0,0,0,0,0,0,0,0,0,3,12,0,0,0,0,0,0,0,6,0,6,0,0,11,11,0,0,0,0,0,0,0,5,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,5,9,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,3,3,0,9,0,0,0,0,2,2,0,0,2,5,0,0,2,0,5,0,0,0,0,0,0,0,0,5,0,0,2,2,0,0,0,0,7,0,0,0,8,0,0,0,8,8,0,0,5,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,2,2,0,0,0,6,0,0,3,3,7,0,0,2,0,0,0,3,0,0,11,0,0,0,0,0,0,0,9,9,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,4,0,0,0,0,5,3,3,5,0,0,9,0,0,0,0,4,0,0,0,0,0,0,0,0,6,9,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,0,6,2,0,6,4,4,0,0,0,0,0,0,0,0,7,0,6,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,3,4,4,4,4,0,0,10,0,4,8,0,5,0,0,5,0,5,5,0,0,0,0,0,0,0,0,0,9,0,0,9,6,0,0,0,10,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,4,0,0,7,7,0,3,0,0,0,0,12,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,8,5,0,0,6,4,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,8,0,0,0,5,0,0,0,0,0,0,6,0,0,0,0,6,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,3,0,0,0,0,0,0,0,0,0,6,2,2,0,0,6,0,5,5,5,5,0,0,0,0,0,0,9,0,0,0,0,0,0,0,4,4,0,6,4,6,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,8,0,0,0,0,0,2,0,0,0,0,0,4,0,0,0,0,0,0,0,12,0,0,0,0,11,0,0,0,0,0,9,2,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,3,3,3,9,2,4,4,5,5,0,0,0,0,0,0,0,0,0,0,5,11,0,0,3,3,0,11,0,0,0,0,0,0,0,0,0,0,3}; static int rectangles_array11[2913] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,3,0,0,0,0,0,3,0,0,0,0,0,0,0,7,0,0,0,0,5,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,3,0,0,0,0,0,0,0,6,0,5,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,8,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,6,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,2,2,0,0,0,0,0,0,0,3,0,7,0,0,0,0,0,3,2,0,0,0,0,0,7,0,0,0,2,3,0,0,0,0,0,3,4,0,0,0,0,0,8,2,0,0,0,0,0,5,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,6,8,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,11,7,10,0,0,6,6,0,0,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,8,2,0,0,0,0,5,5,2,0,3,3,0,0,0,0,0,0,0,0,7,0,0,0,0,7,0,0,7,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,8,0,0,0,3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,7,0,7,7,0,0,0,0,4,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,9,0,0,5,2,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,3,0,0,3,5,5,0,0,3,0,0,6,0,0,0,0,9,0,0,9,0,0,0,0,6,3,0,0,0,4,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,5,0,0,0,9,9,6,0,0,6,0,0,0,0,0,0,0,0,4,0,0,0,0,7,0,0,5,0,0,0,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,3,0,7,3,0,0,5,3,0,6,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,3,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,0,5,5,3,0,7,0,6,0,8,0,7,0,0,5,0,0,8,8,0,6,0,0,0,0,0,0,0,0,3,8,0,8,8,0,0,0,0,0,0,0,0,4,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,6,6,0,0,7,7,7,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,0,0,0,0,0,0,0,0,0,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,5,5,0,10,0,0,0,8,0,0,0,0,0,0,4,4,2,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,6,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,4,3,3,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,5,3,0,0,0,3,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,2,0,6,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,9,0,5,5,7,0,3,3,5,4,3,9,6,4,0,0,0,2,0,0,4,0,0,0,0,0,0,0,0,0,6,6,0,0,6,6,0,0,0,0,4,2,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,2,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,7,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,7,7,8,0,3,0,0,0,0,0,0,0,0,0,6,6,4,4,0,4,3,9,7,7,0,8,0,0,9,4,0,0,10,0,10,10,7,7,0,0,0,0,8,3,0,6,0,5,0,0,0,0,3,3,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,3,3,0,0,0,0,3,0,0,0,0,3,5,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,3,0,5,0,0,5,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,7,5,6,0,0,0,5,6,0,5,0,0,0,0,0,0,0,4,3,0,0,0,0,0,0,0,3,0,0,8,0,0,9,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,8,3,0,4,0,3,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,5,0,5,0,0,0,0,0,0,0,0,9,0,0,0,0,5,0,0,0,0,3,0,0,11,0,0,2,0,0,0,3,3,0,0,0,0,0,0,0,0,2,0,0,6,0,0,0,4,3,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,6,0,0,6,3,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,2,3,3,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,3,2,0,7,9,9,0,0,0,0,3,0,6,0,0,0,0,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,3,7,2,0,0,0,5,0,0,0,0,0,2,0,7,0,12,7,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,11,0,0,2,11,11,2,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,5,0,0,10,0,10,4,10,0,10,0,0,0,0,0,0,0,2,0,0,0,0,9,10,10,3,0,0,4,6,0,0,0,0,0,6,9,8,6,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,10,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,6,5,5,3,0,0,3,0,0,0,7,0,0,0,0,0,0,5,0,0,0,0,5,0,0,5,0,0,3,0,0,0,0,9,0,9,0,0,0,0,9,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,6,0,0,0,0,0,0,5,0,0,0,0,0,0,5,3,0,0,0,0,0,0,0,0,0,0,6,4,0,0,0,0,0,0,0,4,0,8,0,0,2,3,0,0,0,0,0,0,0,4,0,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,5,2,0,0,0,0,0,0,3,0,0,0,0,0,0,0,9,6,6,0,2,0,0,0,0,11,11,0,0,9,7,0,0,10,0,7,0,0,0,0,0,0,0,0,4,0,0,10,10,0,0,0,0,10,0,0,0,10,0,0,0,10,10,0,0,4,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,11,11,0,0,0,3,0,0,6,6,4,0,0,9,0,0,0,7,0,0,7,0,0,0,0,0,0,0,2,2,0,0,12,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,5,0,0,0,0,4,6,6,6,0,0,2,0,0,0,0,10,0,0,0,0,0,0,0,0,3,2,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,9,0,3,9,0,3,10,10,0,0,0,0,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,9,5,5,5,5,0,0,3,0,8,4,0,4,0,0,4,0,6,6,0,0,0,0,0,0,0,0,0,3,0,0,2,10,0,0,0,3,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,5,0,0,7,7,0,6,0,0,0,0,5,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,10,6,0,0,4,5,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,0,0,4,0,0,0,0,0,0,3,0,0,0,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,6,0,0,0,0,0,0,0,0,0,8,9,9,0,0,3,0,4,4,6,6,0,0,0,0,0,0,6,0,0,0,0,0,0,0,5,5,0,3,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,3,0,0,0,0,0,9,0,0,0,0,0,5,0,0,0,0,0,0,0,3,0,0,0,0,2,0,0,0,0,0,3,9,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,7,7,7,2,10,6,6,4,4,0,0,0,0,0,0,0,0,0,0,4,3,0,0,6,6,0,5,0,0,0,0,0,0,0,0,0,0,11}; static int stages_thresh_array[25] = { -1290,-1275,-1191,-1140,-1122,-1057,-1029,-994,-983,-933,-990,-951,-912,-947,-877,-899,-920,-868,-829,-821,-839,-849,-833,-862,-766 }; ================================================ FILE: face-detection/src/ocl/haar_mapping.h ================================================ static int bank_mapping[ROWS * COLS] = {8, 13, 20, 14, 21, 12, 10, 1, 15, 2, 14, 17, 16, 20, 9, 6, 19, 14, 1, 0, 2, 18, 11, 5, 4, 15, 16, 13, 2, 0, 15, 24, 21, 25, 4, 14, 27, 23, 7, 12, 10, 3, 6, 18, 20, 11, 9, 4, 2, 16, 23, 25, 0, 5, 12, 6, 3, 15, 4, 13, 19, 12, 18, 20, 25, 1, 14, 17, 16, 19, 26, 22, 1, 21, 2, 12, 12, 17, 25, 3, 19, 21, 7, 16, 24, 22, 25, 13, 23, 26, 20, 27, 22, 7, 5, 5, 3, 2, 27, 14, 0, 5, 11, 10, 17, 4, 12, 27, 21, 3, 25, 20, 19, 24, 23, 26, 24, 19, 13, 9, 15, 16, 6, 15, 22, 17, 20, 26, 4, 24, 25, 13, 0, 22, 23, 7, 11, 11, 6, 5, 12, 3, 26, 22, 18, 18, 10, 9, 1, 1, 9, 9, 14, 1, 20, 3, 11, 11, 24, 7, 17, 0, 4, 9, 1, 12, 22, 13, 2, 15, 19, 5, 21, 10, 10, 13, 27, 6, 14, 4, 5, 20, 24, 11, 11, 9, 19, 2, 2, 23, 21, 1, 15, 0, 21, 7, 18, 18, 9, 18, 20, 3, 27, 17, 6, 23, 19, 17, 1, 12, 11, 22, 7, 2, 23, 6, 25, 15, 4, 16, 0, 11, 5, 19, 21, 22, 4, 24, 6, 1, 20, 6, 10, 2, 16, 11, 23, 7, 7, 0, 1, 15, 9, 17, 17, 12, 12, 13, 14, 3, 6, 1, 16, 0, 25, 19, 1, 20, 7, 14, 2, 2, 9, 3, 17, 16, 21, 5, 10, 7, 14, 15, 26, 23, 15, 5, 24, 2, 27, 10, 1, 16, 16, 7, 0, 15, 9, 6, 19, 19, 14, 11, 18, 3, 20, 20, 20, 23, 25, 17, 16, 18, 9, 2, 22, 22, 15, 6, 6, 0, 7, 5, 5, 16, 2, 9, 12, 18, 21, 13, 25, 14, 3, 17, 11, 19, 19, 15, 7, 2, 18, 18, 18, 5, 13, 13, 14, 14, 21, 20, 9, 10, 16, 9, 11, 19, 4, 12, 26, 23, 18, 22, 22, 11, 23, 7, 2, 19, 9, 9, 21, 14, 0, 18, 4, 5, 6, 17, 15, 4, 26, 13, 19, 20, 10, 2, 2, 11, 16, 26, 24, 18, 14, 3, 1, 0, 10, 13, 4, 16, 5, 6, 21, 14, 3, 13, 0, 5, 11, 20, 17, 17, 25, 15, 24, 10, 4, 22, 3, 5, 5, 6, 12, 12, 13, 3, 14, 11, 11, 25, 10, 7, 20, 22, 6, 4, 5, 7, 3, 9, 26, 22, 23, 18, 15, 6, 20, 21, 25, 10, 4, 17, 13, 5, 12, 3, 25, 0, 0, 0, 1, 0, 2, 4, 11, 25, 17, 23, 4, 3, 24, 26, 20, 5, 12, 7, 0, 27, 6, 18, 24, 10, 22, 14, 15, 21, 15, 23, 1, 3, 17, 9, 27, 16, 18, 26, 4, 19, 10, 9, 12, 25, 0, 24, 24, 22, 16, 6, 23, 2, 25, 13, 14, 24, 15, 21, 1, 9, 19, 10, 4, 11, 23, 26, 24, 22, 16, 1, 20, 2, 9, 19, 18, 7, 11, 9, 10, 1, 17, 2, 12, 0, 3, 20, 12, 12, 2, 5, 15, 6, 11, 26, 1, 19, 13, 14, 27, 7, 13, 22, 26, 2, 4, 22, 1, 6, 27, 7, 22, 11, 12, 18, 0, 15, 3, 13, 24, 2, 15, 27, 7, 5, 9, 1, 21, 3, 1, 9, 16, 17, 24, 19, 16, 26, 11, 20, 12, 18, 22, 17, 25, 9, 27, 7, 4, 16, 15, 2, 3, 5, 14, 21, 24, 13, 13, 23, 7, 26, 5, 6, 20, 3, 10, 11, 22, 2, 23, 24, 12, 17, 27, 1, 25, 18, 18}; static int offset_mapping[ROWS * COLS] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 2, 1, 2, 0, 1, 0, 1, 3, 0, 0, 0, 1, 1, 0, 1, 1, 2, 1, 1, 2, 3, 2, 1, 1, 2, 1, 2, 2, 1, 3, 3, 2, 1, 3, 2, 3, 2, 2, 4, 1, 3, 2, 0, 0, 3, 2, 4, 4, 5, 2, 3, 2, 3, 3, 1, 4, 1, 1, 4, 3, 2, 1, 4, 1, 2, 2, 2, 3, 3, 5, 2, 5, 3, 4, 2, 2, 3, 4, 6, 3, 4, 4, 5, 5, 4, 2, 3, 2, 3, 5, 4, 2, 4, 5, 3, 5, 3, 4, 6, 3, 5, 4, 6, 5, 4, 4, 4, 3, 3, 4, 4, 5, 7, 5, 4, 5, 3, 4, 3, 3, 4, 5, 4, 5, 6, 6, 7, 6, 5, 6, 5, 4, 5, 5, 6, 6, 7, 8, 6, 6, 6, 6, 6, 6, 5, 4, 5, 7, 4, 5, 7, 7, 7, 8, 6, 7, 8, 7, 7, 7, 8, 5, 6, 8, 7, 6, 7, 5, 5, 6, 8, 7, 9, 7, 5, 6, 6, 6, 8, 7, 9, 9, 9, 7, 6, 9, 7, 7, 7, 8, 8, 6, 7, 10, 8, 9, 8, 8, 9, 7, 8, 10, 10, 9, 6, 10, 7, 11, 8, 7, 8, 8, 11, 9, 9, 8, 9, 10, 11, 8, 8, 8, 10, 12, 8, 9, 8, 10, 13, 11, 9, 9, 11, 12, 10, 9, 10, 9, 9, 9, 7, 10, 10, 10, 5, 9, 11, 10, 8, 13, 6, 8, 14, 10, 11, 11, 10, 12, 11, 11, 11, 12, 11, 12, 8, 10, 12, 13, 14, 10, 9, 11, 12, 9, 12, 14, 9, 10, 13, 12, 13, 11, 12, 11, 12, 13, 15, 13, 12, 10, 10, 9, 10, 12, 11, 12, 13, 13, 14, 14, 13, 16, 11, 12, 13, 13, 10, 11, 13, 14, 11, 15, 14, 9, 14, 15, 14, 15, 10, 13, 6, 11, 14, 11, 12, 15, 12, 14, 17, 16, 16, 17, 12, 15, 12, 15, 11, 14, 14, 13, 15, 12, 7, 12, 17, 16, 10, 18, 19, 16, 15, 8, 9, 16, 16, 12, 15, 13, 11, 13, 13, 16, 15, 15, 13, 17, 13, 14, 14, 16, 17, 17, 14, 15, 11, 16, 10, 12, 14, 13, 14, 17, 18, 16, 14, 15, 15, 15, 18, 18, 19, 12, 13, 15, 18, 14, 17, 15, 19, 16, 16, 18, 9, 15, 13, 17, 17, 18, 19, 14, 13, 14, 16, 16, 16, 20, 16, 17, 14, 15, 16, 17, 16, 18, 20, 17, 20, 15, 17, 14, 18, 18, 11, 10, 20, 21, 17, 17, 19, 7, 19, 18, 12, 15, 16, 19, 18, 15, 19, 15, 17, 19, 18, 19, 8, 17, 19, 11, 19, 18, 16, 20, 18, 16, 20, 13, 14, 17, 18, 20, 16, 21, 17, 17, 20, 15, 20, 16, 18, 21, 19, 17, 20, 21, 17, 12, 16, 18, 19, 19, 21, 22, 22, 20, 20, 18, 22, 23, 18, 20, 19, 23, 19, 21, 20, 22, 20, 21, 24, 22, 21, 21, 23, 13, 21, 21, 18, 21, 9, 19, 19, 19, 14, 25, 21, 20, 22, 22, 10, 20, 21, 24, 22, 21, 22, 22, 21, 20, 17, 26, 23, 11, 21, 23, 24, 23, 17, 22, 24, 25, 20, 20, 18, 22, 21, 15, 25, 23, 23, 22, 22, 21, 18, 26, 12, 22, 22, 22, 24, 27, 23, 24, 22, 18, 19, 21, 22, 18, 23, 16, 25, 23, 24, 24, 19, 26, 23, 28, 19, 20, 24, 22, 13, 25, 19, 23, 24}; ================================================ FILE: face-detection/src/sdsoc/face_detect.cpp ================================================ /*===============================================================*/ /* */ /* face_detect.cpp */ /* */ /* Hardware function for the Face Detection application. */ /* */ /*===============================================================*/ #include "../host/typedefs.h" #include "haar_mapping.h" uint5_t get_bank(uint10_t addr) { #pragma HLS inline return bank_mapping[addr]; } uint5_t get_offset(uint10_t addr) { #pragma HLS inline return offset_mapping[addr]; } uint18_t get_data0(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[19 ]; break; case 1: a = aa[29 ]; break; case 2: a = aa[52 ]; break; case 3: a = aa[100]; break; case 4: a = aa[132]; break; case 5: a = aa[161]; break; case 6: a = aa[193]; break; case 7: a = aa[220]; break; case 8: a = aa[239]; break; case 9: a = aa[253]; break; case 10:a = aa[284]; break; case 11:a = aa[309]; break; case 12:a = aa[362]; break; case 13:a = aa[385]; break; case 14:a = aa[396]; break; case 15:a = aa[447]; break; case 16:a = aa[448]; break; case 17:a = aa[449]; break; case 18:a = aa[451]; break; case 19:a = aa[466]; break; case 20:a = aa[492]; break; case 21:a = aa[531]; break; case 22:a = aa[562]; break; default: a = 0; break; }; return a; } uint18_t get_data1(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[7 ]; break; case 1: a = aa[18 ]; break; case 2: a = aa[65 ]; break; case 3: a = aa[72 ]; break; case 4: a = aa[148]; break; case 5: a = aa[149]; break; case 6: a = aa[153]; break; case 7: a = aa[164]; break; case 8: a = aa[191]; break; case 9: a = aa[208]; break; case 10:a = aa[229]; break; case 11:a = aa[240]; break; case 12:a = aa[251]; break; case 13:a = aa[256]; break; case 14:a = aa[280]; break; case 15:a = aa[384]; break; case 16:a = aa[450]; break; case 17:a = aa[478]; break; case 18:a = aa[506]; break; case 19:a = aa[517]; break; case 20:a = aa[527]; break; case 21:a = aa[542]; break; case 22:a = aa[554]; break; case 23:a = aa[573]; break; case 24:a = aa[576]; break; case 25:a = aa[621]; break; default: a = 0; break; }; return a; } uint18_t get_data2(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[9 ]; break; case 1: a = aa[20 ]; break; case 2: a = aa[28 ]; break; case 3: a = aa[48 ]; break; case 4: a = aa[74 ]; break; case 5: a = aa[97 ]; break; case 6: a = aa[168]; break; case 7: a = aa[187]; break; case 8: a = aa[188]; break; case 9: a = aa[213]; break; case 10:a = aa[233]; break; case 11:a = aa[260]; break; case 12:a = aa[261]; break; case 13:a = aa[277]; break; case 14:a = aa[303]; break; case 15:a = aa[314]; break; case 16:a = aa[329]; break; case 17:a = aa[356]; break; case 18:a = aa[375]; break; case 19:a = aa[376]; break; case 20:a = aa[452]; break; case 21:a = aa[499]; break; case 22:a = aa[519]; break; case 23:a = aa[529]; break; case 24:a = aa[536]; break; case 25:a = aa[551]; break; case 26:a = aa[567]; break; case 27:a = aa[597]; break; case 28:a = aa[615]; break; default: a = 0; break; }; return a; } uint18_t get_data3(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[41 ]; break; case 1: a = aa[56 ]; break; case 2: a = aa[79 ]; break; case 3: a = aa[96 ]; break; case 4: a = aa[109]; break; case 5: a = aa[141]; break; case 6: a = aa[155]; break; case 7: a = aa[201]; break; case 8: a = aa[249]; break; case 9: a = aa[263]; break; case 10:a = aa[293]; break; case 11:a = aa[322]; break; case 12:a = aa[383]; break; case 13:a = aa[394]; break; case 14:a = aa[408]; break; case 15:a = aa[415]; break; case 16:a = aa[428]; break; case 17:a = aa[445]; break; case 18:a = aa[459]; break; case 19:a = aa[479]; break; case 20:a = aa[532]; break; case 21:a = aa[564]; break; case 22:a = aa[575]; break; case 23:a = aa[598]; break; case 24:a = aa[611]; break; default: a = 0; break; }; return a; } uint18_t get_data4(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[24 ]; break; case 1: a = aa[34 ]; break; case 2: a = aa[47 ]; break; case 3: a = aa[58 ]; break; case 4: a = aa[105]; break; case 5: a = aa[128]; break; case 6: a = aa[162]; break; case 7: a = aa[179]; break; case 8: a = aa[218]; break; case 9: a = aa[226]; break; case 10:a = aa[346]; break; case 11:a = aa[364]; break; case 12:a = aa[369]; break; case 13:a = aa[388]; break; case 14:a = aa[406]; break; case 15:a = aa[425]; break; case 16:a = aa[440]; break; case 17:a = aa[453]; break; case 18:a = aa[458]; break; case 19:a = aa[486]; break; case 20:a = aa[510]; break; case 21:a = aa[552]; break; case 22:a = aa[594]; break; default: a = 0; break; }; return a; } uint18_t get_data5(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[23 ]; break; case 1: a = aa[53 ]; break; case 2: a = aa[94 ]; break; case 3: a = aa[95 ]; break; case 4: a = aa[101]; break; case 5: a = aa[139]; break; case 6: a = aa[171]; break; case 7: a = aa[180]; break; case 8: a = aa[222]; break; case 9: a = aa[267]; break; case 10:a = aa[275]; break; case 11:a = aa[311]; break; case 12:a = aa[312]; break; case 13:a = aa[333]; break; case 14:a = aa[365]; break; case 15:a = aa[390]; break; case 16:a = aa[397]; break; case 17:a = aa[409]; break; case 18:a = aa[410]; break; case 19:a = aa[426]; break; case 20:a = aa[443]; break; case 21:a = aa[463]; break; case 22:a = aa[537]; break; case 23:a = aa[571]; break; case 24:a = aa[599]; break; case 25:a = aa[608]; break; default: a = 0; break; }; return a; } uint18_t get_data6(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[15 ]; break; case 1: a = aa[42 ]; break; case 2: a = aa[55 ]; break; case 3: a = aa[122]; break; case 4: a = aa[138]; break; case 5: a = aa[177]; break; case 6: a = aa[204]; break; case 7: a = aa[215]; break; case 8: a = aa[228]; break; case 9: a = aa[231]; break; case 10:a = aa[250]; break; case 11:a = aa[287]; break; case 12:a = aa[307]; break; case 13:a = aa[308]; break; case 14:a = aa[366]; break; case 15:a = aa[391]; break; case 16:a = aa[411]; break; case 17:a = aa[424]; break; case 18:a = aa[435]; break; case 19:a = aa[468]; break; case 20:a = aa[497]; break; case 21:a = aa[539]; break; case 22:a = aa[555]; break; case 23:a = aa[609]; break; default: a = 0; break; }; return a; } uint18_t get_data7(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[38 ]; break; case 1: a = aa[82 ]; break; case 2: a = aa[93 ]; break; case 3: a = aa[135]; break; case 4: a = aa[159]; break; case 5: a = aa[195]; break; case 6: a = aa[212]; break; case 7: a = aa[237]; break; case 8: a = aa[238]; break; case 9: a = aa[258]; break; case 10:a = aa[269]; break; case 11:a = aa[283]; break; case 12:a = aa[310]; break; case 13:a = aa[328]; break; case 14:a = aa[355]; break; case 15:a = aa[421]; break; case 16:a = aa[427]; break; case 17:a = aa[465]; break; case 18:a = aa[523]; break; case 19:a = aa[547]; break; case 20:a = aa[557]; break; case 21:a = aa[570]; break; case 22:a = aa[593]; break; case 23:a = aa[606]; break; default: a = 0; break; }; return a; } uint18_t get_data8(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0:a = aa[0]; break; default: a = 0; break; }; return a; } uint18_t get_data9(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[14 ]; break; case 1: a = aa[46 ]; break; case 2: a = aa[119]; break; case 3: a = aa[147]; break; case 4: a = aa[150]; break; case 5: a = aa[151]; break; case 6: a = aa[163]; break; case 7: a = aa[185]; break; case 8: a = aa[198]; break; case 9: a = aa[242]; break; case 10:a = aa[262]; break; case 11:a = aa[286]; break; case 12:a = aa[302]; break; case 13:a = aa[315]; break; case 14:a = aa[340]; break; case 15:a = aa[343]; break; case 16:a = aa[358]; break; case 17:a = aa[359]; break; case 18:a = aa[429]; break; case 19:a = aa[481]; break; case 20:a = aa[489]; break; case 21:a = aa[507]; break; case 22:a = aa[520]; break; case 23:a = aa[525]; break; case 24:a = aa[572]; break; case 25:a = aa[577]; break; case 26:a = aa[591]; break; default: a = 0; break; }; return a; } uint18_t get_data10(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[6 ]; break; case 1: a = aa[40 ]; break; case 2: a = aa[103]; break; case 3: a = aa[146]; break; case 4: a = aa[173]; break; case 5: a = aa[174]; break; case 6: a = aa[232]; break; case 7: a = aa[268]; break; case 8: a = aa[279]; break; case 9: a = aa[341]; break; case 10:a = aa[374]; break; case 11:a = aa[386]; break; case 12:a = aa[405]; break; case 13:a = aa[420]; break; case 14:a = aa[439]; break; case 15:a = aa[471]; break; case 16:a = aa[488]; break; case 17:a = aa[509]; break; case 18:a = aa[526]; break; case 19:a = aa[612]; break; default: a = 0; break; }; return a; } uint18_t get_data11(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[22 ]; break; case 1: a = aa[45 ]; break; case 2: a = aa[102]; break; case 3: a = aa[136]; break; case 4: a = aa[137]; break; case 5: a = aa[156]; break; case 6: a = aa[157]; break; case 7: a = aa[183]; break; case 8: a = aa[184]; break; case 9: a = aa[210]; break; case 10:a = aa[221]; break; case 11:a = aa[235]; break; case 12:a = aa[291]; break; case 13:a = aa[324]; break; case 14:a = aa[344]; break; case 15:a = aa[353]; break; case 16:a = aa[377]; break; case 17:a = aa[398]; break; case 18:a = aa[417]; break; case 19:a = aa[418]; break; case 20:a = aa[454]; break; case 21:a = aa[511]; break; case 22:a = aa[524]; break; case 23:a = aa[540]; break; case 24:a = aa[559]; break; case 25:a = aa[584]; break; case 26:a = aa[613]; break; default: a = 0; break; }; return a; } uint18_t get_data12(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[5 ]; break; case 1: a = aa[39 ]; break; case 2: a = aa[54 ]; break; case 3: a = aa[61 ]; break; case 4: a = aa[75 ]; break; case 5: a = aa[76 ]; break; case 6: a = aa[106]; break; case 7: a = aa[140]; break; case 8: a = aa[165]; break; case 9: a = aa[209]; break; case 10:a = aa[245]; break; case 11:a = aa[246]; break; case 12:a = aa[316]; break; case 13:a = aa[347]; break; case 14:a = aa[412]; break; case 15:a = aa[413]; break; case 16:a = aa[444]; break; case 17:a = aa[464]; break; case 18:a = aa[490]; break; case 19:a = aa[530]; break; case 20:a = aa[534]; break; case 21:a = aa[535]; break; case 22:a = aa[560]; break; case 23:a = aa[586]; break; case 24:a = aa[618]; break; default: a = 0; break; }; return a; } uint18_t get_data13(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[1 ]; break; case 1: a = aa[27 ]; break; case 2: a = aa[59 ]; break; case 3: a = aa[87 ]; break; case 4: a = aa[118]; break; case 5: a = aa[131]; break; case 6: a = aa[167]; break; case 7: a = aa[175]; break; case 8: a = aa[247]; break; case 9: a = aa[319]; break; case 10:a = aa[334]; break; case 11:a = aa[335]; break; case 12:a = aa[371]; break; case 13:a = aa[387]; break; case 14:a = aa[395]; break; case 15:a = aa[414]; break; case 16:a = aa[442]; break; case 17:a = aa[501]; break; case 18:a = aa[544]; break; case 19:a = aa[548]; break; case 20:a = aa[565]; break; case 21:a = aa[603]; break; case 22:a = aa[604]; break; default: a = 0; break; }; return a; } uint18_t get_data14(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[3 ]; break; case 1: a = aa[10 ]; break; case 2: a = aa[17 ]; break; case 3: a = aa[35 ]; break; case 4: a = aa[66 ]; break; case 5: a = aa[99 ]; break; case 6: a = aa[152]; break; case 7: a = aa[178]; break; case 8: a = aa[248]; break; case 9: a = aa[259]; break; case 10:a = aa[270]; break; case 11:a = aa[290]; break; case 12:a = aa[321]; break; case 13:a = aa[336]; break; case 14:a = aa[337]; break; case 15:a = aa[361]; break; case 16:a = aa[382]; break; case 17:a = aa[393]; break; case 18:a = aa[416]; break; case 19:a = aa[473]; break; case 20:a = aa[502]; break; case 21:a = aa[545]; break; case 22:a = aa[600]; break; default: a = 0; break; }; return a; } uint18_t get_data15(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[8 ]; break; case 1: a = aa[25 ]; break; case 2: a = aa[30 ]; break; case 3: a = aa[57 ]; break; case 4: a = aa[120]; break; case 5: a = aa[123]; break; case 6: a = aa[169]; break; case 7: a = aa[192]; break; case 8: a = aa[217]; break; case 9: a = aa[241]; break; case 10:a = aa[271]; break; case 11:a = aa[274]; break; case 12:a = aa[285]; break; case 13:a = aa[306]; break; case 14:a = aa[327]; break; case 15:a = aa[368]; break; case 16:a = aa[403]; break; case 17:a = aa[434]; break; case 18:a = aa[474]; break; case 19:a = aa[476]; break; case 20:a = aa[504]; break; case 21:a = aa[538]; break; case 22:a = aa[563]; break; case 23:a = aa[568]; break; case 24:a = aa[596]; break; default: a = 0; break; }; return a; } uint18_t get_data16(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[12 ]; break; case 1: a = aa[26 ]; break; case 2: a = aa[49 ]; break; case 3: a = aa[68 ]; break; case 4: a = aa[83 ]; break; case 5: a = aa[121]; break; case 6: a = aa[219]; break; case 7: a = aa[234]; break; case 8: a = aa[252]; break; case 9: a = aa[265]; break; case 10:a = aa[281]; break; case 11:a = aa[282]; break; case 12:a = aa[300]; break; case 13:a = aa[313]; break; case 14:a = aa[342]; break; case 15:a = aa[378]; break; case 16:a = aa[389]; break; case 17:a = aa[483]; break; case 18:a = aa[496]; break; case 19:a = aa[516]; break; case 20:a = aa[578]; break; case 21:a = aa[582]; break; case 22:a = aa[595]; break; default: a = 0; break; }; return a; } uint18_t get_data17(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[11 ]; break; case 1: a = aa[67 ]; break; case 2: a = aa[77 ]; break; case 3: a = aa[104]; break; case 4: a = aa[125]; break; case 5: a = aa[160]; break; case 6: a = aa[203]; break; case 7: a = aa[207]; break; case 8: a = aa[243]; break; case 9: a = aa[244]; break; case 10:a = aa[264]; break; case 11:a = aa[299]; break; case 12:a = aa[323]; break; case 13:a = aa[367]; break; case 14:a = aa[400]; break; case 15:a = aa[401]; break; case 16:a = aa[441]; break; case 17:a = aa[456]; break; case 18:a = aa[480]; break; case 19:a = aa[528]; break; case 20:a = aa[579]; break; case 21:a = aa[589]; break; case 22:a = aa[619]; break; default: a = 0; break; }; return a; } uint18_t get_data18(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[21 ]; break; case 1: a = aa[43 ]; break; case 2: a = aa[62 ]; break; case 3: a = aa[144]; break; case 4: a = aa[145]; break; case 5: a = aa[196]; break; case 6: a = aa[197]; break; case 7: a = aa[199]; break; case 8: a = aa[292]; break; case 9: a = aa[301]; break; case 10:a = aa[317]; break; case 11:a = aa[330]; break; case 12:a = aa[331]; break; case 13:a = aa[332]; break; case 14:a = aa[350]; break; case 15:a = aa[363]; break; case 16:a = aa[381]; break; case 17:a = aa[433]; break; case 18:a = aa[469]; break; case 19:a = aa[484]; break; case 20:a = aa[522]; break; case 21:a = aa[561]; break; case 22:a = aa[587]; break; case 23:a = aa[623]; break; case 24:a = aa[624]; break; default: a = 0; break; }; return a; } uint18_t get_data19(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[16 ]; break; case 1: a = aa[60 ]; break; case 2: a = aa[69 ]; break; case 3: a = aa[80 ]; break; case 4: a = aa[112]; break; case 5: a = aa[117]; break; case 6: a = aa[170]; break; case 7: a = aa[186]; break; case 8: a = aa[206]; break; case 9: a = aa[223]; break; case 10:a = aa[255]; break; case 11:a = aa[288]; break; case 12:a = aa[289]; break; case 13:a = aa[325]; break; case 14:a = aa[326]; break; case 15:a = aa[345]; break; case 16:a = aa[357]; break; case 17:a = aa[372]; break; case 18:a = aa[487]; break; case 19:a = aa[508]; break; case 20:a = aa[521]; break; case 21:a = aa[543]; break; case 22:a = aa[581]; break; default: a = 0; break; }; return a; } uint18_t get_data20(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[2 ]; break; case 1: a = aa[13 ]; break; case 2: a = aa[44 ]; break; case 3: a = aa[63 ]; break; case 4: a = aa[90 ]; break; case 5: a = aa[111]; break; case 6: a = aa[126]; break; case 7: a = aa[154]; break; case 8: a = aa[181]; break; case 9: a = aa[200]; break; case 10:a = aa[230]; break; case 11:a = aa[257]; break; case 12:a = aa[294]; break; case 13:a = aa[295]; break; case 14:a = aa[296]; break; case 15:a = aa[339]; break; case 16:a = aa[373]; break; case 17:a = aa[399]; break; case 18:a = aa[422]; break; case 19:a = aa[436]; break; case 20:a = aa[462]; break; case 21:a = aa[518]; break; case 22:a = aa[533]; break; case 23:a = aa[585]; break; case 24:a = aa[610]; break; default: a = 0; break; }; return a; } uint18_t get_data21(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[4 ]; break; case 1: a = aa[32 ]; break; case 2: a = aa[73 ]; break; case 3: a = aa[81 ]; break; case 4: a = aa[108]; break; case 5: a = aa[172]; break; case 6: a = aa[190]; break; case 7: a = aa[194]; break; case 8: a = aa[224]; break; case 9: a = aa[266]; break; case 10:a = aa[318]; break; case 11:a = aa[338]; break; case 12:a = aa[360]; break; case 13:a = aa[392]; break; case 14:a = aa[437]; break; case 15:a = aa[475]; break; case 16:a = aa[505]; break; case 17:a = aa[574]; break; case 18:a = aa[601]; break; default: a = 0; break; }; return a; } uint18_t get_data22(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[71 ]; break; case 1: a = aa[85 ]; break; case 2: a = aa[92 ]; break; case 3: a = aa[124]; break; case 4: a = aa[133]; break; case 5: a = aa[143]; break; case 6: a = aa[166]; break; case 7: a = aa[211]; break; case 8: a = aa[225]; break; case 9: a = aa[304]; break; case 10:a = aa[305]; break; case 11:a = aa[351]; break; case 12:a = aa[352]; break; case 13:a = aa[407]; break; case 14:a = aa[423]; break; case 15:a = aa[431]; break; case 16:a = aa[472]; break; case 17:a = aa[495]; break; case 18:a = aa[515]; break; case 19:a = aa[549]; break; case 20:a = aa[553]; break; case 21:a = aa[558]; break; case 22:a = aa[588]; break; case 23:a = aa[614]; break; default: a = 0; break; }; return a; } uint18_t get_data23(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[37 ]; break; case 1: a = aa[50 ]; break; case 2: a = aa[88 ]; break; case 3: a = aa[114]; break; case 4: a = aa[134]; break; case 5: a = aa[189]; break; case 6: a = aa[205]; break; case 7: a = aa[214]; break; case 8: a = aa[236]; break; case 9: a = aa[273]; break; case 10:a = aa[297]; break; case 11:a = aa[349]; break; case 12:a = aa[354]; break; case 13:a = aa[432]; break; case 14:a = aa[457]; break; case 15:a = aa[477]; break; case 16:a = aa[498]; break; case 17:a = aa[512]; break; case 18:a = aa[605]; break; case 19:a = aa[616]; break; default: a = 0; break; }; return a; } uint18_t get_data24(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[31 ]; break; case 1: a = aa[84 ]; break; case 2: a = aa[113]; break; case 3: a = aa[116]; break; case 4: a = aa[129]; break; case 5: a = aa[158]; break; case 6: a = aa[182]; break; case 7: a = aa[227]; break; case 8: a = aa[276]; break; case 9: a = aa[380]; break; case 10:a = aa[404]; break; case 11:a = aa[460]; break; case 12:a = aa[470]; break; case 13:a = aa[493]; break; case 14:a = aa[494]; break; case 15:a = aa[503]; break; case 16:a = aa[514]; break; case 17:a = aa[566]; break; case 18:a = aa[580]; break; case 19:a = aa[602]; break; case 20:a = aa[617]; break; default: a = 0; break; }; return a; } uint18_t get_data25(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[33 ]; break; case 1: a = aa[51 ]; break; case 2: a = aa[64 ]; break; case 3: a = aa[78 ]; break; case 4: a = aa[86 ]; break; case 5: a = aa[110]; break; case 6: a = aa[130]; break; case 7: a = aa[216]; break; case 8: a = aa[254]; break; case 9: a = aa[298]; break; case 10:a = aa[320]; break; case 11:a = aa[402]; break; case 12:a = aa[419]; break; case 13:a = aa[438]; break; case 14:a = aa[446]; break; case 15:a = aa[455]; break; case 16:a = aa[491]; break; case 17:a = aa[500]; break; case 18:a = aa[590]; break; case 19:a = aa[622]; break; default: a = 0; break; }; return a; } uint18_t get_data26(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[70 ]; break; case 1: a = aa[89 ]; break; case 2: a = aa[115]; break; case 3: a = aa[127]; break; case 4: a = aa[142]; break; case 5: a = aa[272]; break; case 6: a = aa[348]; break; case 7: a = aa[370]; break; case 8: a = aa[379]; break; case 9: a = aa[430]; break; case 10:a = aa[461]; break; case 11:a = aa[485]; break; case 12:a = aa[513]; break; case 13:a = aa[541]; break; case 14:a = aa[550]; break; case 15:a = aa[583]; break; case 16:a = aa[607]; break; default: a = 0; break; }; return a; } uint18_t get_data27(int offset, uint18_t aa[ROWS*COLS]) { #pragma HLS inline uint18_t a; switch (offset) { case 0: a = aa[36 ]; break; case 1: a = aa[91 ]; break; case 2: a = aa[98 ]; break; case 3: a = aa[107]; break; case 4: a = aa[176]; break; case 5: a = aa[202]; break; case 6: a = aa[278]; break; case 7: a = aa[467]; break; case 8: a = aa[482]; break; case 9: a = aa[546]; break; case 10:a = aa[556]; break; case 11:a = aa[569]; break; case 12:a = aa[592]; break; case 13:a = aa[620]; break; default: a = 0; break; }; return a; } void get_all_data(uint18_t output[12], uint10_t addr_list[12], uint18_t aa[ROWS*COLS]) { #pragma HLS inline #pragma HLS interface ap_stable port=aa uint5_t bank[12]; #pragma HLS array_partition variable=bank complete dim=0 uint5_t offset[12]; #pragma HLS array_partition variable=offset complete dim=0 uint5_t offset_for_banks[28]; #pragma HLS array_partition variable=offset_for_banks complete dim=0 uint18_t data_from_banks[28]; #pragma HLS array_partition variable=data_from_banks complete dim=0 COMPUTE_BANK_AND_OFFSET: for (int i = 0; i < 12; i ++ ) { #pragma HLS unroll bank[i] = get_bank(addr_list[i]); offset[i] = get_offset(addr_list[i]); } ASSIGN_OFFSET_FOR_BANKS: for (int i = 0; i < 28; i ++ ) { #pragma HLS unroll offset_for_banks[i] = (bank[ 0] == i) ? offset[ 0] : (bank[ 1] == i) ? offset[ 1] : (bank[ 2] == i) ? offset[ 2] : (bank[ 3] == i) ? offset[ 3] : (bank[ 4] == i) ? offset[ 4] : (bank[ 5] == i) ? offset[ 5] : (bank[ 6] == i) ? offset[ 6] : (bank[ 7] == i) ? offset[ 7] : (bank[ 8] == i) ? offset[ 8] : (bank[ 9] == i) ? offset[ 9] : (bank[10] == i) ? offset[10] : (bank[11] == i) ? offset[11] : uint5_t("0",10); } READ_ALL_BANKS: data_from_banks[ 0] = get_data0 (offset_for_banks[ 0], aa); data_from_banks[ 1] = get_data1 (offset_for_banks[ 1], aa); data_from_banks[ 2] = get_data2 (offset_for_banks[ 2], aa); data_from_banks[ 3] = get_data3 (offset_for_banks[ 3], aa); data_from_banks[ 4] = get_data4 (offset_for_banks[ 4], aa); data_from_banks[ 5] = get_data5 (offset_for_banks[ 5], aa); data_from_banks[ 6] = get_data6 (offset_for_banks[ 6], aa); data_from_banks[ 7] = get_data7 (offset_for_banks[ 7], aa); data_from_banks[ 8] = get_data8 (offset_for_banks[ 8], aa); data_from_banks[ 9] = get_data9 (offset_for_banks[ 9], aa); data_from_banks[10] = get_data10(offset_for_banks[10], aa); data_from_banks[11] = get_data11(offset_for_banks[11], aa); data_from_banks[12] = get_data12(offset_for_banks[12], aa); data_from_banks[13] = get_data13(offset_for_banks[13], aa); data_from_banks[14] = get_data14(offset_for_banks[14], aa); data_from_banks[15] = get_data15(offset_for_banks[15], aa); data_from_banks[16] = get_data16(offset_for_banks[16], aa); data_from_banks[17] = get_data17(offset_for_banks[17], aa); data_from_banks[18] = get_data18(offset_for_banks[18], aa); data_from_banks[19] = get_data19(offset_for_banks[19], aa); data_from_banks[20] = get_data20(offset_for_banks[20], aa); data_from_banks[21] = get_data21(offset_for_banks[21], aa); data_from_banks[22] = get_data22(offset_for_banks[22], aa); data_from_banks[23] = get_data23(offset_for_banks[23], aa); data_from_banks[24] = get_data24(offset_for_banks[24], aa); data_from_banks[25] = get_data25(offset_for_banks[25], aa); data_from_banks[26] = get_data26(offset_for_banks[26], aa); data_from_banks[27] = get_data27(offset_for_banks[27], aa); CHOOSE_DATA: for (int i = 0; i < 12; i ++ ) { #pragma HLS unroll output[i] = data_from_banks[bank[i]]; } } int classifier0( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[4][6]; coord[1] = II[4][18]; coord[2] = II[13][6]; coord[3] = II[13][18]; coord[4] = II[7][6]; coord[5] = II[7][18]; coord[6] = II[10][6]; coord[7] = II[10][18]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-129 * stddev)) return_value = -567; else return_value = 534; return return_value; } int classifier1( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[4][6]; coord[1] = II[4][18]; coord[2] = II[11][6]; coord[3] = II[11][18]; coord[4] = II[4][10]; coord[5] = II[4][14]; coord[6] = II[11][10]; coord[7] = II[11][14]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (50 * stddev)) return_value = 339; else return_value = -477; return return_value; } int classifier2( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[9][3]; coord[1] = II[9][21]; coord[2] = II[18][3]; coord[3] = II[18][21]; coord[4] = II[12][3]; coord[5] = II[12][21]; coord[6] = II[15][3]; coord[7] = II[15][21]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (89 * stddev)) return_value = 272; else return_value = -386; return return_value; } int classifier3( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[18][8]; coord[1] = II[18][17]; coord[2] = II[24][8]; coord[3] = II[24][17]; coord[4] = II[20][8]; coord[5] = II[20][17]; coord[6] = II[22][8]; coord[7] = II[22][17]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (23 * stddev)) return_value = 301; else return_value = -223; return return_value; } int classifier4( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[5][3]; coord[1] = II[5][7]; coord[2] = II[24][3]; coord[3] = II[24][7]; coord[4] = II[5][5]; coord[5] = II[5][7]; coord[6] = II[24][5]; coord[7] = II[24][7]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (61 * stddev)) return_value = 322; else return_value = -199; return return_value; } int classifier5( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[5][6]; coord[1] = II[5][18]; coord[2] = II[21][6]; coord[3] = II[21][18]; coord[4] = II[13][6]; coord[5] = II[13][18]; coord[6] = II[21][6]; coord[7] = II[21][18]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (407 * stddev)) return_value = -479; else return_value = 142; return return_value; } int classifier6( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[8][5]; coord[1] = II[8][17]; coord[2] = II[14][5]; coord[3] = II[14][17]; coord[4] = II[11][5]; coord[5] = II[11][17]; coord[6] = II[14][5]; coord[7] = II[14][17]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (11 * stddev)) return_value = 112; else return_value = -432; return return_value; } int classifier7( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[14][11]; coord[1] = II[14][15]; coord[2] = II[24][11]; coord[3] = II[24][15]; coord[4] = II[19][11]; coord[5] = II[19][15]; coord[6] = II[24][11]; coord[7] = II[24][15]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-77 * stddev)) return_value = 113; else return_value = -378; return return_value; } int classifier8( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[0][4]; coord[1] = II[0][11]; coord[2] = II[6][4]; coord[3] = II[6][11]; coord[4] = II[3][4]; coord[5] = II[3][11]; coord[6] = II[6][4]; coord[7] = II[6][11]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (24 * stddev)) return_value = 218; else return_value = -219; return return_value; } int classifier9( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][6]; coord[1] = II[6][18]; coord[2] = II[12][6]; coord[3] = II[12][18]; coord[4] = II[8][6]; coord[5] = II[8][18]; coord[6] = II[10][6]; coord[7] = II[10][18]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-86 * stddev)) return_value = -402; else return_value = 318; return return_value; } int classifier10( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[4][6]; coord[1] = II[4][18]; coord[2] = II[11][6]; coord[3] = II[11][18]; coord[4] = II[4][10]; coord[5] = II[4][14]; coord[6] = II[11][10]; coord[7] = II[11][14]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (83 * stddev)) return_value = 302; else return_value = -414; return return_value; } int classifier11( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[8][1]; coord[1] = II[8][20]; coord[2] = II[20][1]; coord[3] = II[20][20]; coord[4] = II[12][1]; coord[5] = II[12][20]; coord[6] = II[16][1]; coord[7] = II[16][20]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (87 * stddev)) return_value = 179; else return_value = -497; return return_value; } int classifier12( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[2][0]; coord[1] = II[2][24]; coord[2] = II[5][0]; coord[3] = II[5][24]; coord[4] = II[2][8]; coord[5] = II[2][16]; coord[6] = II[5][8]; coord[7] = II[5][16]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (375 * stddev)) return_value = 442; else return_value = -142; return return_value; } int classifier13( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[9][9]; coord[1] = II[9][15]; coord[2] = II[24][9]; coord[3] = II[24][15]; coord[4] = II[14][9]; coord[5] = II[14][15]; coord[6] = II[19][9]; coord[7] = II[19][15]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (148 * stddev)) return_value = -558; else return_value = 68; return return_value; } int classifier14( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][5]; coord[1] = II[6][19]; coord[2] = II[16][5]; coord[3] = II[16][19]; coord[4] = II[11][5]; coord[5] = II[11][19]; coord[6] = II[16][5]; coord[7] = II[16][19]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-78 * stddev)) return_value = 116; else return_value = -684; return return_value; } int classifier15( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[0][5]; coord[1] = II[0][19]; coord[2] = II[9][5]; coord[3] = II[9][19]; coord[4] = II[3][5]; coord[5] = II[3][19]; coord[6] = II[6][5]; coord[7] = II[6][19]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (33 * stddev)) return_value = 137; else return_value = -277; return return_value; } int classifier16( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[11][13]; coord[1] = II[11][22]; coord[2] = II[17][13]; coord[3] = II[17][22]; coord[4] = II[11][16]; coord[5] = II[11][19]; coord[6] = II[17][16]; coord[7] = II[17][19]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (75 * stddev)) return_value = 238; else return_value = -90; return return_value; } int classifier17( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[5][7]; coord[1] = II[5][13]; coord[2] = II[15][7]; coord[3] = II[15][13]; coord[4] = II[5][9]; coord[5] = II[5][11]; coord[6] = II[15][9]; coord[7] = II[15][11]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-28 * stddev)) return_value = -169; else return_value = 237; return return_value; } int classifier18( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[8][10]; coord[1] = II[8][16]; coord[2] = II[18][10]; coord[3] = II[18][16]; coord[4] = II[8][12]; coord[5] = II[8][14]; coord[6] = II[18][12]; coord[7] = II[18][14]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-40 * stddev)) return_value = -76; else return_value = 296; return return_value; } int classifier19( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[5][2]; coord[1] = II[5][6]; coord[2] = II[14][2]; coord[3] = II[14][6]; coord[4] = II[5][4]; coord[5] = II[5][6]; coord[6] = II[14][4]; coord[7] = II[14][6]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (64 * stddev)) return_value = 347; else return_value = -107; return return_value; } int classifier20( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[0][18]; coord[1] = II[0][24]; coord[2] = II[11][18]; coord[3] = II[11][24]; coord[4] = II[0][20]; coord[5] = II[0][22]; coord[6] = II[11][20]; coord[7] = II[11][22]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-84 * stddev)) return_value = -50; else return_value = 373; return return_value; } int classifier21( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][0]; coord[1] = II[6][24]; coord[2] = II[19][0]; coord[3] = II[19][24]; coord[4] = II[6][8]; coord[5] = II[6][16]; coord[6] = II[19][8]; coord[7] = II[19][16]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-563 * stddev)) return_value = -135; else return_value = 286; return return_value; } int classifier22( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][9]; coord[1] = II[6][15]; coord[2] = II[15][9]; coord[3] = II[15][15]; coord[4] = II[6][11]; coord[5] = II[6][13]; coord[6] = II[15][11]; coord[7] = II[15][13]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (58 * stddev)) return_value = 292; else return_value = -89; return return_value; } int classifier23( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[18][7]; coord[1] = II[18][17]; coord[2] = II[24][7]; coord[3] = II[24][17]; coord[4] = II[20][7]; coord[5] = II[20][17]; coord[6] = II[22][7]; coord[7] = II[22][17]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (41 * stddev)) return_value = 197; else return_value = -155; return return_value; } int classifier24( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[7][5]; coord[1] = II[7][19]; coord[2] = II[19][5]; coord[3] = II[19][19]; coord[4] = II[13][5]; coord[5] = II[13][19]; coord[6] = II[19][5]; coord[7] = II[19][19]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (374 * stddev)) return_value = -387; else return_value = 99; return return_value; } int classifier25( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[3][0]; coord[1] = II[3][24]; coord[2] = II[6][0]; coord[3] = II[6][24]; coord[4] = II[3][8]; coord[5] = II[3][16]; coord[6] = II[6][8]; coord[7] = II[6][16]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (285 * stddev)) return_value = 375; else return_value = -259; return return_value; } int classifier26( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[8][5]; coord[1] = II[8][20]; coord[2] = II[14][5]; coord[3] = II[14][20]; coord[4] = II[11][5]; coord[5] = II[11][20]; coord[6] = II[14][5]; coord[7] = II[14][20]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (129 * stddev)) return_value = 256; else return_value = -421; return return_value; } int classifier27( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][9]; coord[1] = II[6][14]; coord[2] = II[20][9]; coord[3] = II[20][14]; coord[4] = II[13][9]; coord[5] = II[13][14]; coord[6] = II[20][9]; coord[7] = II[20][14]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (58 * stddev)) return_value = -408; else return_value = 118; return return_value; } int classifier28( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[5][9]; coord[1] = II[5][15]; coord[2] = II[15][9]; coord[3] = II[15][15]; coord[4] = II[5][11]; coord[5] = II[5][13]; coord[6] = II[15][11]; coord[7] = II[15][13]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (59 * stddev)) return_value = 212; else return_value = -167; return return_value; } int classifier29( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][6]; coord[1] = II[6][9]; coord[2] = II[18][6]; coord[3] = II[18][9]; coord[4] = II[12][6]; coord[5] = II[12][9]; coord[6] = II[18][6]; coord[7] = II[18][9]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-12 * stddev)) return_value = 108; else return_value = -357; return return_value; } int classifier30( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[21][3]; coord[1] = II[21][21]; coord[2] = II[24][3]; coord[3] = II[24][21]; coord[4] = II[21][9]; coord[5] = II[21][15]; coord[6] = II[24][9]; coord[7] = II[24][15]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (134 * stddev)) return_value = 269; else return_value = -129; return return_value; } int classifier31( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][5]; coord[1] = II[6][18]; coord[2] = II[12][5]; coord[3] = II[12][18]; coord[4] = II[8][5]; coord[5] = II[8][18]; coord[6] = II[10][5]; coord[7] = II[10][18]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-29 * stddev)) return_value = -344; else return_value = 93; return return_value; } int classifier32( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[1][18]; coord[1] = II[1][24]; coord[2] = II[16][18]; coord[3] = II[16][24]; coord[4] = II[1][18]; coord[5] = II[1][21]; coord[6] = II[16][18]; coord[7] = II[16][21]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (206 * stddev)) return_value = 371; else return_value = -77; return return_value; } int classifier33( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[1][1]; coord[1] = II[1][7]; coord[2] = II[16][1]; coord[3] = II[16][7]; coord[4] = II[1][4]; coord[5] = II[1][7]; coord[6] = II[16][4]; coord[7] = II[16][7]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (192 * stddev)) return_value = 310; else return_value = -103; return return_value; } int classifier34( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[8][0]; coord[1] = II[8][24]; coord[2] = II[23][0]; coord[3] = II[23][24]; coord[4] = II[8][8]; coord[5] = II[8][16]; coord[6] = II[23][8]; coord[7] = II[23][16]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-284 * stddev)) return_value = -117; else return_value = 269; return return_value; } int classifier35( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][5]; coord[1] = II[6][19]; coord[2] = II[18][5]; coord[3] = II[18][19]; coord[4] = II[6][5]; coord[5] = II[6][12]; coord[6] = II[12][5]; coord[7] = II[12][12]; coord[8] = II[12][12]; coord[9] = II[12][19]; coord[10] = II[18][12]; coord[11] = II[18][19]; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 8192; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-200 * stddev)) return_value = 39; else return_value = -416; return return_value; } int classifier36( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[12][2]; coord[1] = II[12][23]; coord[2] = II[24][2]; coord[3] = II[24][23]; coord[4] = II[16][2]; coord[5] = II[16][23]; coord[6] = II[20][2]; coord[7] = II[20][23]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (347 * stddev)) return_value = -400; else return_value = 72; return return_value; } int classifier37( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[1][8]; coord[1] = II[1][12]; coord[2] = II[11][8]; coord[3] = II[11][12]; coord[4] = II[1][10]; coord[5] = II[1][12]; coord[6] = II[11][10]; coord[7] = II[11][12]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-7 * stddev)) return_value = 59; else return_value = -259; return return_value; } int classifier38( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[13][2]; coord[1] = II[13][22]; coord[2] = II[23][2]; coord[3] = II[23][22]; coord[4] = II[13][2]; coord[5] = II[13][12]; coord[6] = II[23][2]; coord[7] = II[23][12]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (473 * stddev)) return_value = 327; else return_value = -42; return return_value; } int classifier39( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[1][0]; coord[1] = II[1][6]; coord[2] = II[14][0]; coord[3] = II[14][6]; coord[4] = II[1][2]; coord[5] = II[1][4]; coord[6] = II[14][2]; coord[7] = II[14][4]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-210 * stddev)) return_value = -77; else return_value = 388; return return_value; } int classifier40( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[2][20]; coord[1] = II[2][24]; coord[2] = II[15][20]; coord[3] = II[15][24]; coord[4] = II[2][20]; coord[5] = II[2][22]; coord[6] = II[15][20]; coord[7] = II[15][22]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-174 * stddev)) return_value = -13; else return_value = 451; return return_value; } int classifier41( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[5][0]; coord[1] = II[5][22]; coord[2] = II[24][0]; coord[3] = II[24][22]; coord[4] = II[5][11]; coord[5] = II[5][22]; coord[6] = II[24][11]; coord[7] = II[24][22]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (1522 * stddev)) return_value = 393; else return_value = -80; return return_value; } int classifier42( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[4][18]; coord[1] = II[4][24]; coord[2] = II[13][18]; coord[3] = II[13][24]; coord[4] = II[4][20]; coord[5] = II[4][22]; coord[6] = II[13][20]; coord[7] = II[13][22]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (79 * stddev)) return_value = 239; else return_value = -25; return return_value; } int classifier43( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[3][0]; coord[1] = II[3][6]; coord[2] = II[14][0]; coord[3] = II[14][6]; coord[4] = II[3][2]; coord[5] = II[3][4]; coord[6] = II[14][2]; coord[7] = II[14][4]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (71 * stddev)) return_value = 246; else return_value = -103; return return_value; } int classifier44( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[1][12]; coord[1] = II[1][16]; coord[2] = II[10][12]; coord[3] = II[10][16]; coord[4] = II[1][12]; coord[5] = II[1][14]; coord[6] = II[10][12]; coord[7] = II[10][14]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (162 * stddev)) return_value = -757; else return_value = 43; return return_value; } int classifier45( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[6][0]; coord[1] = II[6][19]; coord[2] = II[9][0]; coord[3] = II[9][19]; coord[4] = II[7][0]; coord[5] = II[7][19]; coord[6] = II[8][0]; coord[7] = II[8][19]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-37 * stddev)) return_value = -112; else return_value = 227; return return_value; } int classifier46( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[1][12]; coord[1] = II[1][16]; coord[2] = II[10][12]; coord[3] = II[10][16]; coord[4] = II[1][12]; coord[5] = II[1][14]; coord[6] = II[10][12]; coord[7] = II[10][14]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (7 * stddev)) return_value = 102; else return_value = -95; return return_value; } int classifier47( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[1][8]; coord[1] = II[1][12]; coord[2] = II[10][8]; coord[3] = II[10][12]; coord[4] = II[1][10]; coord[5] = II[1][12]; coord[6] = II[10][10]; coord[7] = II[10][12]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (123 * stddev)) return_value = -677; else return_value = 16; return return_value; } int classifier48( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[5][5]; coord[1] = II[5][19]; coord[2] = II[19][5]; coord[3] = II[19][19]; coord[4] = II[5][12]; coord[5] = II[5][19]; coord[6] = II[12][12]; coord[7] = II[12][19]; coord[8] = II[12][5]; coord[9] = II[12][12]; coord[10] = II[19][5]; coord[11] = II[19][12]; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 8192; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-322 * stddev)) return_value = 72; else return_value = -447; return return_value; } int classifier49( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[10][1]; coord[1] = II[10][19]; coord[2] = II[12][1]; coord[3] = II[12][19]; coord[4] = II[11][1]; coord[5] = II[11][19]; coord[6] = II[12][1]; coord[7] = II[12][19]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (8 * stddev)) return_value = 59; else return_value = -240; return return_value; } int classifier50( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[13][17]; coord[1] = II[13][21]; coord[2] = II[24][17]; coord[3] = II[24][21]; coord[4] = II[13][17]; coord[5] = II[13][19]; coord[6] = II[24][17]; coord[7] = II[24][19]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 8192; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (110 * stddev)) return_value = 275; else return_value = -13; return return_value; } int classifier51( int_II II[WINDOW_SIZE][WINDOW_SIZE], int stddev ){ static int coord[12]; #pragma HLS array_partition variable=coord complete dim=0 int sum0, sum1, sum2, final_sum; int return_value; coord[0] = II[4][0]; coord[1] = II[4][6]; coord[2] = II[13][0]; coord[3] = II[13][6]; coord[4] = II[7][0]; coord[5] = II[7][6]; coord[6] = II[10][0]; coord[7] = II[10][6]; coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * -4096; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * 12288; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * 0; final_sum = sum0 + sum1 + sum2; if(final_sum >= (-184 * stddev)) return_value = 25; else return_value = -468; return return_value; } /****************************************************************************************/ /* FUNCTION DECLARATIONS ****************************************************************************************/ void imageScaler ( int src_height, int src_width, unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH], int dest_height, int dest_width, unsigned char IMG1_data[IMAGE_HEIGHT][IMAGE_WIDTH] ); void processImage ( float _factor, int sum_row, int sum_col, int *AllCandidates_x, int *AllCandidates_y, int *AllCandidates_w, int *AllCandidates_h, int *AllCandidates_size, unsigned char IMG1_data[IMAGE_HEIGHT][IMAGE_WIDTH], MySize winSize ); int cascadeClassifier ( MyPoint pt, int_II II[WINDOW_SIZE][WINDOW_SIZE], int_SII SII[SQ_SIZE][SQ_SIZE] ); int weakClassifier ( int stddev, uint18_t coord[12], int haar_counter, int w_id ); void groupRectangles ( MyRect *rectList, int *rectList_size, int groupThreshold, float eps ); unsigned int int_sqrt ( ap_uint<32> value ); inline int myRound ( float value ) { return (int)(value + (value >= 0 ? 0.5 : -0.5)); } //======================================================================================== // TOP LEVEL MODULE OR DUT (DEVICE UNDER TEST) //======================================================================================== void face_detect ( unsigned char inData[IMAGE_WIDTH], int result_x[RESULT_SIZE], int result_y[RESULT_SIZE], int result_w[RESULT_SIZE], int result_h[RESULT_SIZE], int *result_size ) { static unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH]; int i, j; int result_x_Scale[RESULT_SIZE]; int result_y_Scale[RESULT_SIZE]; int result_w_Scale[RESULT_SIZE]; int result_h_Scale[RESULT_SIZE]; int res_size_Scale = 0; int *result_size_Scale = &res_size_Scale; static int counter = 0; if ( counter < IMAGE_HEIGHT){ for( j = 0; j < IMAGE_WIDTH; j++){ Data[counter][j] = inData[j]; } counter++; if ( counter < IMAGE_HEIGHT ){ for ( i = 0; i < RESULT_SIZE; i++){ result_x[i] = 0; result_y[i] = 0; result_w[i] = 0; result_h[i] = 0; } *result_size = 0; return ; } } counter = 0; *result_size = 0; float scaleFactor = 1.2; unsigned char IMG1_data[IMAGE_HEIGHT][IMAGE_WIDTH]; int height, width; float factor; MySize winSize0; winSize0.width = 24; winSize0.height= 24; factor = scaleFactor ; L1: while ( IMAGE_WIDTH/factor > WINDOW_SIZE && IMAGE_HEIGHT/factor > WINDOW_SIZE ) { /* size of the image scaled up */ MySize winSize = { myRound(winSize0.width*factor), myRound(winSize0.height*factor) }; /* size of the image scaled down (from bigger to smaller) */ MySize sz = { (int)( IMAGE_WIDTH/factor ), (int)( IMAGE_HEIGHT/factor ) }; height = sz.height; width = sz.width; imageScaler ( IMAGE_HEIGHT, IMAGE_WIDTH, Data, height, width, IMG1_data ); processImage ( factor, height, width, result_x_Scale, result_y_Scale, result_w_Scale, result_h_Scale, result_size_Scale, IMG1_data, winSize ); factor *= scaleFactor; } /* end of the factor loop, finish all scales in pyramid*/ for ( i = 0; i < RESULT_SIZE; i++){ result_x[i] = result_x_Scale[i]; result_y[i] = result_y_Scale[i]; result_w[i] = result_w_Scale[i]; result_h[i] = result_h_Scale[i]; } *result_size = *result_size_Scale; } void processImage ( float factor, int sum_row, int sum_col, int *AllCandidates_x, int *AllCandidates_y, int *AllCandidates_w, int *AllCandidates_h, int *AllCandidates_size, unsigned char IMG1_data[IMAGE_HEIGHT][IMAGE_WIDTH], MySize winSize ) { #pragma HLS inline off MyPoint p; int result; int step; int u,v; int x,y,i,j,k; /** Image Line buffer ( 24 BRAMs ) */ unsigned char L[WINDOW_SIZE-1][IMAGE_WIDTH]; #pragma HLS array_partition variable=L complete dim=1 /** Image Window buffer ( 1250 registers )*/ static int_I I[WINDOW_SIZE][2*WINDOW_SIZE]; #pragma HLS array_partition variable=I complete dim=0 /** Integral Image Window buffer ( 625 registers )*/ static int_II II[WINDOW_SIZE][WINDOW_SIZE]; #pragma HLS array_partition variable=II complete dim=0 /** Square Image Window buffer ( 1250 registers ) **/ static int_SI SI[WINDOW_SIZE][2*WINDOW_SIZE]; #pragma HLS array_partition variable=SI complete dim=0 /** Square Integral Image Window buffer ( 625 registers )*/ static int_SII SII[SQ_SIZE][SQ_SIZE]; #pragma HLS array_partition variable=SII complete dim=0 Initialize0u : for ( u = 0; u < WINDOW_SIZE; u++ ){ #pragma HLS unroll Initailize0v: for ( v = 0; v < WINDOW_SIZE; v++ ){ #pragma HLS unroll II[u][v] = 0; } } SII[0][0] = 0; SII[0][1] = 0; SII[1][0] = 0; SII[1][1] = 0; Initialize1i: for ( i = 0; i < WINDOW_SIZE ; i++ ){ #pragma HLS unroll Initialize1j: for ( j = 0; j < 2*WINDOW_SIZE; j++ ){ #pragma HLS unroll I[i][j] = 0; SI[i][j] = 0; } } Initialize2y : for ( y = 0; y < WINDOW_SIZE-1; y++ ){ #pragma HLS unroll Initialize2x : for ( x = 0; x < IMAGE_WIDTH ; x++){//IMAGE_WIDTH; x++ ){ L[y][x] = 0; } } int element_counter = 0; int x_index = 0; int y_index = 0; int ii, jj; /** Loop over each point in the Image ( scaled ) **/ Pixely: for( y = 0; y < sum_row; y++ ){ Pixelx : for ( x = 0; x < sum_col; x++ ){ /* Updates for Integral Image Window Buffer (I) */ SetIIu: for ( u = 0; u < WINDOW_SIZE; u++){ #pragma HLS unroll SetIIj: for ( v = 0; v < WINDOW_SIZE; v++ ){ #pragma HLS unroll II[u][v] = II[u][v] + ( I[u][v+1] - I[u][0] ); } } /* Updates for Square Image Window Buffer (SI) */ SII[0][0] = SII[0][0] + ( SI[0][1] - SI[0][0] ); SII[0][1] = SII[0][1] + ( SI[0][WINDOW_SIZE] - SI[0][0] ); SII[1][0] = SII[1][0] + ( SI[WINDOW_SIZE-1][1] - SI[WINDOW_SIZE-1][0] ); SII[1][1] = SII[1][1] + ( SI[WINDOW_SIZE-1][WINDOW_SIZE] - SI[WINDOW_SIZE-1][0] ); /* Updates for Image Window Buffer (I) and Square Image Window Bufer (SI) */ SetIj: for( j = 0; j < 2*WINDOW_SIZE-1; j++){ #pragma HLS unroll SetIi: for( i = 0; i < WINDOW_SIZE; i++ ){ #pragma HLS unroll if( i+j != 2*WINDOW_SIZE-1 ){ I[i][j] = I[i][j+1]; SI[i][j] = SI[i][j+1]; } else if ( i > 0 ){ I[i][j] = I[i][j+1] + I[i-1][j+1]; SI[i][j] = SI[i][j+1] + SI[i-1][j+1]; } } } /** Last column of the I[][] matrix **/ Ilast: for( i = 0; i < WINDOW_SIZE-1; i++ ){ #pragma HLS unroll I[i][2*WINDOW_SIZE-1] = L[i][x]; SI[i][2*WINDOW_SIZE-1] = L[i][x]*L[i][x]; } I[WINDOW_SIZE-1][2*WINDOW_SIZE-1] = IMG1_data[y][x]; SI[WINDOW_SIZE-1][2*WINDOW_SIZE-1] = IMG1_data[y][x]*IMG1_data[y][x]; /** Updates for Image Line Buffer (L) **/ LineBuf: for( k = 0; k < WINDOW_SIZE-2; k++ ){ #pragma HLS unroll L[k][x] = L[k+1][x]; } L[WINDOW_SIZE-2][x] = IMG1_data[y][x]; /* Pass the Integral Image Window buffer through Cascaded Classifier. Only pass * when the integral image window buffer has flushed out the initial garbage data */ if ( element_counter >= ( ( (WINDOW_SIZE-1)*sum_col + WINDOW_SIZE ) + WINDOW_SIZE -1 ) ) { /* Sliding Window should not go beyond the boundary */ if ( x_index < ( sum_col - (WINDOW_SIZE-1) ) && y_index < ( sum_row - (WINDOW_SIZE-1) ) ){ p.x = x_index; p.y = y_index; result = cascadeClassifier ( p, II, SII ); if ( result > 0 ) { MyRect r = {myRound(p.x*factor), myRound(p.y*factor), winSize.width, winSize.height}; AllCandidates_x[*AllCandidates_size]=r.x; AllCandidates_y[*AllCandidates_size]=r.y; AllCandidates_w[*AllCandidates_size]=r.width; AllCandidates_h[*AllCandidates_size]=r.height; *AllCandidates_size=*AllCandidates_size+1; } }// inner if if ( x_index < sum_col-1 ) x_index = x_index + 1; else{ x_index = 0; y_index = y_index + 1; } } // outer if element_counter +=1; } } } int cascadeClassifier ( MyPoint pt, int_II II[WINDOW_SIZE][WINDOW_SIZE], int_SII SII[SQ_SIZE][SQ_SIZE] ) { #pragma HLS INLINE int i, j, k; int mean; int stddev = 0; int haar_counter = 0; int w_index = 0; int r_index = 0; int stage_sum=0; /* The rectangle co-ordinagte values for all the classifiers */ #include "haar_dataRcc_with_partitioning.h" static uint18_t coord[12]; #pragma HLS array_partition variable=coord complete dim=0 static int s0[9]; #pragma HLS array_partition variable=s0 complete dim=0 static int s1[16]; #pragma HLS array_partition variable=s1 complete dim=0 static int s2[27]; #pragma HLS array_partition variable=s2 complete dim=0 /* Banking */ /* 12 (x,y,w,h) values corresponding to 3 rectangles that need to be read */ uint18_t values[12]; #pragma HLS array_partition variable=values complete dim=0 /* location/address of those 12 values in the 25 X 25 window */ uint10_t addr_list[12]; #pragma HLS array_partition variable=addr_list complete dim=0 /* among the 12 values which of them are needed to be read from the 25 X 25 window */ bit enable_list[12] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; #pragma HLS array_partition variable=enable_list complete dim=0 uint18_t _II[WINDOW_SIZE*WINDOW_SIZE]; #pragma HLS array_partition variable=_II complete dim=0 COPY_LOOP1: for (int i = 0; i < WINDOW_SIZE; i ++ ){ #pragma HLS unroll COPY_LOOP2: for (int j = 0; j < WINDOW_SIZE; j ++ ){ #pragma HLS unroll _II[i*25+j] = II[i][j]; } } stddev = SII[0][0] - SII[0][SQ_SIZE- 1] - SII[SQ_SIZE-1][0] + SII[SQ_SIZE-1][SQ_SIZE-1]; mean = II[0][0] - II[0][WINDOW_SIZE - 1] - II[WINDOW_SIZE - 1][0] + II[WINDOW_SIZE - 1][WINDOW_SIZE - 1]; stddev = (stddev*(WINDOW_SIZE-1)*(WINDOW_SIZE-1)); stddev = stddev - mean*mean; if( stddev > 0 ) stddev = int_sqrt(stddev); else stddev = 1; MyRect tr0,tr1,tr2; int r_id; int w_id; int s; /* Hard-Coding Classifier 0 */ stage_sum = 0; s0[0] = classifier0( II, stddev ); s0[1] = classifier1( II, stddev ); s0[2] = classifier2( II, stddev ); s0[3] = classifier3( II, stddev ); s0[4] = classifier4( II, stddev ); s0[5] = classifier5( II, stddev ); s0[6] = classifier6( II, stddev ); s0[7] = classifier7( II, stddev ); s0[8] = classifier8( II, stddev ); stage_sum = s0[0] + s0[1] + s0[2] + s0[3] + s0[4] + s0[5] + s0[6] + s0[7] + s0[8]; if( stage_sum < 0.4*stages_thresh_array[0] ) return -1; haar_counter += 9; /* Hard-Coding Classifier 1 */ stage_sum = 0; s1[0] = classifier9( II, stddev ); s1[1] = classifier10( II, stddev ); s1[2] = classifier11( II, stddev ); s1[3] = classifier12( II, stddev ); s1[4] = classifier13( II, stddev ); s1[5] = classifier14( II, stddev ); s1[6] = classifier15( II, stddev ); s1[7] = classifier16( II, stddev ); s1[8] = classifier17( II, stddev ); s1[9] = classifier18( II, stddev ); s1[10] = classifier19( II, stddev ); s1[11] = classifier20( II, stddev ); s1[12] = classifier21( II, stddev ); s1[13] = classifier22( II, stddev ); s1[14] = classifier23( II, stddev ); s1[15] = classifier24( II, stddev ); stage_sum = s1[0] + s1[1] + s1[2] + s1[3] + s1[4] + s1[5] + s1[6] + s1[7]; stage_sum+= s1[8] + s1[9] + s1[10] + s1[11] + s1[12] + s1[13] + s1[14] + s1[15]; if( stage_sum < 0.4*stages_thresh_array[1] ) return -1; haar_counter += 16; /* Hard-Coding Classifier 2 */ stage_sum = 0; s2[0] = classifier25( II, stddev ); s2[1] = classifier26( II, stddev ); s2[2] = classifier27( II, stddev ); s2[3] = classifier28( II, stddev ); s2[4] = classifier29( II, stddev ); s2[5] = classifier30( II, stddev ); s2[6] = classifier31( II, stddev ); s2[7] = classifier32( II, stddev ); s2[8] = classifier33( II, stddev ); s2[9] = classifier34( II, stddev ); s2[10] = classifier35( II, stddev ); s2[11] = classifier36( II, stddev ); s2[12] = classifier37( II, stddev ); s2[13] = classifier38( II, stddev ); s2[14] = classifier39( II, stddev ); s2[15] = classifier40( II, stddev ); s2[16] = classifier41( II, stddev ); s2[17] = classifier42( II, stddev ); s2[18] = classifier43( II, stddev ); s2[19] = classifier44( II, stddev ); s2[20] = classifier45( II, stddev ); s2[21] = classifier46( II, stddev ); s2[22] = classifier47( II, stddev ); s2[23] = classifier48( II, stddev ); s2[24] = classifier49( II, stddev ); s2[25] = classifier50( II, stddev ); s2[26] = classifier51( II, stddev ); stage_sum = s2[0] + s2[1] + s2[2] + s2[3] + s2[4] + s2[5] + s2[6] + s2[7]; stage_sum+= s2[8] + s2[9] + s2[10] + s2[11] + s2[12] + s2[13] + s2[14] + s2[15]; stage_sum+= s2[16] + s2[17] + s2[18] + s2[19] + s2[20] + s2[21] + s2[22] + s2[23]; stage_sum+= s2[24] + s2[25] + s2[26]; if( stage_sum < 0.4*stages_thresh_array[2] ) return -1; haar_counter += 27; /******************************************/ // REST 23 STAGES /*****************************************/ Stages: for ( i = 3; i < 25; i++ ){ Filters: for ( j = 0; j < stages_array[i] ; j++ ){ #pragma HLS pipeline if ( j == 0 ) { stage_sum = 0; s=0; } r_id = r_index; w_id = w_index; tr0.x = rectangles_array0[haar_counter]; tr0.width = rectangles_array2[haar_counter]; tr0.y = rectangles_array1[haar_counter]; tr0.height = rectangles_array3[haar_counter]; tr1.x = rectangles_array4[haar_counter]; tr1.width = rectangles_array6[haar_counter]; tr1.y = rectangles_array5[haar_counter]; tr1.height = rectangles_array7[haar_counter]; tr2.x = rectangles_array8[haar_counter]; tr2.width = rectangles_array10[haar_counter]; tr2.y = rectangles_array9[haar_counter]; tr2.height = rectangles_array11[haar_counter]; /* Calculates addresses/locations of all the 12 co-ordinates */ addr_list[ 0] = tr0.y *25+ tr0.x; addr_list[ 1] = tr0.y *25+tr0.x+tr0.width; addr_list[ 2] = (tr0.y+tr0.height)*25+tr0.x; addr_list[ 3] = (tr0.y+tr0.height)*25+tr0.x+tr0.width; addr_list[ 4] = tr1.y *25+tr1.x; addr_list[ 5] = tr1.y *25+tr1.x+tr1.width; addr_list[ 6] = (tr1.y+tr1.height)*25+tr1.x; addr_list[ 7] = (tr1.y+tr1.height)*25+tr1.x+tr1.width; if (!(tr2.x ==0 && tr2.width==0 && tr2.y==0 && tr2.height==0 ) && tr2.width!=0 && tr2.height!=0) { addr_list[ 8] = tr2.y *25+tr2.x; addr_list[ 9] = tr2.y *25+tr2.x+tr2.width; addr_list[10] = (tr2.y+tr2.height)*25+tr2.x; addr_list[11] = (tr2.y+tr2.height)*25+tr2.x+tr2.width; enable_list[ 8] = 1; enable_list[ 9] = 1; enable_list[10] = 1; enable_list[11] = 1; } else { addr_list[ 8] = addr_list[0]; addr_list[ 9] = addr_list[1]; addr_list[10] = addr_list[2]; addr_list[11] = addr_list[3]; enable_list[ 8] = 0; enable_list[ 9] = 0; enable_list[10] = 0; enable_list[11] = 0; } /* Read the values corresponding to the 12 locations from _II which is the copy of integral image window */ get_all_data(values, addr_list, _II); for ( k = 0; k < 12; k++ ){ if ( enable_list[k] == 0 ) coord[k] = 0; else coord[k] = values[k]; } s = weakClassifier ( stddev, coord, haar_counter, w_id ); stage_sum = stage_sum + s; haar_counter = haar_counter+1; w_index = w_index+3; r_index = r_index+12; } /* end of j loop */ if( stage_sum < 0.4*stages_thresh_array[i] ){ return -i; } } /* end of i loop */ return 1; } int weakClassifier ( int stddev, uint18_t coord[12], int haar_counter, int w_id ) { /* weights and threshold values for various classifiers */ #include "haar_dataEWC_with_partitioning.h" # pragma HLS INLINE int t = tree_thresh_array[haar_counter] * stddev; int sum0 =0; int sum1 =0; int sum2 =0; int final_sum =0; int return_value; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * weights_array0[haar_counter]; sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * weights_array1[haar_counter]; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * weights_array2[haar_counter]; final_sum = sum0+sum1+sum2; if(final_sum >= t) return_value = alpha2_array[haar_counter]; else return_value = alpha1_array[haar_counter]; return return_value ; } void imageScaler ( int src_height, int src_width, unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH], int dest_height, int dest_width, unsigned char IMG1_data[IMAGE_HEIGHT][IMAGE_WIDTH] ) { int y; int j; int x; int i; unsigned char* t; unsigned char* p; int w1 = src_width; int h1 = src_height; int w2 = dest_width; int h2 = dest_height; int rat = 0; int x_ratio = (int)((w1<<16)/w2) +1; int y_ratio = (int)((h1<<16)/h2) +1; imageScalerL1: for ( i = 0 ; i < IMAGE_HEIGHT ; i++ ){ imageScalerL1_1: for (j=0;j < IMAGE_WIDTH ;j++){ #pragma HLS pipeline if ( j < w2 && i < h2 ) IMG1_data[i][j] = Data[(i*y_ratio)>>16][(j*x_ratio)>>16]; } } } unsigned int int_sqrt ( ap_uint<32> value ) { int i; unsigned int a = 0, b = 0, c = 0; for ( i = 0 ; i < (32 >> 1) ; i++ ) { #pragma HLS unroll c<<= 2; #define UPPERBITS(value) (value>>30) c += UPPERBITS(value); #undef UPPERBITS value <<= 2; a <<= 1; b = (a<<1) | 1; if ( c >= b ) { c -= b; a++; } } return a; } int max ( int a, int b ) { if ( a > b ) return a; else return b; } int min ( int a, int b ) { if ( a < b ) return a; else return b; } ================================================ FILE: face-detection/src/sdsoc/face_detect.h ================================================ /*===============================================================*/ /* */ /* face_detect.h */ /* */ /* Hardware function for the Face Detection application. */ /* */ /*===============================================================*/ #include "../host/typedefs.h" void face_detect( unsigned char Data[IMAGE_WIDTH], int _result_x[RESULT_SIZE], int _result_y[RESULT_SIZE], int _result_w[RESULT_SIZE], int _result_h[RESULT_SIZE], int *result_size); ================================================ FILE: face-detection/src/sdsoc/haar_dataEWC_with_partitioning.h ================================================ static int weights_array0[2913] = { -4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096}; static int weights_array1[2913] = { 12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,12288,8192,8192,12288,8192,12288,12288,8192,8192,12288,8192,12288,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,12288,12288,8192,8192,12288,8192,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,8192,12288,8192,8192,8192,8192,8192,8192,12288,8192,8192,12288,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,12288,8192,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,12288,12288,8192,12288,8192,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,8192,8192,12288,12288,8192,8192,12288,12288,8192,8192,12288,12288,8192,8192,12288,12288,12288,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,12288,12288,8192,12288,12288,8192,12288,12288,12288,8192,8192,8192,8192,12288,12288,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,8192,12288,12288,12288,8192,8192,8192,8192,12288,8192,12288,8192,8192,12288,12288,8192,12288,12288,12288,8192,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,12288,8192,8192,8192,12288,8192,12288,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,8192,12288,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,12288,8192,12288,12288,12288,8192,12288,12288,8192,8192,12288,12288,12288,8192,12288,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,8192,8192,12288,12288,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,8192,12288,8192,8192,12288,8192,12288,12288,12288,12288,12288,8192,12288,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,12288,12288,12288,8192,12288,8192,12288,12288,12288,12288,8192,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,8192,12288,12288,12288,8192,8192,8192,8192,8192,12288,8192,8192,12288,12288,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,12288,12288,8192,8192,12288,12288,8192,8192,8192,12288,12288,8192,8192,8192,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,12288,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,8192,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,8192,8192,8192,12288,12288,8192,12288,12288,8192,8192,8192,12288,12288,12288,8192,12288,12288,8192,12288,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,12288,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,12288,8192,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,12288,12288,8192,12288,12288,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,12288,12288,8192,8192,12288,12288,8192,12288,8192,8192,8192,8192,8192,8192,12288,8192,12288,8192,12288,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,12288,8192,8192,12288,8192,12288,8192,8192,8192,8192,8192,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,12288,8192,12288,8192,8192,12288,12288,8192,8192,12288,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,12288,8192,12288,12288,8192,8192,8192,12288,8192,8192,8192,12288,12288,8192,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,12288,8192,8192,12288,12288,12288,12288,8192,12288,8192,8192,8192,12288,12288,8192,8192,8192,12288,12288,12288,8192,8192,8192,8192,12288,8192,12288,8192,12288,8192,12288,12288,8192,12288,12288,12288,12288,8192,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,8192,12288,8192,12288,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,12288,8192,12288,12288,12288,12288,8192,12288,8192,8192,12288,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,12288,8192,12288,8192,12288,8192,8192,8192,12288,8192,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,8192,8192,12288,8192,12288,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,12288,8192,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,8192,8192,12288,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,12288,8192,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,8192,8192,12288,8192,12288,8192,12288,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,12288,12288,8192,8192,12288,12288,8192,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,12288,8192,12288,8192,12288,8192,12288,12288,8192,8192,12288,12288,8192,12288,12288,8192,12288,12288,8192,12288,8192,12288,12288,8192,8192,12288,8192,12288,12288,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,8192,8192,12288,12288,12288,8192,8192,12288,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,12288,12288,8192,12288,8192,12288,8192,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,8192,12288,8192,12288,8192,8192,12288,12288,12288,8192,8192,8192,12288,12288,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,8192,8192,8192,8192,12288,12288,8192,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,8192,12288,12288,8192,8192,8192,12288,12288,8192,12288,8192,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,12288,8192,8192,8192,12288,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,8192,8192,12288,8192,12288,8192,12288,8192,8192,12288,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,8192,12288,12288,8192,12288,8192,12288,8192,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,8192,12288,8192,8192,12288,8192,8192,8192,8192,12288,8192,12288,12288,8192,12288,8192,8192,12288,8192,12288,8192,8192,12288,12288,12288,8192,12288,12288,12288,12288,8192,12288,12288,8192,12288,12288,12288,8192,8192,12288,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,8192,8192,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,12288,12288,8192,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,12288,8192,12288,8192,12288,8192,8192,12288,8192,12288,8192,12288,8192,12288,8192,8192,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,12288,12288,8192,8192,12288,12288,8192,8192,8192,12288,8192,8192,12288,8192,8192,8192,12288,8192,12288,8192,12288,8192,12288,12288,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,8192,8192,12288,8192,8192,8192,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,12288,8192,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,8192,12288,12288,8192,12288,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,8192,8192,8192,12288,8192,12288,8192,8192,12288,12288,8192,8192,12288,12288,12288,8192,8192,8192,12288,12288,12288,12288,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,8192,12288,12288,12288,8192,12288,12288,8192,8192,12288,12288,8192,12288,12288,12288,12288,8192,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,12288,8192,12288,12288,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,8192,12288,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,12288,8192,8192,8192,8192,8192,12288,8192,12288,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,8192,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,12288,12288,8192,8192,8192,12288,12288,12288,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,8192,8192,8192,12288,12288,8192,8192,12288,12288,8192,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,8192,12288,12288,8192,12288,8192,12288,12288,8192,8192,8192,8192,8192,12288,8192,8192,12288,8192,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,12288,8192,8192,8192,12288,12288,8192,8192,8192,12288,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,8192,12288,12288,8192,12288,8192,12288,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,12288,8192,12288,12288,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,12288,8192,8192,8192,12288,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,12288,12288,8192,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,8192,12288,12288,8192,8192,8192,12288,12288,8192,12288,8192,8192,12288,12288,8192,8192,12288,12288,8192,12288,8192,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,8192,8192,12288,8192,8192,12288,12288,12288,8192,12288,8192,12288,12288,12288,12288,12288,8192,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,8192,8192,8192,12288,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,12288,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,12288,12288,12288,8192,12288,8192,12288,8192,8192,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,8192}; static int weights_array2[2913] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,8192,0,0,0,0,0,8192,8192,0,0,0,0,0,8192,0,0,0,8192,8192,0,0,0,0,0,8192,8192,0,0,0,0,0,8192,8192,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,8192,8192,0,0,8192,8192,0,0,0,0,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,8192,8192,0,0,0,0,8192,8192,8192,0,8192,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,0,8192,8192,0,0,0,0,8192,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,8192,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,8192,0,0,8192,0,0,8192,0,0,0,0,8192,0,0,8192,0,0,0,0,8192,8192,0,0,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,8192,8192,8192,0,0,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,8192,0,0,0,0,0,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,0,0,0,8192,0,8192,8192,0,0,8192,8192,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,8192,8192,8192,0,8192,0,8192,0,8192,0,8192,0,0,8192,0,0,8192,8192,0,8192,0,0,0,0,0,0,0,0,8192,8192,0,8192,8192,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,0,0,8192,8192,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,8192,8192,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,8192,0,8192,0,0,0,8192,0,0,0,0,0,0,8192,8192,8192,0,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,8192,8192,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,8192,0,0,0,8192,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,8192,0,8192,0,8192,0,8192,8192,8192,0,8192,8192,8192,8192,8192,8192,8192,8192,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,8192,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,8192,8192,0,8192,0,0,0,0,0,0,0,0,0,8192,8192,8192,8192,0,8192,8192,8192,8192,8192,0,8192,0,0,8192,8192,0,0,8192,0,8192,8192,8192,8192,0,0,0,0,8192,8192,0,8192,0,8192,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,8192,0,0,0,0,8192,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,0,8192,0,0,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,8192,0,0,0,8192,8192,0,8192,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,0,8192,0,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,8192,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,0,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,0,0,8192,0,0,8192,0,0,8192,0,0,0,8192,8192,0,0,0,0,0,0,0,0,8192,0,0,8192,0,0,0,8192,8192,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,8192,8192,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,8192,0,8192,8192,8192,0,0,0,0,8192,0,8192,0,0,0,0,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,0,0,8192,0,0,0,0,0,8192,0,8192,0,8192,8192,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,8192,8192,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,8192,0,8192,8192,8192,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,8192,8192,8192,8192,0,0,8192,8192,0,0,0,0,0,8192,8192,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,8192,0,0,8192,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,8192,0,0,8192,0,0,0,0,8192,0,8192,0,0,0,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,8192,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,8192,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,8192,8192,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,8192,8192,0,8192,0,0,0,0,8192,8192,0,0,8192,8192,0,0,8192,0,8192,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,0,0,0,0,8192,0,0,0,8192,0,0,0,8192,8192,0,0,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,0,0,0,8192,0,0,8192,8192,8192,0,0,8192,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,8192,8192,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,8192,8192,8192,8192,0,0,8192,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,8192,8192,0,8192,8192,8192,0,0,0,0,0,0,0,0,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,8192,8192,0,0,8192,0,8192,8192,0,8192,0,0,8192,0,8192,8192,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,8192,0,8192,0,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,8192,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,0,8192,0,8192,8192,8192,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,8192,0,8192,8192,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,8192,8192,8192,8192,8192,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,8192,0,8192,0,0,0,0,0,0,0,0,0,0,8192}; static int alpha1_array[2913] = { 534,-477,-386,-223,-199,142,-432,-378,-219,318,-414,-497,-142,68,-684,-277,-90,237,296,-107,373,286,-89,-155,99,-259,-421,118,-167,-357,-129,93,-77,-103,269,-416,72,-259,-42,388,451,-80,-25,-103,43,227,-95,16,-447,-240,-13,-468,295,-400,-147,-373,-213,-80,-111,381,-246,-626,44,124,45,-501,253,-660,368,-126,-596,-216,-369,46,17,100,37,63,-193,-93,-594,108,284,-851,-311,-123,-276,-307,-112,-47,77,319,-152,72,123,68,-335,116,-443,-49,-412,190,-68,-15,-89,-268,211,52,52,-332,-335,-269,-351,-9,-255,370,-95,-147,4,-20,-294,95,67,193,57,-323,222,-355,16,-137,-90,-150,-85,178,220,49,-228,-322,-220,-191,-323,-251,164,-61,-87,281,402,-70,-280,78,66,-315,104,-24,-105,64,-240,318,-83,89,14,-262,263,55,-408,-263,-378,-61,74,-59,-309,62,-350,54,83,-72,-591,73,-69,-392,19,36,-282,3,-88,51,-104,-569,-73,-227,-285,-258,66,-146,-141,-329,446,-269,145,334,-118,-106,92,-228,75,-203,39,8,-100,22,141,-473,-123,-115,-216,90,47,-320,-208,-237,144,205,-217,-103,-391,161,150,-65,74,-101,53,112,240,2,-259,-96,-206,-270,51,-97,54,-262,-263,-53,225,267,35,-425,204,-245,50,-265,-315,-194,-99,-183,141,-114,-279,214,-65,80,-268,41,-176,63,-129,10,36,-229,-116,86,-202,-584,100,8,-277,-481,37,-260,39,-197,-29,17,-450,245,119,181,-281,-279,-67,-56,47,-237,502,54,-300,-287,-43,211,-295,-268,-279,108,-235,-408,-169,49,-162,-48,-27,-276,87,121,249,-556,-164,-377,108,6,40,-103,-510,-159,259,-262,-291,-145,78,-440,59,-311,83,-81,-28,101,0,192,-212,-152,40,8,-133,-136,51,11,-233,23,54,-69,-26,16,-237,34,50,-292,43,-121,-553,11,-8,-337,94,-65,-19,-201,435,198,-382,-546,145,173,63,3,-2,115,-243,-515,101,-63,-14,11,-125,-76,-153,-7,95,-255,36,-54,-337,126,108,-7,-202,-576,-65,-57,-73,-8,152,-122,58,-66,-153,181,-143,-182,-285,-104,-97,-179,-139,-25,216,67,39,-509,-82,152,5,-112,-228,54,3,257,-376,-208,29,33,-301,161,47,-238,9,93,50,-429,-787,54,-293,214,-71,45,246,2,-136,210,-50,-6,-347,-165,215,49,-186,-92,14,120,-290,251,-72,-163,95,-334,-523,198,44,-384,73,354,-57,-406,-305,-39,66,-22,192,31,-93,-19,200,-229,211,4,289,-147,-5,-139,-313,37,-71,-62,-219,177,-42,112,-250,-231,-202,-77,-230,-107,117,233,-376,-268,74,-329,-219,41,40,5,-42,-249,252,121,-245,-134,43,-290,66,50,-13,272,-47,-7,255,-7,0,-391,8,196,41,-250,118,65,-206,-336,51,249,-48,-174,48,-60,63,-266,131,414,764,154,-158,169,-287,-275,207,-5,173,14,-33,-96,-149,-77,151,248,233,-154,11,-239,46,-330,-11,-3,-68,-131,106,-63,-57,16,48,-242,94,246,-785,58,0,243,-25,2,165,-9,177,-103,-165,250,-26,156,-260,-105,-149,-237,30,-148,-98,301,-220,-191,235,68,-72,-157,147,83,22,88,60,-190,-231,-88,-239,-136,235,-181,-222,-58,-77,68,-302,-139,-69,-233,-112,6,202,205,-51,-11,-231,90,-50,-358,0,-125,-312,95,-75,-368,-577,96,-75,-255,12,38,-3,-36,-4,-443,-61,1,9,19,-434,161,-85,58,49,23,-446,-61,301,35,-139,-55,16,175,445,78,-54,-203,95,-3,310,-5,-271,-8,9,-20,-491,123,-50,50,-49,463,199,39,-42,-26,-9,-14,71,32,5,48,18,12,-69,13,97,39,6,41,-157,-217,-208,-93,-304,84,-130,-268,-129,-254,-24,59,-26,0,-167,72,39,-74,349,312,-209,-312,30,-299,-273,-92,125,150,-19,70,-1,210,33,-232,2,455,146,-82,49,17,-99,-6,-491,-328,-103,-186,148,234,-132,61,42,-349,-437,-80,38,190,-104,208,84,-321,353,-9,-47,-114,173,-3,86,-271,37,-62,33,-268,-387,35,73,-69,47,83,29,-283,205,-67,4,3,-78,-411,19,-1,-61,490,-64,-177,46,-7,16,2,38,99,-397,55,-12,-65,-46,139,-177,75,236,-203,84,-351,16,92,-39,34,27,-2,0,-120,-2,-88,383,-254,-147,-8,102,46,139,174,-230,-144,92,-142,-274,-183,-120,54,171,-244,208,315,-78,54,-231,57,-101,47,39,55,-378,-43,9,85,1,115,39,-333,-62,7,-57,52,175,-2,-51,121,-283,259,106,54,-296,90,-393,51,-6,43,-306,-279,71,-11,-67,154,97,33,30,-87,-43,156,-124,-1030,-100,-22,293,-5,9,144,-44,323,171,-105,-234,0,-95,-108,-42,38,352,-86,195,-177,-3,-26,273,47,-56,65,-2,-73,-9,84,-89,-368,-302,566,-478,-196,-161,218,-8,-49,527,-29,-4,-10,-170,-14,156,-146,14,44,-171,75,-72,-27,-13,115,-520,43,-5,77,-79,-460,-13,53,-51,-244,-36,-279,26,15,-343,12,-262,21,-37,168,-232,-127,-108,-122,130,-59,103,115,-217,-238,-327,149,-13,-222,-19,-63,-287,-371,137,17,292,-63,-10,150,39,43,-38,-102,71,0,105,-365,-64,11,-240,-69,-264,161,41,-64,-74,-2,28,-49,79,-1,-117,-3,-19,-68,46,-48,-37,-134,-98,-1,-148,5,-166,-86,38,-64,-28,-249,97,-266,-1410,244,2,57,42,-221,-721,-331,-208,168,1,78,65,-367,-43,-166,-13,-235,137,-139,39,-62,-130,-55,29,-3,311,-64,57,64,-83,-14,0,-78,-62,120,98,-12,54,-43,29,-11,-103,-84,-185,-40,49,210,-110,-7,28,557,-12,-83,294,-99,-429,-249,53,-42,60,-237,-188,36,2,-304,622,183,40,-208,238,-144,-202,-362,97,-104,-61,-223,39,-293,39,10,111,111,-24,-97,228,220,153,-406,43,130,-110,-80,270,-183,63,-176,-151,11,-157,-78,-351,-143,1,400,-404,-397,44,-334,-353,-181,-10,147,-126,-125,-154,60,-20,-308,59,-207,157,-75,-156,-136,-329,-43,-28,261,-200,-225,29,-207,-18,-329,121,-15,44,-51,-17,-326,31,3,158,-92,134,-43,-304,214,90,-225,-36,-74,-8,177,-165,-7,-2,217,-531,-219,98,-441,140,-9,149,-3,38,132,-5,-220,-116,33,33,-64,5,-100,21,-46,-158,-12,45,-215,-48,-203,-60,-14,67,-171,172,77,37,-47,48,115,34,-53,82,-51,40,-160,42,-64,39,145,146,-98,56,-73,-166,-74,116,-131,4,100,304,-174,-217,-282,-50,-104,-75,-334,60,74,-620,225,205,37,-208,-181,-186,43,708,29,-1,59,-79,-12,-297,-69,-138,46,160,61,-240,-19,10,43,-8,24,-101,-58,-70,-27,-12,38,-5,-205,-53,51,-46,127,299,-16,-59,-210,155,-10,-294,-2,96,-25,171,40,97,38,-174,65,-7,-90,-9,-6,27,119,-72,-5,-83,-313,-4,167,-133,-200,0,-13,4,-159,45,11,116,85,-598,-169,117,-68,-47,-6,-8,1,108,-5,-8,28,74,30,37,-137,-15,-115,310,-590,-183,18,-313,34,-7,34,-37,49,-95,207,214,-242,11,-497,-54,153,-56,161,-59,46,-178,88,-224,60,-15,-50,247,-15,-116,29,463,59,126,155,102,-217,-202,-172,9,35,-35,35,-51,-119,-241,83,70,60,-147,-156,-144,-205,-207,35,-42,369,34,-86,-29,-254,-123,9,-278,244,-265,230,-259,157,-21,16,-239,-215,155,-7,33,-289,194,76,5,-218,-15,91,0,-8,151,152,-300,-4,41,-57,70,-194,-58,49,42,328,-138,162,-127,-303,5,7,-53,0,-56,-2,114,-52,-196,-361,49,215,32,-119,132,-7,62,250,51,-65,43,-219,143,-65,1,-154,107,58,23,-68,-185,-89,29,-2,52,148,4,-84,351,0,-3,96,-703,121,-148,-2,89,364,61,-2,-4,-231,-54,50,-23,-141,47,496,-67,-140,-655,-63,41,56,79,-244,32,-15,10,-11,10,7,264,-17,-152,-16,14,-1,37,-45,-152,-276,199,-16,-4,-14,87,-67,-33,7,6,115,-50,-138,-3,17,174,-52,182,-94,-220,-69,-88,-81,-176,-53,-126,343,11,-182,257,-3,-209,138,-86,-306,-227,42,160,-72,-163,-196,116,-195,11,-12,-5,-245,-179,-72,-64,-178,117,46,-161,-263,88,-74,-113,45,-2,423,-1,0,-158,180,100,-6,120,82,-314,11,-42,86,-218,14,133,160,-157,-216,-16,-45,-7,-62,-60,100,-68,44,-277,184,-304,161,338,-86,-65,36,-298,-101,126,479,-227,-298,-171,-122,30,-19,-51,236,-68,-138,4,-3,-45,53,5,-4,-48,104,-52,-434,-7,-51,-115,60,-46,-70,-118,106,37,192,-48,90,-164,4,270,76,-55,61,-8,-1,19,20,-35,-476,-47,36,411,-207,-356,8,-141,5,113,46,-16,51,-81,222,163,44,61,138,612,40,0,-29,-269,-51,-54,28,-439,165,-2,50,-221,35,86,-640,129,-750,-153,86,-283,114,-266,8,135,-137,-128,-84,-81,27,-36,241,-139,3,-80,-1,-195,61,-24,-202,-26,-103,52,0,-1,-93,-365,-10,67,-214,-125,-48,59,-9,-456,-55,-45,-2,77,-243,8,250,-5,-14,167,6,-1,87,-1,-134,-149,5,-93,9,-37,-55,-277,-39,11,-396,42,-197,28,283,70,-206,36,50,-12,-42,-32,-8,-16,-93,30,-133,166,44,-50,-130,-17,-104,-54,-127,-52,46,3,-53,63,-488,-182,-43,48,1,43,-578,616,-69,80,-371,-4,-59,36,-56,-29,6,45,-37,-134,225,-123,-54,-18,-63,2,-45,33,-11,44,-289,-57,116,-38,-174,166,114,-22,-119,74,-309,-11,-68,-33,497,39,-182,235,-57,-185,319,-370,-200,-218,-38,140,93,-8,-157,-16,-87,-77,19,-249,47,-15,83,-75,-310,33,-169,42,-13,51,-201,73,442,4,-19,81,196,47,-60,44,-11,205,-209,38,-186,145,10,-507,128,102,-196,221,-143,10,-49,47,-12,362,337,12,-53,-319,66,58,-220,80,64,68,-138,183,-149,-190,45,-275,6,-115,-69,-125,106,41,-282,166,107,90,-74,-338,-224,66,-253,162,6,-144,0,-24,-167,-119,-271,129,-78,-285,-222,168,-58,46,-84,-30,98,-228,137,-14,-390,19,-50,-163,21,-110,102,135,-99,224,-298,279,35,34,-3,45,-135,-28,100,-65,-6,202,-122,-44,0,4,51,47,-15,-83,-159,-8,50,52,-145,191,217,42,-340,-15,195,57,-407,30,-335,0,167,18,-172,85,116,-11,68,-212,-172,-18,7,34,-152,103,-278,74,167,-501,-58,40,-99,439,-97,-791,-35,-16,-144,64,-670,15,239,35,-3,15,182,37,-95,-60,-7,47,-39,38,-42,-18,-5,-46,-116,68,-39,17,70,-787,-374,226,35,-263,19,30,172,54,114,9,-50,34,215,44,-45,-36,267,28,-201,-155,-3,-523,-107,6,-44,-56,-17,330,-297,17,-45,56,158,-118,-32,-77,-57,64,74,49,-193,21,-68,34,-103,41,79,-68,39,293,-182,106,-341,36,-12,163,-55,-206,-81,-164,-117,117,93,6,44,-246,-181,18,-191,174,-32,18,244,-72,98,0,217,-236,-139,-1,184,49,29,-13,-27,-46,42,52,239,0,0,185,256,-11,3,-241,-111,-45,148,-5,-36,249,-21,-529,112,73,-146,88,143,-37,61,110,5,46,38,-50,0,323,166,-264,-122,-53,132,-54,46,-37,-72,-114,10,101,563,-71,87,73,163,20,-114,-251,58,214,29,-9,-346,-45,32,205,41,39,-471,-206,-35,-6,-188,-116,53,102,-5,-127,45,11,44,-118,13,38,35,-73,-77,-251,12,60,120,-53,42,-144,-911,-9,-144,-7,-136,-56,36,-88,245,445,355,13,-23,9,243,-34,58,-56,329,-1012,96,-6,43,-239,33,-292,126,-79,-97,-47,-151,-39,82,-40,193,-226,61,-479,33,-6,119,102,-400,-492,34,261,-24,28,154,-48,29,-71,185,-49,39,-14,-412,-15,41,-45,1190,-43,233,56,-230,-96,-97,-46,-57,181,122,-47,10,-59,-117,85,-42,57,38,-380,-49,34,-277,-151,-125,152,-302,-156,-292,-421,-79,-177,-183,57,264,115,-218,148,-96,-67,-7,52,171,44,-214,-8,107,17,-40,-181,-41,99,4,12,-69,216,39,-237,132,35,-230,50,24,-15,62,156,232,-80,-170,15,204,48,150,-65,-3,52,-274,-148,-169,-123,147,-13,31,28,-444,34,-120,178,431,203,-259,36,129,-40,-139,-44,64,238,-8,89,17,36,-263,-50,-198,33,-39,38,-182,284,238,-50,107,-132,-11,13,-60,-226,-52,34,-44,14,40,182,-40,-88,-142,-924,132,-22,7,60,-10,117,-195,-957,-163,49,-41,5,-434,303,-104,39,125,-62,-12,111,48,-112,-52,79,-79,35,-130,122,115,33,-10,-88,1,20,297,-82,-46,0,-37,-101,-46,37,-15,87,79,-9,-45,-258,-137,123,67,9,-153,39,-37,3,-4,91,306,-158,-467,-7680,-61,-8,-39,-15,-165,278,-66,35,-53,37,7,323,-32,-175,-122,-120,65,-123,-61,194,-89,-202,120,171,63,-55,71,14,-255,-305,38,-363,-72,121,-15,-219,42,-300,67,9,-10,73,-360,-54,86,-64,10,135,64,1,-127,21,-133,-161,329,213,28,-345,-346,103,-67,150,-42,3,-4,-61,-137,192,-41,-44,59,64,33,-214,603,48,37,-11,45,-252,-41,-61,36,-266,50,-232,-7,-255,187,71,1,-51,165,-47,-74,-17,-3,-53,-91,277,54,132,-112,8,3,87,84,-64,35,-3,48,89,-9,-109,170,-125,33,-14,-147,249,45,-207,71,-34,-17,-46,-40,74,113,-49,-2,-108,-218,214,25,-47,64,-90,41,-37,-54,-182,8,-69,92,-12,33,-275,6,-66,-454,76,50,-110,-130,199,-161,-11,30,-4,22,10,-486,-15,227,-56,147,-138,-20,-51,106,-7,-30,84,-5,-112,30,234,28,-36,51,83,40,-19,29,-42,57,-49,29,-229,91,-117,60,-7,-130,-138,-227,206,3,-11,18,-50,-1391,114,-3,-38,118,-422,-9,88,31,-15,4,-70,-45,-82,32,-127,11,-10,0,-391,9,25,159,-238,-103,24,95,-59,10,-127,8,-128,9,-16,124,34,-113,7,3,3,74,-103,84,-136,-369,-202,-68,-139,5,-127,-202,204,-84,-69,-135,-144,-44,-23,-14,60,45,-109,148,8,17,-321,136,298,100,-188,-36,30,-362,113,-356,131,-14,-20,-221,133,-41,-43,-1,162,-86,-8,165,13,167,49,-238,-174,3,257,-59,-185,-56,42,-61,130,231,35,-169,205,-85,-142,-15,87,71,300,209,-47,83,50,-239,6,-54,189,-49,178,100,-18,244,-13,19,13,184,36,10,137,-11,8,-66,40,-187,21,-90,72,-215,38,-48,113,-14,-79,420,-199,-59,-92,199,302,-120,56,-9,107,-42,40,-1,-7,-58,-15,-76,56,311,3,-382,-98,-54,0,-159,-108,6,33,301,8,-81,216,94,-133,-15,202,-299,10,-91,53,-48,65,8,-253,-34,86,-46,-251,-8,298,163,-59,-56,41,-43,66,-196,-69,19,-9,-45,48,180,17,192,49,-12,-114,166,-14,-39,-156,-12,28,-204,-48,-34,124 }; static int alpha2_array[2913] = { -567,339,272,301,322,-479,112,113,218,-402,302,179,442,-558,116,137,238,-169,-76,347,-50,-135,292,197,-387,375,256,-408,212,108,269,-344,371,310,-117,39,-400,59,327,-77,-13,393,239,246,-757,-112,102,-677,72,59,275,25,-274,196,353,132,149,299,244,-35,70,60,-343,-230,-418,46,-97,63,-75,161,13,99,25,-322,-609,-70,-291,-324,69,181,9,-12,-89,54,277,359,189,96,323,117,-245,11,138,-381,-134,-409,39,-184,17,174,19,-55,335,312,217,76,-83,-214,-171,35,19,49,17,199,31,3,135,100,-542,252,24,-37,-148,-43,-163,64,-69,60,-323,77,135,61,132,-3,-66,-151,267,141,163,136,92,92,-128,218,292,-46,-80,267,50,-340,-179,57,-131,158,121,-175,29,-14,211,-45,-396,61,-81,-211,13,33,9,126,-146,163,16,-255,9,-266,-138,113,0,-165,205,54,-270,-219,16,162,144,-385,96,31,173,243,125,127,-320,152,77,57,-25,47,-119,-67,106,151,-117,36,-249,46,-339,-536,131,-328,-118,11,88,109,42,-120,-427,9,59,25,-48,-97,50,129,59,-81,-3,266,-213,116,-384,-98,-27,-430,61,119,45,18,-395,96,-317,13,58,314,-11,-55,-486,1,-21,16,-195,210,75,148,229,129,-180,181,68,-98,66,-150,43,-224,60,-144,98,-355,-273,50,111,-114,57,-1,-133,-386,47,0,-568,15,-303,31,181,-269,49,-64,-54,-71,62,14,50,269,-440,15,7,-123,41,10,82,-67,38,10,39,-108,47,0,79,-166,39,391,166,9,-25,-87,-4,-7,42,0,-45,-327,-388,83,38,284,-157,101,73,115,-174,15,-442,31,-207,172,215,-121,242,-80,45,63,-109,-409,96,63,-369,-348,69,-208,-191,207,220,-253,39,-180,-103,18,-184,67,37,-275,311,3,-39,180,85,19,12,-62,31,-6,-30,-68,-165,-317,260,-92,52,-5,-75,277,311,-272,43,132,63,-592,-83,18,-441,260,38,-74,-86,-600,39,-7,60,236,79,-693,-8,58,-267,196,71,-65,280,135,103,189,188,97,93,203,-84,-247,-271,34,154,-54,-375,52,26,-102,-411,-34,2,66,-183,-421,6,-26,-137,51,-258,-70,-136,53,-9,-182,4,-16,203,-175,-55,319,37,-3,276,291,-1,61,-52,-312,13,74,-171,4,6,7,151,67,-85,40,-6,-11,-114,36,-97,16,203,29,-1,104,-98,196,-57,-372,66,124,-56,37,-51,69,-48,40,-419,61,-1,-115,112,64,6,0,389,-55,5,164,147,336,74,136,-114,-70,52,17,-133,11,47,-176,-215,-349,66,16,-4,-83,51,57,-274,9,-183,-136,249,-60,117,-682,6,-555,191,2,254,-63,-156,7,-34,-133,38,0,-157,-53,122,28,-383,208,-17,12,-1,-47,24,-69,40,-60,50,5,-4,-444,-14,-197,171,79,65,105,4,-53,10,43,209,6,-87,0,64,-366,85,33,-79,181,49,-227,-70,6,-44,-51,29,-116,100,-51,52,-261,-23,-493,-17,47,56,-47,95,-68,147,258,144,79,-286,84,134,-8,30,53,-72,-179,187,39,-87,-33,-245,-119,-134,55,16,55,12,44,-56,46,14,134,143,-179,11,66,148,50,54,197,-63,-9,282,184,11,-96,286,49,-297,42,-3,-21,152,34,-8,4,136,41,-192,-167,-314,110,-305,36,138,144,-203,379,-7,8,76,-97,-135,538,-10,91,-45,-332,35,100,-184,16,-42,-42,187,52,-75,103,-44,178,0,137,-191,85,-9,4,186,-125,197,17,-47,-410,304,100,-412,138,-81,-263,-202,-214,-160,402,98,134,-72,-78,-223,-51,20,145,114,173,49,-182,29,51,93,32,147,-134,122,-398,48,-114,-54,133,7,-57,37,4,-252,5,50,97,-37,-71,154,-96,264,-57,-303,11,274,-44,-18,102,-311,-182,46,-395,42,-4,60,14,-4,-54,47,-101,-657,-3,42,84,-124,-57,48,-53,-153,-5,15,-394,95,35,-4,-313,0,-3,-317,131,-181,0,37,-119,-106,111,-243,-78,-506,-2,-8,99,150,-242,54,-7,297,-285,53,-40,46,11,-191,-428,195,-226,-630,-76,41,-95,152,141,104,-60,40,-87,24,8,-13,-5,234,-73,136,-113,-655,-283,145,32,223,53,14,-2,43,-355,0,-106,4,-50,132,180,-171,91,48,67,68,-276,-71,61,-63,1,181,-368,12,-114,88,-343,-132,-186,-6,49,-224,-61,-320,-21,-124,46,159,236,198,-278,-59,158,258,11,1,4,-73,-42,-2,-75,-7,-182,-388,-99,-5,37,-105,105,141,4,-75,-118,-132,53,367,-10,34,27,57,96,-50,149,-171,-19,298,11,-55,51,10,91,49,62,325,-551,-41,54,-50,55,-255,125,-44,-191,139,-129,-245,43,-336,3,61,39,-3,16,-11,39,13,1,-341,95,-38,65,-267,101,8,96,-53,45,-165,-253,8,0,120,146,-487,-2,-13,-314,-277,-94,60,39,-486,5,156,47,550,33,-132,316,-8,411,-1,243,495,-178,78,146,148,110,-51,281,14,-85,57,15,47,-66,182,19,232,185,53,-3,-29,-196,10,151,83,-65,-143,-134,75,64,-120,-289,-67,-4,40,-179,59,116,36,-65,-453,138,85,-298,-638,245,-65,-258,49,-256,106,100,-92,237,85,23,62,-322,43,-224,33,56,-129,117,142,4,-43,1,28,-47,210,-88,-356,0,29,-6,30,-53,136,-79,-13,-3,107,10,162,2,-16,21,-102,131,35,160,-698,-276,8,112,-61,-78,66,-501,189,67,43,-66,-73,-451,-6,263,-319,-439,52,52,51,427,-90,-46,31,-296,-1198,-37,87,78,6,55,40,-2,-176,311,-105,-4,49,-107,200,-8,16,-48,-202,150,-75,106,43,6,-106,91,220,25,-177,9,-177,-247,0,-83,185,77,-26,-55,-40,-5,-97,-69,67,142,7,16,-53,16,71,-226,40,108,40,31,210,-43,37,-7,-177,-6,37,9,205,-63,50,34,47,-89,53,-3,-116,3,8,69,44,17,30,284,117,-47,36,2,-282,0,89,-7,-37,-634,-112,180,157,-6,-275,-181,8,44,3,287,44,-46,-61,0,66,66,150,-55,39,-290,318,-48,31,2,-29,-14,-10,-276,0,-216,-203,-54,109,0,57,-98,-203,104,203,29,320,197,40,-471,-39,0,43,1,63,-469,-98,5,-3,-72,-360,204,-21,-56,-330,139,-41,136,-43,10,-264,81,-418,-51,-172,231,-327,193,57,79,-98,70,-310,-79,-52,52,9,40,302,84,106,45,-114,-28,-10,-12,-52,-290,4,57,10,-285,-37,-1014,-252,-191,77,134,-1,60,20,-171,-53,-267,0,157,-217,-130,-325,696,39,35,87,123,-514,-28,-298,36,157,-192,256,-8,-47,74,152,45,-54,154,-6,145,-69,63,-52,-194,-65,-73,8,-68,-293,76,-339,180,-115,-15,112,180,61,29,-280,19,29,42,-218,107,-166,39,-87,202,-57,-1,-15,51,-57,63,186,73,-285,170,-67,48,-281,-750,-70,-160,-94,49,-498,47,-39,28,5,252,-11,-301,-239,-383,400,-173,27,7,-43,33,-133,33,124,2,138,-5,127,-56,4,18,-2,-73,-571,104,-51,69,22,-280,-37,-108,-52,7,-55,36,-3,32,-162,-120,499,-542,126,195,101,-162,-147,-175,70,62,69,29,61,-169,107,-48,-234,100,113,0,43,-205,46,-53,56,-48,37,-60,55,-154,39,3,-23,-358,-126,-3,0,-75,51,12,38,-67,266,-301,-14,-62,43,-273,-342,116,-95,4,60,-82,-261,-44,61,-53,44,-8,257,-153,96,-183,82,-198,-15,147,32,-13,-162,-46,-543,22,4,-282,-98,-43,-98,90,-233,-5,0,88,89,10,-13,-82,2560,85,45,42,-394,-255,3,-51,277,50,17,-215,93,-70,27,-59,44,-214,-44,-37,3,-194,195,-2,56,-91,66,7,-171,-37,53,12,33,102,-182,-74,0,-2,-301,-475,99,-284,252,-177,17,-639,38,-547,200,-184,-349,186,49,-10,0,-465,53,-362,-30,66,44,-156,77,-58,53,17,133,-126,20,128,-149,153,55,156,129,105,24,60,46,10,-209,57,-50,206,5,-19,108,39,2,-232,-66,68,25,57,-67,35,-185,131,-277,37,7,64,119,33,-61,-157,8,44,-70,61,36,-61,-242,24,-220,98,7,12,-61,64,-59,-52,-10,154,229,-69,5,163,-59,8,8,42,-508,97,-235,58,138,-32,82,-155,-7,7,-11,2,-38,43,121,-89,-10,40,-51,22,-1,36,1,38,-115,71,172,23,85,35,-174,138,201,-122,-156,106,189,-34,157,37,-279,57,14,-54,158,64,10,0,-86,2,123,-44,2,81,-44,-2,121,-68,-261,146,-107,737,534,36,138,-400,-37,33,-14,147,5,95,-58,-104,-433,-117,39,8,-47,-122,-67,13,-34,-173,-187,78,-8,83,111,-1218,-15,-8,-196,-21,-6,-570,-61,32,-50,35,7,-36,-12,-17,-10,209,-48,155,112,140,118,-251,182,-55,64,-276,131,-318,52,-89,52,5,140,68,-261,-223,205,58,36,-489,-83,0,42,213,-18,-295,38,129,74,-228,-11,-5,247,-44,70,-455,-6,-180,84,-77,148,11,48,-176,39,-153,96,132,36,302,234,-14,-256,-1,-431,-39,-47,-4,-65,-79,107,237,103,-253,65,30,-263,8,0,-87,38,7,47,20,57,16,56,-111,97,102,-68,-17,40,198,-154,-158,-181,-18,21,70,-15,-15,129,78,-128,100,51,-136,-160,363,40,-42,38,108,37,68,110,177,-86,-346,-15,-10,60,-54,53,-2,11,-60,70,19,-5,-10,128,67,81,-35,-7,-3,11,81,43,-37,31,-6,42,288,9,-52,138,0,107,32,55,-105,28,-76,63,-59,39,-13,-595,-2,-171,-324,3,-6,-7,-36,96,-867,4,-45,-79,84,-46,-289,17,-4,-47,-4,3,-106,30,-50,-6,-6,16,0,125,130,-41,-289,22,-37,219,86,30,-62,-75,0,-36,-72,-72,156,-105,75,36,-175,31,-262,54,124,80,-76,-255,5,-7,-68,-96,105,33,0,-54,-2,-14,-187,42,-238,64,17,41,-5,-39,188,46,-3,-9,108,-252,54,76,-62,36,-52,102,-13,318,153,40,-116,57,-61,10,36,21,-8,13,-86,-104,-209,-83,11,56,-56,45,-223,5,13,88,-167,150,-82,-60,-411,38,3,142,-96,-109,11,11,-45,-76,-12,47,-46,-16,-15,-361,-13,113,-47,208,0,14,-51,58,-66,33,4,36,-143,-75,3,0,-10,-64,-46,37,87,-258,21,15,21,30,486,66,11,-10,-18,220,-40,-654,-181,422,-44,-20,25,68,-217,-143,248,-281,210,73,-200,52,16,-45,283,178,-64,29,-13,11,-88,29,-112,-186,-46,9,-53,71,139,-28,-42,-201,170,41,-40,-1149,3,33,-187,35,20,107,165,36,-599,21,-13,188,178,-52,-45,48,839,60,76,-34,-74,-174,-3,278,50,-145,36,-142,-58,50,-87,23,0,6,-12,-131,-305,9,126,102,176,65,79,-70,-69,-226,-139,6,54,-174,60,-54,172,-206,4,120,-15,-260,1,0,63,-240,2,-91,-417,-434,132,243,-296,-84,0,-198,190,-47,8,-327,170,-5,59,219,7,-247,132,-46,81,-15,5,-74,59,-66,15,419,-114,-60,206,-84,-363,149,99,-40,2,-8,41,139,-3,194,-189,393,52,13,75,-72,22,64,4,-64,22,-104,44,-9,-206,-44,-503,-263,31,190,-113,-44,-31,-85,37,-7,84,-213,45,17,-96,-53,116,19,-72,-141,-53,17,193,-81,-291,48,42,-5,135,-71,16,130,-371,6,30,-261,47,-212,36,122,-156,30,16,-36,16,-138,100,-138,9,586,-153,95,12,-18,-11,-204,-161,-10,-404,-12,-8,43,41,144,30,237,-41,260,8,-2,-29,-17,-172,-190,-6,-54,36,-17,-579,-38,106,-106,15,118,-338,49,19,117,-127,-394,29,-375,-28,146,24,222,14,-71,75,155,100,150,163,-37,-74,134,-228,113,45,-76,409,-136,-107,33,251,-144,-2,34,24,-10,-7,57,-7,32,65,39,0,-141,-44,10,-3,-4,35,60,-331,-47,-50,-83,-1,151,-60,187,279,43,257,-13,-240,139,103,8,-89,43,-51,-126,-4,-42,-106,181,-78,6,-42,51,1,224,-44,-155,-49,41,-196,-29,-9,47,1,31,-49,62,-99,-7680,-16,-179,15,0,-36,0,-4,-107,-52,45,7,77,-67,18,-219,-12,-115,-119,-11,73,-2,-902,375,-333,-2,21,-43,64,-62,51,-272,127,106,34,149,-805,177,77,-81,14,235,51,5,33,-49,40,-141,-11,-241,-1,-5,28,2,-21,290,195,-15,23,21,-281,-51,36,-315,3,-82,58,130,18,40,-45,14,-18,-50,-220,-290,40,-157,178,-38,44,158,108,320,36,152,-201,-364,7,-57,81,166,28,5,8,-65,232,2,-245,350,55,-226,16,-38,32,-16,28,93,70,276,52,6,14,53,-400,134,-335,-130,16,787,99,115,109,-170,71,113,-64,88,8,-15,-62,-123,184,-87,-210,48,-7,-138,-10,39,-56,155,-3,-70,-10,-14,-140,123,-84,32,138,11,106,176,-58,-55,-185,47,-118,61,8,19,-47,-7680,-12,40,-64,47,-49,58,-170,165,89,53,-45,78,256,-16,-78,-240,-6,21,-79,-216,-342,-155,-9,83,75,-384,-11,-37,-9,153,-9,14,-67,91,131,0,157,46,-493,157,113,62,-38,-46,-48,58,-132,89,-55,-73,67,-127,-197,-82,-57,131,12,1,17,-485,-365,46,-42,-71,-4,-1,650,73,167,69,-64,14,119,65,18,43,-45,611,159,-16,27,-234,381,50,0,267,69,14,-247,-89,-13,71,53,29,-57,-25,20,41,-44,32,-284,-1234,-163,628,-130,28,-362,10,85,11,0,91,112,-11,-235,51,-59,68,12,-724,-40,-510,334,-11,-52,-244,-541,-412,179,-102,113,-403,-10,-3,6,-16,-215,41,1,34,-41,141,-275,299,97,28,-47,47,243,9,-16,107,-54,-544,-380,82,48,71,68,-155,5,124,-238,87,-15,164,-101,-117,55,108,-162,-77,103,-199,41,-204,65,-181,189,-62,-33,35,229,-220,218,-75,49,-65,55,-11,48,80,42,-159,49,-3,-8,53,47,13,49,244,63,-419,-23,-91,51,-48,209,-117,36,-52,13,-56,36,458,-483,-14,-26,-12,-23,-365,82,-8,-4,279,79,-176,-1,32,100,-51,232,-50,-132,-8,32,-162,16,79,43,90,-190,106,0,-42,-133,0,15,37,33,-350,-1,-79,21,-45,36,-60,-5,-5,118,102,7,111,17,-53,92,-39,71,-93,106,-43,-167,-117,18,-257,108,67,-266,-5,400,37,0,-9,-223,152,-14,-348,65,-36,43,73,52,-39,19,20,-94,-236,20,183,-224,-151,123,86,80,45,-75,-36,142,-16,50,75,171,0,30,-129,-55,-38,102,29,21,-48,40,-273,13,-15,169,15,-63,101,-24,-117,37,404,19,120,30,-214,20,-45,32,69,-110,150,-9,-5,36,-106,53,162,-131,-45,175,-40,-62,-225,45,-42,88,221,30,-230,-277,-8,55,430,0 }; static int tree_thresh_array[2913] = { -129,50,89,23,61,407,11,-77,24,-86,83,87,375,148,-78,33,75,-28,-40,64,-84,-563,58,41,374,285,129,58,59,-12,134,-29,206,192,-284,-200,347,-7,473,-210,-174,1522,79,71,162,-37,7,123,-322,8,110,-184,-269,64,596,25,27,75,81,-1136,37,-154,75,-45,138,-146,-46,-267,-173,7,-529,93,-139,107,91,-23,178,234,9,53,-108,-23,-67,-279,163,770,319,0,348,36,36,-96,28,138,-13,119,-34,-44,-100,15,-50,-19,314,117,80,-119,-119,80,17,-145,-66,-90,-93,68,-54,-138,69,13,342,1056,-149,-67,-15,-26,-15,-186,-98,-317,96,-10,491,9,285,-191,-205,123,373,52,65,9,130,11,-49,87,124,-184,-293,242,27,168,-3,-124,-52,153,100,233,-66,-722,721,-30,249,-119,-186,152,-99,-244,-123,30,-8,85,-27,76,-181,93,-4,70,-141,274,973,-52,43,69,-29,43,25,53,12,-447,33,128,130,27,107,52,107,-61,-159,-23,-6,-116,271,36,46,-11,46,29,130,103,30,134,-11,-155,-159,11,-221,-34,138,-460,-42,-20,-38,-48,-95,69,-98,-151,-252,88,-15,183,234,-46,-49,92,-81,65,-37,-18,521,195,219,-162,-275,546,-856,-268,253,-104,-142,-74,61,189,63,52,201,51,-76,171,-210,-290,68,-25,-161,0,-91,7,4,160,254,8,3,-28,-97,-420,-39,163,-53,-207,102,-31,175,0,37,45,-214,-942,-67,-70,-150,-42,-56,120,98,25,-91,-28,-166,-100,10,-80,-121,-61,-248,-52,-82,-125,-84,-7,-128,77,25,-41,-5,-16,-180,-248,-134,-603,-48,594,210,12,-178,528,-373,58,134,51,60,-137,583,-25,74,102,190,-36,167,-140,-162,10,112,143,18,11,144,106,-64,-31,85,245,159,88,-112,42,101,-65,199,5,-360,75,144,-835,-68,154,9,-60,-197,-120,-189,-114,-23,-41,46,212,136,-59,-140,-330,-3,397,149,211,-100,1340,31,662,-19,-75,318,77,-325,-278,-24,130,-122,-329,15,137,33,413,-40,29,102,1143,-181,-57,564,141,76,102,234,61,36,124,-180,75,43,-188,339,-36,175,-35,-17,33,396,-125,-249,-156,-39,200,-170,-82,-4,-137,79,-1,-1,-382,-318,69,-87,-52,32,421,-153,104,2,-1182,373,493,-302,-135,-179,741,-48,18,28,-97,-275,-267,93,-77,-28,-164,-166,-50,-111,-361,-32,-171,187,-577,-242,17,-8,1127,-108,167,22,130,-169,-393,-47,75,-139,-100,200,-84,-94,264,51,-49,-108,-104,160,-24,-139,166,104,817,50,160,-126,-145,-252,-48,274,-84,-91,4,146,125,22,-25,-124,-39,-233,16,138,-141,192,-35,268,-180,70,135,-86,121,226,-137,80,-85,133,-44,-40,-15,-171,-140,41,-368,106,-15,130,79,7,-180,-183,-440,-526,-183,-180,-502,-81,-63,-200,229,-40,55,26,29,19,39,-112,-161,-125,-6,781,21,98,-108,22,222,0,62,69,124,26,580,79,-70,-25,-65,-414,-30,181,-476,19,91,-49,229,-35,27,-74,-93,52,-56,128,381,106,67,-7,-36,92,-154,-22,-97,-108,50,395,-112,-64,-8,49,-63,-17,-86,-69,-167,-33,-78,-181,-255,-4,97,87,82,-117,14,233,-384,72,935,-749,-286,62,27,-65,53,53,-163,61,-84,-91,-32,62,-129,-126,-63,144,-73,-13,64,122,12,347,-240,183,165,154,248,-81,-679,282,46,6,326,-234,30,-73,387,22,28,141,-212,-283,-22,280,-274,-86,83,-192,768,-177,81,33,111,-375,-51,60,119,35,-224,-60,102,190,72,668,53,-64,329,144,135,49,176,124,145,-59,51,41,118,2,198,132,136,26,-23,52,24,10,-69,115,42,40,106,-104,-14,37,86,-209,-255,-135,-153,508,-36,-245,25,-72,72,21,-43,855,-108,241,-47,188,-93,-33,14,202,14,-126,354,-559,-23,-73,-81,-235,-340,-220,-34,226,-275,-97,22,87,-100,-80,-218,29,-92,-337,536,58,26,-188,236,-24,-213,190,30,88,-73,-152,-1,102,38,132,-25,210,-108,-63,79,137,118,0,-201,313,97,15,-366,-61,-45,387,2254,169,101,208,-69,-498,-14,474,151,47,-82,-117,-23,-227,-60,-29,-184,263,-60,184,-4,202,119,142,-25,63,11,-219,-78,-226,230,-97,7,-154,-98,112,473,-91,54,-15,-10,13,154,-56,-11,-157,-142,95,143,-54,52,14,412,0,47,-147,-86,60,-21,96,-102,-3,-165,115,187,162,206,-70,328,400,-63,-62,-67,-107,36,-110,31,-65,85,350,97,-160,-319,-69,486,639,-188,-42,392,56,9,136,-136,11,-269,8,91,-235,27,50,-33,150,-1647,-90,-53,-52,88,48,-80,263,446,-139,-15,-44,-47,106,17,-195,1,472,65,231,-43,508,-22,48,-176,-135,-87,-50,-69,-10,-184,159,27,-67,25,187,16,0,29,-204,-102,126,189,-13,-99,49,53,242,-168,-344,182,100,-17,100,-348,89,-68,133,10,226,-435,-32,309,-380,202,-48,351,331,-138,63,224,87,32,-153,652,-282,-138,-259,30,-39,-535,235,-29,127,146,-129,-79,-29,33,-178,108,131,-295,128,-1,11,134,-59,155,11,-170,-101,41,-85,91,-152,-43,227,88,0,59,441,147,-16,85,-122,106,43,35,87,305,19,7,4,115,-133,92,-88,31,59,114,23,-40,-16,-92,-162,-71,36,-32,110,-84,-294,-110,-194,-446,55,-27,-16,-154,35,-131,239,-167,-81,-18,68,38,-80,44,155,67,-81,45,21,-45,-43,431,224,72,-127,-234,-46,125,7,46,333,219,-98,27,-132,155,63,-181,-94,79,425,-77,158,93,-128,39,-201,-161,196,210,58,-375,26,146,207,-59,-158,-165,97,35,-544,40,20,-250,-1,13,86,30,101,-145,81,61,-94,-76,1846,48,-101,-183,-59,-100,94,-102,4,63,-109,5,-2,-130,-20,127,-137,49,-142,40,244,-267,-380,-168,87,-104,-168,-72,36,-47,-30,3,-125,-77,-33,-142,77,-77,-364,28,-115,-1,-443,65,35,-103,-55,-31,293,-55,12,-208,-36,877,57,174,81,-137,260,89,-321,58,-275,534,-189,-122,-1,-91,-6,49,99,-193,-101,89,770,-318,-199,-70,-11,-404,-89,250,-100,138,156,-82,101,-99,-108,-14,438,184,181,4,292,146,-85,1741,46,-62,-62,-77,-13,381,-51,-110,-96,-58,115,208,47,-60,935,454,13,349,90,-64,1356,36,188,-154,-335,891,60,214,37,32,-106,-12,234,-25,-165,-83,-70,-99,232,1,40,-215,-56,-124,-1230,-147,-225,138,-33,-22,12,219,-513,379,157,-8,39,98,-73,-43,-29,98,-75,64,-199,27,40,60,397,197,40,-163,93,27,244,28,64,-203,214,91,168,-88,-339,34,323,-369,-119,28,-33,80,-60,103,-64,120,-34,100,-138,-8,124,16,113,32,180,-132,85,103,26,-239,130,-124,61,-200,340,97,67,-48,0,78,-41,-57,-422,-391,-169,9,439,13,119,46,-49,-52,100,188,-111,164,94,-97,317,-54,-88,-292,-22,109,-161,106,200,151,323,118,25,-269,-282,-477,-5,-182,209,-129,86,-566,213,106,-49,-99,-103,51,234,68,-93,0,-31,385,-255,71,-90,-42,-38,-118,-86,-151,43,670,388,144,52,569,48,-40,-24,-5,132,-57,4,0,-1,16,58,-226,383,109,15,-130,-92,103,-127,-108,-56,-257,-183,-83,-32,35,-111,-67,-56,119,153,-102,-261,-38,-3,-89,-73,-101,643,282,-45,-56,-126,87,381,121,0,-172,-92,-52,114,-113,-25,-83,-50,-165,121,28,66,205,8,102,-64,152,-324,-70,134,-481,493,17,-297,725,34,-53,77,87,259,-132,-96,76,127,-45,-52,-52,281,21,-158,25,717,476,-94,-210,920,38,-485,154,90,-148,-540,-170,-135,64,-161,-277,-109,163,412,-331,-87,-43,3,14,77,-104,-16,-3,-202,47,141,-33,-91,-126,179,176,111,38,386,697,-193,458,-58,139,88,89,337,346,-225,-265,-93,224,0,402,-29,205,-23,57,87,-119,1,7,35,260,-114,200,-120,508,32,124,103,41,-68,-11,173,-198,118,-164,-168,48,-87,-97,73,-178,-37,194,-58,15,14,-119,-26,-123,32,36,393,-134,-54,62,49,-312,-49,89,-11,-199,-42,-27,35,81,90,-213,80,94,-61,-204,-283,19,-138,-66,-205,233,167,-12,-133,403,-156,-188,-489,-493,289,34,93,2,141,-18,96,52,-46,-170,-382,-111,-89,-39,284,127,-203,-83,-62,-207,-84,-126,-18,-187,68,13,100,-326,182,-513,73,78,163,55,66,45,160,-39,114,-96,110,1,-168,27,196,-12,-35,-30,-7,-353,191,0,-66,187,-112,-113,31,-2,452,281,7,787,644,-202,212,204,-174,-153,-152,57,-1,131,-17,40,382,70,34,-57,-31,114,-77,-76,-149,132,244,40,-144,11,33,364,-123,-89,154,11,-43,531,-72,-315,-78,-209,8,104,-97,-26,-154,886,-54,291,229,165,258,42,256,-161,-22,441,69,127,-94,-45,-19,-71,77,29,77,127,85,46,-233,295,-81,-68,-163,110,-16,93,-282,176,35,59,-47,-449,185,-110,73,206,-122,155,760,-16,41,-47,-26,43,-83,9,-6,35,-99,304,69,-100,123,49,355,-173,-10,-232,96,-85,29,1399,25,133,0,2,223,-41,-77,-21,-44,-204,49,-9,12,16,-30,212,75,716,221,-1312,-110,317,97,47,133,-181,-239,79,-183,-247,47,114,267,39,10,130,135,194,-80,-224,-92,438,-149,57,85,201,148,168,64,-66,-12,-564,-39,-101,-571,-336,15,-27,-65,-208,68,65,14,-352,135,-16,-98,35,-113,-796,-445,-79,12,242,-222,-161,337,-30,30,28,-63,-11,-289,-47,2,-151,-133,-306,169,-118,189,1041,9,-339,-46,-528,157,417,-78,-248,101,109,61,107,-153,-21,72,-139,-65,80,-424,-78,-52,-66,-522,78,133,38,20,169,-312,-298,244,83,-328,-73,46,-104,-3,-59,35,224,-443,94,11,-8,-92,340,-27,313,22,-42,113,-95,-227,-166,-30,69,-151,-80,-96,-177,-90,67,-134,292,3,-34,-70,-76,-37,75,-206,-96,-111,26,95,53,-27,-92,-261,-204,27,-228,1308,331,-61,191,24,-140,-143,12,-57,-27,-216,-8,75,51,52,-73,7,-60,-61,59,-44,-37,18,96,130,-75,80,1685,-170,-42,50,-35,66,-42,-50,-206,202,-168,4,-205,-35,-205,418,-58,42,-48,295,-77,-19,-238,4,-202,-487,-74,-32,212,273,-56,-72,-172,-55,-45,-503,195,130,17,-251,-11,-280,424,64,-40,-36,-261,159,-163,206,189,254,-265,112,1,-17,193,51,188,813,68,8,91,-56,-31,-54,200,83,-68,-693,-464,-318,-63,-270,34,145,-159,-40,-94,12,53,60,-246,212,101,-49,-404,481,-77,-116,53,-477,-15,127,103,-115,149,-296,-170,195,269,56,-113,-65,303,-3,73,-10,-37,201,-125,410,13,145,1,103,-21,6,-66,-121,-6,-221,-271,114,118,-83,50,177,762,130,57,-25,-22,68,106,-109,-69,24,-11,-179,211,33,-216,215,-51,47,-97,-252,-7,144,-75,-157,408,345,164,241,612,2,-136,38,176,-276,-1276,121,43,-118,-23,116,-118,102,49,-174,42,-283,-19,-57,-62,-41,-208,125,-45,-25,321,-41,127,164,66,-186,-74,-57,-158,129,-44,49,289,2176,-60,-9,204,-195,-374,155,-63,-63,-235,-24,-286,-102,70,-181,180,65,-379,290,236,-67,98,51,-222,-54,25,118,-90,21,352,-35,27,-26,36,13,169,-27,125,-30,364,29,-74,-105,447,-46,-235,420,110,-55,-1317,837,-288,154,-287,258,149,16,-201,-293,-155,-12,79,46,-137,376,15,52,-586,-396,-36,65,288,-155,2113,-134,-148,27,-66,34,-563,724,32,449,-124,-94,-12,-136,54,60,-54,-66,-118,-415,154,-1169,629,0,-84,153,234,20,-223,103,99,147,-409,345,65,138,-253,286,-114,-52,88,411,106,116,158,-190,-175,15,173,80,3,-17,69,147,-290,-258,121,155,-136,-129,4,-293,-332,18,-172,-268,74,-211,-193,71,-103,-166,-154,-54,0,-46,152,13,-92,95,-57,30,-47,215,215,-48,392,-65,142,142,66,-181,-22,-269,-300,67,-37,24,-3,841,-69,-78,-106,-89,-98,193,-188,108,-199,-76,51,-4,-201,-71,-60,-938,-520,42,28,1188,-975,255,19,-113,-69,-203,-306,131,-386,-63,-16,12,-41,-158,141,-19,2,144,-96,-7,-68,2705,449,55,-93,-335,-215,-103,-179,-74,96,140,105,-108,249,592,218,46,-9,-121,111,-14,-51,-363,-78,-68,52,-55,77,-26,-99,-121,20,-23,68,156,-233,-220,-10,1217,-364,-230,151,-34,-9,-293,21,-25,63,106,-49,-277,-60,102,77,-87,38,940,-155,-55,148,27,395,-146,44,324,134,-113,-16,30,459,-486,-170,-114,-512,969,-120,154,295,40,213,-179,-157,-404,-499,-490,126,44,232,4,-115,-655,20,192,99,287,40,-230,449,85,143,163,-19,9,103,-131,308,-75,-52,-108,90,600,14,38,-35,-160,101,-143,-75,-55,25,-75,58,-133,-10,-3,194,-28,-176,84,-91,204,253,-171,-13,99,-70,-16,-58,-37,-506,-336,268,-129,-326,-77,-20,-50,5,121,115,124,-70,-344,30,231,-21,-61,224,-80,-275,-58,122,212,168,-526,9,31,186,-322,32,-55,118,-112,-298,-57,177,120,-130,155,-91,241,127,153,-85,-104,-29,-208,-84,43,130,-97,-24,97,114,59,445,-57,16,-20,-348,8,1490,904,-66,-197,71,-140,-18,528,124,180,12,-107,-114,48,6,-14,-129,-131,636,360,-6,38,152,328,-3,-20,489,-18,-121,109,181,-99,80,22,-950,-104,-26,16,-146,-58,-517,281,351,63,332,75,-353,296,-320,396,-163,-39,1,49,-85,237,0,-70,125,-3,360,-159,328,161,84,-274,191,321,271,123,70,82,135,-60,-42,-117,-19,1318,-69,-30,-122,-46,19,20,792,22,-279,-143,20,390,-257,-697,43,-170,520,338,349,227,18,53,237,-93,197,105,28,-141,120,-9,-392,68,106,1,-27,77,0,-312,205,-11,66,154,-50,237,19,187,87,642,-42,9,-95,-28,-140,-86,8,-17,-58,-33,-38,-155,19,-18,21,-39,184,58,670,10,-15,-103,-79,59,211,-155,-121,-160,-119,-342,1720,245,-77,-24,-238,-50,190,4,-363,-94,176,0,36,-72,25,93,-88,252,-319,46,-104,-155,40,-56,34,-292,40,450,144,-457,-465,68,-32,-135,51,-172,103,-99,-50,-466,-347,-100,-36,45,-120,26,57,-54,1164,-971,-457,523,-257,71,5,112,-178,45,85,-91,133,50,34,153,-57,233,20,-100,-46,141,99,-32,143,18,-340,-57,5,-68,-314,-969,-411,5,90,-460,67,278,65,19,27,19,10,11,-123,58,-247,-81,127,74,4,-150,49,306,-961,577,25,-234,-226,-88,105,-53,9,36,-36,16,102,-24,17,-138,182,-167,161,-288,146,-175,-86,-644,32,96,305,-2,-66,-135,199,9,185,438,-165,130,-235,55,292,-61,-41,15,66,-164,110,214,-78,-15,310,-90 }; ================================================ FILE: face-detection/src/sdsoc/haar_dataRcc_with_partitioning.h ================================================ static int stages_array[25] = { 9,16,27,32,52,53,62,72,83,91,99,115,127,135,136,137,159,155,169,196,197,181,199,211,200 }; static int rectangles_array0[2913] = { 6,6,3,8,3,6,5,11,4,6,6,1,0,9,5,5,13,7,10,2,18,0,9,7,5,0,5,9,9,6,3,5,18,1,0,5,2,8,2,0,20,0,18,0,12,0,12,8,5,1,17,0,6,6,0,4,2,19,1,0,1,14,3,6,8,15,1,4,0,3,1,5,3,14,1,11,5,6,9,9,7,10,8,3,6,0,4,11,0,11,4,11,9,9,1,10,6,7,0,6,1,6,2,20,0,2,0,12,5,11,0,12,6,8,0,10,3,2,2,3,5,9,4,4,6,3,0,6,6,3,1,8,0,12,0,19,0,6,7,9,0,4,7,18,0,18,0,16,2,9,2,14,5,15,0,8,7,0,1,14,7,10,4,10,1,10,5,8,6,7,0,1,5,12,6,7,0,2,2,14,8,14,8,17,6,13,3,9,0,0,6,7,10,1,5,9,20,2,5,0,5,0,6,0,1,2,2,0,9,7,11,6,18,3,18,1,11,0,13,7,11,8,13,2,3,0,9,4,7,0,7,7,3,0,3,4,13,9,5,1,10,0,1,4,0,2,9,5,17,1,14,3,15,9,17,3,7,1,10,0,15,3,12,6,14,1,13,7,12,6,6,7,7,8,7,0,15,0,15,7,15,0,8,0,3,0,9,10,7,5,14,2,0,4,9,0,18,0,8,8,11,7,12,6,15,5,9,7,14,2,5,9,12,9,3,6,12,1,12,1,10,3,10,0,6,6,5,4,11,7,3,2,3,8,16,7,18,0,18,3,18,0,5,6,10,8,15,3,15,2,8,8,15,4,13,7,18,1,14,1,4,1,10,0,15,3,15,3,15,0,4,2,14,6,17,1,16,7,12,4,10,2,15,0,6,1,6,0,8,9,6,0,16,0,14,1,5,4,16,0,10,9,9,3,6,8,0,14,5,9,0,3,3,20,0,8,6,9,1,9,7,13,7,14,2,18,6,18,7,18,0,9,0,17,1,14,6,3,9,12,6,6,1,10,5,5,0,0,1,6,4,1,5,0,3,2,6,14,0,14,0,0,0,5,3,6,0,13,7,9,1,13,5,16,4,0,5,12,2,15,0,12,11,9,8,12,3,6,7,12,10,16,4,2,5,10,8,6,6,0,1,3,3,0,10,8,5,0,14,9,14,1,15,0,17,2,3,9,18,0,4,2,14,0,18,5,21,6,8,7,21,10,15,0,11,7,12,6,14,6,3,3,0,10,11,6,16,3,16,0,10,0,13,7,5,0,6,3,8,2,15,3,17,1,19,1,4,6,15,0,15,3,8,6,5,10,10,0,15,0,12,9,12,6,15,0,11,6,10,0,3,3,0,0,12,2,7,0,3,6,5,11,0,18,3,9,0,13,0,13,4,13,5,7,6,14,4,11,0,13,2,10,8,14,6,8,7,8,5,3,0,5,0,3,1,5,1,1,3,6,6,14,1,11,10,11,7,12,2,14,6,14,0,5,1,13,7,12,0,7,7,8,1,13,5,14,4,12,9,11,5,8,1,9,3,12,8,2,0,14,2,2,6,5,1,7,3,9,2,18,3,20,2,1,0,19,0,18,0,7,0,10,8,4,2,7,3,16,5,10,4,2,6,1,12,0,15,5,8,1,17,8,17,7,15,2,10,0,20,1,15,0,16,2,10,1,11,3,3,10,3,0,12,8,10,9,4,0,9,8,13,5,0,1,19,0,16,0,12,7,9,0,1,1,13,0,12,4,15,1,3,2,13,1,3,7,12,0,13,0,15,0,13,5,0,2,0,1,15,0,6,8,10,8,12,6,13,1,15,6,13,5,6,0,11,9,10,8,3,10,4,9,5,2,13,8,12,2,7,3,11,0,3,1,11,9,9,1,6,1,8,2,11,7,11,5,11,5,4,2,7,9,2,8,3,8,0,6,0,20,0,0,0,14,0,1,5,4,8,6,2,11,2,5,9,8,6,10,0,18,2,3,2,13,6,9,7,18,9,6,0,13,0,13,5,11,4,6,0,12,0,12,5,5,5,3,7,13,2,19,1,5,0,2,5,1,3,8,6,10,1,8,3,5,4,6,7,0,0,3,2,7,5,10,9,18,4,10,9,11,7,4,2,13,7,3,1,8,3,5,8,9,0,6,0,13,5,1,9,9,5,4,0,16,9,8,8,10,7,5,2,18,1,6,9,10,6,8,1,9,6,17,2,7,1,1,9,3,16,0,16,0,8,5,4,0,6,0,20,8,6,0,6,0,20,0,15,0,13,5,5,3,6,6,10,1,11,5,12,5,13,0,8,1,2,2,17,1,7,0,15,1,9,0,16,4,7,9,12,8,15,3,15,1,15,6,10,6,11,6,11,9,3,2,3,3,4,0,10,0,5,8,11,5,5,10,10,7,1,0,12,2,12,1,12,0,5,6,14,5,9,1,8,3,12,0,8,4,12,9,9,1,8,3,7,10,10,3,12,3,10,5,7,6,12,2,0,0,0,5,1,9,2,5,4,2,7,0,2,3,6,9,15,8,3,2,19,1,14,4,14,6,14,4,0,1,20,0,8,7,16,5,11,10,10,7,14,5,12,6,11,1,15,9,10,3,16,7,15,0,13,2,5,1,5,1,14,4,14,4,18,1,2,0,12,3,16,3,9,9,15,7,17,3,3,0,2,0,13,5,5,5,18,0,3,2,2,5,6,6,13,5,6,0,18,0,12,6,0,3,9,5,4,10,8,2,8,0,18,0,9,1,2,7,8,4,10,2,15,3,15,4,15,0,15,0,10,1,7,10,8,3,7,0,10,7,5,5,6,3,16,0,0,0,10,10,4,0,9,3,6,11,5,4,2,7,1,13,5,11,6,3,0,10,6,6,0,18,0,11,0,2,1,18,0,17,0,0,0,10,7,15,3,15,0,15,0,5,0,9,3,9,5,9,8,10,5,9,7,11,9,6,1,16,0,8,0,3,0,6,0,14,1,13,4,12,2,16,3,14,8,9,0,4,5,15,0,8,1,14,4,16,3,18,1,11,0,15,7,22,0,18,0,3,6,7,2,4,9,4,3,18,2,4,7,7,6,12,0,8,2,13,5,9,5,3,2,11,3,9,1,15,1,9,6,10,7,10,4,0,3,19,0,17,1,18,0,3,2,9,5,10,8,7,9,5,8,8,6,14,6,8,2,2,0,0,7,6,14,4,2,6,9,7,6,5,18,0,18,2,5,11,15,7,7,10,10,2,14,8,14,3,14,1,3,1,18,0,5,6,14,4,15,0,0,3,3,0,1,0,2,2,0,10,10,6,11,9,2,1,13,6,10,6,14,6,9,8,17,1,14,7,3,1,14,0,12,0,10,1,15,6,6,8,14,0,10,6,7,9,10,8,7,4,17,3,10,2,3,4,15,7,15,1,11,5,10,4,0,4,10,0,6,1,18,4,6,1,1,2,12,0,10,7,9,4,6,5,10,8,9,3,4,6,8,0,11,2,8,0,0,2,4,10,7,9,17,0,16,1,12,3,12,3,12,8,10,6,13,1,7,2,0,9,0,9,2,13,4,20,8,0,0,3,3,13,5,13,2,9,8,12,8,8,11,9,0,9,1,12,6,13,1,9,2,15,0,9,2,15,4,17,0,15,0,9,3,16,0,13,0,0,5,8,4,10,8,11,4,14,2,4,8,1,7,13,8,4,3,14,8,3,4,3,9,9,7,12,6,18,3,18,0,13,5,11,3,16,5,7,1,2,3,17,5,13,0,15,1,12,1,3,6,5,9,11,4,6,5,11,5,1,7,6,6,11,5,6,0,2,0,9,9,12,0,1,3,2,5,10,8,5,6,7,5,4,0,9,9,6,9,10,5,14,5,14,0,16,4,8,0,13,0,0,6,10,1,0,2,2,1,10,7,9,7,3,7,3,8,3,6,1,5,8,3,0,2,4,9,9,14,7,14,4,17,1,14,0,9,3,14,4,7,7,14,10,14,5,4,9,3,4,16,4,6,10,9,6,5,3,6,0,6,0,4,0,15,0,6,3,12,6,6,9,10,7,14,2,11,1,15,1,10,4,7,10,13,3,13,5,10,7,15,5,8,7,12,6,7,6,5,3,3,0,14,0,1,1,7,9,10,2,8,0,5,2,14,3,9,4,0,7,11,0,14,2,11,7,6,4,14,4,13,8,17,4,15,3,12,0,16,2,15,0,18,0,16,5,12,0,5,0,8,5,10,6,6,3,12,0,0,5,10,9,8,0,16,3,6,0,14,0,2,4,12,0,6,1,11,3,15,6,9,4,7,5,11,7,8,0,10,0,20,0,12,1,5,1,6,5,11,1,11,0,3,1,0,1,11,4,12,4,13,1,9,0,6,6,10,6,13,2,11,1,1,0,13,5,18,0,11,0,12,1,7,8,6,2,14,3,15,5,11,7,11,9,4,9,17,1,7,6,9,1,19,0,3,1,2,4,6,4,15,3,8,3,15,3,5,1,14,0,15,3,9,1,13,1,6,8,0,0,4,1,14,1,10,6,10,7,14,6,8,3,5,0,9,4,10,8,7,8,11,7,4,0,7,1,11,6,7,7,9,0,7,1,9,0,1,1,9,3,9,9,16,2,13,1,14,3,13,7,4,9,7,0,15,1,14,4,15,3,0,7,1,1,6,1,15,3,4,0,6,4,6,0,3,4,20,0,11,6,11,1,11,1,11,0,3,7,17,5,16,0,6,0,3,2,10,10,11,9,5,6,10,0,6,4,14,0,1,8,13,10,7,8,7,2,11,7,13,0,12,8,12,6,14,0,14,0,4,1,4,0,3,9,0,6,2,18,0,11,9,7,1,18,5,18,0,9,2,10,5,9,7,10,4,6,0,3,9,6,2,19,0,5,5,1,8,6,9,2,5,8,9,14,2,10,1,11,4,6,5,9,7,7,2,5,7,0,0,16,5,5,0,11,0,4,2,3,2,6,0,3,0,5,1,19,3,19,7,9,0,15,1,9,7,9,7,9,7,9,10,5,0,9,2,15,1,6,0,6,0,13,2,13,5,11,7,10,3,14,4,4,5,7,2,10,3,16,0,0,4,10,7,13,3,16,2,3,4,4,3,8,2,14,7,4,0,10,5,0,0,3,9,0,6,8,2,12,5,14,5,6,7,11,7,13,0,1,6,10,3,0,0,3,7,10,8,12,6,16,2,10,8,14,0,11,3,10,0,19,4,4,0,6,19,0,18,0,5,10,9,0,7,1,8,0,13,10,13,7,4,0,0,6,7,0,13,3,12,2,9,6,14,5,10,6,14,4,14,0,13,2,6,0,19,1,15,3,11,7,14,3,20,7,7,2,15,7,13,5,3,5,9,3,19,0,20,0,7,4,10,0,7,0,13,1,7,0,6,8,7,1,16,5,7,4,6,9,15,6,12,7,6,10,10,3,4,2,13,7,1,0,0,3,3,3,13,2,10,6,2,2,10,8,13,3,3,2,14,3,5,2,17,2,0,7,15,5,11,6,11,5,15,4,12,6,5,9,12,4,4,5,14,9,9,9,1,2,12,6,12,8,7,0,4,2,15,0,6,6,8,1,6,7,10,3,15,1,15,10,15,6,15,6,16,2,2,6,9,2,16,0,15,8,15,0,12,3,13,0,10,7,4,0,6,3,9,5,5,3,5,6,0,2,8,18,0,4,6,4,4,7,0,13,5,3,0,14,0,14,0,6,0,14,6,15,8,4,5,7,10,5,1,18,0,13,0,12,7,14,0,14,2,14,1,3,5,5,8,9,6,5,8,6,3,13,3,12,7,13,7,11,7,5,8,4,0,0,0,9,3,12,8,10,5,2,6,8,9,15,1,11,5,6,1,2,7,10,3,7,7,9,1,13,3,8,6,4,0,3,2,16,4,16,1,15,3,18,0,4,2,17,1,8,0,11,0,19,2,3,4,7,3,8,4,10,3,15,0,6,9,12,8,16,8,6,0,17,0,9,1,7,7,7,3,9,3,6,1,16,0,0,3,4,0,20,1,18,0,8,4,7,6,7,9,8,8,8,4,7,0,12,4,8,9,14,7,4,10,12,0,16,5,10,2,2,7,3,2,15,2,10,4,15,0,18,0,15,3,12,0,11,9,12,3,5,0,8,6,14,9,6,6,1,12,3,9,4,11,3,5,4,9,8,16,3,6,8,0,0,5,0,2,9,9,9,5,2,6,5,18,0,10,6,3,5,17,0,9,5,11,0,6,4,9,5,6,7,11,1,18,0,0,0,6,0,19,4,19,1,3,0,12,7,12,2,14,0,15,0,14,0,5,0,3,5,4,3,4,4,16,6,13,3,12,5,10,6,6,0,12,0,12,9,6,0,2,0,6,0,0,4,12,6,15,3,6,5,12,0,11,10,9,1,6,1,7,0,10,9,10,8,9,1,0,6,8,5,4,4,8,1,10,1,0,1,5,0,9,1,8,8,5,9,6,2,10,7,14,8,9,3,5,4,6,9,12,6,9,5,5,9,11,2,15,3,3,5,16,0,13,1,15,5,6,2,14,10,13,3,13,3,11,0,0,6,18,0,15,1,15,0,3,0,15,0,12,3,16,0,9}; static int rectangles_array1[2913] = { 4,4,9,18,5,5,8,14,0,6,4,8,2,9,6,0,11,5,8,5,0,6,6,18,7,3,8,6,5,6,21,6,1,1,8,6,12,1,13,1,2,5,4,3,1,6,1,1,5,10,13,4,4,5,1,10,17,3,3,1,7,7,12,6,7,15,17,4,1,0,5,8,14,15,15,6,5,0,0,6,0,6,6,8,0,0,7,6,20,6,13,6,6,12,22,7,7,6,14,18,1,16,4,4,4,16,12,0,10,8,8,0,0,14,16,8,19,10,9,0,6,5,5,14,13,16,0,6,1,2,8,9,12,16,16,1,2,8,5,17,7,1,5,1,1,0,0,7,10,9,15,7,6,8,8,6,7,14,10,12,0,0,3,0,1,0,0,18,3,3,10,10,11,11,11,10,13,4,0,0,0,1,1,6,14,14,18,4,17,2,8,5,5,4,0,15,0,0,22,0,6,1,5,1,2,8,12,12,7,1,2,4,1,15,5,5,0,4,0,0,6,7,17,18,18,20,15,4,6,14,9,6,6,10,16,6,0,0,7,20,5,2,1,0,0,21,7,7,8,15,15,0,6,1,2,14,6,2,4,17,7,1,13,13,6,12,1,0,2,2,18,6,7,3,4,1,2,3,3,0,8,8,14,14,10,0,1,6,9,0,0,0,11,9,8,12,12,12,7,7,0,0,3,3,2,10,14,13,5,17,18,0,4,4,3,1,16,3,5,2,14,21,14,2,4,6,8,14,6,6,7,3,12,6,6,9,6,6,2,18,2,2,10,0,0,0,12,6,12,5,8,6,12,12,1,1,9,21,13,13,6,0,7,4,0,0,12,12,12,12,14,13,15,0,1,1,14,3,1,0,6,10,15,1,9,0,15,15,7,12,8,14,10,3,17,13,0,3,5,7,6,8,15,1,8,5,2,7,7,6,1,1,18,4,16,7,7,2,20,12,2,0,0,15,8,3,5,4,6,4,4,4,22,14,14,11,11,9,12,0,0,17,17,6,6,4,0,0,15,8,12,2,20,0,13,10,3,5,7,0,0,1,17,15,15,16,13,0,4,5,4,0,0,7,7,5,13,0,7,2,2,2,6,5,6,0,3,7,7,7,6,14,0,2,4,3,4,0,6,0,10,21,6,5,2,7,7,17,18,6,18,18,9,9,3,17,15,17,3,3,0,0,0,0,3,11,0,0,8,12,0,6,0,2,7,6,1,4,3,1,0,0,13,5,1,2,10,4,10,10,14,7,1,1,5,9,16,12,14,13,5,5,5,5,1,1,15,9,2,2,0,0,17,5,2,2,7,7,0,0,6,7,6,6,3,0,9,7,6,0,14,14,12,2,16,16,0,0,8,5,13,14,6,0,1,6,0,11,20,11,12,11,11,4,15,0,0,2,0,18,7,14,2,3,6,8,4,8,2,16,0,2,11,3,16,17,13,9,7,8,2,17,18,3,6,0,0,10,11,5,6,5,3,21,10,4,8,9,6,6,5,4,4,10,10,2,2,4,4,4,4,18,18,2,2,5,8,7,5,14,14,11,9,6,19,5,5,4,6,10,7,2,18,9,2,0,3,2,5,0,3,14,9,11,5,6,6,5,5,10,10,0,3,1,7,12,6,7,18,2,3,2,0,0,5,22,10,1,0,3,15,13,8,8,2,5,8,8,6,0,9,0,5,5,5,4,16,16,9,13,10,9,0,11,5,5,6,6,5,6,13,5,2,15,17,13,10,6,14,12,10,0,11,2,4,0,17,6,10,16,16,16,11,11,3,4,0,16,15,15,17,8,6,8,8,5,6,7,5,9,8,8,11,0,2,0,0,3,10,0,3,4,0,5,0,4,10,10,11,10,12,21,20,15,17,12,6,13,16,5,1,19,1,2,10,11,9,10,7,0,6,0,2,17,0,0,17,7,3,2,2,1,16,13,15,5,13,2,14,12,13,8,12,16,1,2,6,7,0,8,12,21,0,6,4,7,8,8,14,11,12,0,10,2,0,6,6,11,11,16,6,16,7,10,4,18,0,3,0,1,1,16,3,16,3,9,4,7,7,4,12,3,6,6,3,3,6,1,17,18,5,6,2,7,0,8,7,5,9,14,14,8,11,0,0,1,11,18,9,10,6,14,7,4,16,13,8,16,0,5,5,6,7,10,12,10,0,4,10,6,11,8,11,9,12,4,4,9,5,9,0,9,9,4,3,1,6,18,8,19,8,8,12,7,1,12,0,0,3,6,11,8,17,14,3,3,0,0,11,11,11,20,6,0,3,5,12,0,0,5,12,13,1,0,2,2,10,10,6,12,14,1,11,15,14,3,6,6,1,1,15,15,1,3,0,3,5,0,1,7,3,3,7,7,13,5,1,1,15,2,5,15,12,12,0,2,7,9,5,5,17,18,17,17,17,0,0,14,13,20,9,10,8,10,10,15,5,13,17,12,9,9,7,4,8,7,15,8,17,17,1,7,5,4,16,16,0,6,4,0,1,6,9,2,2,3,1,9,10,0,4,1,8,0,22,15,0,7,14,14,5,5,5,5,2,2,0,4,16,0,12,21,5,5,6,5,14,5,8,6,13,10,13,0,1,4,3,13,13,13,16,16,16,16,0,1,2,15,2,2,2,2,0,12,2,10,3,7,11,8,0,0,3,18,18,3,7,3,17,5,6,16,2,2,4,13,1,12,7,5,11,11,4,2,0,0,0,0,2,13,7,8,14,0,15,9,4,10,5,18,18,20,8,8,5,5,6,0,4,4,12,0,12,12,15,15,0,0,6,12,4,22,7,0,1,16,7,10,2,9,2,2,3,13,14,2,4,1,6,21,5,6,6,3,10,15,4,0,0,0,7,0,10,2,5,0,0,2,2,0,0,2,10,7,0,3,7,6,2,6,0,0,0,17,17,14,15,15,14,8,7,8,0,8,5,6,7,8,8,10,5,12,9,14,9,18,6,6,16,16,11,6,7,6,7,10,12,14,12,13,0,1,16,17,2,0,0,2,1,8,8,5,5,4,7,15,2,1,1,1,1,11,11,6,10,9,18,21,12,6,6,4,12,14,7,13,7,12,2,0,9,10,10,15,16,2,5,0,16,12,15,10,9,11,7,15,8,4,6,6,7,8,8,3,3,2,2,3,3,3,3,11,11,8,6,18,4,1,11,12,12,0,12,20,4,2,8,7,0,11,0,7,17,10,5,11,4,0,4,4,18,0,4,4,11,6,0,9,15,7,15,12,12,12,7,7,4,4,11,16,15,15,1,21,20,1,17,16,16,16,10,18,5,2,7,6,0,7,1,18,2,7,1,0,3,15,10,3,0,0,0,4,17,20,3,3,6,6,9,18,0,1,0,10,16,16,12,16,6,6,9,9,4,8,3,3,1,5,6,10,4,2,4,4,8,8,13,13,13,2,2,2,0,2,5,3,21,10,10,8,8,8,15,13,8,13,15,4,15,15,11,6,2,2,1,7,6,11,16,0,11,9,5,2,3,15,0,0,1,0,2,2,2,4,1,1,5,4,5,5,5,0,8,6,3,18,8,2,5,4,6,1,4,6,17,6,6,5,2,2,6,3,3,3,1,2,2,14,8,0,0,6,5,7,16,17,8,13,17,17,0,2,3,17,17,18,15,13,14,18,13,14,2,9,3,2,4,5,5,6,4,4,7,9,0,3,1,22,10,0,0,2,13,21,1,7,0,1,1,2,5,2,2,11,7,9,9,4,6,21,21,5,10,0,2,0,12,13,0,1,13,21,3,10,3,2,1,0,1,18,15,10,9,11,7,2,2,4,5,7,4,0,1,0,0,1,0,5,0,14,14,18,0,4,2,1,8,15,10,17,4,0,6,9,9,11,2,0,15,18,17,11,11,9,16,16,1,2,15,11,18,14,7,8,1,14,7,12,0,0,0,0,8,8,21,0,0,6,6,0,0,16,0,0,1,1,13,0,5,10,7,10,6,2,13,6,13,20,4,6,0,13,16,0,6,5,15,7,6,6,0,0,18,15,3,3,14,14,15,17,0,0,16,0,7,8,9,0,1,4,1,2,1,0,17,14,15,21,15,15,6,3,1,4,1,2,2,2,7,3,6,1,8,0,16,16,19,16,8,15,18,18,3,5,5,6,2,6,2,8,5,8,0,12,12,7,14,6,6,13,10,10,9,3,0,12,0,0,2,2,0,0,6,6,1,1,0,10,9,9,7,15,10,4,2,0,9,2,0,15,14,1,0,3,2,4,16,16,18,0,3,12,3,3,8,15,13,6,9,0,3,3,5,4,7,0,0,0,1,2,13,13,2,9,6,8,7,12,10,6,12,15,14,8,10,10,9,12,12,12,12,12,10,15,10,1,4,5,10,12,0,10,2,20,10,17,0,0,2,2,7,1,14,13,6,2,6,19,15,5,6,6,0,0,5,5,1,13,1,17,13,18,14,1,4,0,5,5,1,1,0,4,6,18,18,15,7,7,9,13,15,15,13,13,5,18,19,19,19,14,0,1,9,15,0,10,10,8,5,5,4,4,7,6,4,0,1,1,14,3,3,2,2,7,22,16,3,10,16,0,5,8,1,6,3,13,12,5,5,6,1,19,14,6,0,0,1,8,7,12,1,1,7,10,7,3,0,0,5,5,0,0,2,1,0,17,18,17,15,15,14,10,18,12,10,10,2,6,14,14,1,21,1,16,1,0,1,1,7,14,1,0,1,1,0,14,7,11,5,6,1,1,9,4,16,0,5,3,12,11,10,9,2,6,8,1,1,14,16,16,4,19,8,1,8,8,5,6,12,12,6,6,0,1,6,6,17,22,12,12,12,14,6,7,3,1,1,2,2,12,2,6,6,0,0,6,1,7,7,20,6,2,3,4,1,0,2,2,15,17,6,0,4,6,12,14,14,18,3,3,6,5,4,16,8,6,5,1,1,10,2,0,1,6,1,4,0,16,16,0,3,7,9,14,14,21,21,4,7,4,15,13,6,16,5,8,8,8,8,8,6,8,5,5,1,10,17,16,10,4,18,18,16,15,15,1,1,5,5,0,4,0,0,5,6,2,2,0,4,0,0,7,7,8,0,10,0,1,1,6,12,9,10,18,16,14,14,10,13,13,0,8,5,0,11,5,18,8,7,0,0,2,8,9,7,2,0,14,12,12,6,0,8,6,11,3,12,16,6,10,10,12,12,15,15,20,20,17,2,1,15,2,12,7,1,8,3,6,0,0,15,7,6,21,3,7,2,10,9,5,9,11,13,0,18,4,8,3,15,18,14,15,6,6,6,14,8,6,9,9,15,20,18,18,16,16,2,2,0,20,6,9,6,6,4,6,0,1,0,0,12,12,5,6,5,16,8,8,4,4,7,19,11,1,2,13,0,11,1,10,19,10,1,1,4,4,6,9,5,2,0,0,7,2,0,6,8,18,14,15,0,0,4,0,0,2,6,1,0,0,2,0,2,11,8,8,8,11,9,4,17,21,4,15,8,12,17,16,1,1,13,1,4,8,7,7,6,6,9,1,6,5,6,4,8,10,5,4,4,7,6,5,7,7,2,1,13,13,15,15,0,6,7,9,6,7,12,14,17,12,17,3,17,1,17,5,7,4,1,5,0,11,7,7,17,6,15,15,10,10,15,1,0,0,1,21,9,4,1,9,1,0,0,6,1,12,17,1,0,6,0,7,12,9,1,11,11,10,2,16,16,13,16,16,18,13,2,8,13,20,8,7,6,20,20,1,1,3,2,9,3,0,9,4,4,13,13,15,13,0,2,1,1,6,2,11,1,0,3,1,7,0,0,9,15,7,9,17,3,1,15,0,3,1,0,6,0,0,11,7,6,14,14,0,0,1,12,8,6,5,9,8,12,19,0,4,16,7,7,6,17,17,4,0,0,0,4,12,9,5,5,7,1,0,6,8,6,12,4,1,1,10,4,13,13,15,14,14,8,10,10,7,10,1,15,6,1,6,18,0,13,6,6,6,7,8,8,8,2,10,10,7,7,9,2,2,1,2,3,8,8,18,6,6,3,6,8,2,14,2,3,6,2,17,7,11,1,0,0,7,2,1,0,0,0,15,18,8,6,2,7,6,2,9,4,8,8,0,0,0,0,2,2,6,0,1,4,5,13,14,2,1,1,4,5,1,12,12,18,13,3,9,3,2,6,6,9,9,6,6,16,20,10,6,1,13,15,12,11,6,0,0,3,3,5,5,2,2,0,0,11,11,6,16,16,6,7,6,1,9,5,11,8,8,6,5,7,0,0,6,6,6,21,19,18,18,16,16,0,0,14,14,14,14,18,18,5,3,0,0,12,3,4,4,14,14,6,11,5,4,8,8,6,14,6,6,14,5,5,0,3,3,12,10,8,14,10,10,12,8,11,11,2,2,12,10,9,8,7,0,0,5,6,0,1,0,3,14,9,2,4,4,5,7,5,5,4,14,17,16,17,20,14,6,4,3,8,6,6,5,5,5,2,1,2,0,9,0,0,0,1,9,8,9,9,0,1,1,20,0,8,8,13,13,8,8,11,11,12,1,11,10,8,8,14,18,16,20,12,12,17,6,17,18,15,13,17,17,17,17,2,13,1}; static int rectangles_array2[2913] = { 12,12,18,9,4,12,12,4,7,12,12,19,24,6,14,14,9,6,6,4,6,24,6,10,14,24,15,5,6,3,18,13,6,6,24,14,21,4,20,6,4,22,6,6,4,19,4,4,14,18,4,6,12,12,24,18,12,4,4,24,8,3,16,12,6,9,18,16,4,18,20,14,7,9,9,8,14,12,6,6,6,6,6,18,12,24,16,6,24,4,15,4,4,6,18,4,8,10,10,18,22,18,6,4,4,20,8,6,6,12,12,6,6,9,9,6,12,20,18,18,14,10,12,18,8,18,6,12,4,19,22,11,15,12,12,5,24,12,9,6,22,17,6,6,6,6,6,8,19,6,17,3,8,9,9,10,3,24,18,6,10,9,16,9,20,9,9,10,6,12,18,22,8,6,6,11,24,22,20,2,2,2,2,3,9,9,18,8,18,12,14,6,6,9,18,5,4,18,19,4,19,6,14,20,22,7,22,22,6,9,4,12,6,18,6,16,6,24,4,4,6,6,9,14,18,15,15,16,10,15,10,6,18,18,18,14,2,2,15,21,5,24,22,15,24,18,10,10,6,20,10,16,7,6,6,12,10,6,5,24,5,6,6,6,3,13,4,9,6,6,12,6,12,8,10,6,2,6,2,2,9,9,9,9,18,24,8,4,10,3,6,6,24,13,6,16,6,6,10,6,6,6,6,6,9,6,6,5,3,18,19,6,3,3,18,6,9,20,6,22,5,18,6,24,12,12,14,8,5,3,18,20,19,6,6,6,6,6,6,15,6,6,18,12,6,6,9,13,9,6,9,3,9,10,4,4,6,18,10,22,16,18,8,6,6,6,6,6,9,9,19,19,10,10,6,6,6,9,4,14,6,18,9,21,17,11,13,9,15,6,18,24,3,24,10,18,18,16,3,18,6,6,6,18,12,6,24,5,5,6,6,19,12,4,10,10,10,9,21,9,9,4,4,9,18,6,11,6,9,6,6,9,19,6,6,4,4,18,6,6,6,18,18,11,14,15,22,24,18,12,7,22,14,24,18,22,11,6,24,10,10,24,18,16,16,18,21,6,6,9,2,6,6,6,4,24,10,6,6,9,6,10,2,15,6,6,9,14,8,7,4,6,6,21,5,4,5,11,12,24,23,18,21,6,4,8,15,10,9,6,9,9,9,9,6,18,21,6,6,6,16,10,10,10,6,12,3,6,9,8,3,4,9,24,6,6,6,12,2,12,18,18,24,4,6,6,8,16,8,8,11,24,4,4,16,6,18,6,9,8,3,18,6,6,4,4,18,12,9,9,6,6,9,3,14,3,14,14,9,9,6,6,6,6,8,9,8,10,4,6,18,8,24,3,10,10,10,24,15,12,14,4,6,6,18,14,6,6,24,6,10,6,6,11,10,6,6,4,20,10,6,10,4,10,12,8,4,9,14,19,10,16,24,18,18,18,9,23,18,12,3,10,10,6,4,6,6,9,6,3,9,3,6,18,18,8,9,9,5,14,3,15,15,6,6,6,6,6,6,8,8,10,21,12,12,12,6,20,12,8,8,20,12,16,9,12,14,9,19,6,18,4,20,22,4,4,6,6,10,12,24,4,4,17,18,14,14,3,3,14,9,18,12,8,7,22,4,7,9,22,6,8,6,6,9,18,12,4,4,6,9,8,6,6,4,19,9,12,18,4,18,4,4,4,6,4,18,20,6,8,3,14,24,18,5,5,8,8,12,6,6,12,23,19,11,8,10,9,9,9,20,9,9,8,21,10,12,23,8,18,9,9,6,6,24,18,24,18,9,9,18,6,6,5,6,6,8,21,3,11,10,12,18,22,6,6,6,6,18,3,16,6,16,18,6,8,10,10,12,8,9,24,18,9,10,4,9,6,12,20,9,9,4,8,9,12,9,6,5,21,10,6,18,8,18,9,18,12,6,4,4,24,9,9,19,22,6,20,6,16,8,6,16,16,4,8,12,6,8,6,6,21,16,7,4,6,6,4,6,12,23,6,12,10,6,9,9,18,18,12,21,12,6,19,14,18,4,11,9,4,4,18,11,20,13,22,14,10,10,6,9,8,16,14,9,18,9,24,10,18,6,11,12,4,4,6,15,6,6,6,6,16,20,4,4,18,6,9,15,19,7,9,8,18,12,9,14,22,6,10,10,16,6,8,6,8,4,8,10,14,20,4,12,12,6,8,8,9,16,6,3,5,5,10,23,21,6,12,8,24,8,8,8,5,19,24,13,24,4,6,12,12,18,9,4,4,9,9,6,6,19,18,16,9,4,15,8,6,6,12,11,21,8,6,21,19,6,6,14,9,8,22,9,18,7,16,12,4,4,4,6,6,3,6,3,12,4,3,3,10,3,6,19,18,18,6,20,20,6,24,18,6,8,8,14,4,5,8,22,6,9,19,9,18,9,24,14,9,6,13,6,21,9,9,10,24,9,6,9,6,14,14,9,6,10,4,6,6,9,9,9,4,12,9,10,10,24,9,24,11,22,6,20,14,16,19,10,4,21,6,14,6,9,4,19,20,4,8,6,6,4,4,6,6,24,6,4,4,9,6,7,14,6,4,6,6,10,14,12,12,6,20,9,6,5,16,8,6,9,9,9,9,18,18,18,19,6,15,6,6,6,22,21,18,6,18,8,18,6,6,2,2,7,9,21,7,22,24,9,12,14,14,6,6,20,9,21,14,12,9,6,6,18,6,6,6,6,6,24,18,10,12,19,4,9,15,12,6,6,16,14,20,20,6,12,12,6,6,6,6,9,15,9,9,9,9,8,4,10,4,10,18,11,12,12,9,15,12,12,12,8,8,24,8,4,4,15,24,5,18,3,4,9,20,18,10,4,6,6,6,9,18,20,4,6,18,18,6,6,6,20,20,18,6,22,6,6,24,6,6,6,6,6,9,18,9,23,18,9,8,15,8,6,8,6,4,12,8,8,6,6,12,18,8,22,12,20,20,10,18,19,6,22,7,11,10,9,6,6,6,6,6,9,18,13,8,8,8,6,6,6,5,5,6,6,12,24,2,2,2,2,6,6,18,7,12,18,20,6,18,18,6,9,18,6,12,12,6,4,9,12,6,6,9,12,20,12,3,15,6,12,8,8,9,12,6,9,8,6,24,6,5,5,6,6,6,6,18,9,10,10,6,6,10,6,18,6,9,6,4,4,12,10,22,2,24,10,8,6,5,20,12,6,10,12,6,4,6,4,4,19,2,2,2,10,4,6,16,6,6,6,12,9,9,18,22,6,6,16,9,6,6,6,24,24,6,18,18,22,9,21,12,24,4,6,6,6,6,20,12,4,12,4,3,10,12,6,4,6,6,6,4,18,22,10,10,12,12,5,21,9,12,12,8,10,10,12,10,12,4,6,6,11,6,4,4,8,16,18,16,8,9,8,8,8,8,5,7,24,8,8,24,12,12,6,8,18,18,22,12,12,12,6,9,7,9,18,4,6,6,12,14,17,12,9,24,9,18,9,9,24,20,16,4,10,6,7,7,6,19,9,9,10,18,4,4,8,12,6,12,10,21,9,6,6,12,20,10,5,4,8,24,4,18,16,6,14,8,20,9,6,4,4,8,2,9,19,9,18,6,6,4,18,14,18,9,12,7,20,9,15,6,6,9,9,12,6,8,24,6,8,24,12,9,16,4,5,9,9,6,20,17,7,23,6,4,6,18,9,2,2,18,15,18,4,10,10,6,6,6,18,6,6,11,10,10,10,6,10,16,16,22,8,6,6,6,7,8,6,3,8,19,4,18,5,4,16,18,10,12,12,22,9,12,10,8,8,18,10,21,22,6,3,12,12,22,18,22,6,6,6,18,6,12,12,18,6,6,6,18,6,6,10,5,5,9,23,8,6,9,18,11,11,24,8,14,21,24,8,21,12,4,4,6,9,19,10,18,6,17,12,6,16,5,18,6,20,15,6,6,6,9,6,6,6,6,6,6,6,9,3,14,12,4,6,4,6,14,16,6,21,6,5,16,14,4,12,12,14,18,18,24,18,9,19,24,9,9,18,18,3,8,18,3,4,10,6,10,5,12,9,8,5,14,10,4,6,18,6,6,4,6,9,14,15,8,6,6,12,12,16,18,18,24,9,24,22,9,10,6,12,12,16,10,18,9,10,18,15,15,24,6,6,6,10,18,10,10,14,9,6,6,8,4,3,16,6,6,12,12,6,6,9,9,6,6,4,12,12,12,14,20,8,13,6,6,12,15,12,18,24,3,4,4,12,17,5,5,18,12,6,6,21,6,12,16,18,15,9,15,3,3,10,16,12,9,6,6,10,18,14,14,3,5,12,20,19,9,14,14,9,18,6,18,20,20,24,20,9,9,8,8,4,20,6,21,13,12,10,5,6,18,9,21,22,18,6,6,6,6,6,4,9,9,15,3,12,20,6,18,4,4,6,6,6,6,16,6,6,18,10,10,9,6,5,8,19,12,21,16,18,10,4,18,12,6,6,6,18,12,10,10,6,6,8,12,10,10,18,4,24,6,20,19,10,21,8,10,4,6,4,4,9,16,16,24,9,14,7,8,12,4,3,9,20,24,12,8,6,10,14,10,9,24,12,22,12,9,23,19,6,18,6,4,6,6,4,8,7,18,4,4,20,6,10,4,8,8,6,6,6,6,24,10,23,19,18,9,6,6,20,6,18,9,18,18,18,10,4,4,4,12,4,10,4,3,4,6,19,9,7,14,8,8,18,9,18,6,6,4,4,4,18,6,8,18,14,15,10,4,22,6,6,4,10,8,12,12,6,6,4,19,6,8,6,6,6,24,10,10,19,19,16,24,6,6,18,18,6,6,6,4,6,10,6,6,6,6,6,15,20,4,12,6,9,6,12,18,18,18,6,12,18,4,19,15,14,22,6,18,3,20,5,12,6,8,8,12,6,3,14,12,4,15,6,10,18,15,8,24,6,8,10,18,24,6,8,18,18,18,20,14,12,21,21,18,18,4,18,4,10,11,4,9,4,8,8,12,9,12,9,12,4,14,11,6,11,9,18,12,18,18,9,9,9,6,6,6,6,6,4,6,6,18,6,15,15,4,6,8,8,24,14,8,10,8,4,6,6,18,16,16,8,16,12,9,9,16,19,9,3,24,5,19,6,24,9,10,20,7,7,2,10,12,3,12,6,9,22,22,9,4,18,24,24,18,4,10,6,6,6,6,6,6,6,10,10,9,14,10,10,3,9,5,24,12,4,9,6,6,19,4,6,18,10,18,9,24,8,4,8,10,18,19,24,8,10,6,7,12,6,15,6,7,6,6,6,4,6,6,9,18,9,9,18,18,4,4,2,16,4,10,6,7,4,6,10,18,2,2,6,6,18,9,9,10,5,5,4,4,10,14,12,24,14,6,4,14,16,21,15,6,16,16,3,3,10,6,12,5,9,11,4,9,13,4,6,10,20,9,4,4,22,9,24,16,18,6,9,9,4,7,20,19,6,6,4,9,18,2,8,18,15,12,6,20,24,9,4,4,8,6,3,12,5,5,6,6,14,3,6,4,16,7,8,6,9,3,22,18,6,9,4,4,10,3,18,18,9,9,18,6,10,18,18,9,6,18,9,10,9,3,9,11,9,11,8,20,21,12,6,8,8,8,9,8,9,9,9,9,10,6,6,10,16,19,18,9,6,6,14,8,7,12,8,22,6,6,6,17,12,18,10,10,24,6,6,19,6,10,10,9,18,18,9,9,6,4,8,18,4,12,4,18,18,6,6,4,6,12,4,6,12,8,8,9,9,18,9,18,6,9,9,14,6,12,18,6,16,3,6,4,4,5,9,18,5,17,18,24,18,6,14,3,6,6,6,21,12,9,6,8,8,8,8,12,18,20,9,8,16,10,10,15,18,10,18,10,10,18,18,18,6,8,8,8,18,9,18,6,6,18,12,6,2,10,20,12,3,3,3,18,10,14,14,9,8,4,5,9,9,12,5,3,6,7,4,14,19,6,15,10,8,12,9,14,14,13,6,17,17,8,8,24,15,18,18,3,3,6,6,11,12,12,9,12,6,9,6,9,16,10,7,11,12,8,4,3,3,18,4,3,18,3,3,5,18,20,9,19,19,9,18,14,6,9,9,6,6,6,6,12,12,4,6,3,18,16,10,9,9,10,3,12,12,8,6,12,12,6,7,18,19,12,6,6,5,5,14,3,24,20,18,6,20,6,6,6,18,15,18,3,6,6,8,8,20,13,7,7,10,10,3,18,18,9,15,12,12,6,13,22,6,6,24,10,18,10,3,12,4,4,18,9,12,9,10,10,10,10,9,9,10,10,18,18,18,7,19,16,16,12,2,2,8,8,3,12,8,12,18,18,3,18,3,3,18,18,22,21,18,18,24,16,6,8,6,6,18,10,9,9,3,3,6,6,16,9,16,18,6,6,4,6,6,18,24,9,8,13,16,14,9,16,13,13,24,10,18,18,9,22,8,8,18,5,12,18,4,6,2,2,10,18,17,12,16,5,6,6,6,13,19,6,4,6,6,6,18,4,8,8,10,10,4,4,16,16,7,3,9,17,8,8,10,22,24,12,6,6,9,22,9,18,19,18,9,9,9,9,3,24,6}; static int rectangles_array3[2913] = { 9,7,9,6,19,16,6,10,6,6,7,12,3,15,10,9,6,10,10,9,11,13,9,6,12,3,6,14,10,12,3,6,15,15,15,12,12,10,10,13,13,19,9,11,9,3,9,9,14,2,11,9,9,6,5,6,6,13,13,23,12,14,6,6,12,6,3,12,20,2,14,12,9,6,6,10,14,5,9,9,9,9,9,4,9,6,12,6,3,9,4,9,9,12,2,10,10,6,4,2,3,3,15,10,10,6,9,9,6,6,6,9,9,6,6,10,3,2,12,24,10,12,12,3,8,6,6,18,14,2,13,4,10,6,6,12,4,4,6,6,15,9,10,8,7,22,22,16,6,12,6,14,10,11,11,18,14,8,14,6,16,6,4,6,4,6,6,6,9,6,3,3,8,6,6,6,4,12,17,24,24,22,22,18,6,4,3,18,3,4,6,6,16,16,9,8,9,3,2,9,18,9,12,2,3,9,4,4,11,6,10,12,15,3,9,6,9,14,13,13,9,9,6,6,4,4,9,4,6,10,14,9,3,3,4,6,18,18,10,4,18,6,8,9,19,3,4,4,16,4,6,9,15,13,14,10,6,14,12,5,12,12,6,6,16,6,9,6,9,9,6,9,3,21,12,9,20,9,21,23,4,4,6,6,4,19,12,10,12,19,10,12,2,4,9,4,9,9,4,9,9,9,15,15,4,7,10,8,16,3,3,9,18,18,9,14,6,16,12,16,10,3,10,4,9,5,12,10,14,16,8,2,6,9,14,12,18,18,9,6,9,9,2,6,9,9,6,6,6,15,6,14,6,4,19,19,9,3,9,4,6,22,14,20,9,9,12,12,6,6,3,3,6,12,12,12,9,12,12,8,9,3,6,23,4,18,6,6,4,9,3,4,12,3,6,3,9,9,12,4,9,10,9,21,7,9,4,12,12,9,17,9,6,19,7,12,12,6,4,6,6,14,14,6,5,11,14,9,6,9,9,4,2,9,9,9,9,7,10,9,9,3,3,12,6,4,2,24,4,9,12,6,3,16,4,2,8,6,6,10,10,4,3,6,6,3,10,24,11,6,20,24,24,14,12,14,6,9,14,15,9,14,18,6,10,9,7,3,6,12,18,9,13,3,12,10,8,9,5,5,6,3,6,12,15,10,12,6,6,16,6,6,6,6,9,3,6,6,9,9,10,16,5,5,10,6,18,9,7,10,18,9,6,3,9,10,12,12,21,8,8,3,4,9,9,22,14,15,14,14,6,9,16,16,8,9,3,9,6,10,18,3,11,11,9,9,9,4,6,6,17,17,4,18,12,12,15,15,6,6,14,9,15,15,9,21,12,12,18,9,3,10,4,20,8,8,9,3,4,6,6,10,7,6,3,18,6,6,3,7,6,6,7,12,4,9,9,15,3,6,11,9,9,4,6,10,16,4,9,8,8,18,11,5,3,3,6,10,3,3,22,6,6,12,9,9,9,6,9,19,6,19,9,3,4,10,6,8,12,6,19,20,20,6,6,14,14,7,9,10,10,6,6,6,6,6,9,6,6,10,10,13,5,6,4,5,12,6,3,9,2,18,3,3,18,23,19,9,6,12,6,10,15,6,8,6,6,18,18,4,4,9,8,5,8,4,15,8,4,4,17,18,12,9,12,2,6,11,10,17,6,9,12,12,15,3,7,9,3,12,14,9,18,18,10,11,3,3,12,8,12,14,10,2,12,12,18,18,12,9,11,12,3,3,4,5,4,9,6,6,8,18,10,5,6,14,4,4,10,3,4,4,6,6,6,3,4,3,6,6,3,10,9,8,8,11,9,6,12,12,8,3,4,22,8,9,9,14,8,14,20,10,4,4,9,5,4,4,5,10,8,3,4,6,4,12,6,9,4,3,9,4,18,12,8,5,6,9,12,6,6,15,2,6,2,6,3,5,9,9,9,4,6,6,3,12,6,3,10,6,9,14,6,8,12,10,6,9,12,9,6,3,6,6,14,9,14,16,10,5,3,12,5,4,12,6,6,13,13,6,3,6,14,2,4,4,9,4,6,23,23,3,4,3,4,15,3,4,4,9,6,10,6,6,6,2,6,3,6,3,16,6,22,10,18,9,10,9,10,10,10,9,3,13,13,7,9,6,6,2,16,6,12,3,6,4,14,6,9,10,10,6,9,14,12,12,9,16,6,14,2,16,10,4,7,16,16,6,12,8,18,14,14,6,18,3,9,6,16,4,16,16,10,8,2,9,8,3,11,9,8,6,3,6,9,9,19,19,8,8,3,4,6,6,14,12,5,9,9,8,6,3,12,12,2,3,14,14,14,6,9,4,6,3,9,4,5,9,10,10,9,9,19,9,19,4,9,19,12,5,18,12,3,3,4,9,4,4,6,8,3,6,5,5,6,15,12,14,6,6,4,3,4,3,4,3,4,6,9,4,12,3,6,7,8,3,6,9,4,6,10,10,17,20,4,9,9,16,4,4,6,10,6,8,8,8,4,6,6,4,4,18,4,14,6,3,4,15,3,6,9,9,9,21,2,3,13,8,9,9,10,10,6,6,21,13,21,20,6,9,9,3,9,10,9,9,4,14,6,12,10,8,6,9,14,6,9,10,6,6,6,6,3,3,3,2,11,6,11,11,9,4,12,3,9,3,9,3,9,9,18,18,9,6,3,9,3,16,4,8,6,6,9,9,10,8,15,8,4,6,6,6,2,11,15,13,9,9,4,4,4,3,3,20,6,4,7,9,9,6,6,4,6,9,8,8,9,16,12,12,6,22,6,6,6,6,10,16,6,10,6,2,6,10,6,4,16,13,6,9,6,6,11,10,10,21,9,6,16,3,12,9,8,2,3,6,18,9,9,9,6,2,4,12,12,22,22,11,11,9,3,2,2,9,9,9,9,6,10,9,9,9,9,6,3,6,6,3,6,10,6,10,12,10,9,18,4,10,10,14,19,6,6,10,8,6,18,12,8,3,3,9,4,12,9,8,7,9,12,6,9,23,6,3,14,12,12,7,9,12,12,15,15,9,15,8,4,19,19,20,20,12,12,14,8,12,5,3,12,3,3,9,6,4,14,6,9,6,10,6,6,9,9,6,6,3,6,24,4,12,8,14,14,10,6,9,7,10,9,12,14,8,8,6,6,9,9,6,6,8,8,12,11,4,7,3,9,7,6,11,11,18,5,3,20,4,4,10,14,8,9,8,6,4,9,8,17,6,17,17,3,18,18,18,8,9,9,8,9,9,9,6,6,6,3,6,6,6,6,4,9,9,23,3,4,23,3,3,4,6,3,6,4,15,12,9,9,9,3,6,13,4,13,18,5,8,9,9,14,14,16,10,6,4,5,5,16,16,15,2,6,4,12,12,8,8,5,8,6,18,14,14,12,16,21,21,18,8,12,12,20,6,20,20,14,14,8,9,10,11,16,6,9,12,9,10,3,2,3,9,6,6,9,6,12,6,4,16,9,9,10,6,8,21,9,3,10,3,4,6,6,6,12,15,4,8,10,10,12,8,4,4,6,2,9,9,10,13,6,3,6,5,9,9,7,6,6,4,18,9,14,6,9,3,6,9,6,10,3,6,9,11,11,10,18,6,3,6,5,9,9,15,3,6,3,6,6,8,3,6,4,6,9,6,6,6,9,10,4,6,10,6,8,6,4,10,8,12,12,9,12,16,6,2,9,9,13,2,6,24,24,10,6,3,11,4,18,16,16,6,2,6,6,6,4,7,7,6,8,3,3,14,10,12,18,9,9,10,12,12,10,2,13,3,12,15,4,3,8,6,3,4,6,5,7,10,10,6,9,6,16,22,12,18,18,4,4,6,9,9,9,3,13,4,6,3,12,9,13,2,9,9,8,8,8,6,15,12,9,4,3,6,6,6,8,6,3,3,5,3,6,10,10,12,6,2,10,12,12,9,11,13,6,12,3,6,3,10,9,9,9,6,9,9,16,16,9,9,6,6,16,12,6,20,9,9,9,4,12,9,4,9,8,16,6,15,8,4,6,10,21,21,3,6,2,2,4,4,2,3,23,6,3,23,10,12,14,9,12,10,4,10,12,24,4,10,9,3,9,9,18,11,4,8,9,10,12,12,4,10,6,9,5,22,6,8,4,6,4,9,6,6,9,6,3,6,9,3,6,6,4,12,9,12,6,9,9,8,6,7,12,12,6,14,18,12,14,14,20,20,17,17,6,6,13,13,9,7,6,6,9,3,10,9,18,9,4,12,5,3,5,18,14,9,6,4,8,8,2,5,12,12,3,12,6,9,5,6,6,11,18,18,8,8,3,13,9,9,9,2,6,6,21,12,6,3,3,6,12,18,7,4,9,4,6,6,2,8,7,7,5,5,10,2,6,3,9,5,6,8,9,6,4,3,2,3,9,9,20,20,14,9,4,4,6,18,6,4,9,14,18,18,9,9,9,6,6,11,12,3,8,6,4,12,12,8,3,6,8,8,3,14,10,3,6,9,8,8,6,6,6,6,9,9,8,6,4,4,3,10,6,9,6,8,6,14,8,4,9,10,13,13,6,6,14,4,6,4,9,10,5,13,19,6,2,4,5,14,6,24,14,8,6,3,5,4,6,6,6,12,21,3,9,12,9,9,22,12,9,4,22,22,4,7,4,15,12,12,16,16,16,16,3,4,8,3,2,6,9,9,6,14,3,7,5,5,9,10,9,9,20,3,20,8,20,19,20,9,4,6,6,8,6,6,4,6,8,9,9,18,20,20,6,9,6,8,12,7,6,10,3,10,12,18,16,12,14,6,6,6,10,3,8,22,8,8,9,4,6,6,3,3,9,5,15,9,3,2,9,9,9,10,16,10,13,13,9,11,11,6,3,9,14,9,6,9,20,3,3,3,9,15,3,18,3,4,5,14,9,3,18,3,12,5,12,10,10,6,9,20,6,13,15,4,14,6,3,8,18,3,13,10,9,3,3,11,10,3,3,10,21,3,6,4,4,3,3,18,3,18,6,9,10,6,18,10,10,5,7,5,7,5,18,12,4,10,6,6,2,13,3,3,6,6,6,16,16,10,10,24,20,9,9,5,9,8,8,9,12,18,18,6,3,15,14,10,9,8,8,12,4,15,10,6,5,4,6,12,6,6,23,6,12,18,12,8,4,6,3,20,20,18,12,8,14,16,9,4,4,6,6,9,7,6,10,21,10,8,9,12,12,12,12,9,9,4,4,6,4,4,4,19,8,12,3,4,10,6,22,22,3,15,9,3,15,3,6,14,10,9,10,10,4,2,6,16,4,9,9,6,9,8,16,12,9,9,9,18,12,12,6,4,6,6,3,3,22,22,24,4,18,14,9,9,20,9,14,6,24,24,7,7,19,6,6,8,15,15,20,20,4,4,3,3,20,9,19,3,20,9,5,6,20,20,12,12,8,6,4,15,6,10,12,4,6,18,9,6,3,6,19,19,2,6,18,8,6,10,6,6,15,10,4,3,9,9,9,9,5,20,6,2,6,6,9,4,6,4,22,22,9,9,18,6,8,8,12,12,8,14,12,18,18,20,12,14,6,18,14,2,12,7,12,12,22,20,4,4,6,6,24,12,4,6,3,8,12,3,7,6,7,19,7,9,7,6,5,19,6,14,9,5,5,5,7,10,9,9,7,7,8,12,12,12,8,3,4,6,15,6,9,20,9,5,14,4,6,7,6,18,6,4,6,12,3,6,6,3,9,6,6,6,3,3,6,6,9,12,8,3,12,3,9,3,3,20,20,18,12,6,18,9,6,20,20,6,6,3,6,3,7,6,6,6,13,6,15,7,6,12,9,24,24,12,6,6,12,6,14,2,3,9,12,12,9,10,9,7,5,8,18,10,10,10,10,5,2,6,7,16,8,4,8,4,9,8,4,12,12,7,3,3,10,24,15,24,9,6,6,9,9,4,20,23,18,6,6,5,19,18,18,3,9,7,7,6,10,10,16,6,6,9,8,12,9,6,22,3,3,24,6,14,10,5,6,14,14,4,12,6,6,9,9,10,8,8,4,18,19,16,16,6,5,5,6,5,7,6,9,6,20,12,12,6,8,10,9,22,22,4,15,12,13,24,24,8,2,3,6,10,3,4,8,4,16,16,16,14,14,22,22,20,20,9,16,12,6,8,6,6,6,8,12,9,6,5,8,6,6,6,18,3,2,6,9,9,15,15,6,14,5,3,2,10,3,11,8,9,2,6,3,18,10,10,9,9,3,4,14,14,6,6,18,3,3,10,4,6,9,12,6,13,6,6,3,6,3,6,19,16,18,18,3,4,6,4,8,8,12,12,6,6,6,6,2,3,12,9,15,4,12,15,19,19,10,10,18,6,10,10,10,10,18,3,18,18,3,3,3,10,17,17,11,6,8,7,14,14,2,6,4,6,18,18,10,9,6,6,6,3,9,6,18,9,9,9,3,4,10,9,9,9,6,6,9,9,6,9,3,3,6,4,6,15,3,10,3,6,18,6,18,18,6,12,22,6,6,18,9,9,12,4,3,8,15,14,14,14,4,20,12,12,8,8,15,15,12,12,9,21,4,9,15,15,8,6,4,3,12,12,6,10,6,2,3,3,6,6,6,6,20,8,22}; static int rectangles_array4[2913] = { 6,10,3,8,5,6,5,11,4,6,10,1,8,9,5,5,16,9,12,4,20,8,11,7,5,8,5,9,11,6,9,5,18,4,8,5,2,10,2,2,20,11,20,2,12,0,12,10,12,1,17,0,6,10,8,4,2,19,3,8,1,14,3,6,8,15,1,4,2,3,1,5,3,14,1,15,5,10,9,11,9,12,10,9,6,8,4,11,8,11,9,11,11,9,1,10,6,7,0,6,1,6,5,20,2,12,4,14,8,17,0,14,8,8,0,12,9,2,2,3,5,14,4,4,6,3,3,10,8,3,12,8,5,16,4,19,8,6,10,9,0,4,9,18,3,18,3,16,2,9,2,14,5,18,3,8,7,8,10,14,7,13,12,13,1,13,8,8,8,7,0,1,9,12,9,7,0,13,12,14,9,14,9,18,6,13,3,13,0,6,6,10,10,4,5,9,20,2,5,2,5,2,13,0,1,2,13,0,11,10,11,6,18,3,18,1,13,0,13,9,13,10,13,2,12,5,14,4,7,5,12,9,3,0,12,4,13,10,10,8,10,0,12,4,8,11,9,10,20,1,14,3,15,11,17,3,7,4,10,8,15,3,12,6,14,1,13,10,12,9,6,9,7,8,7,0,15,0,15,8,15,0,8,0,9,8,9,12,12,6,16,2,0,4,9,0,18,0,8,10,13,9,14,8,15,8,9,7,14,2,5,11,13,10,9,8,12,1,15,1,10,3,12,8,6,10,5,4,11,7,9,2,3,10,16,9,21,0,18,3,18,0,5,6,12,10,15,3,15,5,11,8,15,9,13,9,18,1,14,1,12,1,14,0,17,5,18,3,15,0,4,2,14,6,20,1,16,7,12,4,12,8,15,7,6,1,6,0,13,9,12,8,16,0,14,7,5,4,16,6,12,11,11,12,6,10,8,14,5,11,3,3,3,20,5,13,6,12,8,9,10,13,9,14,8,20,6,18,7,18,0,9,0,17,1,14,8,9,9,14,8,6,1,10,5,5,0,8,10,6,4,12,12,12,3,2,6,14,0,19,0,12,0,13,3,6,0,15,9,12,1,15,7,19,6,8,5,14,2,18,2,17,12,14,10,14,6,6,11,12,10,16,6,9,5,10,8,6,10,8,1,9,3,2,10,8,10,0,14,9,14,1,15,0,19,2,3,9,18,0,12,2,14,5,18,5,22,8,11,7,22,12,15,0,13,9,14,6,14,6,3,3,12,12,13,8,20,3,20,0,10,8,13,9,13,0,6,3,8,2,15,3,19,3,19,3,4,6,15,0,17,5,8,6,5,10,10,0,15,0,14,11,14,8,15,3,11,6,12,0,3,3,12,1,17,2,7,8,3,10,5,11,3,18,3,9,3,13,8,13,4,13,8,7,6,16,6,11,0,13,5,10,10,14,6,12,7,8,5,3,5,5,8,3,1,5,1,1,3,6,7,14,1,13,12,13,9,15,5,15,6,15,0,5,7,17,10,15,0,14,8,13,6,13,8,17,4,12,11,11,9,8,1,9,9,18,8,2,0,18,2,2,12,13,1,11,3,12,2,18,3,22,2,1,0,19,3,20,0,13,0,10,8,4,2,14,3,17,6,10,4,2,10,5,12,0,15,5,8,1,19,8,20,9,15,2,16,2,20,3,15,0,16,2,10,1,14,3,3,10,3,2,12,10,12,11,4,0,9,8,13,5,12,1,19,0,20,0,18,9,11,0,1,1,13,4,12,4,15,1,13,5,16,5,10,7,12,0,17,0,15,0,13,8,12,2,12,1,15,0,6,10,12,8,12,8,13,1,15,6,18,11,12,0,11,11,12,8,9,10,4,11,5,8,15,12,12,7,11,3,14,8,9,1,11,9,12,1,6,1,8,2,11,7,14,9,14,7,4,9,7,11,2,8,3,11,0,10,2,20,2,12,0,14,0,12,8,4,10,14,2,14,2,5,9,12,6,12,0,18,5,10,2,13,6,11,7,18,11,10,0,15,4,13,7,14,7,12,6,16,0,16,5,5,5,9,9,13,5,19,3,5,0,2,5,1,10,8,11,12,4,12,3,5,4,6,10,0,0,3,2,7,5,10,9,18,9,12,11,13,9,4,2,13,9,9,1,8,3,5,8,9,0,6,4,13,5,12,11,14,5,12,0,20,9,12,10,14,7,12,2,18,1,6,12,14,6,11,1,9,7,17,2,7,1,8,11,3,20,8,20,0,8,5,4,8,6,0,20,10,12,0,6,0,20,2,18,3,13,8,5,9,6,9,10,1,11,7,14,5,13,0,12,1,2,2,20,1,14,0,15,1,9,0,16,12,7,11,12,10,15,3,16,3,16,12,10,7,11,11,12,11,3,2,12,5,14,0,10,8,5,11,11,9,5,10,10,7,12,0,12,2,12,1,12,0,5,6,14,5,9,8,11,6,17,8,8,4,12,9,16,1,11,3,7,12,12,3,12,3,13,5,11,9,17,2,12,0,12,5,12,9,2,5,4,2,7,0,2,6,6,11,15,8,3,2,19,1,14,4,14,8,14,4,8,3,20,2,8,9,16,12,11,12,12,10,14,5,18,6,13,1,15,9,10,3,16,9,15,0,13,2,5,1,5,1,16,9,16,6,18,1,9,0,14,3,16,3,11,11,15,8,17,3,3,0,2,0,13,5,12,5,18,0,13,5,9,12,6,9,13,8,6,2,20,2,14,8,8,12,9,11,4,10,8,7,12,0,18,0,16,1,12,9,12,8,12,4,15,3,15,4,15,0,15,0,14,3,7,10,8,12,7,0,16,7,10,11,12,3,16,0,0,0,10,10,4,8,9,9,6,11,8,4,8,7,1,15,7,13,9,3,0,10,6,15,0,20,2,13,0,2,1,18,0,17,0,0,2,12,9,17,5,15,0,15,0,5,0,13,8,13,8,13,10,12,11,13,7,14,12,12,1,20,0,14,0,13,0,6,0,14,1,13,4,17,5,16,3,14,10,11,0,4,5,19,0,8,3,17,4,16,3,18,1,17,0,15,8,22,1,20,2,3,6,7,11,4,9,4,3,18,2,13,7,13,10,12,0,11,2,13,5,9,5,3,6,12,8,9,1,19,1,9,6,12,10,14,4,8,6,19,0,17,1,18,0,3,2,14,5,10,11,7,12,5,10,11,9,14,8,12,7,2,1,8,7,6,17,4,2,6,9,7,10,8,18,3,18,4,5,11,15,7,12,12,12,2,14,10,14,3,14,1,3,1,18,0,5,6,14,4,17,8,8,5,3,0,12,0,9,2,0,10,10,8,13,11,2,1,13,12,10,7,14,10,11,10,20,1,17,9,12,12,14,5,16,4,10,1,15,12,12,8,19,0,14,6,13,9,13,8,7,4,17,3,14,2,3,4,19,10,19,1,15,5,10,4,0,8,14,0,6,1,18,4,6,1,1,2,18,0,12,7,9,7,12,7,12,10,15,3,4,6,8,12,11,2,8,0,0,2,12,10,7,9,17,0,19,1,12,3,12,12,12,10,14,10,13,7,7,9,0,11,3,15,2,13,4,20,8,12,2,3,3,13,5,17,2,12,10,12,10,12,12,12,0,9,7,14,8,13,1,9,2,15,0,9,2,15,4,17,0,15,0,15,3,20,8,13,0,0,5,11,4,10,8,11,4,14,2,4,8,1,9,13,10,4,6,14,9,9,9,9,11,9,12,14,8,18,3,18,0,13,10,11,8,16,5,7,9,13,3,20,7,15,0,19,1,12,1,3,8,5,9,11,4,6,5,17,11,1,10,10,11,11,9,15,0,2,0,9,9,18,0,12,3,2,5,12,10,5,9,7,9,4,0,11,11,6,11,12,5,14,5,14,0,16,4,8,0,13,0,12,6,10,1,0,6,9,1,10,7,9,10,3,7,3,10,3,10,4,5,8,9,3,2,9,11,11,16,7,16,6,19,3,14,0,9,6,14,4,7,9,14,12,14,5,4,11,3,4,16,4,13,10,15,12,12,3,12,8,6,0,4,0,15,0,6,3,13,6,6,10,10,7,17,2,11,1,15,1,10,11,7,10,15,3,15,7,12,9,15,5,8,7,12,9,7,10,13,9,9,0,14,0,12,1,7,11,16,2,8,0,5,2,14,3,9,4,12,9,13,0,14,2,11,7,13,7,17,4,13,10,18,12,17,5,16,4,18,4,15,0,20,2,16,9,12,0,5,0,12,5,10,8,6,3,16,6,8,6,10,11,14,0,16,3,6,4,17,2,2,4,18,8,6,6,14,8,15,6,14,4,7,8,13,9,8,0,17,0,21,0,12,1,5,1,6,5,14,1,11,0,13,1,0,1,14,7,12,8,13,11,9,7,6,10,10,6,15,8,11,8,1,0,15,7,20,2,14,2,12,1,7,8,12,2,14,3,17,5,13,9,13,12,12,11,20,1,7,6,9,1,19,4,3,1,9,4,6,4,15,9,12,6,15,3,14,1,14,0,15,3,9,1,13,1,6,8,0,0,14,1,14,8,10,11,10,9,14,8,11,3,13,0,12,11,10,8,11,10,12,10,4,0,11,1,11,6,14,7,12,12,11,1,9,0,1,1,9,9,11,11,18,4,15,1,14,3,15,7,14,12,7,0,19,1,16,6,17,5,0,7,1,1,6,1,15,3,4,0,6,7,12,6,9,4,20,2,13,12,13,1,13,2,13,2,3,7,17,5,16,0,15,0,9,4,12,10,13,9,14,8,10,0,13,9,14,0,1,10,16,10,12,8,13,2,11,7,13,0,12,8,12,6,14,0,14,0,4,1,4,8,3,11,0,6,2,18,0,11,9,7,3,18,7,18,3,9,2,10,5,11,10,12,4,6,9,9,11,10,2,21,0,5,12,1,10,6,9,2,5,12,9,18,2,16,1,12,4,10,5,14,7,7,2,5,7,0,2,20,5,5,0,13,0,4,2,12,12,6,0,10,7,11,7,21,3,21,7,9,0,15,1,13,7,13,10,13,10,13,10,5,0,11,2,15,1,10,0,6,0,13,2,13,8,13,9,12,3,16,6,10,7,12,7,10,3,16,4,0,11,10,12,17,5,16,5,3,4,4,3,16,6,14,7,4,0,10,6,0,0,3,9,12,6,8,2,12,5,14,10,12,7,17,9,13,0,12,9,10,9,0,8,9,9,15,10,15,6,19,2,12,10,14,5,11,3,10,5,20,7,4,8,6,19,3,20,2,5,10,11,0,7,1,11,0,17,12,17,7,13,0,8,6,7,0,13,3,12,2,9,6,14,5,12,6,17,4,14,0,13,2,6,0,21,1,15,11,13,7,14,3,22,7,12,11,15,8,13,8,9,8,12,3,19,0,22,0,7,11,10,0,14,2,13,8,15,7,11,11,15,1,16,5,12,4,6,9,15,6,12,7,6,10,12,3,4,2,13,9,1,0,0,3,3,5,16,5,10,6,12,2,12,10,13,6,9,2,14,3,10,2,17,2,0,7,17,5,11,8,11,5,15,4,15,6,12,9,12,4,4,5,14,9,12,10,12,2,12,9,12,8,7,1,13,2,15,0,15,6,8,1,6,10,12,3,18,1,18,11,18,6,18,6,16,12,9,6,11,6,16,4,18,8,18,3,15,6,18,0,13,7,4,0,15,3,9,8,5,3,5,10,4,2,8,18,3,4,6,13,4,12,8,13,8,3,0,14,0,14,0,6,0,14,8,15,8,10,7,7,12,11,7,21,0,15,0,18,7,16,0,18,2,14,1,9,5,5,11,12,9,12,10,12,9,13,3,12,9,13,9,11,7,5,8,4,0,0,0,11,3,12,10,12,7,9,10,11,9,19,1,15,5,6,10,12,10,14,3,7,7,14,7,18,9,13,6,10,0,3,4,16,8,16,7,15,3,18,0,13,2,17,1,8,0,15,1,20,3,9,9,7,10,11,4,10,3,15,0,6,9,12,10,16,10,6,0,17,5,14,1,7,10,14,3,9,3,6,1,16,0,12,8,10,0,21,2,20,2,8,8,11,9,7,12,11,8,11,4,12,0,12,4,12,11,15,8,13,10,12,9,17,6,10,2,2,7,3,2,15,8,10,7,18,3,20,2,17,5,16,4,11,12,12,3,13,0,8,9,19,9,6,10,5,12,3,15,4,11,9,5,4,11,10,16,3,13,8,8,10,5,2,2,11,9,9,5,2,6,6,20,2,10,10,3,5,17,0,9,10,11,0,6,4,9,5,6,7,11,12,18,0,0,0,6,0,20,4,21,1,3,0,18,7,17,2,19,0,15,0,14,0,5,0,12,5,4,3,4,10,16,7,17,3,12,5,14,6,15,0,12,0,12,9,6,0,2,7,12,6,8,4,12,10,18,3,6,5,12,0,12,11,11,1,14,1,7,0,12,12,12,10,9,1,0,6,12,5,4,4,8,1,10,1,12,1,5,0,9,1,8,8,5,9,6,2,12,10,14,8,9,12,5,4,14,9,14,8,11,5,5,9,11,2,18,3,12,5,20,0,18,1,15,5,6,2,14,10,13,3,13,3,16,0,0,12,21,0,15,1,15,0,3,0,15,0,12,3,17,0,12}; static int rectangles_array5[2913] = { 7,4,12,20,5,13,11,19,3,8,4,12,2,14,11,3,11,5,8,5,0,6,6,20,13,3,11,13,5,12,21,8,1,1,8,6,16,1,13,1,2,5,4,3,1,7,1,1,5,11,13,7,7,5,1,12,17,3,3,1,11,14,12,8,13,17,18,10,1,1,5,12,17,17,17,6,5,0,3,6,0,6,6,8,3,0,11,6,20,6,13,6,6,18,23,12,12,8,16,19,2,17,4,4,4,16,12,0,10,8,8,0,0,16,18,8,19,11,9,0,6,5,5,15,17,19,0,6,1,3,8,11,12,16,16,5,2,10,5,20,12,4,5,1,1,0,0,7,12,13,17,14,6,8,8,15,14,14,10,15,0,0,3,0,1,0,0,20,3,5,11,11,11,11,11,12,13,4,0,0,0,1,1,6,16,16,19,4,18,2,11,5,13,4,3,19,0,1,23,0,12,1,5,2,3,11,12,12,7,1,7,10,6,16,8,5,0,4,0,0,6,7,19,18,18,20,15,6,8,14,9,6,7,11,16,6,0,0,7,20,14,2,1,3,0,21,7,7,8,15,17,3,11,1,2,14,8,2,8,17,11,1,16,16,14,14,1,0,2,2,20,6,7,10,8,4,2,6,3,0,10,10,16,16,10,0,7,6,9,0,0,0,12,11,11,14,15,15,7,7,0,0,3,3,4,10,19,17,13,18,19,0,4,4,3,1,19,3,5,2,19,22,14,2,7,6,12,14,13,14,7,4,14,6,6,9,6,6,5,20,5,5,11,2,0,0,14,8,14,5,8,13,14,12,1,1,12,22,16,13,6,0,7,4,0,0,12,12,14,14,15,14,17,0,1,1,17,9,7,4,6,10,17,1,11,6,17,17,7,15,8,14,16,4,19,13,3,6,11,7,6,8,15,1,8,5,2,11,11,6,1,4,18,4,16,7,7,2,20,14,2,0,0,17,8,3,12,7,8,7,7,6,23,17,17,11,11,9,17,0,0,18,18,12,6,6,1,0,15,11,16,2,20,0,13,11,7,8,9,0,0,1,18,15,15,17,18,0,4,5,14,0,0,7,7,5,15,0,7,2,2,2,6,5,6,0,3,7,7,13,6,17,0,2,8,8,8,3,6,0,12,21,8,5,7,12,7,19,20,14,20,20,11,11,3,18,17,20,6,6,0,0,0,0,3,11,0,0,8,12,0,6,2,3,7,6,1,10,3,5,4,1,13,5,1,2,10,9,10,10,17,7,1,1,5,12,17,15,16,13,11,6,5,5,1,1,15,11,4,4,0,0,19,11,8,8,12,12,2,2,6,7,6,6,3,0,13,7,6,3,15,14,12,2,16,16,3,0,10,5,16,19,6,0,2,12,0,11,20,11,14,11,11,8,17,0,0,7,1,20,7,17,2,3,6,8,12,10,5,20,0,2,11,3,17,18,15,14,8,8,2,19,20,3,6,0,0,10,11,5,8,5,6,22,10,4,8,9,10,6,5,4,4,10,10,2,2,4,4,4,4,20,20,2,2,5,11,9,5,14,14,11,9,6,21,5,5,4,7,13,8,2,19,10,2,0,3,2,7,0,3,19,14,14,5,6,6,5,5,12,12,3,3,1,11,14,11,11,20,4,3,11,0,0,11,23,10,1,0,3,17,16,12,12,7,6,8,11,7,6,9,0,5,5,5,4,17,17,13,17,16,9,0,12,9,9,6,6,5,6,13,5,3,16,19,13,10,9,16,14,10,0,11,2,4,0,19,8,10,17,18,18,11,11,3,5,0,17,17,17,18,8,6,12,12,5,9,9,11,13,8,8,11,11,6,0,0,3,10,7,13,4,2,5,0,4,10,10,11,10,12,21,20,17,19,18,6,16,18,6,4,21,7,2,10,11,9,10,11,0,8,0,3,20,1,0,18,7,3,2,2,1,18,15,16,5,13,3,14,12,16,8,12,20,7,2,6,7,0,11,12,21,3,9,11,7,8,16,14,11,13,0,10,4,0,6,6,11,11,16,7,16,14,11,6,18,0,5,0,1,1,17,5,17,5,9,4,7,7,4,12,3,6,9,5,4,6,2,19,19,5,8,13,12,6,11,7,5,9,14,14,11,12,0,0,1,14,20,11,11,14,16,11,5,16,15,8,16,0,5,5,6,10,10,18,10,0,4,12,6,12,16,11,11,12,4,4,9,5,9,0,16,16,7,9,1,6,18,8,19,8,8,17,11,2,12,4,1,3,6,11,8,18,16,3,3,0,0,11,11,12,20,8,0,10,11,12,0,0,5,14,14,1,0,3,3,10,10,6,14,17,1,13,16,17,3,6,6,1,1,18,18,1,3,0,3,5,0,7,7,3,3,8,8,13,5,1,1,15,2,6,15,12,12,2,7,11,9,5,8,19,19,19,18,19,1,2,16,16,22,13,10,8,10,10,15,7,16,19,15,9,9,7,4,8,7,15,8,19,19,1,12,5,4,16,16,0,8,4,2,1,15,11,9,5,4,3,14,11,0,7,1,11,7,23,16,0,11,17,17,5,5,8,8,2,2,0,4,18,0,15,21,5,5,6,5,16,5,8,6,13,10,15,3,8,6,6,13,15,15,18,18,17,17,1,2,2,15,2,2,5,2,0,13,2,11,6,8,11,8,0,0,6,20,19,6,8,3,19,5,6,16,5,5,4,13,1,12,7,5,11,11,5,2,0,0,0,0,2,13,7,8,15,10,17,9,4,13,8,18,18,20,8,8,5,5,6,0,8,8,14,11,14,14,17,17,0,0,8,17,6,22,9,0,1,18,7,10,2,12,5,5,3,13,19,9,7,1,14,21,11,6,6,4,10,17,4,0,0,0,7,1,10,8,5,0,0,2,2,0,1,3,11,10,3,6,10,8,2,6,0,0,0,19,18,16,17,16,16,8,7,8,0,8,5,6,7,8,8,10,5,12,9,14,9,18,6,6,16,17,12,9,7,10,10,10,12,17,16,16,0,1,18,18,9,0,0,2,1,8,8,10,10,7,12,15,2,1,1,1,1,11,11,13,14,13,18,22,12,7,7,7,14,14,7,13,7,12,7,0,12,13,13,17,19,3,5,0,16,18,15,10,9,16,9,15,8,4,9,6,7,12,12,6,6,5,5,5,5,3,3,11,11,8,6,19,4,1,11,12,12,0,12,21,4,2,10,7,0,15,3,7,20,12,5,11,4,0,4,4,19,9,13,13,11,6,0,9,18,7,18,14,14,14,8,9,7,7,14,18,18,18,1,21,20,1,18,17,16,18,10,18,7,7,13,6,0,7,2,18,2,7,1,0,3,15,10,3,0,0,0,4,17,20,3,3,6,6,14,19,2,1,0,10,16,16,12,16,6,6,9,9,10,8,10,10,1,5,10,14,4,2,4,4,8,8,17,16,18,2,2,2,3,2,8,3,22,11,11,11,8,8,15,15,14,13,15,4,15,15,11,8,6,9,4,7,11,12,18,2,13,12,5,7,5,19,5,5,1,4,4,4,4,4,1,1,5,4,5,5,7,0,11,6,3,18,8,4,11,4,13,1,4,7,19,9,6,5,3,2,6,3,3,3,1,2,3,16,8,0,0,11,6,9,17,19,8,17,18,19,2,5,6,19,19,18,18,13,14,18,13,17,2,9,5,7,8,9,9,9,8,12,10,10,0,3,1,23,10,0,0,2,13,21,1,7,0,1,1,5,6,5,5,13,7,9,9,4,6,21,21,5,10,0,2,0,15,13,0,7,13,22,3,11,7,7,3,1,1,18,15,10,9,11,7,2,2,4,8,9,4,11,7,0,0,1,2,7,3,14,14,19,0,4,2,2,12,15,10,18,4,0,6,13,13,13,7,6,18,20,18,13,13,9,20,18,2,2,15,11,18,19,12,12,1,15,7,12,0,3,0,0,11,14,21,0,1,6,6,0,0,18,0,0,1,1,16,3,5,10,15,10,8,2,16,6,16,22,10,6,2,16,20,0,6,10,15,7,6,6,0,0,19,17,4,4,16,16,16,18,0,3,17,0,12,12,9,3,7,4,3,2,5,0,19,19,15,22,15,15,6,3,3,8,4,2,2,2,7,3,6,1,8,0,18,20,19,18,8,15,18,18,6,7,6,9,5,7,4,10,5,8,0,12,14,10,17,6,6,13,10,10,9,3,0,12,0,0,2,2,0,0,8,8,1,1,0,10,11,11,10,16,10,7,8,0,11,6,0,15,14,1,0,3,2,6,20,20,19,0,3,12,4,3,8,15,13,6,9,0,9,9,5,4,7,0,0,0,4,3,13,13,2,13,8,9,8,14,14,12,12,17,17,8,10,10,9,12,12,12,12,12,10,15,10,1,7,5,12,16,0,10,4,20,11,18,0,0,2,2,7,1,16,15,8,8,6,19,18,5,6,6,0,0,5,5,1,13,1,18,17,20,16,1,8,0,6,5,1,5,1,11,11,18,18,15,11,11,9,15,17,17,16,16,5,18,21,21,20,19,2,4,9,19,2,10,10,8,5,5,4,4,7,6,4,0,1,1,17,3,3,2,2,7,22,16,3,10,19,0,5,8,1,6,3,13,14,7,7,10,8,19,14,6,0,0,1,14,10,12,1,1,7,10,7,8,0,0,5,5,0,0,3,3,4,18,19,19,18,18,17,10,19,12,10,10,2,6,14,14,1,21,1,16,1,0,1,1,9,16,4,4,4,4,0,16,7,11,5,6,1,1,9,4,16,0,5,3,14,16,11,9,2,6,8,1,1,16,19,19,4,20,12,12,12,12,8,8,14,14,7,7,3,1,11,6,18,23,15,15,15,19,14,12,3,1,1,2,2,14,3,6,6,0,0,6,1,7,7,20,6,2,4,4,2,2,2,2,15,18,12,1,8,6,12,14,14,18,6,3,6,5,9,16,8,8,6,5,10,11,2,0,4,7,2,4,0,17,17,0,3,7,9,14,14,21,21,4,8,4,17,16,11,18,5,8,8,8,8,8,6,8,11,11,3,10,19,18,11,4,19,19,18,17,17,1,1,5,5,0,4,0,0,5,6,2,2,0,4,0,0,9,7,8,0,10,0,1,1,10,14,14,10,18,16,16,16,14,15,15,0,10,9,9,11,5,20,10,8,10,10,11,8,9,14,2,0,16,12,12,6,0,8,8,11,3,12,16,6,10,10,12,12,15,15,20,20,19,4,3,15,2,12,11,1,10,3,6,0,0,16,12,6,22,8,8,2,17,9,5,9,11,13,1,18,12,10,6,18,18,17,19,14,10,9,17,8,6,9,9,17,20,20,20,17,17,2,2,0,20,6,9,9,9,4,9,0,1,0,0,12,12,5,6,5,16,13,13,4,4,7,19,11,2,2,13,0,11,1,10,19,10,1,1,10,10,6,12,7,7,2,5,13,4,2,6,8,20,15,17,0,0,5,2,9,6,8,1,0,0,7,5,2,12,8,8,8,11,9,14,20,22,4,17,11,12,19,18,1,1,16,1,10,8,11,11,6,6,9,8,10,5,12,14,14,10,5,4,4,8,10,5,13,13,13,1,13,13,17,17,0,10,9,9,7,7,12,15,17,14,17,3,17,4,17,8,7,4,1,5,0,11,7,7,17,6,15,15,10,10,15,1,0,0,1,22,9,6,6,9,4,0,3,6,1,14,20,1,0,12,0,7,14,9,1,11,11,11,5,18,18,15,17,17,20,15,2,8,17,20,8,7,6,20,20,1,1,3,6,9,3,0,9,4,4,15,15,15,15,1,2,1,1,6,2,11,1,0,6,7,7,0,0,13,17,9,13,19,3,2,16,0,9,7,0,6,0,0,11,7,6,14,14,0,0,1,12,8,6,5,9,8,12,19,0,4,16,7,7,6,18,18,4,0,0,0,4,14,9,8,8,7,1,0,15,10,6,12,4,1,1,10,4,13,13,15,14,19,16,12,12,10,14,7,15,9,1,6,19,0,13,6,6,6,7,8,8,10,2,13,13,10,10,9,2,2,1,2,3,8,8,20,6,6,3,6,8,2,17,2,3,6,6,19,7,11,1,0,0,7,7,7,0,0,0,19,19,9,8,7,8,8,2,9,4,8,8,0,0,0,0,2,2,6,0,7,4,5,15,16,2,1,7,7,5,1,16,14,18,16,12,9,4,2,6,6,14,14,6,13,16,20,11,6,2,13,19,15,12,8,1,0,3,3,5,5,3,4,7,7,11,11,12,17,17,11,9,6,4,9,7,11,11,11,7,7,8,2,0,6,6,6,22,21,18,20,16,16,0,0,16,16,16,16,19,19,5,6,5,2,12,3,4,4,14,14,12,11,5,4,8,8,12,15,12,12,15,6,6,0,3,3,12,13,12,14,10,10,13,10,13,13,2,2,12,13,9,10,9,1,0,5,6,0,4,3,4,16,9,5,7,7,7,9,8,8,4,17,18,17,19,20,17,11,5,8,8,6,6,5,14,14,2,1,13,2,9,9,0,0,1,11,9,13,14,0,1,1,20,0,8,8,13,13,13,13,15,15,15,8,13,13,13,13,14,18,16,20,12,12,19,6,19,19,16,14,19,19,19,19,2,17,1}; static int rectangles_array6[2913] = { 12,4,18,9,2,12,12,4,7,12,4,19,8,6,14,14,3,2,2,2,2,8,2,10,14,8,15,5,2,3,6,13,3,3,8,7,21,2,10,2,2,11,2,2,2,19,2,2,7,18,2,6,12,4,8,18,6,2,2,8,8,3,8,12,6,9,18,16,2,18,10,14,7,9,9,4,7,4,6,2,2,2,2,6,12,8,16,3,8,2,5,2,2,6,18,4,8,10,10,18,22,18,3,2,2,10,4,2,3,6,6,2,2,9,9,2,6,20,9,9,7,5,6,18,8,18,3,4,2,19,11,11,5,4,4,5,8,12,3,6,22,17,2,3,3,3,3,4,19,6,17,3,4,3,3,10,3,8,9,6,5,3,8,3,10,3,3,10,2,12,18,22,4,3,3,11,12,11,10,1,1,1,1,1,9,9,18,4,18,6,14,3,6,3,18,5,2,18,19,2,19,2,7,20,22,7,11,11,2,3,4,12,6,18,6,8,2,12,2,2,2,2,9,7,9,5,5,16,10,5,5,2,18,18,9,7,1,1,5,7,5,12,11,15,8,9,5,5,3,10,10,16,7,2,3,6,10,3,5,8,5,3,6,6,3,13,2,3,3,3,12,2,6,8,10,6,1,6,1,1,9,9,9,9,6,8,8,2,5,1,2,3,24,13,6,16,6,6,5,2,2,2,2,2,9,3,6,5,3,18,19,2,1,1,6,2,9,10,3,11,5,18,2,8,12,4,14,4,5,3,6,20,19,2,3,2,3,3,6,15,6,6,18,12,2,2,9,13,9,3,3,3,9,5,2,2,6,18,10,11,8,9,4,3,2,2,3,3,9,9,19,19,10,5,3,3,6,9,4,14,2,6,9,7,17,11,13,9,5,6,6,8,3,24,10,6,18,16,3,6,2,2,2,9,6,2,8,5,5,2,3,19,6,2,5,5,5,3,7,9,3,2,2,9,6,2,11,6,9,6,6,9,19,6,6,2,2,6,6,2,2,18,18,11,7,15,22,8,9,12,7,11,7,12,9,22,11,6,24,5,5,12,18,8,8,18,21,2,2,3,2,2,2,3,2,8,10,2,3,3,2,5,1,5,2,2,3,7,4,7,2,6,2,7,5,4,5,11,4,8,23,6,21,2,4,8,5,10,9,6,9,9,9,9,2,18,21,6,6,6,8,5,5,5,3,6,1,2,3,4,1,2,9,24,2,2,2,12,1,12,18,18,12,2,2,2,4,16,4,4,11,8,2,2,8,6,18,6,9,4,3,18,2,2,2,2,9,12,9,9,2,2,9,3,14,3,14,14,9,9,2,2,2,2,4,3,8,5,2,6,18,4,12,1,5,5,10,8,15,4,14,4,3,3,18,14,3,3,8,3,10,3,3,11,10,2,2,4,20,10,3,10,2,5,6,4,4,9,14,19,5,8,8,9,18,18,9,23,18,6,1,10,10,2,2,2,2,3,3,1,9,1,6,18,6,4,3,3,5,7,1,5,5,3,3,3,3,3,2,4,4,10,21,6,6,6,6,20,6,4,4,10,6,8,9,4,7,3,19,6,18,2,20,22,2,2,3,2,10,6,12,4,4,17,9,7,7,1,1,14,9,18,4,4,7,22,4,7,9,22,2,8,3,2,9,18,6,2,2,2,9,8,6,6,4,19,3,12,18,4,9,2,2,2,2,2,18,20,6,8,3,7,12,18,5,5,4,4,6,2,2,6,23,19,11,4,5,9,9,9,10,3,3,4,7,5,12,23,4,18,9,9,3,3,12,18,12,18,9,9,18,2,2,5,6,2,8,21,3,11,5,6,6,22,6,2,2,3,6,3,16,2,16,6,2,4,5,5,4,4,3,8,6,9,10,4,3,6,12,20,9,9,4,4,3,4,3,2,5,7,10,2,18,8,18,3,18,4,2,2,2,12,9,9,19,11,3,20,2,8,8,3,8,16,4,4,6,2,4,6,3,7,16,7,4,2,3,4,2,4,23,2,4,10,2,3,3,6,6,4,21,4,6,19,14,6,2,11,3,2,2,18,11,20,13,11,7,5,5,2,3,4,8,14,9,18,3,24,10,18,3,11,12,4,4,6,5,2,2,2,2,16,20,2,2,6,6,9,15,19,7,9,8,18,4,9,7,11,2,5,5,8,6,4,6,4,2,4,10,7,20,4,6,12,3,4,4,3,8,3,1,5,5,10,23,7,2,6,4,8,4,4,8,5,19,8,13,24,2,2,6,6,18,9,2,2,3,3,3,3,19,6,16,3,4,15,4,2,2,6,11,21,4,3,21,19,3,3,7,9,8,11,9,18,7,8,6,2,2,2,6,6,1,2,1,6,2,1,3,5,1,2,19,18,9,2,10,10,3,8,18,3,4,4,14,4,5,4,11,6,9,19,9,18,9,24,14,9,6,13,6,7,3,3,5,8,9,6,9,6,7,7,3,3,5,2,2,3,9,9,3,4,4,3,5,5,12,9,12,11,11,6,20,14,16,19,10,4,21,3,14,2,9,4,19,20,2,8,6,6,2,2,6,6,8,2,2,2,9,2,7,7,3,2,2,3,10,7,6,6,2,10,9,6,5,16,8,2,9,9,9,9,18,18,18,19,2,5,2,2,6,11,7,18,2,18,8,18,2,2,1,1,7,9,21,7,22,12,9,6,7,7,6,6,10,3,7,7,6,3,3,3,18,2,2,2,2,2,8,9,5,6,19,4,9,5,4,6,6,8,7,10,10,2,4,4,2,2,6,6,9,15,9,9,9,9,4,2,10,4,10,9,11,6,6,9,5,6,6,12,8,8,12,4,4,4,15,8,5,6,3,2,3,20,6,10,2,2,2,2,3,18,10,4,3,9,9,2,2,2,20,20,18,6,22,6,6,24,2,2,2,2,2,9,18,9,23,18,9,4,5,4,3,4,2,2,6,4,4,3,3,6,9,4,11,6,10,10,5,18,19,6,11,7,11,5,3,6,6,6,2,2,9,18,13,4,4,4,2,3,3,5,5,6,6,6,12,1,1,1,1,2,2,18,7,12,9,20,3,18,18,6,9,9,3,6,4,3,4,3,12,6,6,9,12,20,4,1,5,6,6,4,4,9,12,2,3,4,6,8,3,5,5,6,6,6,6,18,9,5,5,3,3,5,3,18,2,3,3,2,2,4,5,22,1,8,10,4,3,5,20,6,6,10,4,3,2,3,2,2,19,2,2,2,5,2,2,8,6,2,6,12,9,9,18,22,6,6,16,9,6,6,2,8,8,2,18,18,11,9,7,6,24,4,6,2,2,2,20,6,2,6,2,1,5,4,2,2,3,3,3,2,9,11,5,5,4,4,5,21,9,6,6,4,5,5,4,5,6,2,3,3,11,3,4,4,4,8,18,16,4,3,4,4,4,4,5,7,24,4,4,12,12,6,6,4,18,18,22,12,6,6,2,9,7,3,6,2,2,2,6,14,17,12,9,12,9,18,9,9,24,20,8,4,10,6,7,7,3,19,9,9,10,9,2,2,4,4,3,6,10,7,9,2,3,6,10,10,5,2,8,12,2,18,16,6,7,4,20,3,2,2,2,4,1,3,19,9,6,2,2,4,18,14,18,9,6,7,20,9,15,6,6,9,9,6,6,4,8,3,4,24,6,3,16,4,5,9,9,6,20,17,7,23,2,2,2,18,3,1,1,6,5,6,2,5,5,2,2,6,18,6,6,11,5,5,5,3,5,8,8,11,4,3,2,2,7,4,3,3,4,19,2,18,5,4,16,18,5,6,6,11,3,4,5,4,4,9,10,21,11,6,3,6,6,11,18,22,6,2,2,18,3,6,4,18,6,2,2,18,2,2,5,5,5,9,23,8,6,9,18,11,11,12,8,14,21,12,4,7,6,4,4,6,3,19,5,9,2,17,4,3,16,5,6,3,20,5,2,2,2,9,2,2,2,2,6,6,3,3,3,7,12,2,6,2,6,14,16,2,21,6,5,8,7,4,6,6,7,9,6,8,18,9,19,24,9,9,18,18,1,8,18,1,4,10,3,10,5,6,9,4,5,7,10,4,2,18,2,2,2,2,9,14,15,4,3,3,6,4,8,6,6,12,9,24,11,9,5,2,6,6,16,10,18,9,10,18,15,15,12,2,2,3,10,18,10,5,7,3,3,3,4,2,1,8,2,2,4,4,2,2,9,9,2,2,2,4,12,12,14,20,4,13,6,2,12,15,4,6,8,1,2,2,6,17,5,5,18,4,3,2,21,3,6,8,9,5,3,5,3,3,5,8,6,3,2,2,10,18,7,7,1,5,12,20,19,9,14,14,3,18,6,9,10,10,12,10,3,3,4,4,2,10,3,7,13,4,10,5,2,6,9,7,22,18,2,2,2,2,3,2,9,9,15,3,6,10,6,9,2,2,2,2,2,3,8,2,3,18,10,10,9,3,5,4,19,6,7,16,18,10,4,6,4,3,6,6,9,12,10,10,6,6,4,6,10,10,18,4,24,6,10,19,10,7,4,5,2,2,2,2,3,8,8,12,3,7,7,4,4,2,1,3,10,12,4,4,6,5,7,5,3,12,4,11,12,9,23,19,6,6,2,2,2,2,2,8,7,9,2,2,10,3,5,4,4,4,2,2,2,2,24,10,23,19,18,9,6,6,20,3,18,3,6,6,6,5,2,2,2,6,2,5,2,1,2,2,19,9,7,14,8,8,9,9,6,2,2,2,2,2,9,2,4,9,7,5,10,4,22,2,3,2,5,4,6,12,6,6,2,19,6,8,6,6,6,24,10,10,19,19,16,8,6,2,18,18,6,6,6,4,6,10,2,3,2,3,3,15,20,2,6,2,3,2,6,9,9,6,2,4,18,2,19,15,7,11,2,18,3,20,5,4,3,4,4,6,6,1,7,4,4,5,3,10,18,15,8,24,2,4,10,18,24,2,4,18,18,9,10,7,6,7,7,6,6,2,18,2,10,11,4,9,2,4,4,4,3,4,3,4,4,14,11,2,11,9,18,4,18,18,9,9,9,3,3,2,2,2,2,2,2,6,2,5,5,2,3,4,4,24,7,4,5,4,2,3,3,18,16,16,4,8,4,9,9,16,19,9,1,24,5,19,3,12,9,10,20,7,7,2,5,6,3,6,2,9,11,11,3,2,6,24,8,6,2,5,2,3,3,3,3,2,2,5,5,9,14,10,5,1,3,5,8,12,2,3,2,2,19,4,2,18,10,18,3,24,4,2,4,5,9,19,8,8,10,6,7,6,6,15,6,7,6,6,2,2,3,3,9,9,9,9,18,18,2,2,1,8,2,5,6,7,2,6,5,9,1,1,3,3,6,3,3,5,5,5,2,2,5,7,6,24,7,2,2,7,8,7,5,3,8,8,3,3,5,6,12,5,9,11,4,9,13,2,2,10,20,9,2,2,22,9,24,16,18,2,3,3,4,7,10,19,2,2,2,3,6,2,8,18,5,12,6,10,24,9,2,2,8,2,3,6,5,5,3,3,7,3,6,2,16,7,8,3,3,1,11,18,6,3,4,4,10,1,9,9,9,9,9,6,10,9,18,3,2,18,3,10,3,1,3,11,3,11,4,10,7,6,2,4,4,4,3,4,3,3,3,3,5,3,3,5,8,19,9,9,6,3,14,4,7,4,4,22,6,3,3,17,6,9,10,5,8,3,3,19,6,10,10,9,18,18,9,9,2,2,8,6,2,6,2,6,6,3,3,2,6,6,2,2,6,4,4,9,9,6,9,18,3,3,3,7,2,6,6,3,16,3,2,2,2,5,9,18,5,17,9,24,18,2,14,3,2,2,2,7,4,3,3,4,4,4,4,6,9,10,3,4,8,5,5,5,6,5,6,5,5,6,18,18,2,4,4,4,6,9,9,6,6,9,6,3,2,10,10,4,1,1,1,6,5,7,7,3,4,4,5,9,9,12,5,3,2,7,2,7,19,3,5,5,4,6,3,7,7,13,3,17,17,8,8,12,5,6,9,1,1,2,2,11,4,4,3,6,3,3,6,3,8,5,7,11,6,4,2,1,1,9,4,3,9,1,1,5,18,20,9,19,19,9,6,7,3,3,3,2,2,2,2,4,4,2,3,3,9,8,10,9,3,5,3,12,4,4,6,12,6,6,7,6,19,6,2,2,5,5,7,3,8,10,18,2,20,2,6,6,18,15,18,1,2,2,4,4,20,13,7,7,5,5,3,18,18,9,15,6,12,3,13,11,6,6,24,10,18,10,1,6,2,2,18,9,6,9,5,5,5,5,9,9,10,10,18,18,9,7,19,16,8,6,1,1,4,4,3,6,4,6,9,9,3,18,3,3,18,18,22,7,6,6,8,16,6,4,3,3,18,10,9,9,1,1,2,6,8,9,16,18,2,3,2,2,6,18,24,9,4,13,16,14,9,16,13,13,12,10,18,18,9,11,8,8,18,5,6,9,2,3,2,2,5,9,17,12,8,5,2,2,2,13,19,6,4,3,3,3,9,2,4,4,5,5,4,4,16,16,7,3,9,17,8,8,5,11,12,6,3,3,9,11,9,18,19,18,9,9,9,9,1,24,3}; static int rectangles_array7[2913] = { 3,7,3,2,19,8,3,5,3,2,7,4,3,5,5,3,6,10,10,9,11,13,9,2,6,3,3,7,10,6,3,2,15,15,15,6,4,10,10,13,13,19,9,11,9,1,9,9,7,1,11,3,3,6,5,2,3,13,13,23,4,7,3,2,6,2,1,6,20,1,7,4,3,2,2,5,7,5,3,9,9,9,9,4,3,6,4,6,3,9,4,9,9,6,1,5,5,2,2,1,1,1,15,10,10,3,9,9,6,3,3,9,9,2,2,10,3,1,6,24,5,6,6,1,4,3,6,18,14,1,13,2,10,6,6,4,4,2,6,3,5,3,10,8,7,22,22,16,2,4,2,7,5,11,11,9,7,8,14,3,8,6,4,6,2,6,6,2,9,2,1,1,8,6,6,2,2,6,17,24,24,22,22,18,2,2,1,9,1,4,3,6,8,16,3,4,9,1,1,9,6,9,6,1,1,3,2,2,11,6,5,6,5,1,3,3,9,7,13,13,9,9,2,3,2,4,9,2,2,10,7,9,1,1,2,3,18,18,10,4,9,3,4,3,19,3,4,4,8,2,2,3,5,13,14,5,2,14,4,5,4,6,3,3,8,2,9,6,9,9,2,9,3,7,4,3,20,3,21,23,2,2,2,2,4,19,6,10,6,19,10,6,1,2,3,2,3,3,4,9,9,9,15,15,2,7,5,4,8,1,1,9,18,18,9,14,3,8,6,8,5,1,10,4,3,5,4,5,7,8,8,1,2,9,14,12,9,9,3,2,3,3,1,2,9,9,2,2,2,15,6,7,2,4,19,19,3,1,3,2,3,11,7,10,9,9,6,6,2,2,1,1,2,6,6,6,3,6,6,4,9,3,2,23,2,6,2,2,4,3,3,4,6,1,2,3,3,3,6,4,9,10,9,21,7,9,4,4,4,9,17,3,3,19,7,6,6,6,4,2,6,14,14,2,5,11,7,3,2,3,3,2,1,3,3,9,9,7,5,9,9,1,1,6,3,2,1,24,4,3,4,3,3,8,2,1,4,3,2,5,5,2,1,3,3,1,5,24,11,6,10,24,24,7,12,14,2,9,7,15,9,7,18,6,10,9,7,3,6,6,9,3,13,3,4,5,4,3,5,5,2,3,2,12,5,5,12,2,2,8,2,2,2,2,9,1,2,3,3,3,5,8,5,5,10,3,18,9,7,5,18,9,2,1,9,10,12,6,21,4,4,1,2,9,9,22,7,5,7,7,3,9,16,16,4,3,1,3,2,5,6,1,11,11,9,9,9,2,2,2,17,17,2,6,6,6,5,5,2,2,14,9,15,15,9,21,4,6,9,3,1,5,2,20,4,4,3,3,2,6,3,5,7,6,1,6,6,6,3,7,2,6,7,4,2,9,9,5,1,2,11,3,9,4,3,5,8,2,3,4,8,18,11,5,1,1,2,5,1,3,22,2,2,12,9,9,9,6,9,19,2,19,3,1,4,5,6,8,4,3,19,20,20,6,6,7,7,7,9,10,10,2,2,6,6,3,3,2,3,5,5,13,5,3,2,5,6,6,1,3,1,9,1,1,9,23,19,9,2,6,3,5,5,3,4,3,3,18,18,2,2,3,8,5,4,2,5,4,2,2,17,9,6,9,6,1,3,11,10,17,2,3,4,4,5,1,7,3,1,6,14,9,18,18,10,11,1,1,4,4,6,7,5,1,4,4,9,9,6,9,11,6,1,1,2,5,4,3,2,2,4,18,10,5,6,7,2,2,5,1,2,2,6,6,3,1,2,1,2,2,1,10,9,4,4,11,3,2,6,4,4,3,4,11,4,9,9,7,8,7,10,10,2,4,9,5,4,4,5,5,8,3,4,2,2,6,6,3,2,1,3,2,6,6,8,5,6,9,4,6,2,15,1,3,1,6,1,5,9,9,9,2,2,2,1,6,6,1,10,3,3,7,3,4,6,5,3,9,6,3,6,3,3,3,7,9,7,8,10,5,1,12,5,2,12,6,6,13,13,6,1,6,7,1,2,4,9,2,6,23,23,1,2,1,2,15,3,4,4,9,6,5,3,3,2,1,6,1,2,1,8,2,11,5,6,3,10,9,10,10,10,3,1,13,13,7,3,2,2,1,8,2,4,1,6,2,7,3,9,5,5,3,3,7,6,6,9,8,2,7,1,8,5,2,7,8,8,6,6,8,18,7,7,3,6,3,9,3,8,4,8,8,5,4,1,9,4,1,11,9,4,3,1,2,9,9,19,19,8,8,1,4,2,6,7,6,5,9,9,4,2,1,6,6,1,1,7,7,7,2,3,2,2,1,3,4,5,9,10,10,3,3,19,9,19,4,9,19,6,5,18,12,1,1,2,9,2,2,6,8,1,6,5,5,2,5,4,7,3,3,2,1,2,1,2,1,2,2,3,2,4,3,6,7,4,3,2,3,2,3,5,5,17,10,4,9,9,8,2,2,6,5,6,8,4,4,2,2,3,2,2,9,2,7,3,1,2,5,1,6,3,9,3,7,1,1,13,4,3,3,10,10,3,3,21,13,21,20,2,9,3,3,9,10,9,9,2,7,3,6,10,4,2,3,7,2,3,10,2,2,2,2,1,1,1,1,11,6,11,11,3,2,12,1,9,1,3,1,9,9,18,18,3,2,1,3,1,8,2,4,3,3,3,3,5,8,15,8,4,6,6,6,1,11,15,13,9,9,4,4,4,3,1,10,2,4,7,3,3,3,3,2,3,9,8,8,9,16,4,4,2,11,2,2,2,2,5,16,2,5,2,2,2,5,3,2,16,13,3,3,3,3,11,5,5,7,3,6,8,3,6,9,8,1,3,2,9,9,9,9,6,1,2,6,6,11,11,11,11,9,1,1,1,3,3,3,3,2,10,9,9,9,9,2,1,2,2,1,2,5,6,5,12,5,9,9,4,5,5,7,19,3,3,5,4,3,9,6,4,1,1,3,2,4,3,4,7,3,4,3,9,23,2,1,7,6,6,7,9,6,6,5,5,3,5,4,2,19,19,20,20,12,12,7,4,4,5,1,6,1,1,3,2,2,7,3,9,6,5,6,3,3,3,2,3,1,6,24,4,6,4,7,7,5,2,9,7,5,3,12,14,4,4,3,3,3,3,2,2,4,4,12,11,4,7,1,9,7,6,11,11,18,5,1,20,4,2,5,7,4,3,4,3,2,9,8,17,6,17,17,1,9,9,9,4,9,9,4,3,9,3,2,2,2,1,2,3,3,3,2,3,3,23,3,4,23,1,1,2,2,3,3,2,5,6,9,9,9,1,3,13,4,13,18,5,8,9,9,7,7,8,10,3,4,5,5,16,16,5,1,2,4,6,6,4,4,5,4,3,9,7,7,6,8,7,7,9,4,4,4,10,6,10,10,7,7,4,3,5,11,8,3,3,6,3,5,1,1,1,3,3,3,9,2,6,6,4,16,9,9,5,2,4,7,3,3,5,1,2,2,2,3,6,5,2,4,5,5,6,4,2,2,2,2,9,9,5,13,6,3,2,5,3,9,7,3,3,2,6,9,7,3,9,1,2,3,3,5,1,6,9,11,11,5,18,6,1,2,5,9,9,5,1,2,1,2,3,4,1,2,2,3,3,2,2,3,3,5,4,6,5,3,4,6,2,5,4,4,4,3,4,8,3,1,9,9,13,1,6,24,24,10,6,3,11,4,18,16,16,3,1,3,3,2,4,7,7,6,4,3,3,7,5,6,18,9,3,5,6,6,5,1,13,1,4,5,2,1,4,3,3,4,6,5,7,10,10,3,3,2,8,11,6,9,9,2,2,2,3,9,9,1,13,4,6,1,4,9,13,1,9,9,4,4,4,2,5,6,3,2,1,2,2,3,4,2,1,3,5,3,3,5,5,4,6,1,5,12,12,3,11,13,3,6,3,6,1,10,9,9,9,2,9,9,16,16,3,3,6,6,8,6,2,20,3,9,3,2,6,9,2,3,4,8,3,5,4,4,3,5,21,21,1,2,1,1,2,2,1,1,23,3,1,23,5,4,7,3,6,5,2,5,4,24,2,5,9,1,9,9,9,11,2,4,3,5,12,12,4,10,3,9,5,11,2,4,2,2,4,9,3,3,3,2,1,3,3,1,2,2,2,12,9,6,2,3,3,4,3,7,6,6,6,14,18,12,14,14,20,20,17,17,2,2,13,13,9,7,2,2,3,1,5,3,6,9,2,4,5,3,5,18,14,9,3,2,4,4,1,5,6,12,1,6,3,9,5,6,6,11,6,6,4,4,3,13,9,9,3,1,3,3,21,4,2,1,1,2,4,6,7,2,3,2,3,3,2,4,7,7,5,5,10,2,6,3,3,5,2,4,9,6,2,3,1,1,9,9,20,20,7,9,2,2,2,6,3,2,3,7,9,9,9,9,9,6,3,11,6,1,4,2,2,6,4,8,1,3,8,4,1,7,5,3,6,9,4,4,3,2,2,2,3,3,8,3,2,2,1,5,2,3,3,4,2,14,8,4,9,10,13,13,6,3,7,2,6,4,3,5,5,13,19,6,2,2,5,7,3,12,7,4,6,3,5,2,2,2,2,4,7,3,9,12,9,9,11,6,3,2,11,11,2,7,4,5,6,6,16,16,16,16,1,2,4,1,1,2,3,3,3,7,1,7,5,5,9,5,9,9,10,3,10,4,10,19,10,9,2,2,3,4,3,3,2,2,8,9,9,9,10,10,3,9,6,4,6,7,2,5,1,10,6,9,8,6,7,2,3,3,10,1,4,11,4,4,3,2,2,2,1,1,3,5,5,9,1,1,3,3,3,5,8,5,13,13,9,11,11,2,1,9,7,9,6,9,10,3,3,3,9,15,1,9,1,2,5,14,9,1,6,1,4,5,6,5,5,3,3,20,3,13,5,4,7,2,1,4,9,1,13,5,3,1,1,11,5,1,1,5,21,3,3,4,4,3,3,9,1,9,2,3,5,2,9,5,5,5,7,5,7,5,6,6,2,10,2,2,1,13,1,1,2,2,2,16,16,10,10,24,10,9,9,5,9,8,8,9,6,18,18,2,3,15,14,5,9,8,8,4,2,5,5,3,5,2,2,4,2,2,23,2,4,9,6,4,2,2,1,10,10,9,12,4,7,8,9,2,2,3,6,9,7,2,10,21,10,4,9,6,6,6,6,9,9,4,4,2,2,2,4,19,8,4,3,2,10,6,22,22,1,5,9,1,5,1,6,7,5,9,5,5,2,1,6,8,2,3,3,3,3,4,8,4,3,3,9,9,6,6,2,2,2,2,1,1,11,11,24,4,9,7,3,3,10,3,7,6,24,24,7,7,19,6,6,4,5,5,10,10,4,4,3,1,10,9,19,3,10,9,5,6,10,10,6,6,4,3,2,5,2,5,6,2,2,9,9,2,1,2,19,19,1,2,9,4,2,10,6,6,5,5,2,1,9,9,9,9,5,10,3,1,6,2,3,2,2,2,11,11,3,9,6,3,4,4,6,6,4,7,4,9,6,10,6,7,6,18,7,1,4,7,6,6,11,20,2,2,2,2,12,4,2,3,1,8,12,1,7,2,7,19,7,3,7,3,5,19,6,7,9,5,5,5,7,5,9,9,7,7,4,6,6,6,8,1,2,2,5,6,3,10,3,5,14,2,3,7,6,6,3,2,2,6,3,6,6,1,3,2,2,2,1,1,2,2,9,12,4,3,12,3,9,3,3,10,10,9,4,3,9,9,3,10,10,2,2,3,2,1,7,6,6,3,13,3,15,7,3,6,9,24,24,4,2,2,4,2,7,1,1,9,6,6,9,10,9,7,5,8,9,5,5,5,5,5,2,3,7,8,4,4,4,4,9,4,4,6,6,7,1,1,10,24,15,24,9,2,3,3,3,2,10,23,9,2,3,5,19,18,18,3,9,7,7,6,5,5,8,2,2,3,4,6,9,3,22,3,1,24,6,7,5,5,6,7,7,2,6,3,3,3,3,5,8,8,2,18,19,16,16,2,5,5,6,5,7,6,3,6,10,6,4,2,4,5,9,22,22,2,5,6,13,24,24,4,1,1,2,5,1,2,8,4,16,16,16,14,14,22,22,20,20,9,16,6,3,4,2,2,6,4,6,3,6,5,4,2,3,3,9,3,1,3,9,9,5,5,3,7,5,3,1,10,1,11,4,3,1,2,1,18,10,10,9,9,1,2,7,7,6,6,6,1,1,5,2,3,3,6,2,13,3,3,1,2,1,2,19,8,9,9,1,2,3,2,4,4,6,6,2,2,2,2,1,1,6,3,5,2,12,15,19,19,5,5,6,3,5,5,5,5,6,1,6,6,1,1,1,10,17,17,11,3,4,7,7,7,1,2,2,2,18,18,10,3,3,2,2,1,9,6,9,9,3,3,1,2,5,3,3,3,2,2,3,3,3,3,1,1,2,2,3,5,1,5,3,3,9,6,9,9,6,12,11,2,3,9,9,9,12,2,1,4,5,7,7,7,2,10,6,6,4,4,5,5,4,4,3,7,2,3,5,5,4,3,4,3,6,6,2,5,2,1,1,1,2,2,2,2,20,4,11}; static int rectangles_array8[2913] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,8,0,0,0,0,0,11,0,0,0,0,0,0,0,11,0,0,0,0,11,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,11,6,0,0,0,0,0,0,0,11,0,12,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,12,2,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,2,11,0,0,0,0,0,0,0,9,0,12,0,0,0,0,0,9,3,0,0,0,0,0,7,0,0,0,3,11,0,0,0,0,0,12,1,0,0,0,0,0,17,11,0,0,0,0,0,9,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,12,12,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,18,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,4,10,10,3,0,0,15,6,0,0,0,0,0,11,17,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,8,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,1,0,0,12,0,0,0,0,14,5,0,0,5,11,0,0,0,0,0,0,0,0,16,0,0,0,0,5,0,0,12,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,0,0,0,11,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,4,0,0,0,0,5,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,10,0,0,7,0,0,12,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,7,0,0,0,0,0,14,7,0,0,0,0,0,0,0,0,12,0,0,6,14,6,0,0,5,0,0,10,0,0,0,0,20,0,0,2,0,0,0,0,7,12,0,0,0,11,7,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,16,4,12,0,0,6,0,0,0,0,0,0,0,0,3,0,0,0,0,12,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,6,0,11,10,0,0,8,12,0,4,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,11,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,1,0,9,10,4,0,16,0,8,0,10,0,5,0,0,7,0,0,10,10,0,9,0,0,0,0,0,0,0,0,9,16,0,16,4,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,8,4,0,0,17,4,7,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,4,10,0,0,0,0,0,0,0,0,0,11,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,9,8,0,6,0,0,0,6,0,0,0,0,0,0,12,7,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,11,5,12,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,9,11,2,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,6,10,0,0,0,6,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,10,0,9,6,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,9,0,10,0,9,11,11,0,6,10,16,11,8,10,3,5,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,15,4,0,0,14,7,0,0,0,0,11,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,4,10,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,5,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,14,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,8,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,17,4,14,0,3,0,0,0,0,0,0,0,0,0,6,12,14,5,0,11,7,11,10,11,0,7,0,0,10,10,0,0,15,0,15,5,11,9,0,0,0,0,10,12,0,7,0,8,0,0,0,0,12,6,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,16,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,9,12,0,0,0,0,0,0,0,0,0,12,13,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,9,0,16,0,0,4,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,2,7,17,0,0,0,15,4,0,5,0,0,0,0,0,0,0,10,11,0,0,0,0,0,0,0,6,0,0,11,0,0,12,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,12,6,0,9,0,5,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,7,0,5,0,0,0,0,0,0,0,0,10,0,0,0,0,11,0,0,0,0,5,0,0,12,0,0,1,0,0,0,10,8,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,12,6,0,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,14,0,0,7,12,0,0,0,0,0,0,0,9,12,0,0,0,0,0,0,10,7,0,0,0,0,0,0,0,0,0,0,0,9,3,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,6,12,0,12,15,7,0,0,0,0,4,0,17,0,0,0,0,4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,7,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,11,5,12,0,0,0,12,0,0,0,0,0,12,0,5,0,11,7,12,0,0,0,12,0,0,0,0,0,0,0,0,0,0,13,0,0,12,13,9,4,0,0,0,15,5,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,9,0,0,11,0,11,6,11,0,11,0,0,0,0,0,0,0,6,0,0,0,0,12,11,11,5,0,0,9,6,0,0,0,0,0,13,12,7,12,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,10,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,12,14,6,10,0,0,11,0,0,0,10,0,0,0,0,0,0,16,0,0,0,0,4,0,0,3,0,0,6,0,0,0,0,19,0,19,0,0,0,0,3,9,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,13,0,0,0,0,0,0,7,8,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,6,0,11,0,0,11,1,0,0,0,0,0,0,0,10,0,12,9,16,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,13,12,4,0,0,0,0,0,0,9,0,0,0,0,0,0,0,8,14,7,0,9,0,0,0,0,19,3,0,0,11,12,0,0,20,0,7,0,0,0,0,0,0,0,0,8,0,0,20,2,0,0,0,0,7,0,0,0,7,0,0,0,7,9,0,0,7,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,15,7,0,0,0,11,0,0,12,9,5,0,0,6,0,0,0,12,0,0,1,0,0,0,0,0,0,0,4,11,0,0,6,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,13,3,10,12,0,0,6,0,0,0,0,7,0,0,0,0,0,0,0,0,12,4,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,3,13,0,12,9,0,6,14,6,0,0,0,0,0,0,0,0,5,0,6,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,12,15,5,11,9,0,0,2,0,10,11,0,12,0,0,13,0,8,11,0,0,0,0,0,0,0,0,0,12,0,0,4,8,0,0,0,10,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,5,0,0,7,10,0,6,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,12,7,0,0,10,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,5,0,0,0,14,0,0,0,0,0,0,9,0,0,0,0,10,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,10,0,0,0,0,0,0,0,0,0,10,19,3,0,0,12,0,12,7,14,5,0,0,0,0,0,0,3,0,0,0,0,0,0,0,13,7,0,11,10,12,6,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,6,0,0,0,0,0,0,0,0,6,0,0,0,0,0,10,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,11,10,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,5,15,6,3,7,16,4,13,6,0,0,0,0,0,0,0,0,0,0,11,11,0,0,18,3,0,12,0,0,0,0,0,0,0,0,0,0,9}; static int rectangles_array9[2913] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,20,0,0,0,0,0,15,0,0,0,0,0,0,0,12,0,0,0,0,11,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,11,11,0,0,0,0,0,0,0,15,0,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,8,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,15,10,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,14,14,0,0,0,0,0,0,0,8,0,11,0,0,0,0,0,21,20,0,0,0,0,0,16,0,0,0,18,9,0,0,0,0,0,5,5,0,0,0,0,0,16,17,0,0,0,0,0,19,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,10,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,9,11,14,14,0,0,18,18,0,0,0,0,0,6,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,5,0,8,15,0,0,0,0,5,5,3,0,18,18,0,0,0,0,0,0,0,0,14,0,0,0,0,14,0,0,9,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,8,0,0,0,14,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,17,0,17,17,0,0,0,0,9,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,15,0,0,19,14,0,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,8,0,0,8,19,19,0,0,9,0,0,11,0,0,0,0,11,0,0,11,0,0,0,0,6,6,0,0,0,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,5,0,0,0,15,15,11,0,0,11,0,0,0,0,0,0,0,0,14,0,0,0,0,7,0,0,15,0,0,0,0,0,6,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,11,0,0,0,15,0,15,15,0,0,7,9,0,6,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,9,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,19,0,10,10,9,0,17,0,16,0,12,0,13,0,0,16,0,0,12,12,0,11,0,0,0,0,0,0,0,0,21,16,0,16,16,0,0,0,0,0,0,0,0,15,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,7,6,0,0,17,17,13,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,3,3,0,0,0,0,0,0,0,0,0,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,14,14,0,14,0,0,0,16,0,0,0,0,0,0,20,20,2,0,7,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,11,12,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,9,9,19,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,22,11,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,5,4,0,0,0,5,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,12,0,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,13,0,13,0,15,0,13,13,17,0,15,12,19,13,21,15,12,20,0,0,0,9,0,0,14,0,0,0,0,0,0,0,0,0,6,6,0,0,14,14,0,0,0,0,19,4,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,16,14,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,17,16,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,7,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,21,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,7,7,8,0,20,0,0,0,0,0,0,0,0,0,6,16,20,20,0,20,9,15,16,16,0,16,0,0,10,9,0,0,14,0,14,14,15,15,0,0,0,0,10,5,0,8,0,8,0,0,0,0,11,11,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,7,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,21,11,0,0,0,0,4,0,0,0,0,9,10,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,21,0,18,0,0,18,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,12,15,6,0,0,0,18,6,0,18,0,0,0,0,0,0,0,5,21,0,0,0,0,0,0,0,7,0,0,12,0,0,9,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,21,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,8,9,0,19,0,9,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,9,0,7,0,0,0,0,0,0,0,0,15,0,0,0,0,7,0,0,0,0,9,0,0,11,0,0,21,0,0,0,21,21,0,0,0,0,0,0,0,0,7,0,0,18,0,0,0,10,9,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,9,0,0,9,11,0,0,0,0,0,0,0,9,8,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,10,13,13,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,9,21,0,12,15,15,0,0,0,0,4,0,7,0,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,21,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,9,11,2,0,0,0,8,0,0,0,0,0,18,0,17,0,12,12,12,0,0,0,15,0,0,0,0,0,0,0,0,0,0,12,0,0,14,12,12,9,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,11,0,0,11,0,11,20,11,0,11,0,0,0,0,0,0,0,2,0,0,0,0,15,11,11,12,0,0,4,11,0,0,0,0,0,8,15,16,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,11,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,18,19,19,21,0,0,9,0,0,0,15,0,0,0,0,0,0,5,0,0,0,0,5,0,0,5,0,0,12,0,0,0,0,13,0,13,0,0,0,0,14,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,10,0,0,0,0,0,0,15,0,0,0,0,0,0,15,21,0,0,0,0,0,0,0,0,0,0,17,9,0,0,0,0,0,0,0,13,0,10,0,0,14,15,0,0,0,0,0,0,0,20,0,16,16,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,16,15,0,0,0,0,0,0,21,0,0,0,0,0,0,0,15,15,15,0,22,0,0,0,0,13,13,0,0,15,16,0,0,14,0,7,0,0,0,0,0,0,0,0,20,0,0,14,14,0,0,0,0,12,0,0,0,11,0,0,0,11,11,0,0,10,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,12,12,0,0,0,11,0,0,12,12,13,0,0,14,0,0,0,17,0,0,11,0,0,0,0,0,0,0,15,15,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,11,0,0,0,0,19,7,6,6,0,0,11,0,0,0,0,10,0,0,0,0,0,0,0,0,3,9,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,12,0,12,12,0,12,14,14,0,0,0,0,0,0,0,0,9,0,14,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,15,19,19,5,5,0,0,11,0,13,13,0,16,0,0,8,0,13,13,0,0,0,0,0,0,0,0,0,12,0,0,9,11,0,0,0,9,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,11,0,0,15,15,0,8,0,0,0,0,14,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,13,12,0,0,11,16,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,0,0,0,5,0,0,0,0,0,0,21,0,0,0,0,5,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,15,0,0,0,0,0,0,0,0,0,14,15,15,0,0,21,0,20,20,6,6,0,0,0,0,0,0,11,0,0,0,0,0,0,0,19,19,0,14,10,9,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,12,0,0,0,0,0,15,0,0,0,0,0,14,0,0,0,0,0,0,0,7,0,0,0,0,22,0,0,0,0,0,9,15,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,7,8,8,22,10,14,14,17,17,0,0,0,0,0,0,0,0,0,0,18,21,0,0,18,18,0,11,0,0,0,0,0,0,0,0,0,0,12}; static int rectangles_array10[2913] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,6,0,0,0,0,0,8,0,0,0,0,0,0,0,10,0,0,0,0,4,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,6,6,0,0,0,0,0,0,0,9,0,7,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,5,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,12,11,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,11,11,0,0,0,0,0,0,0,8,0,12,0,0,0,0,0,7,9,0,0,0,0,0,5,0,0,0,9,7,0,0,0,0,0,12,11,0,0,0,0,0,3,10,0,0,0,0,0,6,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,3,11,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,8,9,4,3,0,0,3,3,0,0,0,0,0,5,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,11,0,12,9,0,0,0,0,5,5,12,0,8,8,0,0,0,0,0,0,0,0,3,0,0,0,0,3,0,0,5,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,5,0,0,0,6,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,4,0,4,4,0,0,0,0,8,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,0,0,4,12,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,7,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,6,0,0,6,4,4,0,0,8,0,0,7,0,0,0,0,2,0,0,2,0,0,0,0,6,12,0,0,0,9,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,12,0,0,0,4,4,6,0,0,6,0,0,0,0,0,0,0,0,10,0,0,0,0,5,0,0,4,0,0,0,0,0,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,8,0,3,8,0,0,4,6,0,4,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,8,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,11,0,5,5,8,0,4,0,4,0,4,0,7,0,0,6,0,0,4,4,0,8,0,0,0,0,0,0,0,0,6,4,0,4,4,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,4,3,0,0,3,3,7,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,10,10,0,0,0,0,0,0,0,0,0,4,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,7,7,0,3,0,0,0,3,0,0,0,0,0,0,5,5,12,0,12,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,6,6,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,6,7,7,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,7,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,6,6,0,0,0,6,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,10,0,3,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,4,0,2,0,4,4,3,0,6,9,4,11,6,10,10,5,0,0,0,11,0,0,5,0,0,0,0,0,0,0,0,0,4,4,0,0,3,3,0,0,0,0,6,12,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,9,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,4,4,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,3,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,6,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,3,3,3,0,9,0,0,0,0,0,0,0,0,0,6,4,5,5,0,5,6,2,3,3,0,3,0,0,4,8,0,0,4,0,4,4,4,4,0,0,0,0,4,12,0,6,0,4,0,0,0,0,6,6,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,6,10,0,0,0,0,12,0,0,0,0,7,4,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,6,0,4,0,0,4,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,11,4,3,0,0,0,4,3,0,4,0,0,0,0,0,0,0,5,6,0,0,0,0,0,0,0,9,0,0,11,0,0,6,6,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,6,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,8,7,0,6,0,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,6,0,4,0,0,0,0,0,0,0,0,2,0,0,0,0,4,0,0,0,0,8,0,0,12,0,0,11,0,0,0,6,6,0,0,0,0,0,0,0,0,12,0,0,3,0,0,0,5,7,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,3,0,0,3,6,0,0,0,0,0,0,0,5,8,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,9,10,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,6,10,0,9,2,2,0,0,0,0,8,0,3,0,0,0,0,3,0,0,0,6,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,6,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,8,8,12,0,0,0,4,0,0,0,0,0,12,0,4,0,5,7,5,0,0,0,11,0,0,0,0,0,0,0,0,0,0,2,0,0,9,2,2,10,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,5,0,0,2,0,2,5,2,0,2,0,0,0,0,0,0,0,9,0,0,0,0,2,2,2,9,0,0,9,7,0,0,0,0,0,3,2,5,4,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,3,4,4,6,0,0,7,0,0,0,3,0,0,0,0,0,0,4,0,0,0,0,4,0,0,9,0,0,6,0,0,0,0,2,0,2,0,0,0,0,2,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,0,0,0,0,0,0,4,0,0,0,0,0,0,4,8,0,0,0,0,0,0,0,0,0,0,3,12,0,0,0,0,0,0,0,6,0,6,0,0,11,11,0,0,0,0,0,0,0,5,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,5,9,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,3,3,0,9,0,0,0,0,2,2,0,0,2,5,0,0,2,0,5,0,0,0,0,0,0,0,0,5,0,0,2,2,0,0,0,0,7,0,0,0,8,0,0,0,8,8,0,0,5,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,2,2,0,0,0,6,0,0,3,3,7,0,0,2,0,0,0,3,0,0,11,0,0,0,0,0,0,0,9,9,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,4,0,0,0,0,5,3,3,5,0,0,9,0,0,0,0,4,0,0,0,0,0,0,0,0,6,9,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,0,6,2,0,6,4,4,0,0,0,0,0,0,0,0,7,0,6,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,3,4,4,4,4,0,0,10,0,4,8,0,5,0,0,5,0,5,5,0,0,0,0,0,0,0,0,0,9,0,0,9,6,0,0,0,10,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,4,0,0,7,7,0,3,0,0,0,0,12,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,8,5,0,0,6,4,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,8,0,0,0,5,0,0,0,0,0,0,6,0,0,0,0,6,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,3,0,0,0,0,0,0,0,0,0,6,2,2,0,0,6,0,5,5,5,5,0,0,0,0,0,0,9,0,0,0,0,0,0,0,4,4,0,6,4,6,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,8,0,0,0,0,0,2,0,0,0,0,0,4,0,0,0,0,0,0,0,12,0,0,0,0,11,0,0,0,0,0,9,2,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,3,3,3,9,2,4,4,5,5,0,0,0,0,0,0,0,0,0,0,5,11,0,0,3,3,0,11,0,0,0,0,0,0,0,0,0,0,3}; static int rectangles_array11[2913] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,3,0,0,0,0,0,3,0,0,0,0,0,0,0,7,0,0,0,0,5,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,3,0,0,0,0,0,0,0,6,0,5,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,8,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,6,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,2,2,0,0,0,0,0,0,0,3,0,7,0,0,0,0,0,3,2,0,0,0,0,0,7,0,0,0,2,3,0,0,0,0,0,3,4,0,0,0,0,0,8,2,0,0,0,0,0,5,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,6,8,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,11,7,10,0,0,6,6,0,0,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,8,2,0,0,0,0,5,5,2,0,3,3,0,0,0,0,0,0,0,0,7,0,0,0,0,7,0,0,7,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,8,0,0,0,3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,7,0,7,7,0,0,0,0,4,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,9,0,0,5,2,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,3,0,0,3,5,5,0,0,3,0,0,6,0,0,0,0,9,0,0,9,0,0,0,0,6,3,0,0,0,4,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,5,0,0,0,9,9,6,0,0,6,0,0,0,0,0,0,0,0,4,0,0,0,0,7,0,0,5,0,0,0,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,3,0,7,3,0,0,5,3,0,6,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,3,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,0,5,5,3,0,7,0,6,0,8,0,7,0,0,5,0,0,8,8,0,6,0,0,0,0,0,0,0,0,3,8,0,8,8,0,0,0,0,0,0,0,0,4,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,6,6,0,0,7,7,7,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,0,0,0,0,0,0,0,0,0,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,5,5,0,10,0,0,0,8,0,0,0,0,0,0,4,4,2,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,6,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,4,3,3,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,5,3,0,0,0,3,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,2,0,6,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,9,0,5,5,7,0,3,3,5,4,3,9,6,4,0,0,0,2,0,0,4,0,0,0,0,0,0,0,0,0,6,6,0,0,6,6,0,0,0,0,4,2,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,2,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,7,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,7,7,8,0,3,0,0,0,0,0,0,0,0,0,6,6,4,4,0,4,3,9,7,7,0,8,0,0,9,4,0,0,10,0,10,10,7,7,0,0,0,0,8,3,0,6,0,5,0,0,0,0,3,3,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,3,3,0,0,0,0,3,0,0,0,0,3,5,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,3,0,5,0,0,5,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,7,5,6,0,0,0,5,6,0,5,0,0,0,0,0,0,0,4,3,0,0,0,0,0,0,0,3,0,0,8,0,0,9,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,8,3,0,4,0,3,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,5,0,5,0,0,0,0,0,0,0,0,9,0,0,0,0,5,0,0,0,0,3,0,0,11,0,0,2,0,0,0,3,3,0,0,0,0,0,0,0,0,2,0,0,6,0,0,0,4,3,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,6,0,0,6,3,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,2,3,3,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,3,2,0,7,9,9,0,0,0,0,3,0,6,0,0,0,0,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,3,7,2,0,0,0,5,0,0,0,0,0,2,0,7,0,12,7,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,11,0,0,2,11,11,2,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,5,0,0,10,0,10,4,10,0,10,0,0,0,0,0,0,0,2,0,0,0,0,9,10,10,3,0,0,4,6,0,0,0,0,0,6,9,8,6,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,10,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,6,5,5,3,0,0,3,0,0,0,7,0,0,0,0,0,0,5,0,0,0,0,5,0,0,5,0,0,3,0,0,0,0,9,0,9,0,0,0,0,9,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,6,0,0,0,0,0,0,5,0,0,0,0,0,0,5,3,0,0,0,0,0,0,0,0,0,0,6,4,0,0,0,0,0,0,0,4,0,8,0,0,2,3,0,0,0,0,0,0,0,4,0,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,5,2,0,0,0,0,0,0,3,0,0,0,0,0,0,0,9,6,6,0,2,0,0,0,0,11,11,0,0,9,7,0,0,10,0,7,0,0,0,0,0,0,0,0,4,0,0,10,10,0,0,0,0,10,0,0,0,10,0,0,0,10,10,0,0,4,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,11,11,0,0,0,3,0,0,6,6,4,0,0,9,0,0,0,7,0,0,7,0,0,0,0,0,0,0,2,2,0,0,12,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,5,0,0,0,0,4,6,6,6,0,0,2,0,0,0,0,10,0,0,0,0,0,0,0,0,3,2,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,9,0,3,9,0,3,10,10,0,0,0,0,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,9,5,5,5,5,0,0,3,0,8,4,0,4,0,0,4,0,6,6,0,0,0,0,0,0,0,0,0,3,0,0,2,10,0,0,0,3,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,5,0,0,7,7,0,6,0,0,0,0,5,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,10,6,0,0,4,5,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,0,0,4,0,0,0,0,0,0,3,0,0,0,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,6,0,0,0,0,0,0,0,0,0,8,9,9,0,0,3,0,4,4,6,6,0,0,0,0,0,0,6,0,0,0,0,0,0,0,5,5,0,3,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,3,0,0,0,0,0,9,0,0,0,0,0,5,0,0,0,0,0,0,0,3,0,0,0,0,2,0,0,0,0,0,3,9,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,7,7,7,2,10,6,6,4,4,0,0,0,0,0,0,0,0,0,0,4,3,0,0,6,6,0,5,0,0,0,0,0,0,0,0,0,0,11}; static int stages_thresh_array[25] = { -1290,-1275,-1191,-1140,-1122,-1057,-1029,-994,-983,-933,-990,-951,-912,-947,-877,-899,-920,-868,-829,-821,-839,-849,-833,-862,-766 }; ================================================ FILE: face-detection/src/sdsoc/haar_mapping.h ================================================ static int bank_mapping[ROWS * COLS] = {8, 13, 20, 14, 21, 12, 10, 1, 15, 2, 14, 17, 16, 20, 9, 6, 19, 14, 1, 0, 2, 18, 11, 5, 4, 15, 16, 13, 2, 0, 15, 24, 21, 25, 4, 14, 27, 23, 7, 12, 10, 3, 6, 18, 20, 11, 9, 4, 2, 16, 23, 25, 0, 5, 12, 6, 3, 15, 4, 13, 19, 12, 18, 20, 25, 1, 14, 17, 16, 19, 26, 22, 1, 21, 2, 12, 12, 17, 25, 3, 19, 21, 7, 16, 24, 22, 25, 13, 23, 26, 20, 27, 22, 7, 5, 5, 3, 2, 27, 14, 0, 5, 11, 10, 17, 4, 12, 27, 21, 3, 25, 20, 19, 24, 23, 26, 24, 19, 13, 9, 15, 16, 6, 15, 22, 17, 20, 26, 4, 24, 25, 13, 0, 22, 23, 7, 11, 11, 6, 5, 12, 3, 26, 22, 18, 18, 10, 9, 1, 1, 9, 9, 14, 1, 20, 3, 11, 11, 24, 7, 17, 0, 4, 9, 1, 12, 22, 13, 2, 15, 19, 5, 21, 10, 10, 13, 27, 6, 14, 4, 5, 20, 24, 11, 11, 9, 19, 2, 2, 23, 21, 1, 15, 0, 21, 7, 18, 18, 9, 18, 20, 3, 27, 17, 6, 23, 19, 17, 1, 12, 11, 22, 7, 2, 23, 6, 25, 15, 4, 16, 0, 11, 5, 19, 21, 22, 4, 24, 6, 1, 20, 6, 10, 2, 16, 11, 23, 7, 7, 0, 1, 15, 9, 17, 17, 12, 12, 13, 14, 3, 6, 1, 16, 0, 25, 19, 1, 20, 7, 14, 2, 2, 9, 3, 17, 16, 21, 5, 10, 7, 14, 15, 26, 23, 15, 5, 24, 2, 27, 10, 1, 16, 16, 7, 0, 15, 9, 6, 19, 19, 14, 11, 18, 3, 20, 20, 20, 23, 25, 17, 16, 18, 9, 2, 22, 22, 15, 6, 6, 0, 7, 5, 5, 16, 2, 9, 12, 18, 21, 13, 25, 14, 3, 17, 11, 19, 19, 15, 7, 2, 18, 18, 18, 5, 13, 13, 14, 14, 21, 20, 9, 10, 16, 9, 11, 19, 4, 12, 26, 23, 18, 22, 22, 11, 23, 7, 2, 19, 9, 9, 21, 14, 0, 18, 4, 5, 6, 17, 15, 4, 26, 13, 19, 20, 10, 2, 2, 11, 16, 26, 24, 18, 14, 3, 1, 0, 10, 13, 4, 16, 5, 6, 21, 14, 3, 13, 0, 5, 11, 20, 17, 17, 25, 15, 24, 10, 4, 22, 3, 5, 5, 6, 12, 12, 13, 3, 14, 11, 11, 25, 10, 7, 20, 22, 6, 4, 5, 7, 3, 9, 26, 22, 23, 18, 15, 6, 20, 21, 25, 10, 4, 17, 13, 5, 12, 3, 25, 0, 0, 0, 1, 0, 2, 4, 11, 25, 17, 23, 4, 3, 24, 26, 20, 5, 12, 7, 0, 27, 6, 18, 24, 10, 22, 14, 15, 21, 15, 23, 1, 3, 17, 9, 27, 16, 18, 26, 4, 19, 10, 9, 12, 25, 0, 24, 24, 22, 16, 6, 23, 2, 25, 13, 14, 24, 15, 21, 1, 9, 19, 10, 4, 11, 23, 26, 24, 22, 16, 1, 20, 2, 9, 19, 18, 7, 11, 9, 10, 1, 17, 2, 12, 0, 3, 20, 12, 12, 2, 5, 15, 6, 11, 26, 1, 19, 13, 14, 27, 7, 13, 22, 26, 2, 4, 22, 1, 6, 27, 7, 22, 11, 12, 18, 0, 15, 3, 13, 24, 2, 15, 27, 7, 5, 9, 1, 21, 3, 1, 9, 16, 17, 24, 19, 16, 26, 11, 20, 12, 18, 22, 17, 25, 9, 27, 7, 4, 16, 15, 2, 3, 5, 14, 21, 24, 13, 13, 23, 7, 26, 5, 6, 20, 3, 10, 11, 22, 2, 23, 24, 12, 17, 27, 1, 25, 18, 18}; static int offset_mapping[ROWS * COLS] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 2, 1, 2, 0, 1, 0, 1, 3, 0, 0, 0, 1, 1, 0, 1, 1, 2, 1, 1, 2, 3, 2, 1, 1, 2, 1, 2, 2, 1, 3, 3, 2, 1, 3, 2, 3, 2, 2, 4, 1, 3, 2, 0, 0, 3, 2, 4, 4, 5, 2, 3, 2, 3, 3, 1, 4, 1, 1, 4, 3, 2, 1, 4, 1, 2, 2, 2, 3, 3, 5, 2, 5, 3, 4, 2, 2, 3, 4, 6, 3, 4, 4, 5, 5, 4, 2, 3, 2, 3, 5, 4, 2, 4, 5, 3, 5, 3, 4, 6, 3, 5, 4, 6, 5, 4, 4, 4, 3, 3, 4, 4, 5, 7, 5, 4, 5, 3, 4, 3, 3, 4, 5, 4, 5, 6, 6, 7, 6, 5, 6, 5, 4, 5, 5, 6, 6, 7, 8, 6, 6, 6, 6, 6, 6, 5, 4, 5, 7, 4, 5, 7, 7, 7, 8, 6, 7, 8, 7, 7, 7, 8, 5, 6, 8, 7, 6, 7, 5, 5, 6, 8, 7, 9, 7, 5, 6, 6, 6, 8, 7, 9, 9, 9, 7, 6, 9, 7, 7, 7, 8, 8, 6, 7, 10, 8, 9, 8, 8, 9, 7, 8, 10, 10, 9, 6, 10, 7, 11, 8, 7, 8, 8, 11, 9, 9, 8, 9, 10, 11, 8, 8, 8, 10, 12, 8, 9, 8, 10, 13, 11, 9, 9, 11, 12, 10, 9, 10, 9, 9, 9, 7, 10, 10, 10, 5, 9, 11, 10, 8, 13, 6, 8, 14, 10, 11, 11, 10, 12, 11, 11, 11, 12, 11, 12, 8, 10, 12, 13, 14, 10, 9, 11, 12, 9, 12, 14, 9, 10, 13, 12, 13, 11, 12, 11, 12, 13, 15, 13, 12, 10, 10, 9, 10, 12, 11, 12, 13, 13, 14, 14, 13, 16, 11, 12, 13, 13, 10, 11, 13, 14, 11, 15, 14, 9, 14, 15, 14, 15, 10, 13, 6, 11, 14, 11, 12, 15, 12, 14, 17, 16, 16, 17, 12, 15, 12, 15, 11, 14, 14, 13, 15, 12, 7, 12, 17, 16, 10, 18, 19, 16, 15, 8, 9, 16, 16, 12, 15, 13, 11, 13, 13, 16, 15, 15, 13, 17, 13, 14, 14, 16, 17, 17, 14, 15, 11, 16, 10, 12, 14, 13, 14, 17, 18, 16, 14, 15, 15, 15, 18, 18, 19, 12, 13, 15, 18, 14, 17, 15, 19, 16, 16, 18, 9, 15, 13, 17, 17, 18, 19, 14, 13, 14, 16, 16, 16, 20, 16, 17, 14, 15, 16, 17, 16, 18, 20, 17, 20, 15, 17, 14, 18, 18, 11, 10, 20, 21, 17, 17, 19, 7, 19, 18, 12, 15, 16, 19, 18, 15, 19, 15, 17, 19, 18, 19, 8, 17, 19, 11, 19, 18, 16, 20, 18, 16, 20, 13, 14, 17, 18, 20, 16, 21, 17, 17, 20, 15, 20, 16, 18, 21, 19, 17, 20, 21, 17, 12, 16, 18, 19, 19, 21, 22, 22, 20, 20, 18, 22, 23, 18, 20, 19, 23, 19, 21, 20, 22, 20, 21, 24, 22, 21, 21, 23, 13, 21, 21, 18, 21, 9, 19, 19, 19, 14, 25, 21, 20, 22, 22, 10, 20, 21, 24, 22, 21, 22, 22, 21, 20, 17, 26, 23, 11, 21, 23, 24, 23, 17, 22, 24, 25, 20, 20, 18, 22, 21, 15, 25, 23, 23, 22, 22, 21, 18, 26, 12, 22, 22, 22, 24, 27, 23, 24, 22, 18, 19, 21, 22, 18, 23, 16, 25, 23, 24, 24, 19, 26, 23, 28, 19, 20, 24, 22, 13, 25, 19, 23, 24}; ================================================ FILE: face-detection/src/sw/face_detect_sw.cpp ================================================ /*===============================================================*/ /* */ /* face_detect-sw.cpp */ /* */ /* Software version for face detection. */ /* */ /*===============================================================*/ #include "face_detect_sw.h" // function declarations void integralImages( int height, int width, unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH], int Sum[IMAGE_HEIGHT][IMAGE_WIDTH], int Sqsum[IMAGE_HEIGHT][IMAGE_WIDTH]); void imageScaler ( int src_height, int src_width, unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH], int dest_height, int dest_width, unsigned char IMG1_data[IMAGE_HEIGHT][IMAGE_WIDTH] ); void processImage ( float factor, int sum_row, int sum_col, int *AllCandidates_x, int *AllCandidates_y, int *AllCandidates_w, int *AllCandidates_h, int *AllCandidates_size, unsigned char IMG1_data[IMAGE_HEIGHT][IMAGE_WIDTH], MySize winSize ); int cascadeClassifier ( int SUM1_data[IMAGE_HEIGHT][IMAGE_WIDTH], int SQSUM1_data[IMAGE_HEIGHT][IMAGE_WIDTH], MyPoint pt ); int weakClassifier ( int stddev, int coord[12], int haar_counter, int w_id ); void groupRectangles ( MyRect *rectList, int *rectList_size, int groupThreshold, float eps ); unsigned int int_sqrt ( unsigned int value ); inline int myRound ( float value ) { return (int)(value + (value >= 0 ? 0.5 : -0.5)); } // top-level function void face_detect_sw ( unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH], int result_x[RESULT_SIZE], int result_y[RESULT_SIZE], int result_w[RESULT_SIZE], int result_h[RESULT_SIZE], int *result_size ) { int i, j; *result_size = 0; float scaleFactor = 1.2; unsigned char IMG1_data[IMAGE_HEIGHT][IMAGE_WIDTH]; float factor; int height,width; MySize winSize0; winSize0.width = 24; winSize0.height= 24; factor = scaleFactor; // Loop for image pyramid formation L1: while ( IMAGE_WIDTH/factor > WINDOW_SIZE && IMAGE_HEIGHT/factor > WINDOW_SIZE ) { /* size of the window scaled up */ MySize winSize = { myRound(winSize0.width*factor), myRound(winSize0.height*factor) }; /* size of the image scaled down */ MySize sz = { (IMAGE_WIDTH/factor), (IMAGE_HEIGHT/factor) }; height = sz.height; width = sz.width; imageScaler ( IMAGE_HEIGHT, IMAGE_WIDTH, Data, height, width, IMG1_data ); processImage ( factor, height, width, result_x, result_y, result_w, result_h, result_size, IMG1_data, winSize ); factor *= scaleFactor; } } void processImage ( float factor, int sum_row, int sum_col, int *AllCandidates_x, int *AllCandidates_y, int *AllCandidates_w, int *AllCandidates_h, int *AllCandidates_size, unsigned char IMG1_data[IMAGE_HEIGHT][IMAGE_WIDTH], MySize winSize ) { MyPoint p; int result; int step; int u,v; int x,y,i,j,k; int SUM1_data[IMAGE_HEIGHT][IMAGE_WIDTH], SQSUM1_data[IMAGE_HEIGHT][IMAGE_WIDTH]; integralImages( sum_row, sum_col ,IMG1_data, SUM1_data, SQSUM1_data ); Pixely: for( y = 0; y < sum_row - WINDOW_SIZE + 1; y++ ){ Pixelx: for ( x = 0; x < sum_col - WINDOW_SIZE + 1; x++ ){ p.x = x; p.y = y; result = cascadeClassifier ( SUM1_data, SQSUM1_data, p ); if ( result > 0 ) { MyRect r = {myRound(p.x*factor), myRound(p.y*factor), winSize.width, winSize.height}; AllCandidates_x[*AllCandidates_size]=r.x; AllCandidates_y[*AllCandidates_size]=r.y; AllCandidates_w[*AllCandidates_size]=r.width; AllCandidates_h[*AllCandidates_size]=r.height; *AllCandidates_size=*AllCandidates_size+1; } } } } int cascadeClassifier ( int SUM1_data[IMAGE_HEIGHT][IMAGE_WIDTH], int SQSUM1_data[IMAGE_HEIGHT][IMAGE_WIDTH], MyPoint pt ) { int i, j, k; int mean; int stddev = 0; int haar_counter = 0; int w_index = 0; int r_index = 0; int stage_sum=0; #include "haar_dataRcc_with_partitioning.h" static int coord[12]; MyRect equRect; equRect.x = equRect.y = 0; equRect.width = WINDOW_SIZE; equRect.height = WINDOW_SIZE; stddev = SQSUM1_data[pt.y][pt.x] - SQSUM1_data[pt.y][pt.x+WINDOW_SIZE-1] - SQSUM1_data[pt.y+WINDOW_SIZE-1][pt.x] + SQSUM1_data[pt.y+WINDOW_SIZE-1][pt.x+WINDOW_SIZE-1]; mean = SUM1_data[pt.y][pt.x] - SUM1_data[pt.y][pt.x+WINDOW_SIZE-1] - SUM1_data[pt.y+WINDOW_SIZE-1][pt.x] + SUM1_data[pt.y+WINDOW_SIZE-1][pt.x+WINDOW_SIZE-1]; stddev = (stddev*(WINDOW_SIZE-1)*(WINDOW_SIZE-1)); stddev = stddev - mean*mean; if( stddev > 0 ) { stddev = int_sqrt(stddev); } else{ stddev = 1; } MyRect tr0,tr1,tr2; int r_id; int w_id; int s; Stages: for ( i = 0; i < 25; i++ ) { Filters: for ( j = 0; j < stages_array[i] ; j++ ){ if ( j == 0 ) { stage_sum = 0; s=0; } r_id = r_index; w_id = w_index; tr0.x = pt.x + rectangles_array0[haar_counter]; tr0.width = rectangles_array2[haar_counter]; tr0.y = pt.y + rectangles_array1[haar_counter]; tr0.height = rectangles_array3[haar_counter]; tr1.x = pt.x + rectangles_array4[haar_counter]; tr1.width = rectangles_array6[haar_counter]; tr1.y = pt.y + rectangles_array5[haar_counter]; tr1.height = rectangles_array7[haar_counter]; tr2.x = rectangles_array8[haar_counter]; tr2.width = rectangles_array10[haar_counter]; tr2.y = rectangles_array9[haar_counter]; tr2.height = rectangles_array11[haar_counter]; coord[0] = SUM1_data[tr0.y][tr0.x]; coord[1] = SUM1_data[tr0.y][tr0.x+tr0.width]; coord[2] = SUM1_data[tr0.y+tr0.height][tr0.x]; coord[3] = SUM1_data[tr0.y+tr0.height][tr0.x+tr0.width]; coord[4] = SUM1_data[tr1.y][tr1.x]; coord[5] = SUM1_data[tr1.y][tr1.x+tr1.width]; coord[6] = SUM1_data[tr1.y+tr1.height][tr1.x]; coord[7] = SUM1_data[tr1.y+tr1.height][tr1.x+tr1.width]; if (!(tr2.x ==0 && tr2.width==0 && tr2.y==0 && tr2.height==0 ) && tr2.width!=0 && tr2.height!=0) { coord[8] = SUM1_data[pt.y + tr2.y][pt.x + tr2.x]; coord[9] = SUM1_data[pt.y + tr2.y][pt.x + tr2.x+tr2.width]; coord[10] = SUM1_data[pt.y + tr2.y+tr2.height][pt.x + tr2.x]; coord[11] = SUM1_data[pt.y + tr2.y+tr2.height][pt.x + tr2.x+tr2.width]; } else { coord[8] = 0; coord[9] = 0; coord[10] = 0; coord[11] = 0; } s = weakClassifier ( stddev, coord, haar_counter, w_id ); stage_sum = stage_sum + s; haar_counter = haar_counter+1; w_index = w_index+3; r_index = r_index+12; } /* end of j loop */ if( stage_sum < 0.4*stages_thresh_array[i] ){ return -i; } } /* end of i loop */ return 1; } int weakClassifier ( int stddev, int coord[12], int haar_counter, int w_id ) { #include "haar_dataEWC_with_partitioning.h" int t = tree_thresh_array[haar_counter] * stddev; int sum0 =0; int sum1 =0; int sum2 =0; int final_sum =0; int return_value; sum0 = (coord[0] - coord[1] - coord[2] + coord[3]) * weights_array0[haar_counter];//[w_id] area of 1st filter block (rectangle) multiplied by its weigh sum1 = (coord[4] - coord[5] - coord[6] + coord[7]) * weights_array1[haar_counter];//[w_id+1]; sum2 = (coord[8] - coord[9] - coord[10] + coord[11]) * weights_array2[haar_counter];//[w_id+2]; final_sum = sum0+sum1+sum2; if(final_sum >= t) { return_value = alpha2_array[haar_counter]; } else { return_value = alpha1_array[haar_counter]; } return return_value ; } void integralImages( int height, int width, unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH], int Sum[IMAGE_HEIGHT][IMAGE_WIDTH], int Sqsum[IMAGE_HEIGHT][IMAGE_WIDTH]) { int x, y, s, sq, t, tq; unsigned char it; for( y = 0; y < height; y++) { s = 0; sq = 0; /* loop over the number of columns */ for( x = 0; x < width; x ++) { it = Data[y][x]; /* sum of the current row (integer)*/ s += it; sq += it*it; t = s; tq = sq; if (y != 0) { t += Sum[(y-1)][x]; tq += Sqsum[(y-1)][x]; } Sum[y][x]=t; Sqsum[y][x]=tq; } } } /*********************************************************** * This function downsample an image using nearest neighbor * It is used to build the image pyramid **********************************************************/ void imageScaler ( int src_height, int src_width, unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH], int dest_height, int dest_width, unsigned char IMG1_data[IMAGE_HEIGHT][IMAGE_WIDTH] ) { int y; int j; int x; int i; unsigned char* t; unsigned char* p; int w1 = src_width; int h1 = src_height; int w2 = dest_width; int h2 = dest_height; int rat = 0; int x_ratio = (int)((w1<<16)/w2) +1; int y_ratio = (int)((h1<<16)/h2) +1; nearestNeighborL1: for ( i = 0 ; i < IMAGE_HEIGHT ; i++ ) { nearestNeighborL1_1: for (j=0;j < IMAGE_WIDTH ;j++) { if ( j < w2 && i < h2 ) { IMG1_data[i][j] = Data[(i*y_ratio)>>16][(j*x_ratio)>>16]; } } } } unsigned int int_sqrt ( unsigned int value ) { int i; unsigned int a = 0, b = 0, c = 0; for ( i = 0 ; i < (32 >> 1) ; i++ ) { c<<= 2; #define UPPERBITS(value) (value>>30) c += UPPERBITS(value); #undef UPPERBITS value <<= 2; a <<= 1; b = (a<<1) | 1; if ( c >= b ) { c -= b; a++; } } return a; } int max ( int a, int b ) { if ( a > b ) return a; else return b; } int min ( int a, int b ) { if ( a < b ) return a; else return b; } ================================================ FILE: face-detection/src/sw/face_detect_sw.h ================================================ /*===============================================================*/ /* */ /* face_detect_sw.h */ /* */ /* Software version for face detection. */ /* */ /*===============================================================*/ #ifndef __FACE_DETECT_SW_H__ #define __FACE_DETECT_SW_H__ #include "../host/typedefs.h" void face_detect_sw(unsigned char Data[IMAGE_HEIGHT][IMAGE_WIDTH], int _result_x[RESULT_SIZE], int _result_y[RESULT_SIZE], int _result_w[RESULT_SIZE], int _result_h[RESULT_SIZE], int *result_size); #endif ================================================ FILE: face-detection/src/sw/haar_dataEWC_with_partitioning.h ================================================ static int weights_array0[2913] = { -4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096,-4096}; static int weights_array1[2913] = { 12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,12288,8192,8192,12288,8192,12288,12288,8192,8192,12288,8192,12288,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,12288,12288,8192,8192,12288,8192,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,8192,12288,8192,8192,8192,8192,8192,8192,12288,8192,8192,12288,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,12288,8192,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,12288,12288,8192,12288,8192,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,8192,8192,12288,12288,8192,8192,12288,12288,8192,8192,12288,12288,8192,8192,12288,12288,12288,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,12288,12288,8192,12288,12288,8192,12288,12288,12288,8192,8192,8192,8192,12288,12288,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,8192,12288,12288,12288,8192,8192,8192,8192,12288,8192,12288,8192,8192,12288,12288,8192,12288,12288,12288,8192,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,12288,8192,8192,8192,12288,8192,12288,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,8192,12288,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,12288,8192,12288,12288,12288,8192,12288,12288,8192,8192,12288,12288,12288,8192,12288,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,8192,8192,12288,12288,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,8192,12288,8192,8192,12288,8192,12288,12288,12288,12288,12288,8192,12288,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,12288,12288,12288,8192,12288,8192,12288,12288,12288,12288,8192,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,8192,12288,12288,12288,8192,8192,8192,8192,8192,12288,8192,8192,12288,12288,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,12288,12288,8192,8192,12288,12288,8192,8192,8192,12288,12288,8192,8192,8192,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,12288,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,8192,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,8192,8192,8192,12288,12288,8192,12288,12288,8192,8192,8192,12288,12288,12288,8192,12288,12288,8192,12288,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,12288,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,12288,8192,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,12288,12288,8192,12288,12288,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,12288,12288,8192,8192,12288,12288,8192,12288,8192,8192,8192,8192,8192,8192,12288,8192,12288,8192,12288,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,12288,8192,8192,12288,8192,12288,8192,8192,8192,8192,8192,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,12288,8192,12288,8192,8192,12288,12288,8192,8192,12288,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,12288,8192,12288,12288,8192,8192,8192,12288,8192,8192,8192,12288,12288,8192,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,12288,8192,8192,12288,12288,12288,12288,8192,12288,8192,8192,8192,12288,12288,8192,8192,8192,12288,12288,12288,8192,8192,8192,8192,12288,8192,12288,8192,12288,8192,12288,12288,8192,12288,12288,12288,12288,8192,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,8192,12288,8192,12288,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,12288,8192,12288,12288,12288,12288,8192,12288,8192,8192,12288,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,12288,8192,12288,8192,12288,8192,8192,8192,12288,8192,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,8192,8192,12288,8192,12288,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,12288,8192,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,8192,8192,12288,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,12288,8192,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,8192,8192,12288,8192,12288,8192,12288,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,12288,12288,8192,8192,12288,12288,8192,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,12288,8192,12288,8192,12288,8192,12288,12288,8192,8192,12288,12288,8192,12288,12288,8192,12288,12288,8192,12288,8192,12288,12288,8192,8192,12288,8192,12288,12288,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,8192,8192,12288,12288,12288,8192,8192,12288,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,12288,12288,8192,12288,8192,12288,8192,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,8192,12288,8192,12288,8192,8192,12288,12288,12288,8192,8192,8192,12288,12288,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,8192,8192,8192,8192,12288,12288,8192,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,8192,12288,12288,8192,8192,8192,12288,12288,8192,12288,8192,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,12288,8192,8192,8192,12288,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,8192,8192,12288,8192,12288,8192,12288,8192,8192,12288,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,8192,12288,12288,8192,12288,8192,12288,8192,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,8192,12288,8192,8192,12288,8192,8192,8192,8192,12288,8192,12288,12288,8192,12288,8192,8192,12288,8192,12288,8192,8192,12288,12288,12288,8192,12288,12288,12288,12288,8192,12288,12288,8192,12288,12288,12288,8192,8192,12288,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,8192,8192,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,12288,12288,8192,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,12288,8192,12288,8192,12288,8192,8192,12288,8192,12288,8192,12288,8192,12288,8192,8192,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,12288,12288,8192,8192,12288,12288,8192,8192,8192,12288,8192,8192,12288,8192,8192,8192,12288,8192,12288,8192,12288,8192,12288,12288,8192,8192,12288,8192,8192,8192,8192,8192,12288,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,8192,8192,12288,8192,8192,8192,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,12288,8192,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,8192,12288,12288,8192,12288,12288,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,8192,8192,8192,12288,8192,12288,8192,8192,12288,12288,8192,8192,12288,12288,12288,8192,8192,8192,12288,12288,12288,12288,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,8192,12288,12288,12288,8192,12288,12288,8192,8192,12288,12288,8192,12288,12288,12288,12288,8192,12288,12288,8192,8192,8192,8192,12288,12288,12288,12288,8192,12288,8192,12288,12288,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,8192,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,12288,8192,8192,8192,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,12288,8192,12288,8192,8192,8192,8192,8192,8192,12288,12288,12288,8192,12288,12288,8192,8192,8192,8192,8192,12288,8192,12288,8192,8192,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,8192,12288,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,12288,12288,8192,8192,8192,12288,12288,12288,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,12288,8192,8192,8192,12288,12288,8192,8192,12288,12288,8192,8192,8192,12288,8192,8192,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,12288,8192,8192,8192,12288,8192,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,8192,12288,12288,8192,12288,8192,12288,12288,8192,8192,8192,8192,8192,12288,8192,8192,12288,8192,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,12288,8192,8192,8192,12288,12288,8192,8192,8192,12288,8192,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,8192,12288,12288,8192,12288,8192,12288,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,12288,12288,8192,12288,8192,8192,12288,12288,12288,12288,8192,8192,8192,12288,12288,8192,12288,12288,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,12288,12288,12288,8192,8192,12288,8192,8192,8192,12288,8192,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,12288,12288,8192,12288,12288,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,12288,12288,12288,8192,8192,12288,12288,8192,8192,8192,12288,12288,8192,12288,8192,8192,12288,12288,8192,8192,12288,12288,8192,12288,8192,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,12288,12288,12288,8192,8192,12288,12288,8192,8192,12288,8192,8192,8192,12288,8192,8192,12288,12288,12288,12288,8192,8192,12288,8192,8192,12288,12288,12288,8192,12288,8192,12288,12288,12288,12288,12288,8192,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,8192,8192,8192,12288,8192,12288,8192,8192,8192,12288,12288,12288,12288,12288,8192,8192,8192,12288,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,12288,8192,12288,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,8192,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,8192,8192,12288,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,12288,8192,8192,12288,12288,8192,8192,8192,8192,8192,8192,8192,8192,8192,8192,12288,8192,8192,12288,12288,12288,8192,12288,8192,12288,8192,8192,8192,8192,8192,8192,8192,8192,8192,12288,12288,12288,12288,12288,12288,8192,12288,12288,12288,8192,8192,8192,8192,8192,8192,12288,8192,12288,8192,12288,12288,12288,12288,12288,12288,12288,8192,8192}; static int weights_array2[2913] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,8192,0,0,0,0,0,8192,8192,0,0,0,0,0,8192,0,0,0,8192,8192,0,0,0,0,0,8192,8192,0,0,0,0,0,8192,8192,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,8192,8192,0,0,8192,8192,0,0,0,0,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,8192,8192,0,0,0,0,8192,8192,8192,0,8192,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,0,8192,8192,0,0,0,0,8192,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,8192,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,8192,0,0,8192,0,0,8192,0,0,0,0,8192,0,0,8192,0,0,0,0,8192,8192,0,0,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,8192,8192,8192,0,0,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,8192,0,0,0,0,0,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,0,0,0,8192,0,8192,8192,0,0,8192,8192,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,8192,8192,8192,0,8192,0,8192,0,8192,0,8192,0,0,8192,0,0,8192,8192,0,8192,0,0,0,0,0,0,0,0,8192,8192,0,8192,8192,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,0,0,8192,8192,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,8192,8192,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,8192,0,8192,0,0,0,8192,0,0,0,0,0,0,8192,8192,8192,0,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,8192,8192,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,8192,0,0,0,8192,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,8192,0,8192,0,8192,0,8192,8192,8192,0,8192,8192,8192,8192,8192,8192,8192,8192,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,8192,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,8192,8192,0,8192,0,0,0,0,0,0,0,0,0,8192,8192,8192,8192,0,8192,8192,8192,8192,8192,0,8192,0,0,8192,8192,0,0,8192,0,8192,8192,8192,8192,0,0,0,0,8192,8192,0,8192,0,8192,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,8192,0,0,0,0,8192,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,0,8192,0,0,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,8192,0,0,0,8192,8192,0,8192,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,0,8192,0,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,8192,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,0,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,0,0,8192,0,0,8192,0,0,8192,0,0,0,8192,8192,0,0,0,0,0,0,0,0,8192,0,0,8192,0,0,0,8192,8192,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,8192,8192,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,8192,0,8192,8192,8192,0,0,0,0,8192,0,8192,0,0,0,0,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,0,0,8192,0,0,0,0,0,8192,0,8192,0,8192,8192,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,8192,8192,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,8192,0,8192,8192,8192,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,8192,8192,8192,8192,0,0,8192,8192,0,0,0,0,0,8192,8192,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,8192,0,0,8192,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,8192,0,0,8192,0,0,0,0,8192,0,8192,0,0,0,0,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,8192,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,8192,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,8192,8192,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,8192,8192,0,8192,0,0,0,0,8192,8192,0,0,8192,8192,0,0,8192,0,8192,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,0,0,0,0,8192,0,0,0,8192,0,0,0,8192,8192,0,0,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,0,0,0,8192,0,0,8192,8192,8192,0,0,8192,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,8192,8192,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,8192,8192,8192,8192,0,0,8192,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,8192,8192,0,8192,8192,8192,0,0,0,0,0,0,0,0,8192,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,8192,8192,8192,8192,8192,0,0,8192,0,8192,8192,0,8192,0,0,8192,0,8192,8192,0,0,0,0,0,0,0,0,0,8192,0,0,8192,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,8192,0,8192,0,0,0,0,8192,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,8192,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,8192,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,0,0,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,0,8192,0,0,0,0,0,0,0,0,0,8192,8192,8192,0,0,8192,0,8192,8192,8192,8192,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,8192,0,8192,8192,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,8192,0,0,0,0,0,0,0,8192,0,0,0,0,8192,0,0,0,0,0,8192,8192,0,0,0,0,0,0,0,8192,0,0,0,0,0,0,0,0,8192,8192,8192,8192,8192,8192,8192,8192,8192,0,0,0,0,0,0,0,0,0,0,8192,8192,0,0,8192,8192,0,8192,0,0,0,0,0,0,0,0,0,0,8192}; static int alpha1_array[2913] = { 534,-477,-386,-223,-199,142,-432,-378,-219,318,-414,-497,-142,68,-684,-277,-90,237,296,-107,373,286,-89,-155,99,-259,-421,118,-167,-357,-129,93,-77,-103,269,-416,72,-259,-42,388,451,-80,-25,-103,43,227,-95,16,-447,-240,-13,-468,295,-400,-147,-373,-213,-80,-111,381,-246,-626,44,124,45,-501,253,-660,368,-126,-596,-216,-369,46,17,100,37,63,-193,-93,-594,108,284,-851,-311,-123,-276,-307,-112,-47,77,319,-152,72,123,68,-335,116,-443,-49,-412,190,-68,-15,-89,-268,211,52,52,-332,-335,-269,-351,-9,-255,370,-95,-147,4,-20,-294,95,67,193,57,-323,222,-355,16,-137,-90,-150,-85,178,220,49,-228,-322,-220,-191,-323,-251,164,-61,-87,281,402,-70,-280,78,66,-315,104,-24,-105,64,-240,318,-83,89,14,-262,263,55,-408,-263,-378,-61,74,-59,-309,62,-350,54,83,-72,-591,73,-69,-392,19,36,-282,3,-88,51,-104,-569,-73,-227,-285,-258,66,-146,-141,-329,446,-269,145,334,-118,-106,92,-228,75,-203,39,8,-100,22,141,-473,-123,-115,-216,90,47,-320,-208,-237,144,205,-217,-103,-391,161,150,-65,74,-101,53,112,240,2,-259,-96,-206,-270,51,-97,54,-262,-263,-53,225,267,35,-425,204,-245,50,-265,-315,-194,-99,-183,141,-114,-279,214,-65,80,-268,41,-176,63,-129,10,36,-229,-116,86,-202,-584,100,8,-277,-481,37,-260,39,-197,-29,17,-450,245,119,181,-281,-279,-67,-56,47,-237,502,54,-300,-287,-43,211,-295,-268,-279,108,-235,-408,-169,49,-162,-48,-27,-276,87,121,249,-556,-164,-377,108,6,40,-103,-510,-159,259,-262,-291,-145,78,-440,59,-311,83,-81,-28,101,0,192,-212,-152,40,8,-133,-136,51,11,-233,23,54,-69,-26,16,-237,34,50,-292,43,-121,-553,11,-8,-337,94,-65,-19,-201,435,198,-382,-546,145,173,63,3,-2,115,-243,-515,101,-63,-14,11,-125,-76,-153,-7,95,-255,36,-54,-337,126,108,-7,-202,-576,-65,-57,-73,-8,152,-122,58,-66,-153,181,-143,-182,-285,-104,-97,-179,-139,-25,216,67,39,-509,-82,152,5,-112,-228,54,3,257,-376,-208,29,33,-301,161,47,-238,9,93,50,-429,-787,54,-293,214,-71,45,246,2,-136,210,-50,-6,-347,-165,215,49,-186,-92,14,120,-290,251,-72,-163,95,-334,-523,198,44,-384,73,354,-57,-406,-305,-39,66,-22,192,31,-93,-19,200,-229,211,4,289,-147,-5,-139,-313,37,-71,-62,-219,177,-42,112,-250,-231,-202,-77,-230,-107,117,233,-376,-268,74,-329,-219,41,40,5,-42,-249,252,121,-245,-134,43,-290,66,50,-13,272,-47,-7,255,-7,0,-391,8,196,41,-250,118,65,-206,-336,51,249,-48,-174,48,-60,63,-266,131,414,764,154,-158,169,-287,-275,207,-5,173,14,-33,-96,-149,-77,151,248,233,-154,11,-239,46,-330,-11,-3,-68,-131,106,-63,-57,16,48,-242,94,246,-785,58,0,243,-25,2,165,-9,177,-103,-165,250,-26,156,-260,-105,-149,-237,30,-148,-98,301,-220,-191,235,68,-72,-157,147,83,22,88,60,-190,-231,-88,-239,-136,235,-181,-222,-58,-77,68,-302,-139,-69,-233,-112,6,202,205,-51,-11,-231,90,-50,-358,0,-125,-312,95,-75,-368,-577,96,-75,-255,12,38,-3,-36,-4,-443,-61,1,9,19,-434,161,-85,58,49,23,-446,-61,301,35,-139,-55,16,175,445,78,-54,-203,95,-3,310,-5,-271,-8,9,-20,-491,123,-50,50,-49,463,199,39,-42,-26,-9,-14,71,32,5,48,18,12,-69,13,97,39,6,41,-157,-217,-208,-93,-304,84,-130,-268,-129,-254,-24,59,-26,0,-167,72,39,-74,349,312,-209,-312,30,-299,-273,-92,125,150,-19,70,-1,210,33,-232,2,455,146,-82,49,17,-99,-6,-491,-328,-103,-186,148,234,-132,61,42,-349,-437,-80,38,190,-104,208,84,-321,353,-9,-47,-114,173,-3,86,-271,37,-62,33,-268,-387,35,73,-69,47,83,29,-283,205,-67,4,3,-78,-411,19,-1,-61,490,-64,-177,46,-7,16,2,38,99,-397,55,-12,-65,-46,139,-177,75,236,-203,84,-351,16,92,-39,34,27,-2,0,-120,-2,-88,383,-254,-147,-8,102,46,139,174,-230,-144,92,-142,-274,-183,-120,54,171,-244,208,315,-78,54,-231,57,-101,47,39,55,-378,-43,9,85,1,115,39,-333,-62,7,-57,52,175,-2,-51,121,-283,259,106,54,-296,90,-393,51,-6,43,-306,-279,71,-11,-67,154,97,33,30,-87,-43,156,-124,-1030,-100,-22,293,-5,9,144,-44,323,171,-105,-234,0,-95,-108,-42,38,352,-86,195,-177,-3,-26,273,47,-56,65,-2,-73,-9,84,-89,-368,-302,566,-478,-196,-161,218,-8,-49,527,-29,-4,-10,-170,-14,156,-146,14,44,-171,75,-72,-27,-13,115,-520,43,-5,77,-79,-460,-13,53,-51,-244,-36,-279,26,15,-343,12,-262,21,-37,168,-232,-127,-108,-122,130,-59,103,115,-217,-238,-327,149,-13,-222,-19,-63,-287,-371,137,17,292,-63,-10,150,39,43,-38,-102,71,0,105,-365,-64,11,-240,-69,-264,161,41,-64,-74,-2,28,-49,79,-1,-117,-3,-19,-68,46,-48,-37,-134,-98,-1,-148,5,-166,-86,38,-64,-28,-249,97,-266,-1410,244,2,57,42,-221,-721,-331,-208,168,1,78,65,-367,-43,-166,-13,-235,137,-139,39,-62,-130,-55,29,-3,311,-64,57,64,-83,-14,0,-78,-62,120,98,-12,54,-43,29,-11,-103,-84,-185,-40,49,210,-110,-7,28,557,-12,-83,294,-99,-429,-249,53,-42,60,-237,-188,36,2,-304,622,183,40,-208,238,-144,-202,-362,97,-104,-61,-223,39,-293,39,10,111,111,-24,-97,228,220,153,-406,43,130,-110,-80,270,-183,63,-176,-151,11,-157,-78,-351,-143,1,400,-404,-397,44,-334,-353,-181,-10,147,-126,-125,-154,60,-20,-308,59,-207,157,-75,-156,-136,-329,-43,-28,261,-200,-225,29,-207,-18,-329,121,-15,44,-51,-17,-326,31,3,158,-92,134,-43,-304,214,90,-225,-36,-74,-8,177,-165,-7,-2,217,-531,-219,98,-441,140,-9,149,-3,38,132,-5,-220,-116,33,33,-64,5,-100,21,-46,-158,-12,45,-215,-48,-203,-60,-14,67,-171,172,77,37,-47,48,115,34,-53,82,-51,40,-160,42,-64,39,145,146,-98,56,-73,-166,-74,116,-131,4,100,304,-174,-217,-282,-50,-104,-75,-334,60,74,-620,225,205,37,-208,-181,-186,43,708,29,-1,59,-79,-12,-297,-69,-138,46,160,61,-240,-19,10,43,-8,24,-101,-58,-70,-27,-12,38,-5,-205,-53,51,-46,127,299,-16,-59,-210,155,-10,-294,-2,96,-25,171,40,97,38,-174,65,-7,-90,-9,-6,27,119,-72,-5,-83,-313,-4,167,-133,-200,0,-13,4,-159,45,11,116,85,-598,-169,117,-68,-47,-6,-8,1,108,-5,-8,28,74,30,37,-137,-15,-115,310,-590,-183,18,-313,34,-7,34,-37,49,-95,207,214,-242,11,-497,-54,153,-56,161,-59,46,-178,88,-224,60,-15,-50,247,-15,-116,29,463,59,126,155,102,-217,-202,-172,9,35,-35,35,-51,-119,-241,83,70,60,-147,-156,-144,-205,-207,35,-42,369,34,-86,-29,-254,-123,9,-278,244,-265,230,-259,157,-21,16,-239,-215,155,-7,33,-289,194,76,5,-218,-15,91,0,-8,151,152,-300,-4,41,-57,70,-194,-58,49,42,328,-138,162,-127,-303,5,7,-53,0,-56,-2,114,-52,-196,-361,49,215,32,-119,132,-7,62,250,51,-65,43,-219,143,-65,1,-154,107,58,23,-68,-185,-89,29,-2,52,148,4,-84,351,0,-3,96,-703,121,-148,-2,89,364,61,-2,-4,-231,-54,50,-23,-141,47,496,-67,-140,-655,-63,41,56,79,-244,32,-15,10,-11,10,7,264,-17,-152,-16,14,-1,37,-45,-152,-276,199,-16,-4,-14,87,-67,-33,7,6,115,-50,-138,-3,17,174,-52,182,-94,-220,-69,-88,-81,-176,-53,-126,343,11,-182,257,-3,-209,138,-86,-306,-227,42,160,-72,-163,-196,116,-195,11,-12,-5,-245,-179,-72,-64,-178,117,46,-161,-263,88,-74,-113,45,-2,423,-1,0,-158,180,100,-6,120,82,-314,11,-42,86,-218,14,133,160,-157,-216,-16,-45,-7,-62,-60,100,-68,44,-277,184,-304,161,338,-86,-65,36,-298,-101,126,479,-227,-298,-171,-122,30,-19,-51,236,-68,-138,4,-3,-45,53,5,-4,-48,104,-52,-434,-7,-51,-115,60,-46,-70,-118,106,37,192,-48,90,-164,4,270,76,-55,61,-8,-1,19,20,-35,-476,-47,36,411,-207,-356,8,-141,5,113,46,-16,51,-81,222,163,44,61,138,612,40,0,-29,-269,-51,-54,28,-439,165,-2,50,-221,35,86,-640,129,-750,-153,86,-283,114,-266,8,135,-137,-128,-84,-81,27,-36,241,-139,3,-80,-1,-195,61,-24,-202,-26,-103,52,0,-1,-93,-365,-10,67,-214,-125,-48,59,-9,-456,-55,-45,-2,77,-243,8,250,-5,-14,167,6,-1,87,-1,-134,-149,5,-93,9,-37,-55,-277,-39,11,-396,42,-197,28,283,70,-206,36,50,-12,-42,-32,-8,-16,-93,30,-133,166,44,-50,-130,-17,-104,-54,-127,-52,46,3,-53,63,-488,-182,-43,48,1,43,-578,616,-69,80,-371,-4,-59,36,-56,-29,6,45,-37,-134,225,-123,-54,-18,-63,2,-45,33,-11,44,-289,-57,116,-38,-174,166,114,-22,-119,74,-309,-11,-68,-33,497,39,-182,235,-57,-185,319,-370,-200,-218,-38,140,93,-8,-157,-16,-87,-77,19,-249,47,-15,83,-75,-310,33,-169,42,-13,51,-201,73,442,4,-19,81,196,47,-60,44,-11,205,-209,38,-186,145,10,-507,128,102,-196,221,-143,10,-49,47,-12,362,337,12,-53,-319,66,58,-220,80,64,68,-138,183,-149,-190,45,-275,6,-115,-69,-125,106,41,-282,166,107,90,-74,-338,-224,66,-253,162,6,-144,0,-24,-167,-119,-271,129,-78,-285,-222,168,-58,46,-84,-30,98,-228,137,-14,-390,19,-50,-163,21,-110,102,135,-99,224,-298,279,35,34,-3,45,-135,-28,100,-65,-6,202,-122,-44,0,4,51,47,-15,-83,-159,-8,50,52,-145,191,217,42,-340,-15,195,57,-407,30,-335,0,167,18,-172,85,116,-11,68,-212,-172,-18,7,34,-152,103,-278,74,167,-501,-58,40,-99,439,-97,-791,-35,-16,-144,64,-670,15,239,35,-3,15,182,37,-95,-60,-7,47,-39,38,-42,-18,-5,-46,-116,68,-39,17,70,-787,-374,226,35,-263,19,30,172,54,114,9,-50,34,215,44,-45,-36,267,28,-201,-155,-3,-523,-107,6,-44,-56,-17,330,-297,17,-45,56,158,-118,-32,-77,-57,64,74,49,-193,21,-68,34,-103,41,79,-68,39,293,-182,106,-341,36,-12,163,-55,-206,-81,-164,-117,117,93,6,44,-246,-181,18,-191,174,-32,18,244,-72,98,0,217,-236,-139,-1,184,49,29,-13,-27,-46,42,52,239,0,0,185,256,-11,3,-241,-111,-45,148,-5,-36,249,-21,-529,112,73,-146,88,143,-37,61,110,5,46,38,-50,0,323,166,-264,-122,-53,132,-54,46,-37,-72,-114,10,101,563,-71,87,73,163,20,-114,-251,58,214,29,-9,-346,-45,32,205,41,39,-471,-206,-35,-6,-188,-116,53,102,-5,-127,45,11,44,-118,13,38,35,-73,-77,-251,12,60,120,-53,42,-144,-911,-9,-144,-7,-136,-56,36,-88,245,445,355,13,-23,9,243,-34,58,-56,329,-1012,96,-6,43,-239,33,-292,126,-79,-97,-47,-151,-39,82,-40,193,-226,61,-479,33,-6,119,102,-400,-492,34,261,-24,28,154,-48,29,-71,185,-49,39,-14,-412,-15,41,-45,1190,-43,233,56,-230,-96,-97,-46,-57,181,122,-47,10,-59,-117,85,-42,57,38,-380,-49,34,-277,-151,-125,152,-302,-156,-292,-421,-79,-177,-183,57,264,115,-218,148,-96,-67,-7,52,171,44,-214,-8,107,17,-40,-181,-41,99,4,12,-69,216,39,-237,132,35,-230,50,24,-15,62,156,232,-80,-170,15,204,48,150,-65,-3,52,-274,-148,-169,-123,147,-13,31,28,-444,34,-120,178,431,203,-259,36,129,-40,-139,-44,64,238,-8,89,17,36,-263,-50,-198,33,-39,38,-182,284,238,-50,107,-132,-11,13,-60,-226,-52,34,-44,14,40,182,-40,-88,-142,-924,132,-22,7,60,-10,117,-195,-957,-163,49,-41,5,-434,303,-104,39,125,-62,-12,111,48,-112,-52,79,-79,35,-130,122,115,33,-10,-88,1,20,297,-82,-46,0,-37,-101,-46,37,-15,87,79,-9,-45,-258,-137,123,67,9,-153,39,-37,3,-4,91,306,-158,-467,-7680,-61,-8,-39,-15,-165,278,-66,35,-53,37,7,323,-32,-175,-122,-120,65,-123,-61,194,-89,-202,120,171,63,-55,71,14,-255,-305,38,-363,-72,121,-15,-219,42,-300,67,9,-10,73,-360,-54,86,-64,10,135,64,1,-127,21,-133,-161,329,213,28,-345,-346,103,-67,150,-42,3,-4,-61,-137,192,-41,-44,59,64,33,-214,603,48,37,-11,45,-252,-41,-61,36,-266,50,-232,-7,-255,187,71,1,-51,165,-47,-74,-17,-3,-53,-91,277,54,132,-112,8,3,87,84,-64,35,-3,48,89,-9,-109,170,-125,33,-14,-147,249,45,-207,71,-34,-17,-46,-40,74,113,-49,-2,-108,-218,214,25,-47,64,-90,41,-37,-54,-182,8,-69,92,-12,33,-275,6,-66,-454,76,50,-110,-130,199,-161,-11,30,-4,22,10,-486,-15,227,-56,147,-138,-20,-51,106,-7,-30,84,-5,-112,30,234,28,-36,51,83,40,-19,29,-42,57,-49,29,-229,91,-117,60,-7,-130,-138,-227,206,3,-11,18,-50,-1391,114,-3,-38,118,-422,-9,88,31,-15,4,-70,-45,-82,32,-127,11,-10,0,-391,9,25,159,-238,-103,24,95,-59,10,-127,8,-128,9,-16,124,34,-113,7,3,3,74,-103,84,-136,-369,-202,-68,-139,5,-127,-202,204,-84,-69,-135,-144,-44,-23,-14,60,45,-109,148,8,17,-321,136,298,100,-188,-36,30,-362,113,-356,131,-14,-20,-221,133,-41,-43,-1,162,-86,-8,165,13,167,49,-238,-174,3,257,-59,-185,-56,42,-61,130,231,35,-169,205,-85,-142,-15,87,71,300,209,-47,83,50,-239,6,-54,189,-49,178,100,-18,244,-13,19,13,184,36,10,137,-11,8,-66,40,-187,21,-90,72,-215,38,-48,113,-14,-79,420,-199,-59,-92,199,302,-120,56,-9,107,-42,40,-1,-7,-58,-15,-76,56,311,3,-382,-98,-54,0,-159,-108,6,33,301,8,-81,216,94,-133,-15,202,-299,10,-91,53,-48,65,8,-253,-34,86,-46,-251,-8,298,163,-59,-56,41,-43,66,-196,-69,19,-9,-45,48,180,17,192,49,-12,-114,166,-14,-39,-156,-12,28,-204,-48,-34,124 }; static int alpha2_array[2913] = { -567,339,272,301,322,-479,112,113,218,-402,302,179,442,-558,116,137,238,-169,-76,347,-50,-135,292,197,-387,375,256,-408,212,108,269,-344,371,310,-117,39,-400,59,327,-77,-13,393,239,246,-757,-112,102,-677,72,59,275,25,-274,196,353,132,149,299,244,-35,70,60,-343,-230,-418,46,-97,63,-75,161,13,99,25,-322,-609,-70,-291,-324,69,181,9,-12,-89,54,277,359,189,96,323,117,-245,11,138,-381,-134,-409,39,-184,17,174,19,-55,335,312,217,76,-83,-214,-171,35,19,49,17,199,31,3,135,100,-542,252,24,-37,-148,-43,-163,64,-69,60,-323,77,135,61,132,-3,-66,-151,267,141,163,136,92,92,-128,218,292,-46,-80,267,50,-340,-179,57,-131,158,121,-175,29,-14,211,-45,-396,61,-81,-211,13,33,9,126,-146,163,16,-255,9,-266,-138,113,0,-165,205,54,-270,-219,16,162,144,-385,96,31,173,243,125,127,-320,152,77,57,-25,47,-119,-67,106,151,-117,36,-249,46,-339,-536,131,-328,-118,11,88,109,42,-120,-427,9,59,25,-48,-97,50,129,59,-81,-3,266,-213,116,-384,-98,-27,-430,61,119,45,18,-395,96,-317,13,58,314,-11,-55,-486,1,-21,16,-195,210,75,148,229,129,-180,181,68,-98,66,-150,43,-224,60,-144,98,-355,-273,50,111,-114,57,-1,-133,-386,47,0,-568,15,-303,31,181,-269,49,-64,-54,-71,62,14,50,269,-440,15,7,-123,41,10,82,-67,38,10,39,-108,47,0,79,-166,39,391,166,9,-25,-87,-4,-7,42,0,-45,-327,-388,83,38,284,-157,101,73,115,-174,15,-442,31,-207,172,215,-121,242,-80,45,63,-109,-409,96,63,-369,-348,69,-208,-191,207,220,-253,39,-180,-103,18,-184,67,37,-275,311,3,-39,180,85,19,12,-62,31,-6,-30,-68,-165,-317,260,-92,52,-5,-75,277,311,-272,43,132,63,-592,-83,18,-441,260,38,-74,-86,-600,39,-7,60,236,79,-693,-8,58,-267,196,71,-65,280,135,103,189,188,97,93,203,-84,-247,-271,34,154,-54,-375,52,26,-102,-411,-34,2,66,-183,-421,6,-26,-137,51,-258,-70,-136,53,-9,-182,4,-16,203,-175,-55,319,37,-3,276,291,-1,61,-52,-312,13,74,-171,4,6,7,151,67,-85,40,-6,-11,-114,36,-97,16,203,29,-1,104,-98,196,-57,-372,66,124,-56,37,-51,69,-48,40,-419,61,-1,-115,112,64,6,0,389,-55,5,164,147,336,74,136,-114,-70,52,17,-133,11,47,-176,-215,-349,66,16,-4,-83,51,57,-274,9,-183,-136,249,-60,117,-682,6,-555,191,2,254,-63,-156,7,-34,-133,38,0,-157,-53,122,28,-383,208,-17,12,-1,-47,24,-69,40,-60,50,5,-4,-444,-14,-197,171,79,65,105,4,-53,10,43,209,6,-87,0,64,-366,85,33,-79,181,49,-227,-70,6,-44,-51,29,-116,100,-51,52,-261,-23,-493,-17,47,56,-47,95,-68,147,258,144,79,-286,84,134,-8,30,53,-72,-179,187,39,-87,-33,-245,-119,-134,55,16,55,12,44,-56,46,14,134,143,-179,11,66,148,50,54,197,-63,-9,282,184,11,-96,286,49,-297,42,-3,-21,152,34,-8,4,136,41,-192,-167,-314,110,-305,36,138,144,-203,379,-7,8,76,-97,-135,538,-10,91,-45,-332,35,100,-184,16,-42,-42,187,52,-75,103,-44,178,0,137,-191,85,-9,4,186,-125,197,17,-47,-410,304,100,-412,138,-81,-263,-202,-214,-160,402,98,134,-72,-78,-223,-51,20,145,114,173,49,-182,29,51,93,32,147,-134,122,-398,48,-114,-54,133,7,-57,37,4,-252,5,50,97,-37,-71,154,-96,264,-57,-303,11,274,-44,-18,102,-311,-182,46,-395,42,-4,60,14,-4,-54,47,-101,-657,-3,42,84,-124,-57,48,-53,-153,-5,15,-394,95,35,-4,-313,0,-3,-317,131,-181,0,37,-119,-106,111,-243,-78,-506,-2,-8,99,150,-242,54,-7,297,-285,53,-40,46,11,-191,-428,195,-226,-630,-76,41,-95,152,141,104,-60,40,-87,24,8,-13,-5,234,-73,136,-113,-655,-283,145,32,223,53,14,-2,43,-355,0,-106,4,-50,132,180,-171,91,48,67,68,-276,-71,61,-63,1,181,-368,12,-114,88,-343,-132,-186,-6,49,-224,-61,-320,-21,-124,46,159,236,198,-278,-59,158,258,11,1,4,-73,-42,-2,-75,-7,-182,-388,-99,-5,37,-105,105,141,4,-75,-118,-132,53,367,-10,34,27,57,96,-50,149,-171,-19,298,11,-55,51,10,91,49,62,325,-551,-41,54,-50,55,-255,125,-44,-191,139,-129,-245,43,-336,3,61,39,-3,16,-11,39,13,1,-341,95,-38,65,-267,101,8,96,-53,45,-165,-253,8,0,120,146,-487,-2,-13,-314,-277,-94,60,39,-486,5,156,47,550,33,-132,316,-8,411,-1,243,495,-178,78,146,148,110,-51,281,14,-85,57,15,47,-66,182,19,232,185,53,-3,-29,-196,10,151,83,-65,-143,-134,75,64,-120,-289,-67,-4,40,-179,59,116,36,-65,-453,138,85,-298,-638,245,-65,-258,49,-256,106,100,-92,237,85,23,62,-322,43,-224,33,56,-129,117,142,4,-43,1,28,-47,210,-88,-356,0,29,-6,30,-53,136,-79,-13,-3,107,10,162,2,-16,21,-102,131,35,160,-698,-276,8,112,-61,-78,66,-501,189,67,43,-66,-73,-451,-6,263,-319,-439,52,52,51,427,-90,-46,31,-296,-1198,-37,87,78,6,55,40,-2,-176,311,-105,-4,49,-107,200,-8,16,-48,-202,150,-75,106,43,6,-106,91,220,25,-177,9,-177,-247,0,-83,185,77,-26,-55,-40,-5,-97,-69,67,142,7,16,-53,16,71,-226,40,108,40,31,210,-43,37,-7,-177,-6,37,9,205,-63,50,34,47,-89,53,-3,-116,3,8,69,44,17,30,284,117,-47,36,2,-282,0,89,-7,-37,-634,-112,180,157,-6,-275,-181,8,44,3,287,44,-46,-61,0,66,66,150,-55,39,-290,318,-48,31,2,-29,-14,-10,-276,0,-216,-203,-54,109,0,57,-98,-203,104,203,29,320,197,40,-471,-39,0,43,1,63,-469,-98,5,-3,-72,-360,204,-21,-56,-330,139,-41,136,-43,10,-264,81,-418,-51,-172,231,-327,193,57,79,-98,70,-310,-79,-52,52,9,40,302,84,106,45,-114,-28,-10,-12,-52,-290,4,57,10,-285,-37,-1014,-252,-191,77,134,-1,60,20,-171,-53,-267,0,157,-217,-130,-325,696,39,35,87,123,-514,-28,-298,36,157,-192,256,-8,-47,74,152,45,-54,154,-6,145,-69,63,-52,-194,-65,-73,8,-68,-293,76,-339,180,-115,-15,112,180,61,29,-280,19,29,42,-218,107,-166,39,-87,202,-57,-1,-15,51,-57,63,186,73,-285,170,-67,48,-281,-750,-70,-160,-94,49,-498,47,-39,28,5,252,-11,-301,-239,-383,400,-173,27,7,-43,33,-133,33,124,2,138,-5,127,-56,4,18,-2,-73,-571,104,-51,69,22,-280,-37,-108,-52,7,-55,36,-3,32,-162,-120,499,-542,126,195,101,-162,-147,-175,70,62,69,29,61,-169,107,-48,-234,100,113,0,43,-205,46,-53,56,-48,37,-60,55,-154,39,3,-23,-358,-126,-3,0,-75,51,12,38,-67,266,-301,-14,-62,43,-273,-342,116,-95,4,60,-82,-261,-44,61,-53,44,-8,257,-153,96,-183,82,-198,-15,147,32,-13,-162,-46,-543,22,4,-282,-98,-43,-98,90,-233,-5,0,88,89,10,-13,-82,2560,85,45,42,-394,-255,3,-51,277,50,17,-215,93,-70,27,-59,44,-214,-44,-37,3,-194,195,-2,56,-91,66,7,-171,-37,53,12,33,102,-182,-74,0,-2,-301,-475,99,-284,252,-177,17,-639,38,-547,200,-184,-349,186,49,-10,0,-465,53,-362,-30,66,44,-156,77,-58,53,17,133,-126,20,128,-149,153,55,156,129,105,24,60,46,10,-209,57,-50,206,5,-19,108,39,2,-232,-66,68,25,57,-67,35,-185,131,-277,37,7,64,119,33,-61,-157,8,44,-70,61,36,-61,-242,24,-220,98,7,12,-61,64,-59,-52,-10,154,229,-69,5,163,-59,8,8,42,-508,97,-235,58,138,-32,82,-155,-7,7,-11,2,-38,43,121,-89,-10,40,-51,22,-1,36,1,38,-115,71,172,23,85,35,-174,138,201,-122,-156,106,189,-34,157,37,-279,57,14,-54,158,64,10,0,-86,2,123,-44,2,81,-44,-2,121,-68,-261,146,-107,737,534,36,138,-400,-37,33,-14,147,5,95,-58,-104,-433,-117,39,8,-47,-122,-67,13,-34,-173,-187,78,-8,83,111,-1218,-15,-8,-196,-21,-6,-570,-61,32,-50,35,7,-36,-12,-17,-10,209,-48,155,112,140,118,-251,182,-55,64,-276,131,-318,52,-89,52,5,140,68,-261,-223,205,58,36,-489,-83,0,42,213,-18,-295,38,129,74,-228,-11,-5,247,-44,70,-455,-6,-180,84,-77,148,11,48,-176,39,-153,96,132,36,302,234,-14,-256,-1,-431,-39,-47,-4,-65,-79,107,237,103,-253,65,30,-263,8,0,-87,38,7,47,20,57,16,56,-111,97,102,-68,-17,40,198,-154,-158,-181,-18,21,70,-15,-15,129,78,-128,100,51,-136,-160,363,40,-42,38,108,37,68,110,177,-86,-346,-15,-10,60,-54,53,-2,11,-60,70,19,-5,-10,128,67,81,-35,-7,-3,11,81,43,-37,31,-6,42,288,9,-52,138,0,107,32,55,-105,28,-76,63,-59,39,-13,-595,-2,-171,-324,3,-6,-7,-36,96,-867,4,-45,-79,84,-46,-289,17,-4,-47,-4,3,-106,30,-50,-6,-6,16,0,125,130,-41,-289,22,-37,219,86,30,-62,-75,0,-36,-72,-72,156,-105,75,36,-175,31,-262,54,124,80,-76,-255,5,-7,-68,-96,105,33,0,-54,-2,-14,-187,42,-238,64,17,41,-5,-39,188,46,-3,-9,108,-252,54,76,-62,36,-52,102,-13,318,153,40,-116,57,-61,10,36,21,-8,13,-86,-104,-209,-83,11,56,-56,45,-223,5,13,88,-167,150,-82,-60,-411,38,3,142,-96,-109,11,11,-45,-76,-12,47,-46,-16,-15,-361,-13,113,-47,208,0,14,-51,58,-66,33,4,36,-143,-75,3,0,-10,-64,-46,37,87,-258,21,15,21,30,486,66,11,-10,-18,220,-40,-654,-181,422,-44,-20,25,68,-217,-143,248,-281,210,73,-200,52,16,-45,283,178,-64,29,-13,11,-88,29,-112,-186,-46,9,-53,71,139,-28,-42,-201,170,41,-40,-1149,3,33,-187,35,20,107,165,36,-599,21,-13,188,178,-52,-45,48,839,60,76,-34,-74,-174,-3,278,50,-145,36,-142,-58,50,-87,23,0,6,-12,-131,-305,9,126,102,176,65,79,-70,-69,-226,-139,6,54,-174,60,-54,172,-206,4,120,-15,-260,1,0,63,-240,2,-91,-417,-434,132,243,-296,-84,0,-198,190,-47,8,-327,170,-5,59,219,7,-247,132,-46,81,-15,5,-74,59,-66,15,419,-114,-60,206,-84,-363,149,99,-40,2,-8,41,139,-3,194,-189,393,52,13,75,-72,22,64,4,-64,22,-104,44,-9,-206,-44,-503,-263,31,190,-113,-44,-31,-85,37,-7,84,-213,45,17,-96,-53,116,19,-72,-141,-53,17,193,-81,-291,48,42,-5,135,-71,16,130,-371,6,30,-261,47,-212,36,122,-156,30,16,-36,16,-138,100,-138,9,586,-153,95,12,-18,-11,-204,-161,-10,-404,-12,-8,43,41,144,30,237,-41,260,8,-2,-29,-17,-172,-190,-6,-54,36,-17,-579,-38,106,-106,15,118,-338,49,19,117,-127,-394,29,-375,-28,146,24,222,14,-71,75,155,100,150,163,-37,-74,134,-228,113,45,-76,409,-136,-107,33,251,-144,-2,34,24,-10,-7,57,-7,32,65,39,0,-141,-44,10,-3,-4,35,60,-331,-47,-50,-83,-1,151,-60,187,279,43,257,-13,-240,139,103,8,-89,43,-51,-126,-4,-42,-106,181,-78,6,-42,51,1,224,-44,-155,-49,41,-196,-29,-9,47,1,31,-49,62,-99,-7680,-16,-179,15,0,-36,0,-4,-107,-52,45,7,77,-67,18,-219,-12,-115,-119,-11,73,-2,-902,375,-333,-2,21,-43,64,-62,51,-272,127,106,34,149,-805,177,77,-81,14,235,51,5,33,-49,40,-141,-11,-241,-1,-5,28,2,-21,290,195,-15,23,21,-281,-51,36,-315,3,-82,58,130,18,40,-45,14,-18,-50,-220,-290,40,-157,178,-38,44,158,108,320,36,152,-201,-364,7,-57,81,166,28,5,8,-65,232,2,-245,350,55,-226,16,-38,32,-16,28,93,70,276,52,6,14,53,-400,134,-335,-130,16,787,99,115,109,-170,71,113,-64,88,8,-15,-62,-123,184,-87,-210,48,-7,-138,-10,39,-56,155,-3,-70,-10,-14,-140,123,-84,32,138,11,106,176,-58,-55,-185,47,-118,61,8,19,-47,-7680,-12,40,-64,47,-49,58,-170,165,89,53,-45,78,256,-16,-78,-240,-6,21,-79,-216,-342,-155,-9,83,75,-384,-11,-37,-9,153,-9,14,-67,91,131,0,157,46,-493,157,113,62,-38,-46,-48,58,-132,89,-55,-73,67,-127,-197,-82,-57,131,12,1,17,-485,-365,46,-42,-71,-4,-1,650,73,167,69,-64,14,119,65,18,43,-45,611,159,-16,27,-234,381,50,0,267,69,14,-247,-89,-13,71,53,29,-57,-25,20,41,-44,32,-284,-1234,-163,628,-130,28,-362,10,85,11,0,91,112,-11,-235,51,-59,68,12,-724,-40,-510,334,-11,-52,-244,-541,-412,179,-102,113,-403,-10,-3,6,-16,-215,41,1,34,-41,141,-275,299,97,28,-47,47,243,9,-16,107,-54,-544,-380,82,48,71,68,-155,5,124,-238,87,-15,164,-101,-117,55,108,-162,-77,103,-199,41,-204,65,-181,189,-62,-33,35,229,-220,218,-75,49,-65,55,-11,48,80,42,-159,49,-3,-8,53,47,13,49,244,63,-419,-23,-91,51,-48,209,-117,36,-52,13,-56,36,458,-483,-14,-26,-12,-23,-365,82,-8,-4,279,79,-176,-1,32,100,-51,232,-50,-132,-8,32,-162,16,79,43,90,-190,106,0,-42,-133,0,15,37,33,-350,-1,-79,21,-45,36,-60,-5,-5,118,102,7,111,17,-53,92,-39,71,-93,106,-43,-167,-117,18,-257,108,67,-266,-5,400,37,0,-9,-223,152,-14,-348,65,-36,43,73,52,-39,19,20,-94,-236,20,183,-224,-151,123,86,80,45,-75,-36,142,-16,50,75,171,0,30,-129,-55,-38,102,29,21,-48,40,-273,13,-15,169,15,-63,101,-24,-117,37,404,19,120,30,-214,20,-45,32,69,-110,150,-9,-5,36,-106,53,162,-131,-45,175,-40,-62,-225,45,-42,88,221,30,-230,-277,-8,55,430,0 }; static int tree_thresh_array[2913] = { -129,50,89,23,61,407,11,-77,24,-86,83,87,375,148,-78,33,75,-28,-40,64,-84,-563,58,41,374,285,129,58,59,-12,134,-29,206,192,-284,-200,347,-7,473,-210,-174,1522,79,71,162,-37,7,123,-322,8,110,-184,-269,64,596,25,27,75,81,-1136,37,-154,75,-45,138,-146,-46,-267,-173,7,-529,93,-139,107,91,-23,178,234,9,53,-108,-23,-67,-279,163,770,319,0,348,36,36,-96,28,138,-13,119,-34,-44,-100,15,-50,-19,314,117,80,-119,-119,80,17,-145,-66,-90,-93,68,-54,-138,69,13,342,1056,-149,-67,-15,-26,-15,-186,-98,-317,96,-10,491,9,285,-191,-205,123,373,52,65,9,130,11,-49,87,124,-184,-293,242,27,168,-3,-124,-52,153,100,233,-66,-722,721,-30,249,-119,-186,152,-99,-244,-123,30,-8,85,-27,76,-181,93,-4,70,-141,274,973,-52,43,69,-29,43,25,53,12,-447,33,128,130,27,107,52,107,-61,-159,-23,-6,-116,271,36,46,-11,46,29,130,103,30,134,-11,-155,-159,11,-221,-34,138,-460,-42,-20,-38,-48,-95,69,-98,-151,-252,88,-15,183,234,-46,-49,92,-81,65,-37,-18,521,195,219,-162,-275,546,-856,-268,253,-104,-142,-74,61,189,63,52,201,51,-76,171,-210,-290,68,-25,-161,0,-91,7,4,160,254,8,3,-28,-97,-420,-39,163,-53,-207,102,-31,175,0,37,45,-214,-942,-67,-70,-150,-42,-56,120,98,25,-91,-28,-166,-100,10,-80,-121,-61,-248,-52,-82,-125,-84,-7,-128,77,25,-41,-5,-16,-180,-248,-134,-603,-48,594,210,12,-178,528,-373,58,134,51,60,-137,583,-25,74,102,190,-36,167,-140,-162,10,112,143,18,11,144,106,-64,-31,85,245,159,88,-112,42,101,-65,199,5,-360,75,144,-835,-68,154,9,-60,-197,-120,-189,-114,-23,-41,46,212,136,-59,-140,-330,-3,397,149,211,-100,1340,31,662,-19,-75,318,77,-325,-278,-24,130,-122,-329,15,137,33,413,-40,29,102,1143,-181,-57,564,141,76,102,234,61,36,124,-180,75,43,-188,339,-36,175,-35,-17,33,396,-125,-249,-156,-39,200,-170,-82,-4,-137,79,-1,-1,-382,-318,69,-87,-52,32,421,-153,104,2,-1182,373,493,-302,-135,-179,741,-48,18,28,-97,-275,-267,93,-77,-28,-164,-166,-50,-111,-361,-32,-171,187,-577,-242,17,-8,1127,-108,167,22,130,-169,-393,-47,75,-139,-100,200,-84,-94,264,51,-49,-108,-104,160,-24,-139,166,104,817,50,160,-126,-145,-252,-48,274,-84,-91,4,146,125,22,-25,-124,-39,-233,16,138,-141,192,-35,268,-180,70,135,-86,121,226,-137,80,-85,133,-44,-40,-15,-171,-140,41,-368,106,-15,130,79,7,-180,-183,-440,-526,-183,-180,-502,-81,-63,-200,229,-40,55,26,29,19,39,-112,-161,-125,-6,781,21,98,-108,22,222,0,62,69,124,26,580,79,-70,-25,-65,-414,-30,181,-476,19,91,-49,229,-35,27,-74,-93,52,-56,128,381,106,67,-7,-36,92,-154,-22,-97,-108,50,395,-112,-64,-8,49,-63,-17,-86,-69,-167,-33,-78,-181,-255,-4,97,87,82,-117,14,233,-384,72,935,-749,-286,62,27,-65,53,53,-163,61,-84,-91,-32,62,-129,-126,-63,144,-73,-13,64,122,12,347,-240,183,165,154,248,-81,-679,282,46,6,326,-234,30,-73,387,22,28,141,-212,-283,-22,280,-274,-86,83,-192,768,-177,81,33,111,-375,-51,60,119,35,-224,-60,102,190,72,668,53,-64,329,144,135,49,176,124,145,-59,51,41,118,2,198,132,136,26,-23,52,24,10,-69,115,42,40,106,-104,-14,37,86,-209,-255,-135,-153,508,-36,-245,25,-72,72,21,-43,855,-108,241,-47,188,-93,-33,14,202,14,-126,354,-559,-23,-73,-81,-235,-340,-220,-34,226,-275,-97,22,87,-100,-80,-218,29,-92,-337,536,58,26,-188,236,-24,-213,190,30,88,-73,-152,-1,102,38,132,-25,210,-108,-63,79,137,118,0,-201,313,97,15,-366,-61,-45,387,2254,169,101,208,-69,-498,-14,474,151,47,-82,-117,-23,-227,-60,-29,-184,263,-60,184,-4,202,119,142,-25,63,11,-219,-78,-226,230,-97,7,-154,-98,112,473,-91,54,-15,-10,13,154,-56,-11,-157,-142,95,143,-54,52,14,412,0,47,-147,-86,60,-21,96,-102,-3,-165,115,187,162,206,-70,328,400,-63,-62,-67,-107,36,-110,31,-65,85,350,97,-160,-319,-69,486,639,-188,-42,392,56,9,136,-136,11,-269,8,91,-235,27,50,-33,150,-1647,-90,-53,-52,88,48,-80,263,446,-139,-15,-44,-47,106,17,-195,1,472,65,231,-43,508,-22,48,-176,-135,-87,-50,-69,-10,-184,159,27,-67,25,187,16,0,29,-204,-102,126,189,-13,-99,49,53,242,-168,-344,182,100,-17,100,-348,89,-68,133,10,226,-435,-32,309,-380,202,-48,351,331,-138,63,224,87,32,-153,652,-282,-138,-259,30,-39,-535,235,-29,127,146,-129,-79,-29,33,-178,108,131,-295,128,-1,11,134,-59,155,11,-170,-101,41,-85,91,-152,-43,227,88,0,59,441,147,-16,85,-122,106,43,35,87,305,19,7,4,115,-133,92,-88,31,59,114,23,-40,-16,-92,-162,-71,36,-32,110,-84,-294,-110,-194,-446,55,-27,-16,-154,35,-131,239,-167,-81,-18,68,38,-80,44,155,67,-81,45,21,-45,-43,431,224,72,-127,-234,-46,125,7,46,333,219,-98,27,-132,155,63,-181,-94,79,425,-77,158,93,-128,39,-201,-161,196,210,58,-375,26,146,207,-59,-158,-165,97,35,-544,40,20,-250,-1,13,86,30,101,-145,81,61,-94,-76,1846,48,-101,-183,-59,-100,94,-102,4,63,-109,5,-2,-130,-20,127,-137,49,-142,40,244,-267,-380,-168,87,-104,-168,-72,36,-47,-30,3,-125,-77,-33,-142,77,-77,-364,28,-115,-1,-443,65,35,-103,-55,-31,293,-55,12,-208,-36,877,57,174,81,-137,260,89,-321,58,-275,534,-189,-122,-1,-91,-6,49,99,-193,-101,89,770,-318,-199,-70,-11,-404,-89,250,-100,138,156,-82,101,-99,-108,-14,438,184,181,4,292,146,-85,1741,46,-62,-62,-77,-13,381,-51,-110,-96,-58,115,208,47,-60,935,454,13,349,90,-64,1356,36,188,-154,-335,891,60,214,37,32,-106,-12,234,-25,-165,-83,-70,-99,232,1,40,-215,-56,-124,-1230,-147,-225,138,-33,-22,12,219,-513,379,157,-8,39,98,-73,-43,-29,98,-75,64,-199,27,40,60,397,197,40,-163,93,27,244,28,64,-203,214,91,168,-88,-339,34,323,-369,-119,28,-33,80,-60,103,-64,120,-34,100,-138,-8,124,16,113,32,180,-132,85,103,26,-239,130,-124,61,-200,340,97,67,-48,0,78,-41,-57,-422,-391,-169,9,439,13,119,46,-49,-52,100,188,-111,164,94,-97,317,-54,-88,-292,-22,109,-161,106,200,151,323,118,25,-269,-282,-477,-5,-182,209,-129,86,-566,213,106,-49,-99,-103,51,234,68,-93,0,-31,385,-255,71,-90,-42,-38,-118,-86,-151,43,670,388,144,52,569,48,-40,-24,-5,132,-57,4,0,-1,16,58,-226,383,109,15,-130,-92,103,-127,-108,-56,-257,-183,-83,-32,35,-111,-67,-56,119,153,-102,-261,-38,-3,-89,-73,-101,643,282,-45,-56,-126,87,381,121,0,-172,-92,-52,114,-113,-25,-83,-50,-165,121,28,66,205,8,102,-64,152,-324,-70,134,-481,493,17,-297,725,34,-53,77,87,259,-132,-96,76,127,-45,-52,-52,281,21,-158,25,717,476,-94,-210,920,38,-485,154,90,-148,-540,-170,-135,64,-161,-277,-109,163,412,-331,-87,-43,3,14,77,-104,-16,-3,-202,47,141,-33,-91,-126,179,176,111,38,386,697,-193,458,-58,139,88,89,337,346,-225,-265,-93,224,0,402,-29,205,-23,57,87,-119,1,7,35,260,-114,200,-120,508,32,124,103,41,-68,-11,173,-198,118,-164,-168,48,-87,-97,73,-178,-37,194,-58,15,14,-119,-26,-123,32,36,393,-134,-54,62,49,-312,-49,89,-11,-199,-42,-27,35,81,90,-213,80,94,-61,-204,-283,19,-138,-66,-205,233,167,-12,-133,403,-156,-188,-489,-493,289,34,93,2,141,-18,96,52,-46,-170,-382,-111,-89,-39,284,127,-203,-83,-62,-207,-84,-126,-18,-187,68,13,100,-326,182,-513,73,78,163,55,66,45,160,-39,114,-96,110,1,-168,27,196,-12,-35,-30,-7,-353,191,0,-66,187,-112,-113,31,-2,452,281,7,787,644,-202,212,204,-174,-153,-152,57,-1,131,-17,40,382,70,34,-57,-31,114,-77,-76,-149,132,244,40,-144,11,33,364,-123,-89,154,11,-43,531,-72,-315,-78,-209,8,104,-97,-26,-154,886,-54,291,229,165,258,42,256,-161,-22,441,69,127,-94,-45,-19,-71,77,29,77,127,85,46,-233,295,-81,-68,-163,110,-16,93,-282,176,35,59,-47,-449,185,-110,73,206,-122,155,760,-16,41,-47,-26,43,-83,9,-6,35,-99,304,69,-100,123,49,355,-173,-10,-232,96,-85,29,1399,25,133,0,2,223,-41,-77,-21,-44,-204,49,-9,12,16,-30,212,75,716,221,-1312,-110,317,97,47,133,-181,-239,79,-183,-247,47,114,267,39,10,130,135,194,-80,-224,-92,438,-149,57,85,201,148,168,64,-66,-12,-564,-39,-101,-571,-336,15,-27,-65,-208,68,65,14,-352,135,-16,-98,35,-113,-796,-445,-79,12,242,-222,-161,337,-30,30,28,-63,-11,-289,-47,2,-151,-133,-306,169,-118,189,1041,9,-339,-46,-528,157,417,-78,-248,101,109,61,107,-153,-21,72,-139,-65,80,-424,-78,-52,-66,-522,78,133,38,20,169,-312,-298,244,83,-328,-73,46,-104,-3,-59,35,224,-443,94,11,-8,-92,340,-27,313,22,-42,113,-95,-227,-166,-30,69,-151,-80,-96,-177,-90,67,-134,292,3,-34,-70,-76,-37,75,-206,-96,-111,26,95,53,-27,-92,-261,-204,27,-228,1308,331,-61,191,24,-140,-143,12,-57,-27,-216,-8,75,51,52,-73,7,-60,-61,59,-44,-37,18,96,130,-75,80,1685,-170,-42,50,-35,66,-42,-50,-206,202,-168,4,-205,-35,-205,418,-58,42,-48,295,-77,-19,-238,4,-202,-487,-74,-32,212,273,-56,-72,-172,-55,-45,-503,195,130,17,-251,-11,-280,424,64,-40,-36,-261,159,-163,206,189,254,-265,112,1,-17,193,51,188,813,68,8,91,-56,-31,-54,200,83,-68,-693,-464,-318,-63,-270,34,145,-159,-40,-94,12,53,60,-246,212,101,-49,-404,481,-77,-116,53,-477,-15,127,103,-115,149,-296,-170,195,269,56,-113,-65,303,-3,73,-10,-37,201,-125,410,13,145,1,103,-21,6,-66,-121,-6,-221,-271,114,118,-83,50,177,762,130,57,-25,-22,68,106,-109,-69,24,-11,-179,211,33,-216,215,-51,47,-97,-252,-7,144,-75,-157,408,345,164,241,612,2,-136,38,176,-276,-1276,121,43,-118,-23,116,-118,102,49,-174,42,-283,-19,-57,-62,-41,-208,125,-45,-25,321,-41,127,164,66,-186,-74,-57,-158,129,-44,49,289,2176,-60,-9,204,-195,-374,155,-63,-63,-235,-24,-286,-102,70,-181,180,65,-379,290,236,-67,98,51,-222,-54,25,118,-90,21,352,-35,27,-26,36,13,169,-27,125,-30,364,29,-74,-105,447,-46,-235,420,110,-55,-1317,837,-288,154,-287,258,149,16,-201,-293,-155,-12,79,46,-137,376,15,52,-586,-396,-36,65,288,-155,2113,-134,-148,27,-66,34,-563,724,32,449,-124,-94,-12,-136,54,60,-54,-66,-118,-415,154,-1169,629,0,-84,153,234,20,-223,103,99,147,-409,345,65,138,-253,286,-114,-52,88,411,106,116,158,-190,-175,15,173,80,3,-17,69,147,-290,-258,121,155,-136,-129,4,-293,-332,18,-172,-268,74,-211,-193,71,-103,-166,-154,-54,0,-46,152,13,-92,95,-57,30,-47,215,215,-48,392,-65,142,142,66,-181,-22,-269,-300,67,-37,24,-3,841,-69,-78,-106,-89,-98,193,-188,108,-199,-76,51,-4,-201,-71,-60,-938,-520,42,28,1188,-975,255,19,-113,-69,-203,-306,131,-386,-63,-16,12,-41,-158,141,-19,2,144,-96,-7,-68,2705,449,55,-93,-335,-215,-103,-179,-74,96,140,105,-108,249,592,218,46,-9,-121,111,-14,-51,-363,-78,-68,52,-55,77,-26,-99,-121,20,-23,68,156,-233,-220,-10,1217,-364,-230,151,-34,-9,-293,21,-25,63,106,-49,-277,-60,102,77,-87,38,940,-155,-55,148,27,395,-146,44,324,134,-113,-16,30,459,-486,-170,-114,-512,969,-120,154,295,40,213,-179,-157,-404,-499,-490,126,44,232,4,-115,-655,20,192,99,287,40,-230,449,85,143,163,-19,9,103,-131,308,-75,-52,-108,90,600,14,38,-35,-160,101,-143,-75,-55,25,-75,58,-133,-10,-3,194,-28,-176,84,-91,204,253,-171,-13,99,-70,-16,-58,-37,-506,-336,268,-129,-326,-77,-20,-50,5,121,115,124,-70,-344,30,231,-21,-61,224,-80,-275,-58,122,212,168,-526,9,31,186,-322,32,-55,118,-112,-298,-57,177,120,-130,155,-91,241,127,153,-85,-104,-29,-208,-84,43,130,-97,-24,97,114,59,445,-57,16,-20,-348,8,1490,904,-66,-197,71,-140,-18,528,124,180,12,-107,-114,48,6,-14,-129,-131,636,360,-6,38,152,328,-3,-20,489,-18,-121,109,181,-99,80,22,-950,-104,-26,16,-146,-58,-517,281,351,63,332,75,-353,296,-320,396,-163,-39,1,49,-85,237,0,-70,125,-3,360,-159,328,161,84,-274,191,321,271,123,70,82,135,-60,-42,-117,-19,1318,-69,-30,-122,-46,19,20,792,22,-279,-143,20,390,-257,-697,43,-170,520,338,349,227,18,53,237,-93,197,105,28,-141,120,-9,-392,68,106,1,-27,77,0,-312,205,-11,66,154,-50,237,19,187,87,642,-42,9,-95,-28,-140,-86,8,-17,-58,-33,-38,-155,19,-18,21,-39,184,58,670,10,-15,-103,-79,59,211,-155,-121,-160,-119,-342,1720,245,-77,-24,-238,-50,190,4,-363,-94,176,0,36,-72,25,93,-88,252,-319,46,-104,-155,40,-56,34,-292,40,450,144,-457,-465,68,-32,-135,51,-172,103,-99,-50,-466,-347,-100,-36,45,-120,26,57,-54,1164,-971,-457,523,-257,71,5,112,-178,45,85,-91,133,50,34,153,-57,233,20,-100,-46,141,99,-32,143,18,-340,-57,5,-68,-314,-969,-411,5,90,-460,67,278,65,19,27,19,10,11,-123,58,-247,-81,127,74,4,-150,49,306,-961,577,25,-234,-226,-88,105,-53,9,36,-36,16,102,-24,17,-138,182,-167,161,-288,146,-175,-86,-644,32,96,305,-2,-66,-135,199,9,185,438,-165,130,-235,55,292,-61,-41,15,66,-164,110,214,-78,-15,310,-90 }; ================================================ FILE: face-detection/src/sw/haar_dataRcc_with_partitioning.h ================================================ static int stages_array[25] = { 9,16,27,32,52,53,62,72,83,91,99,115,127,135,136,137,159,155,169,196,197,181,199,211,200 }; static int rectangles_array0[2913] = { 6,6,3,8,3,6,5,11,4,6,6,1,0,9,5,5,13,7,10,2,18,0,9,7,5,0,5,9,9,6,3,5,18,1,0,5,2,8,2,0,20,0,18,0,12,0,12,8,5,1,17,0,6,6,0,4,2,19,1,0,1,14,3,6,8,15,1,4,0,3,1,5,3,14,1,11,5,6,9,9,7,10,8,3,6,0,4,11,0,11,4,11,9,9,1,10,6,7,0,6,1,6,2,20,0,2,0,12,5,11,0,12,6,8,0,10,3,2,2,3,5,9,4,4,6,3,0,6,6,3,1,8,0,12,0,19,0,6,7,9,0,4,7,18,0,18,0,16,2,9,2,14,5,15,0,8,7,0,1,14,7,10,4,10,1,10,5,8,6,7,0,1,5,12,6,7,0,2,2,14,8,14,8,17,6,13,3,9,0,0,6,7,10,1,5,9,20,2,5,0,5,0,6,0,1,2,2,0,9,7,11,6,18,3,18,1,11,0,13,7,11,8,13,2,3,0,9,4,7,0,7,7,3,0,3,4,13,9,5,1,10,0,1,4,0,2,9,5,17,1,14,3,15,9,17,3,7,1,10,0,15,3,12,6,14,1,13,7,12,6,6,7,7,8,7,0,15,0,15,7,15,0,8,0,3,0,9,10,7,5,14,2,0,4,9,0,18,0,8,8,11,7,12,6,15,5,9,7,14,2,5,9,12,9,3,6,12,1,12,1,10,3,10,0,6,6,5,4,11,7,3,2,3,8,16,7,18,0,18,3,18,0,5,6,10,8,15,3,15,2,8,8,15,4,13,7,18,1,14,1,4,1,10,0,15,3,15,3,15,0,4,2,14,6,17,1,16,7,12,4,10,2,15,0,6,1,6,0,8,9,6,0,16,0,14,1,5,4,16,0,10,9,9,3,6,8,0,14,5,9,0,3,3,20,0,8,6,9,1,9,7,13,7,14,2,18,6,18,7,18,0,9,0,17,1,14,6,3,9,12,6,6,1,10,5,5,0,0,1,6,4,1,5,0,3,2,6,14,0,14,0,0,0,5,3,6,0,13,7,9,1,13,5,16,4,0,5,12,2,15,0,12,11,9,8,12,3,6,7,12,10,16,4,2,5,10,8,6,6,0,1,3,3,0,10,8,5,0,14,9,14,1,15,0,17,2,3,9,18,0,4,2,14,0,18,5,21,6,8,7,21,10,15,0,11,7,12,6,14,6,3,3,0,10,11,6,16,3,16,0,10,0,13,7,5,0,6,3,8,2,15,3,17,1,19,1,4,6,15,0,15,3,8,6,5,10,10,0,15,0,12,9,12,6,15,0,11,6,10,0,3,3,0,0,12,2,7,0,3,6,5,11,0,18,3,9,0,13,0,13,4,13,5,7,6,14,4,11,0,13,2,10,8,14,6,8,7,8,5,3,0,5,0,3,1,5,1,1,3,6,6,14,1,11,10,11,7,12,2,14,6,14,0,5,1,13,7,12,0,7,7,8,1,13,5,14,4,12,9,11,5,8,1,9,3,12,8,2,0,14,2,2,6,5,1,7,3,9,2,18,3,20,2,1,0,19,0,18,0,7,0,10,8,4,2,7,3,16,5,10,4,2,6,1,12,0,15,5,8,1,17,8,17,7,15,2,10,0,20,1,15,0,16,2,10,1,11,3,3,10,3,0,12,8,10,9,4,0,9,8,13,5,0,1,19,0,16,0,12,7,9,0,1,1,13,0,12,4,15,1,3,2,13,1,3,7,12,0,13,0,15,0,13,5,0,2,0,1,15,0,6,8,10,8,12,6,13,1,15,6,13,5,6,0,11,9,10,8,3,10,4,9,5,2,13,8,12,2,7,3,11,0,3,1,11,9,9,1,6,1,8,2,11,7,11,5,11,5,4,2,7,9,2,8,3,8,0,6,0,20,0,0,0,14,0,1,5,4,8,6,2,11,2,5,9,8,6,10,0,18,2,3,2,13,6,9,7,18,9,6,0,13,0,13,5,11,4,6,0,12,0,12,5,5,5,3,7,13,2,19,1,5,0,2,5,1,3,8,6,10,1,8,3,5,4,6,7,0,0,3,2,7,5,10,9,18,4,10,9,11,7,4,2,13,7,3,1,8,3,5,8,9,0,6,0,13,5,1,9,9,5,4,0,16,9,8,8,10,7,5,2,18,1,6,9,10,6,8,1,9,6,17,2,7,1,1,9,3,16,0,16,0,8,5,4,0,6,0,20,8,6,0,6,0,20,0,15,0,13,5,5,3,6,6,10,1,11,5,12,5,13,0,8,1,2,2,17,1,7,0,15,1,9,0,16,4,7,9,12,8,15,3,15,1,15,6,10,6,11,6,11,9,3,2,3,3,4,0,10,0,5,8,11,5,5,10,10,7,1,0,12,2,12,1,12,0,5,6,14,5,9,1,8,3,12,0,8,4,12,9,9,1,8,3,7,10,10,3,12,3,10,5,7,6,12,2,0,0,0,5,1,9,2,5,4,2,7,0,2,3,6,9,15,8,3,2,19,1,14,4,14,6,14,4,0,1,20,0,8,7,16,5,11,10,10,7,14,5,12,6,11,1,15,9,10,3,16,7,15,0,13,2,5,1,5,1,14,4,14,4,18,1,2,0,12,3,16,3,9,9,15,7,17,3,3,0,2,0,13,5,5,5,18,0,3,2,2,5,6,6,13,5,6,0,18,0,12,6,0,3,9,5,4,10,8,2,8,0,18,0,9,1,2,7,8,4,10,2,15,3,15,4,15,0,15,0,10,1,7,10,8,3,7,0,10,7,5,5,6,3,16,0,0,0,10,10,4,0,9,3,6,11,5,4,2,7,1,13,5,11,6,3,0,10,6,6,0,18,0,11,0,2,1,18,0,17,0,0,0,10,7,15,3,15,0,15,0,5,0,9,3,9,5,9,8,10,5,9,7,11,9,6,1,16,0,8,0,3,0,6,0,14,1,13,4,12,2,16,3,14,8,9,0,4,5,15,0,8,1,14,4,16,3,18,1,11,0,15,7,22,0,18,0,3,6,7,2,4,9,4,3,18,2,4,7,7,6,12,0,8,2,13,5,9,5,3,2,11,3,9,1,15,1,9,6,10,7,10,4,0,3,19,0,17,1,18,0,3,2,9,5,10,8,7,9,5,8,8,6,14,6,8,2,2,0,0,7,6,14,4,2,6,9,7,6,5,18,0,18,2,5,11,15,7,7,10,10,2,14,8,14,3,14,1,3,1,18,0,5,6,14,4,15,0,0,3,3,0,1,0,2,2,0,10,10,6,11,9,2,1,13,6,10,6,14,6,9,8,17,1,14,7,3,1,14,0,12,0,10,1,15,6,6,8,14,0,10,6,7,9,10,8,7,4,17,3,10,2,3,4,15,7,15,1,11,5,10,4,0,4,10,0,6,1,18,4,6,1,1,2,12,0,10,7,9,4,6,5,10,8,9,3,4,6,8,0,11,2,8,0,0,2,4,10,7,9,17,0,16,1,12,3,12,3,12,8,10,6,13,1,7,2,0,9,0,9,2,13,4,20,8,0,0,3,3,13,5,13,2,9,8,12,8,8,11,9,0,9,1,12,6,13,1,9,2,15,0,9,2,15,4,17,0,15,0,9,3,16,0,13,0,0,5,8,4,10,8,11,4,14,2,4,8,1,7,13,8,4,3,14,8,3,4,3,9,9,7,12,6,18,3,18,0,13,5,11,3,16,5,7,1,2,3,17,5,13,0,15,1,12,1,3,6,5,9,11,4,6,5,11,5,1,7,6,6,11,5,6,0,2,0,9,9,12,0,1,3,2,5,10,8,5,6,7,5,4,0,9,9,6,9,10,5,14,5,14,0,16,4,8,0,13,0,0,6,10,1,0,2,2,1,10,7,9,7,3,7,3,8,3,6,1,5,8,3,0,2,4,9,9,14,7,14,4,17,1,14,0,9,3,14,4,7,7,14,10,14,5,4,9,3,4,16,4,6,10,9,6,5,3,6,0,6,0,4,0,15,0,6,3,12,6,6,9,10,7,14,2,11,1,15,1,10,4,7,10,13,3,13,5,10,7,15,5,8,7,12,6,7,6,5,3,3,0,14,0,1,1,7,9,10,2,8,0,5,2,14,3,9,4,0,7,11,0,14,2,11,7,6,4,14,4,13,8,17,4,15,3,12,0,16,2,15,0,18,0,16,5,12,0,5,0,8,5,10,6,6,3,12,0,0,5,10,9,8,0,16,3,6,0,14,0,2,4,12,0,6,1,11,3,15,6,9,4,7,5,11,7,8,0,10,0,20,0,12,1,5,1,6,5,11,1,11,0,3,1,0,1,11,4,12,4,13,1,9,0,6,6,10,6,13,2,11,1,1,0,13,5,18,0,11,0,12,1,7,8,6,2,14,3,15,5,11,7,11,9,4,9,17,1,7,6,9,1,19,0,3,1,2,4,6,4,15,3,8,3,15,3,5,1,14,0,15,3,9,1,13,1,6,8,0,0,4,1,14,1,10,6,10,7,14,6,8,3,5,0,9,4,10,8,7,8,11,7,4,0,7,1,11,6,7,7,9,0,7,1,9,0,1,1,9,3,9,9,16,2,13,1,14,3,13,7,4,9,7,0,15,1,14,4,15,3,0,7,1,1,6,1,15,3,4,0,6,4,6,0,3,4,20,0,11,6,11,1,11,1,11,0,3,7,17,5,16,0,6,0,3,2,10,10,11,9,5,6,10,0,6,4,14,0,1,8,13,10,7,8,7,2,11,7,13,0,12,8,12,6,14,0,14,0,4,1,4,0,3,9,0,6,2,18,0,11,9,7,1,18,5,18,0,9,2,10,5,9,7,10,4,6,0,3,9,6,2,19,0,5,5,1,8,6,9,2,5,8,9,14,2,10,1,11,4,6,5,9,7,7,2,5,7,0,0,16,5,5,0,11,0,4,2,3,2,6,0,3,0,5,1,19,3,19,7,9,0,15,1,9,7,9,7,9,7,9,10,5,0,9,2,15,1,6,0,6,0,13,2,13,5,11,7,10,3,14,4,4,5,7,2,10,3,16,0,0,4,10,7,13,3,16,2,3,4,4,3,8,2,14,7,4,0,10,5,0,0,3,9,0,6,8,2,12,5,14,5,6,7,11,7,13,0,1,6,10,3,0,0,3,7,10,8,12,6,16,2,10,8,14,0,11,3,10,0,19,4,4,0,6,19,0,18,0,5,10,9,0,7,1,8,0,13,10,13,7,4,0,0,6,7,0,13,3,12,2,9,6,14,5,10,6,14,4,14,0,13,2,6,0,19,1,15,3,11,7,14,3,20,7,7,2,15,7,13,5,3,5,9,3,19,0,20,0,7,4,10,0,7,0,13,1,7,0,6,8,7,1,16,5,7,4,6,9,15,6,12,7,6,10,10,3,4,2,13,7,1,0,0,3,3,3,13,2,10,6,2,2,10,8,13,3,3,2,14,3,5,2,17,2,0,7,15,5,11,6,11,5,15,4,12,6,5,9,12,4,4,5,14,9,9,9,1,2,12,6,12,8,7,0,4,2,15,0,6,6,8,1,6,7,10,3,15,1,15,10,15,6,15,6,16,2,2,6,9,2,16,0,15,8,15,0,12,3,13,0,10,7,4,0,6,3,9,5,5,3,5,6,0,2,8,18,0,4,6,4,4,7,0,13,5,3,0,14,0,14,0,6,0,14,6,15,8,4,5,7,10,5,1,18,0,13,0,12,7,14,0,14,2,14,1,3,5,5,8,9,6,5,8,6,3,13,3,12,7,13,7,11,7,5,8,4,0,0,0,9,3,12,8,10,5,2,6,8,9,15,1,11,5,6,1,2,7,10,3,7,7,9,1,13,3,8,6,4,0,3,2,16,4,16,1,15,3,18,0,4,2,17,1,8,0,11,0,19,2,3,4,7,3,8,4,10,3,15,0,6,9,12,8,16,8,6,0,17,0,9,1,7,7,7,3,9,3,6,1,16,0,0,3,4,0,20,1,18,0,8,4,7,6,7,9,8,8,8,4,7,0,12,4,8,9,14,7,4,10,12,0,16,5,10,2,2,7,3,2,15,2,10,4,15,0,18,0,15,3,12,0,11,9,12,3,5,0,8,6,14,9,6,6,1,12,3,9,4,11,3,5,4,9,8,16,3,6,8,0,0,5,0,2,9,9,9,5,2,6,5,18,0,10,6,3,5,17,0,9,5,11,0,6,4,9,5,6,7,11,1,18,0,0,0,6,0,19,4,19,1,3,0,12,7,12,2,14,0,15,0,14,0,5,0,3,5,4,3,4,4,16,6,13,3,12,5,10,6,6,0,12,0,12,9,6,0,2,0,6,0,0,4,12,6,15,3,6,5,12,0,11,10,9,1,6,1,7,0,10,9,10,8,9,1,0,6,8,5,4,4,8,1,10,1,0,1,5,0,9,1,8,8,5,9,6,2,10,7,14,8,9,3,5,4,6,9,12,6,9,5,5,9,11,2,15,3,3,5,16,0,13,1,15,5,6,2,14,10,13,3,13,3,11,0,0,6,18,0,15,1,15,0,3,0,15,0,12,3,16,0,9}; static int rectangles_array1[2913] = { 4,4,9,18,5,5,8,14,0,6,4,8,2,9,6,0,11,5,8,5,0,6,6,18,7,3,8,6,5,6,21,6,1,1,8,6,12,1,13,1,2,5,4,3,1,6,1,1,5,10,13,4,4,5,1,10,17,3,3,1,7,7,12,6,7,15,17,4,1,0,5,8,14,15,15,6,5,0,0,6,0,6,6,8,0,0,7,6,20,6,13,6,6,12,22,7,7,6,14,18,1,16,4,4,4,16,12,0,10,8,8,0,0,14,16,8,19,10,9,0,6,5,5,14,13,16,0,6,1,2,8,9,12,16,16,1,2,8,5,17,7,1,5,1,1,0,0,7,10,9,15,7,6,8,8,6,7,14,10,12,0,0,3,0,1,0,0,18,3,3,10,10,11,11,11,10,13,4,0,0,0,1,1,6,14,14,18,4,17,2,8,5,5,4,0,15,0,0,22,0,6,1,5,1,2,8,12,12,7,1,2,4,1,15,5,5,0,4,0,0,6,7,17,18,18,20,15,4,6,14,9,6,6,10,16,6,0,0,7,20,5,2,1,0,0,21,7,7,8,15,15,0,6,1,2,14,6,2,4,17,7,1,13,13,6,12,1,0,2,2,18,6,7,3,4,1,2,3,3,0,8,8,14,14,10,0,1,6,9,0,0,0,11,9,8,12,12,12,7,7,0,0,3,3,2,10,14,13,5,17,18,0,4,4,3,1,16,3,5,2,14,21,14,2,4,6,8,14,6,6,7,3,12,6,6,9,6,6,2,18,2,2,10,0,0,0,12,6,12,5,8,6,12,12,1,1,9,21,13,13,6,0,7,4,0,0,12,12,12,12,14,13,15,0,1,1,14,3,1,0,6,10,15,1,9,0,15,15,7,12,8,14,10,3,17,13,0,3,5,7,6,8,15,1,8,5,2,7,7,6,1,1,18,4,16,7,7,2,20,12,2,0,0,15,8,3,5,4,6,4,4,4,22,14,14,11,11,9,12,0,0,17,17,6,6,4,0,0,15,8,12,2,20,0,13,10,3,5,7,0,0,1,17,15,15,16,13,0,4,5,4,0,0,7,7,5,13,0,7,2,2,2,6,5,6,0,3,7,7,7,6,14,0,2,4,3,4,0,6,0,10,21,6,5,2,7,7,17,18,6,18,18,9,9,3,17,15,17,3,3,0,0,0,0,3,11,0,0,8,12,0,6,0,2,7,6,1,4,3,1,0,0,13,5,1,2,10,4,10,10,14,7,1,1,5,9,16,12,14,13,5,5,5,5,1,1,15,9,2,2,0,0,17,5,2,2,7,7,0,0,6,7,6,6,3,0,9,7,6,0,14,14,12,2,16,16,0,0,8,5,13,14,6,0,1,6,0,11,20,11,12,11,11,4,15,0,0,2,0,18,7,14,2,3,6,8,4,8,2,16,0,2,11,3,16,17,13,9,7,8,2,17,18,3,6,0,0,10,11,5,6,5,3,21,10,4,8,9,6,6,5,4,4,10,10,2,2,4,4,4,4,18,18,2,2,5,8,7,5,14,14,11,9,6,19,5,5,4,6,10,7,2,18,9,2,0,3,2,5,0,3,14,9,11,5,6,6,5,5,10,10,0,3,1,7,12,6,7,18,2,3,2,0,0,5,22,10,1,0,3,15,13,8,8,2,5,8,8,6,0,9,0,5,5,5,4,16,16,9,13,10,9,0,11,5,5,6,6,5,6,13,5,2,15,17,13,10,6,14,12,10,0,11,2,4,0,17,6,10,16,16,16,11,11,3,4,0,16,15,15,17,8,6,8,8,5,6,7,5,9,8,8,11,0,2,0,0,3,10,0,3,4,0,5,0,4,10,10,11,10,12,21,20,15,17,12,6,13,16,5,1,19,1,2,10,11,9,10,7,0,6,0,2,17,0,0,17,7,3,2,2,1,16,13,15,5,13,2,14,12,13,8,12,16,1,2,6,7,0,8,12,21,0,6,4,7,8,8,14,11,12,0,10,2,0,6,6,11,11,16,6,16,7,10,4,18,0,3,0,1,1,16,3,16,3,9,4,7,7,4,12,3,6,6,3,3,6,1,17,18,5,6,2,7,0,8,7,5,9,14,14,8,11,0,0,1,11,18,9,10,6,14,7,4,16,13,8,16,0,5,5,6,7,10,12,10,0,4,10,6,11,8,11,9,12,4,4,9,5,9,0,9,9,4,3,1,6,18,8,19,8,8,12,7,1,12,0,0,3,6,11,8,17,14,3,3,0,0,11,11,11,20,6,0,3,5,12,0,0,5,12,13,1,0,2,2,10,10,6,12,14,1,11,15,14,3,6,6,1,1,15,15,1,3,0,3,5,0,1,7,3,3,7,7,13,5,1,1,15,2,5,15,12,12,0,2,7,9,5,5,17,18,17,17,17,0,0,14,13,20,9,10,8,10,10,15,5,13,17,12,9,9,7,4,8,7,15,8,17,17,1,7,5,4,16,16,0,6,4,0,1,6,9,2,2,3,1,9,10,0,4,1,8,0,22,15,0,7,14,14,5,5,5,5,2,2,0,4,16,0,12,21,5,5,6,5,14,5,8,6,13,10,13,0,1,4,3,13,13,13,16,16,16,16,0,1,2,15,2,2,2,2,0,12,2,10,3,7,11,8,0,0,3,18,18,3,7,3,17,5,6,16,2,2,4,13,1,12,7,5,11,11,4,2,0,0,0,0,2,13,7,8,14,0,15,9,4,10,5,18,18,20,8,8,5,5,6,0,4,4,12,0,12,12,15,15,0,0,6,12,4,22,7,0,1,16,7,10,2,9,2,2,3,13,14,2,4,1,6,21,5,6,6,3,10,15,4,0,0,0,7,0,10,2,5,0,0,2,2,0,0,2,10,7,0,3,7,6,2,6,0,0,0,17,17,14,15,15,14,8,7,8,0,8,5,6,7,8,8,10,5,12,9,14,9,18,6,6,16,16,11,6,7,6,7,10,12,14,12,13,0,1,16,17,2,0,0,2,1,8,8,5,5,4,7,15,2,1,1,1,1,11,11,6,10,9,18,21,12,6,6,4,12,14,7,13,7,12,2,0,9,10,10,15,16,2,5,0,16,12,15,10,9,11,7,15,8,4,6,6,7,8,8,3,3,2,2,3,3,3,3,11,11,8,6,18,4,1,11,12,12,0,12,20,4,2,8,7,0,11,0,7,17,10,5,11,4,0,4,4,18,0,4,4,11,6,0,9,15,7,15,12,12,12,7,7,4,4,11,16,15,15,1,21,20,1,17,16,16,16,10,18,5,2,7,6,0,7,1,18,2,7,1,0,3,15,10,3,0,0,0,4,17,20,3,3,6,6,9,18,0,1,0,10,16,16,12,16,6,6,9,9,4,8,3,3,1,5,6,10,4,2,4,4,8,8,13,13,13,2,2,2,0,2,5,3,21,10,10,8,8,8,15,13,8,13,15,4,15,15,11,6,2,2,1,7,6,11,16,0,11,9,5,2,3,15,0,0,1,0,2,2,2,4,1,1,5,4,5,5,5,0,8,6,3,18,8,2,5,4,6,1,4,6,17,6,6,5,2,2,6,3,3,3,1,2,2,14,8,0,0,6,5,7,16,17,8,13,17,17,0,2,3,17,17,18,15,13,14,18,13,14,2,9,3,2,4,5,5,6,4,4,7,9,0,3,1,22,10,0,0,2,13,21,1,7,0,1,1,2,5,2,2,11,7,9,9,4,6,21,21,5,10,0,2,0,12,13,0,1,13,21,3,10,3,2,1,0,1,18,15,10,9,11,7,2,2,4,5,7,4,0,1,0,0,1,0,5,0,14,14,18,0,4,2,1,8,15,10,17,4,0,6,9,9,11,2,0,15,18,17,11,11,9,16,16,1,2,15,11,18,14,7,8,1,14,7,12,0,0,0,0,8,8,21,0,0,6,6,0,0,16,0,0,1,1,13,0,5,10,7,10,6,2,13,6,13,20,4,6,0,13,16,0,6,5,15,7,6,6,0,0,18,15,3,3,14,14,15,17,0,0,16,0,7,8,9,0,1,4,1,2,1,0,17,14,15,21,15,15,6,3,1,4,1,2,2,2,7,3,6,1,8,0,16,16,19,16,8,15,18,18,3,5,5,6,2,6,2,8,5,8,0,12,12,7,14,6,6,13,10,10,9,3,0,12,0,0,2,2,0,0,6,6,1,1,0,10,9,9,7,15,10,4,2,0,9,2,0,15,14,1,0,3,2,4,16,16,18,0,3,12,3,3,8,15,13,6,9,0,3,3,5,4,7,0,0,0,1,2,13,13,2,9,6,8,7,12,10,6,12,15,14,8,10,10,9,12,12,12,12,12,10,15,10,1,4,5,10,12,0,10,2,20,10,17,0,0,2,2,7,1,14,13,6,2,6,19,15,5,6,6,0,0,5,5,1,13,1,17,13,18,14,1,4,0,5,5,1,1,0,4,6,18,18,15,7,7,9,13,15,15,13,13,5,18,19,19,19,14,0,1,9,15,0,10,10,8,5,5,4,4,7,6,4,0,1,1,14,3,3,2,2,7,22,16,3,10,16,0,5,8,1,6,3,13,12,5,5,6,1,19,14,6,0,0,1,8,7,12,1,1,7,10,7,3,0,0,5,5,0,0,2,1,0,17,18,17,15,15,14,10,18,12,10,10,2,6,14,14,1,21,1,16,1,0,1,1,7,14,1,0,1,1,0,14,7,11,5,6,1,1,9,4,16,0,5,3,12,11,10,9,2,6,8,1,1,14,16,16,4,19,8,1,8,8,5,6,12,12,6,6,0,1,6,6,17,22,12,12,12,14,6,7,3,1,1,2,2,12,2,6,6,0,0,6,1,7,7,20,6,2,3,4,1,0,2,2,15,17,6,0,4,6,12,14,14,18,3,3,6,5,4,16,8,6,5,1,1,10,2,0,1,6,1,4,0,16,16,0,3,7,9,14,14,21,21,4,7,4,15,13,6,16,5,8,8,8,8,8,6,8,5,5,1,10,17,16,10,4,18,18,16,15,15,1,1,5,5,0,4,0,0,5,6,2,2,0,4,0,0,7,7,8,0,10,0,1,1,6,12,9,10,18,16,14,14,10,13,13,0,8,5,0,11,5,18,8,7,0,0,2,8,9,7,2,0,14,12,12,6,0,8,6,11,3,12,16,6,10,10,12,12,15,15,20,20,17,2,1,15,2,12,7,1,8,3,6,0,0,15,7,6,21,3,7,2,10,9,5,9,11,13,0,18,4,8,3,15,18,14,15,6,6,6,14,8,6,9,9,15,20,18,18,16,16,2,2,0,20,6,9,6,6,4,6,0,1,0,0,12,12,5,6,5,16,8,8,4,4,7,19,11,1,2,13,0,11,1,10,19,10,1,1,4,4,6,9,5,2,0,0,7,2,0,6,8,18,14,15,0,0,4,0,0,2,6,1,0,0,2,0,2,11,8,8,8,11,9,4,17,21,4,15,8,12,17,16,1,1,13,1,4,8,7,7,6,6,9,1,6,5,6,4,8,10,5,4,4,7,6,5,7,7,2,1,13,13,15,15,0,6,7,9,6,7,12,14,17,12,17,3,17,1,17,5,7,4,1,5,0,11,7,7,17,6,15,15,10,10,15,1,0,0,1,21,9,4,1,9,1,0,0,6,1,12,17,1,0,6,0,7,12,9,1,11,11,10,2,16,16,13,16,16,18,13,2,8,13,20,8,7,6,20,20,1,1,3,2,9,3,0,9,4,4,13,13,15,13,0,2,1,1,6,2,11,1,0,3,1,7,0,0,9,15,7,9,17,3,1,15,0,3,1,0,6,0,0,11,7,6,14,14,0,0,1,12,8,6,5,9,8,12,19,0,4,16,7,7,6,17,17,4,0,0,0,4,12,9,5,5,7,1,0,6,8,6,12,4,1,1,10,4,13,13,15,14,14,8,10,10,7,10,1,15,6,1,6,18,0,13,6,6,6,7,8,8,8,2,10,10,7,7,9,2,2,1,2,3,8,8,18,6,6,3,6,8,2,14,2,3,6,2,17,7,11,1,0,0,7,2,1,0,0,0,15,18,8,6,2,7,6,2,9,4,8,8,0,0,0,0,2,2,6,0,1,4,5,13,14,2,1,1,4,5,1,12,12,18,13,3,9,3,2,6,6,9,9,6,6,16,20,10,6,1,13,15,12,11,6,0,0,3,3,5,5,2,2,0,0,11,11,6,16,16,6,7,6,1,9,5,11,8,8,6,5,7,0,0,6,6,6,21,19,18,18,16,16,0,0,14,14,14,14,18,18,5,3,0,0,12,3,4,4,14,14,6,11,5,4,8,8,6,14,6,6,14,5,5,0,3,3,12,10,8,14,10,10,12,8,11,11,2,2,12,10,9,8,7,0,0,5,6,0,1,0,3,14,9,2,4,4,5,7,5,5,4,14,17,16,17,20,14,6,4,3,8,6,6,5,5,5,2,1,2,0,9,0,0,0,1,9,8,9,9,0,1,1,20,0,8,8,13,13,8,8,11,11,12,1,11,10,8,8,14,18,16,20,12,12,17,6,17,18,15,13,17,17,17,17,2,13,1}; static int rectangles_array2[2913] = { 12,12,18,9,4,12,12,4,7,12,12,19,24,6,14,14,9,6,6,4,6,24,6,10,14,24,15,5,6,3,18,13,6,6,24,14,21,4,20,6,4,22,6,6,4,19,4,4,14,18,4,6,12,12,24,18,12,4,4,24,8,3,16,12,6,9,18,16,4,18,20,14,7,9,9,8,14,12,6,6,6,6,6,18,12,24,16,6,24,4,15,4,4,6,18,4,8,10,10,18,22,18,6,4,4,20,8,6,6,12,12,6,6,9,9,6,12,20,18,18,14,10,12,18,8,18,6,12,4,19,22,11,15,12,12,5,24,12,9,6,22,17,6,6,6,6,6,8,19,6,17,3,8,9,9,10,3,24,18,6,10,9,16,9,20,9,9,10,6,12,18,22,8,6,6,11,24,22,20,2,2,2,2,3,9,9,18,8,18,12,14,6,6,9,18,5,4,18,19,4,19,6,14,20,22,7,22,22,6,9,4,12,6,18,6,16,6,24,4,4,6,6,9,14,18,15,15,16,10,15,10,6,18,18,18,14,2,2,15,21,5,24,22,15,24,18,10,10,6,20,10,16,7,6,6,12,10,6,5,24,5,6,6,6,3,13,4,9,6,6,12,6,12,8,10,6,2,6,2,2,9,9,9,9,18,24,8,4,10,3,6,6,24,13,6,16,6,6,10,6,6,6,6,6,9,6,6,5,3,18,19,6,3,3,18,6,9,20,6,22,5,18,6,24,12,12,14,8,5,3,18,20,19,6,6,6,6,6,6,15,6,6,18,12,6,6,9,13,9,6,9,3,9,10,4,4,6,18,10,22,16,18,8,6,6,6,6,6,9,9,19,19,10,10,6,6,6,9,4,14,6,18,9,21,17,11,13,9,15,6,18,24,3,24,10,18,18,16,3,18,6,6,6,18,12,6,24,5,5,6,6,19,12,4,10,10,10,9,21,9,9,4,4,9,18,6,11,6,9,6,6,9,19,6,6,4,4,18,6,6,6,18,18,11,14,15,22,24,18,12,7,22,14,24,18,22,11,6,24,10,10,24,18,16,16,18,21,6,6,9,2,6,6,6,4,24,10,6,6,9,6,10,2,15,6,6,9,14,8,7,4,6,6,21,5,4,5,11,12,24,23,18,21,6,4,8,15,10,9,6,9,9,9,9,6,18,21,6,6,6,16,10,10,10,6,12,3,6,9,8,3,4,9,24,6,6,6,12,2,12,18,18,24,4,6,6,8,16,8,8,11,24,4,4,16,6,18,6,9,8,3,18,6,6,4,4,18,12,9,9,6,6,9,3,14,3,14,14,9,9,6,6,6,6,8,9,8,10,4,6,18,8,24,3,10,10,10,24,15,12,14,4,6,6,18,14,6,6,24,6,10,6,6,11,10,6,6,4,20,10,6,10,4,10,12,8,4,9,14,19,10,16,24,18,18,18,9,23,18,12,3,10,10,6,4,6,6,9,6,3,9,3,6,18,18,8,9,9,5,14,3,15,15,6,6,6,6,6,6,8,8,10,21,12,12,12,6,20,12,8,8,20,12,16,9,12,14,9,19,6,18,4,20,22,4,4,6,6,10,12,24,4,4,17,18,14,14,3,3,14,9,18,12,8,7,22,4,7,9,22,6,8,6,6,9,18,12,4,4,6,9,8,6,6,4,19,9,12,18,4,18,4,4,4,6,4,18,20,6,8,3,14,24,18,5,5,8,8,12,6,6,12,23,19,11,8,10,9,9,9,20,9,9,8,21,10,12,23,8,18,9,9,6,6,24,18,24,18,9,9,18,6,6,5,6,6,8,21,3,11,10,12,18,22,6,6,6,6,18,3,16,6,16,18,6,8,10,10,12,8,9,24,18,9,10,4,9,6,12,20,9,9,4,8,9,12,9,6,5,21,10,6,18,8,18,9,18,12,6,4,4,24,9,9,19,22,6,20,6,16,8,6,16,16,4,8,12,6,8,6,6,21,16,7,4,6,6,4,6,12,23,6,12,10,6,9,9,18,18,12,21,12,6,19,14,18,4,11,9,4,4,18,11,20,13,22,14,10,10,6,9,8,16,14,9,18,9,24,10,18,6,11,12,4,4,6,15,6,6,6,6,16,20,4,4,18,6,9,15,19,7,9,8,18,12,9,14,22,6,10,10,16,6,8,6,8,4,8,10,14,20,4,12,12,6,8,8,9,16,6,3,5,5,10,23,21,6,12,8,24,8,8,8,5,19,24,13,24,4,6,12,12,18,9,4,4,9,9,6,6,19,18,16,9,4,15,8,6,6,12,11,21,8,6,21,19,6,6,14,9,8,22,9,18,7,16,12,4,4,4,6,6,3,6,3,12,4,3,3,10,3,6,19,18,18,6,20,20,6,24,18,6,8,8,14,4,5,8,22,6,9,19,9,18,9,24,14,9,6,13,6,21,9,9,10,24,9,6,9,6,14,14,9,6,10,4,6,6,9,9,9,4,12,9,10,10,24,9,24,11,22,6,20,14,16,19,10,4,21,6,14,6,9,4,19,20,4,8,6,6,4,4,6,6,24,6,4,4,9,6,7,14,6,4,6,6,10,14,12,12,6,20,9,6,5,16,8,6,9,9,9,9,18,18,18,19,6,15,6,6,6,22,21,18,6,18,8,18,6,6,2,2,7,9,21,7,22,24,9,12,14,14,6,6,20,9,21,14,12,9,6,6,18,6,6,6,6,6,24,18,10,12,19,4,9,15,12,6,6,16,14,20,20,6,12,12,6,6,6,6,9,15,9,9,9,9,8,4,10,4,10,18,11,12,12,9,15,12,12,12,8,8,24,8,4,4,15,24,5,18,3,4,9,20,18,10,4,6,6,6,9,18,20,4,6,18,18,6,6,6,20,20,18,6,22,6,6,24,6,6,6,6,6,9,18,9,23,18,9,8,15,8,6,8,6,4,12,8,8,6,6,12,18,8,22,12,20,20,10,18,19,6,22,7,11,10,9,6,6,6,6,6,9,18,13,8,8,8,6,6,6,5,5,6,6,12,24,2,2,2,2,6,6,18,7,12,18,20,6,18,18,6,9,18,6,12,12,6,4,9,12,6,6,9,12,20,12,3,15,6,12,8,8,9,12,6,9,8,6,24,6,5,5,6,6,6,6,18,9,10,10,6,6,10,6,18,6,9,6,4,4,12,10,22,2,24,10,8,6,5,20,12,6,10,12,6,4,6,4,4,19,2,2,2,10,4,6,16,6,6,6,12,9,9,18,22,6,6,16,9,6,6,6,24,24,6,18,18,22,9,21,12,24,4,6,6,6,6,20,12,4,12,4,3,10,12,6,4,6,6,6,4,18,22,10,10,12,12,5,21,9,12,12,8,10,10,12,10,12,4,6,6,11,6,4,4,8,16,18,16,8,9,8,8,8,8,5,7,24,8,8,24,12,12,6,8,18,18,22,12,12,12,6,9,7,9,18,4,6,6,12,14,17,12,9,24,9,18,9,9,24,20,16,4,10,6,7,7,6,19,9,9,10,18,4,4,8,12,6,12,10,21,9,6,6,12,20,10,5,4,8,24,4,18,16,6,14,8,20,9,6,4,4,8,2,9,19,9,18,6,6,4,18,14,18,9,12,7,20,9,15,6,6,9,9,12,6,8,24,6,8,24,12,9,16,4,5,9,9,6,20,17,7,23,6,4,6,18,9,2,2,18,15,18,4,10,10,6,6,6,18,6,6,11,10,10,10,6,10,16,16,22,8,6,6,6,7,8,6,3,8,19,4,18,5,4,16,18,10,12,12,22,9,12,10,8,8,18,10,21,22,6,3,12,12,22,18,22,6,6,6,18,6,12,12,18,6,6,6,18,6,6,10,5,5,9,23,8,6,9,18,11,11,24,8,14,21,24,8,21,12,4,4,6,9,19,10,18,6,17,12,6,16,5,18,6,20,15,6,6,6,9,6,6,6,6,6,6,6,9,3,14,12,4,6,4,6,14,16,6,21,6,5,16,14,4,12,12,14,18,18,24,18,9,19,24,9,9,18,18,3,8,18,3,4,10,6,10,5,12,9,8,5,14,10,4,6,18,6,6,4,6,9,14,15,8,6,6,12,12,16,18,18,24,9,24,22,9,10,6,12,12,16,10,18,9,10,18,15,15,24,6,6,6,10,18,10,10,14,9,6,6,8,4,3,16,6,6,12,12,6,6,9,9,6,6,4,12,12,12,14,20,8,13,6,6,12,15,12,18,24,3,4,4,12,17,5,5,18,12,6,6,21,6,12,16,18,15,9,15,3,3,10,16,12,9,6,6,10,18,14,14,3,5,12,20,19,9,14,14,9,18,6,18,20,20,24,20,9,9,8,8,4,20,6,21,13,12,10,5,6,18,9,21,22,18,6,6,6,6,6,4,9,9,15,3,12,20,6,18,4,4,6,6,6,6,16,6,6,18,10,10,9,6,5,8,19,12,21,16,18,10,4,18,12,6,6,6,18,12,10,10,6,6,8,12,10,10,18,4,24,6,20,19,10,21,8,10,4,6,4,4,9,16,16,24,9,14,7,8,12,4,3,9,20,24,12,8,6,10,14,10,9,24,12,22,12,9,23,19,6,18,6,4,6,6,4,8,7,18,4,4,20,6,10,4,8,8,6,6,6,6,24,10,23,19,18,9,6,6,20,6,18,9,18,18,18,10,4,4,4,12,4,10,4,3,4,6,19,9,7,14,8,8,18,9,18,6,6,4,4,4,18,6,8,18,14,15,10,4,22,6,6,4,10,8,12,12,6,6,4,19,6,8,6,6,6,24,10,10,19,19,16,24,6,6,18,18,6,6,6,4,6,10,6,6,6,6,6,15,20,4,12,6,9,6,12,18,18,18,6,12,18,4,19,15,14,22,6,18,3,20,5,12,6,8,8,12,6,3,14,12,4,15,6,10,18,15,8,24,6,8,10,18,24,6,8,18,18,18,20,14,12,21,21,18,18,4,18,4,10,11,4,9,4,8,8,12,9,12,9,12,4,14,11,6,11,9,18,12,18,18,9,9,9,6,6,6,6,6,4,6,6,18,6,15,15,4,6,8,8,24,14,8,10,8,4,6,6,18,16,16,8,16,12,9,9,16,19,9,3,24,5,19,6,24,9,10,20,7,7,2,10,12,3,12,6,9,22,22,9,4,18,24,24,18,4,10,6,6,6,6,6,6,6,10,10,9,14,10,10,3,9,5,24,12,4,9,6,6,19,4,6,18,10,18,9,24,8,4,8,10,18,19,24,8,10,6,7,12,6,15,6,7,6,6,6,4,6,6,9,18,9,9,18,18,4,4,2,16,4,10,6,7,4,6,10,18,2,2,6,6,18,9,9,10,5,5,4,4,10,14,12,24,14,6,4,14,16,21,15,6,16,16,3,3,10,6,12,5,9,11,4,9,13,4,6,10,20,9,4,4,22,9,24,16,18,6,9,9,4,7,20,19,6,6,4,9,18,2,8,18,15,12,6,20,24,9,4,4,8,6,3,12,5,5,6,6,14,3,6,4,16,7,8,6,9,3,22,18,6,9,4,4,10,3,18,18,9,9,18,6,10,18,18,9,6,18,9,10,9,3,9,11,9,11,8,20,21,12,6,8,8,8,9,8,9,9,9,9,10,6,6,10,16,19,18,9,6,6,14,8,7,12,8,22,6,6,6,17,12,18,10,10,24,6,6,19,6,10,10,9,18,18,9,9,6,4,8,18,4,12,4,18,18,6,6,4,6,12,4,6,12,8,8,9,9,18,9,18,6,9,9,14,6,12,18,6,16,3,6,4,4,5,9,18,5,17,18,24,18,6,14,3,6,6,6,21,12,9,6,8,8,8,8,12,18,20,9,8,16,10,10,15,18,10,18,10,10,18,18,18,6,8,8,8,18,9,18,6,6,18,12,6,2,10,20,12,3,3,3,18,10,14,14,9,8,4,5,9,9,12,5,3,6,7,4,14,19,6,15,10,8,12,9,14,14,13,6,17,17,8,8,24,15,18,18,3,3,6,6,11,12,12,9,12,6,9,6,9,16,10,7,11,12,8,4,3,3,18,4,3,18,3,3,5,18,20,9,19,19,9,18,14,6,9,9,6,6,6,6,12,12,4,6,3,18,16,10,9,9,10,3,12,12,8,6,12,12,6,7,18,19,12,6,6,5,5,14,3,24,20,18,6,20,6,6,6,18,15,18,3,6,6,8,8,20,13,7,7,10,10,3,18,18,9,15,12,12,6,13,22,6,6,24,10,18,10,3,12,4,4,18,9,12,9,10,10,10,10,9,9,10,10,18,18,18,7,19,16,16,12,2,2,8,8,3,12,8,12,18,18,3,18,3,3,18,18,22,21,18,18,24,16,6,8,6,6,18,10,9,9,3,3,6,6,16,9,16,18,6,6,4,6,6,18,24,9,8,13,16,14,9,16,13,13,24,10,18,18,9,22,8,8,18,5,12,18,4,6,2,2,10,18,17,12,16,5,6,6,6,13,19,6,4,6,6,6,18,4,8,8,10,10,4,4,16,16,7,3,9,17,8,8,10,22,24,12,6,6,9,22,9,18,19,18,9,9,9,9,3,24,6}; static int rectangles_array3[2913] = { 9,7,9,6,19,16,6,10,6,6,7,12,3,15,10,9,6,10,10,9,11,13,9,6,12,3,6,14,10,12,3,6,15,15,15,12,12,10,10,13,13,19,9,11,9,3,9,9,14,2,11,9,9,6,5,6,6,13,13,23,12,14,6,6,12,6,3,12,20,2,14,12,9,6,6,10,14,5,9,9,9,9,9,4,9,6,12,6,3,9,4,9,9,12,2,10,10,6,4,2,3,3,15,10,10,6,9,9,6,6,6,9,9,6,6,10,3,2,12,24,10,12,12,3,8,6,6,18,14,2,13,4,10,6,6,12,4,4,6,6,15,9,10,8,7,22,22,16,6,12,6,14,10,11,11,18,14,8,14,6,16,6,4,6,4,6,6,6,9,6,3,3,8,6,6,6,4,12,17,24,24,22,22,18,6,4,3,18,3,4,6,6,16,16,9,8,9,3,2,9,18,9,12,2,3,9,4,4,11,6,10,12,15,3,9,6,9,14,13,13,9,9,6,6,4,4,9,4,6,10,14,9,3,3,4,6,18,18,10,4,18,6,8,9,19,3,4,4,16,4,6,9,15,13,14,10,6,14,12,5,12,12,6,6,16,6,9,6,9,9,6,9,3,21,12,9,20,9,21,23,4,4,6,6,4,19,12,10,12,19,10,12,2,4,9,4,9,9,4,9,9,9,15,15,4,7,10,8,16,3,3,9,18,18,9,14,6,16,12,16,10,3,10,4,9,5,12,10,14,16,8,2,6,9,14,12,18,18,9,6,9,9,2,6,9,9,6,6,6,15,6,14,6,4,19,19,9,3,9,4,6,22,14,20,9,9,12,12,6,6,3,3,6,12,12,12,9,12,12,8,9,3,6,23,4,18,6,6,4,9,3,4,12,3,6,3,9,9,12,4,9,10,9,21,7,9,4,12,12,9,17,9,6,19,7,12,12,6,4,6,6,14,14,6,5,11,14,9,6,9,9,4,2,9,9,9,9,7,10,9,9,3,3,12,6,4,2,24,4,9,12,6,3,16,4,2,8,6,6,10,10,4,3,6,6,3,10,24,11,6,20,24,24,14,12,14,6,9,14,15,9,14,18,6,10,9,7,3,6,12,18,9,13,3,12,10,8,9,5,5,6,3,6,12,15,10,12,6,6,16,6,6,6,6,9,3,6,6,9,9,10,16,5,5,10,6,18,9,7,10,18,9,6,3,9,10,12,12,21,8,8,3,4,9,9,22,14,15,14,14,6,9,16,16,8,9,3,9,6,10,18,3,11,11,9,9,9,4,6,6,17,17,4,18,12,12,15,15,6,6,14,9,15,15,9,21,12,12,18,9,3,10,4,20,8,8,9,3,4,6,6,10,7,6,3,18,6,6,3,7,6,6,7,12,4,9,9,15,3,6,11,9,9,4,6,10,16,4,9,8,8,18,11,5,3,3,6,10,3,3,22,6,6,12,9,9,9,6,9,19,6,19,9,3,4,10,6,8,12,6,19,20,20,6,6,14,14,7,9,10,10,6,6,6,6,6,9,6,6,10,10,13,5,6,4,5,12,6,3,9,2,18,3,3,18,23,19,9,6,12,6,10,15,6,8,6,6,18,18,4,4,9,8,5,8,4,15,8,4,4,17,18,12,9,12,2,6,11,10,17,6,9,12,12,15,3,7,9,3,12,14,9,18,18,10,11,3,3,12,8,12,14,10,2,12,12,18,18,12,9,11,12,3,3,4,5,4,9,6,6,8,18,10,5,6,14,4,4,10,3,4,4,6,6,6,3,4,3,6,6,3,10,9,8,8,11,9,6,12,12,8,3,4,22,8,9,9,14,8,14,20,10,4,4,9,5,4,4,5,10,8,3,4,6,4,12,6,9,4,3,9,4,18,12,8,5,6,9,12,6,6,15,2,6,2,6,3,5,9,9,9,4,6,6,3,12,6,3,10,6,9,14,6,8,12,10,6,9,12,9,6,3,6,6,14,9,14,16,10,5,3,12,5,4,12,6,6,13,13,6,3,6,14,2,4,4,9,4,6,23,23,3,4,3,4,15,3,4,4,9,6,10,6,6,6,2,6,3,6,3,16,6,22,10,18,9,10,9,10,10,10,9,3,13,13,7,9,6,6,2,16,6,12,3,6,4,14,6,9,10,10,6,9,14,12,12,9,16,6,14,2,16,10,4,7,16,16,6,12,8,18,14,14,6,18,3,9,6,16,4,16,16,10,8,2,9,8,3,11,9,8,6,3,6,9,9,19,19,8,8,3,4,6,6,14,12,5,9,9,8,6,3,12,12,2,3,14,14,14,6,9,4,6,3,9,4,5,9,10,10,9,9,19,9,19,4,9,19,12,5,18,12,3,3,4,9,4,4,6,8,3,6,5,5,6,15,12,14,6,6,4,3,4,3,4,3,4,6,9,4,12,3,6,7,8,3,6,9,4,6,10,10,17,20,4,9,9,16,4,4,6,10,6,8,8,8,4,6,6,4,4,18,4,14,6,3,4,15,3,6,9,9,9,21,2,3,13,8,9,9,10,10,6,6,21,13,21,20,6,9,9,3,9,10,9,9,4,14,6,12,10,8,6,9,14,6,9,10,6,6,6,6,3,3,3,2,11,6,11,11,9,4,12,3,9,3,9,3,9,9,18,18,9,6,3,9,3,16,4,8,6,6,9,9,10,8,15,8,4,6,6,6,2,11,15,13,9,9,4,4,4,3,3,20,6,4,7,9,9,6,6,4,6,9,8,8,9,16,12,12,6,22,6,6,6,6,10,16,6,10,6,2,6,10,6,4,16,13,6,9,6,6,11,10,10,21,9,6,16,3,12,9,8,2,3,6,18,9,9,9,6,2,4,12,12,22,22,11,11,9,3,2,2,9,9,9,9,6,10,9,9,9,9,6,3,6,6,3,6,10,6,10,12,10,9,18,4,10,10,14,19,6,6,10,8,6,18,12,8,3,3,9,4,12,9,8,7,9,12,6,9,23,6,3,14,12,12,7,9,12,12,15,15,9,15,8,4,19,19,20,20,12,12,14,8,12,5,3,12,3,3,9,6,4,14,6,9,6,10,6,6,9,9,6,6,3,6,24,4,12,8,14,14,10,6,9,7,10,9,12,14,8,8,6,6,9,9,6,6,8,8,12,11,4,7,3,9,7,6,11,11,18,5,3,20,4,4,10,14,8,9,8,6,4,9,8,17,6,17,17,3,18,18,18,8,9,9,8,9,9,9,6,6,6,3,6,6,6,6,4,9,9,23,3,4,23,3,3,4,6,3,6,4,15,12,9,9,9,3,6,13,4,13,18,5,8,9,9,14,14,16,10,6,4,5,5,16,16,15,2,6,4,12,12,8,8,5,8,6,18,14,14,12,16,21,21,18,8,12,12,20,6,20,20,14,14,8,9,10,11,16,6,9,12,9,10,3,2,3,9,6,6,9,6,12,6,4,16,9,9,10,6,8,21,9,3,10,3,4,6,6,6,12,15,4,8,10,10,12,8,4,4,6,2,9,9,10,13,6,3,6,5,9,9,7,6,6,4,18,9,14,6,9,3,6,9,6,10,3,6,9,11,11,10,18,6,3,6,5,9,9,15,3,6,3,6,6,8,3,6,4,6,9,6,6,6,9,10,4,6,10,6,8,6,4,10,8,12,12,9,12,16,6,2,9,9,13,2,6,24,24,10,6,3,11,4,18,16,16,6,2,6,6,6,4,7,7,6,8,3,3,14,10,12,18,9,9,10,12,12,10,2,13,3,12,15,4,3,8,6,3,4,6,5,7,10,10,6,9,6,16,22,12,18,18,4,4,6,9,9,9,3,13,4,6,3,12,9,13,2,9,9,8,8,8,6,15,12,9,4,3,6,6,6,8,6,3,3,5,3,6,10,10,12,6,2,10,12,12,9,11,13,6,12,3,6,3,10,9,9,9,6,9,9,16,16,9,9,6,6,16,12,6,20,9,9,9,4,12,9,4,9,8,16,6,15,8,4,6,10,21,21,3,6,2,2,4,4,2,3,23,6,3,23,10,12,14,9,12,10,4,10,12,24,4,10,9,3,9,9,18,11,4,8,9,10,12,12,4,10,6,9,5,22,6,8,4,6,4,9,6,6,9,6,3,6,9,3,6,6,4,12,9,12,6,9,9,8,6,7,12,12,6,14,18,12,14,14,20,20,17,17,6,6,13,13,9,7,6,6,9,3,10,9,18,9,4,12,5,3,5,18,14,9,6,4,8,8,2,5,12,12,3,12,6,9,5,6,6,11,18,18,8,8,3,13,9,9,9,2,6,6,21,12,6,3,3,6,12,18,7,4,9,4,6,6,2,8,7,7,5,5,10,2,6,3,9,5,6,8,9,6,4,3,2,3,9,9,20,20,14,9,4,4,6,18,6,4,9,14,18,18,9,9,9,6,6,11,12,3,8,6,4,12,12,8,3,6,8,8,3,14,10,3,6,9,8,8,6,6,6,6,9,9,8,6,4,4,3,10,6,9,6,8,6,14,8,4,9,10,13,13,6,6,14,4,6,4,9,10,5,13,19,6,2,4,5,14,6,24,14,8,6,3,5,4,6,6,6,12,21,3,9,12,9,9,22,12,9,4,22,22,4,7,4,15,12,12,16,16,16,16,3,4,8,3,2,6,9,9,6,14,3,7,5,5,9,10,9,9,20,3,20,8,20,19,20,9,4,6,6,8,6,6,4,6,8,9,9,18,20,20,6,9,6,8,12,7,6,10,3,10,12,18,16,12,14,6,6,6,10,3,8,22,8,8,9,4,6,6,3,3,9,5,15,9,3,2,9,9,9,10,16,10,13,13,9,11,11,6,3,9,14,9,6,9,20,3,3,3,9,15,3,18,3,4,5,14,9,3,18,3,12,5,12,10,10,6,9,20,6,13,15,4,14,6,3,8,18,3,13,10,9,3,3,11,10,3,3,10,21,3,6,4,4,3,3,18,3,18,6,9,10,6,18,10,10,5,7,5,7,5,18,12,4,10,6,6,2,13,3,3,6,6,6,16,16,10,10,24,20,9,9,5,9,8,8,9,12,18,18,6,3,15,14,10,9,8,8,12,4,15,10,6,5,4,6,12,6,6,23,6,12,18,12,8,4,6,3,20,20,18,12,8,14,16,9,4,4,6,6,9,7,6,10,21,10,8,9,12,12,12,12,9,9,4,4,6,4,4,4,19,8,12,3,4,10,6,22,22,3,15,9,3,15,3,6,14,10,9,10,10,4,2,6,16,4,9,9,6,9,8,16,12,9,9,9,18,12,12,6,4,6,6,3,3,22,22,24,4,18,14,9,9,20,9,14,6,24,24,7,7,19,6,6,8,15,15,20,20,4,4,3,3,20,9,19,3,20,9,5,6,20,20,12,12,8,6,4,15,6,10,12,4,6,18,9,6,3,6,19,19,2,6,18,8,6,10,6,6,15,10,4,3,9,9,9,9,5,20,6,2,6,6,9,4,6,4,22,22,9,9,18,6,8,8,12,12,8,14,12,18,18,20,12,14,6,18,14,2,12,7,12,12,22,20,4,4,6,6,24,12,4,6,3,8,12,3,7,6,7,19,7,9,7,6,5,19,6,14,9,5,5,5,7,10,9,9,7,7,8,12,12,12,8,3,4,6,15,6,9,20,9,5,14,4,6,7,6,18,6,4,6,12,3,6,6,3,9,6,6,6,3,3,6,6,9,12,8,3,12,3,9,3,3,20,20,18,12,6,18,9,6,20,20,6,6,3,6,3,7,6,6,6,13,6,15,7,6,12,9,24,24,12,6,6,12,6,14,2,3,9,12,12,9,10,9,7,5,8,18,10,10,10,10,5,2,6,7,16,8,4,8,4,9,8,4,12,12,7,3,3,10,24,15,24,9,6,6,9,9,4,20,23,18,6,6,5,19,18,18,3,9,7,7,6,10,10,16,6,6,9,8,12,9,6,22,3,3,24,6,14,10,5,6,14,14,4,12,6,6,9,9,10,8,8,4,18,19,16,16,6,5,5,6,5,7,6,9,6,20,12,12,6,8,10,9,22,22,4,15,12,13,24,24,8,2,3,6,10,3,4,8,4,16,16,16,14,14,22,22,20,20,9,16,12,6,8,6,6,6,8,12,9,6,5,8,6,6,6,18,3,2,6,9,9,15,15,6,14,5,3,2,10,3,11,8,9,2,6,3,18,10,10,9,9,3,4,14,14,6,6,18,3,3,10,4,6,9,12,6,13,6,6,3,6,3,6,19,16,18,18,3,4,6,4,8,8,12,12,6,6,6,6,2,3,12,9,15,4,12,15,19,19,10,10,18,6,10,10,10,10,18,3,18,18,3,3,3,10,17,17,11,6,8,7,14,14,2,6,4,6,18,18,10,9,6,6,6,3,9,6,18,9,9,9,3,4,10,9,9,9,6,6,9,9,6,9,3,3,6,4,6,15,3,10,3,6,18,6,18,18,6,12,22,6,6,18,9,9,12,4,3,8,15,14,14,14,4,20,12,12,8,8,15,15,12,12,9,21,4,9,15,15,8,6,4,3,12,12,6,10,6,2,3,3,6,6,6,6,20,8,22}; static int rectangles_array4[2913] = { 6,10,3,8,5,6,5,11,4,6,10,1,8,9,5,5,16,9,12,4,20,8,11,7,5,8,5,9,11,6,9,5,18,4,8,5,2,10,2,2,20,11,20,2,12,0,12,10,12,1,17,0,6,10,8,4,2,19,3,8,1,14,3,6,8,15,1,4,2,3,1,5,3,14,1,15,5,10,9,11,9,12,10,9,6,8,4,11,8,11,9,11,11,9,1,10,6,7,0,6,1,6,5,20,2,12,4,14,8,17,0,14,8,8,0,12,9,2,2,3,5,14,4,4,6,3,3,10,8,3,12,8,5,16,4,19,8,6,10,9,0,4,9,18,3,18,3,16,2,9,2,14,5,18,3,8,7,8,10,14,7,13,12,13,1,13,8,8,8,7,0,1,9,12,9,7,0,13,12,14,9,14,9,18,6,13,3,13,0,6,6,10,10,4,5,9,20,2,5,2,5,2,13,0,1,2,13,0,11,10,11,6,18,3,18,1,13,0,13,9,13,10,13,2,12,5,14,4,7,5,12,9,3,0,12,4,13,10,10,8,10,0,12,4,8,11,9,10,20,1,14,3,15,11,17,3,7,4,10,8,15,3,12,6,14,1,13,10,12,9,6,9,7,8,7,0,15,0,15,8,15,0,8,0,9,8,9,12,12,6,16,2,0,4,9,0,18,0,8,10,13,9,14,8,15,8,9,7,14,2,5,11,13,10,9,8,12,1,15,1,10,3,12,8,6,10,5,4,11,7,9,2,3,10,16,9,21,0,18,3,18,0,5,6,12,10,15,3,15,5,11,8,15,9,13,9,18,1,14,1,12,1,14,0,17,5,18,3,15,0,4,2,14,6,20,1,16,7,12,4,12,8,15,7,6,1,6,0,13,9,12,8,16,0,14,7,5,4,16,6,12,11,11,12,6,10,8,14,5,11,3,3,3,20,5,13,6,12,8,9,10,13,9,14,8,20,6,18,7,18,0,9,0,17,1,14,8,9,9,14,8,6,1,10,5,5,0,8,10,6,4,12,12,12,3,2,6,14,0,19,0,12,0,13,3,6,0,15,9,12,1,15,7,19,6,8,5,14,2,18,2,17,12,14,10,14,6,6,11,12,10,16,6,9,5,10,8,6,10,8,1,9,3,2,10,8,10,0,14,9,14,1,15,0,19,2,3,9,18,0,12,2,14,5,18,5,22,8,11,7,22,12,15,0,13,9,14,6,14,6,3,3,12,12,13,8,20,3,20,0,10,8,13,9,13,0,6,3,8,2,15,3,19,3,19,3,4,6,15,0,17,5,8,6,5,10,10,0,15,0,14,11,14,8,15,3,11,6,12,0,3,3,12,1,17,2,7,8,3,10,5,11,3,18,3,9,3,13,8,13,4,13,8,7,6,16,6,11,0,13,5,10,10,14,6,12,7,8,5,3,5,5,8,3,1,5,1,1,3,6,7,14,1,13,12,13,9,15,5,15,6,15,0,5,7,17,10,15,0,14,8,13,6,13,8,17,4,12,11,11,9,8,1,9,9,18,8,2,0,18,2,2,12,13,1,11,3,12,2,18,3,22,2,1,0,19,3,20,0,13,0,10,8,4,2,14,3,17,6,10,4,2,10,5,12,0,15,5,8,1,19,8,20,9,15,2,16,2,20,3,15,0,16,2,10,1,14,3,3,10,3,2,12,10,12,11,4,0,9,8,13,5,12,1,19,0,20,0,18,9,11,0,1,1,13,4,12,4,15,1,13,5,16,5,10,7,12,0,17,0,15,0,13,8,12,2,12,1,15,0,6,10,12,8,12,8,13,1,15,6,18,11,12,0,11,11,12,8,9,10,4,11,5,8,15,12,12,7,11,3,14,8,9,1,11,9,12,1,6,1,8,2,11,7,14,9,14,7,4,9,7,11,2,8,3,11,0,10,2,20,2,12,0,14,0,12,8,4,10,14,2,14,2,5,9,12,6,12,0,18,5,10,2,13,6,11,7,18,11,10,0,15,4,13,7,14,7,12,6,16,0,16,5,5,5,9,9,13,5,19,3,5,0,2,5,1,10,8,11,12,4,12,3,5,4,6,10,0,0,3,2,7,5,10,9,18,9,12,11,13,9,4,2,13,9,9,1,8,3,5,8,9,0,6,4,13,5,12,11,14,5,12,0,20,9,12,10,14,7,12,2,18,1,6,12,14,6,11,1,9,7,17,2,7,1,8,11,3,20,8,20,0,8,5,4,8,6,0,20,10,12,0,6,0,20,2,18,3,13,8,5,9,6,9,10,1,11,7,14,5,13,0,12,1,2,2,20,1,14,0,15,1,9,0,16,12,7,11,12,10,15,3,16,3,16,12,10,7,11,11,12,11,3,2,12,5,14,0,10,8,5,11,11,9,5,10,10,7,12,0,12,2,12,1,12,0,5,6,14,5,9,8,11,6,17,8,8,4,12,9,16,1,11,3,7,12,12,3,12,3,13,5,11,9,17,2,12,0,12,5,12,9,2,5,4,2,7,0,2,6,6,11,15,8,3,2,19,1,14,4,14,8,14,4,8,3,20,2,8,9,16,12,11,12,12,10,14,5,18,6,13,1,15,9,10,3,16,9,15,0,13,2,5,1,5,1,16,9,16,6,18,1,9,0,14,3,16,3,11,11,15,8,17,3,3,0,2,0,13,5,12,5,18,0,13,5,9,12,6,9,13,8,6,2,20,2,14,8,8,12,9,11,4,10,8,7,12,0,18,0,16,1,12,9,12,8,12,4,15,3,15,4,15,0,15,0,14,3,7,10,8,12,7,0,16,7,10,11,12,3,16,0,0,0,10,10,4,8,9,9,6,11,8,4,8,7,1,15,7,13,9,3,0,10,6,15,0,20,2,13,0,2,1,18,0,17,0,0,2,12,9,17,5,15,0,15,0,5,0,13,8,13,8,13,10,12,11,13,7,14,12,12,1,20,0,14,0,13,0,6,0,14,1,13,4,17,5,16,3,14,10,11,0,4,5,19,0,8,3,17,4,16,3,18,1,17,0,15,8,22,1,20,2,3,6,7,11,4,9,4,3,18,2,13,7,13,10,12,0,11,2,13,5,9,5,3,6,12,8,9,1,19,1,9,6,12,10,14,4,8,6,19,0,17,1,18,0,3,2,14,5,10,11,7,12,5,10,11,9,14,8,12,7,2,1,8,7,6,17,4,2,6,9,7,10,8,18,3,18,4,5,11,15,7,12,12,12,2,14,10,14,3,14,1,3,1,18,0,5,6,14,4,17,8,8,5,3,0,12,0,9,2,0,10,10,8,13,11,2,1,13,12,10,7,14,10,11,10,20,1,17,9,12,12,14,5,16,4,10,1,15,12,12,8,19,0,14,6,13,9,13,8,7,4,17,3,14,2,3,4,19,10,19,1,15,5,10,4,0,8,14,0,6,1,18,4,6,1,1,2,18,0,12,7,9,7,12,7,12,10,15,3,4,6,8,12,11,2,8,0,0,2,12,10,7,9,17,0,19,1,12,3,12,12,12,10,14,10,13,7,7,9,0,11,3,15,2,13,4,20,8,12,2,3,3,13,5,17,2,12,10,12,10,12,12,12,0,9,7,14,8,13,1,9,2,15,0,9,2,15,4,17,0,15,0,15,3,20,8,13,0,0,5,11,4,10,8,11,4,14,2,4,8,1,9,13,10,4,6,14,9,9,9,9,11,9,12,14,8,18,3,18,0,13,10,11,8,16,5,7,9,13,3,20,7,15,0,19,1,12,1,3,8,5,9,11,4,6,5,17,11,1,10,10,11,11,9,15,0,2,0,9,9,18,0,12,3,2,5,12,10,5,9,7,9,4,0,11,11,6,11,12,5,14,5,14,0,16,4,8,0,13,0,12,6,10,1,0,6,9,1,10,7,9,10,3,7,3,10,3,10,4,5,8,9,3,2,9,11,11,16,7,16,6,19,3,14,0,9,6,14,4,7,9,14,12,14,5,4,11,3,4,16,4,13,10,15,12,12,3,12,8,6,0,4,0,15,0,6,3,13,6,6,10,10,7,17,2,11,1,15,1,10,11,7,10,15,3,15,7,12,9,15,5,8,7,12,9,7,10,13,9,9,0,14,0,12,1,7,11,16,2,8,0,5,2,14,3,9,4,12,9,13,0,14,2,11,7,13,7,17,4,13,10,18,12,17,5,16,4,18,4,15,0,20,2,16,9,12,0,5,0,12,5,10,8,6,3,16,6,8,6,10,11,14,0,16,3,6,4,17,2,2,4,18,8,6,6,14,8,15,6,14,4,7,8,13,9,8,0,17,0,21,0,12,1,5,1,6,5,14,1,11,0,13,1,0,1,14,7,12,8,13,11,9,7,6,10,10,6,15,8,11,8,1,0,15,7,20,2,14,2,12,1,7,8,12,2,14,3,17,5,13,9,13,12,12,11,20,1,7,6,9,1,19,4,3,1,9,4,6,4,15,9,12,6,15,3,14,1,14,0,15,3,9,1,13,1,6,8,0,0,14,1,14,8,10,11,10,9,14,8,11,3,13,0,12,11,10,8,11,10,12,10,4,0,11,1,11,6,14,7,12,12,11,1,9,0,1,1,9,9,11,11,18,4,15,1,14,3,15,7,14,12,7,0,19,1,16,6,17,5,0,7,1,1,6,1,15,3,4,0,6,7,12,6,9,4,20,2,13,12,13,1,13,2,13,2,3,7,17,5,16,0,15,0,9,4,12,10,13,9,14,8,10,0,13,9,14,0,1,10,16,10,12,8,13,2,11,7,13,0,12,8,12,6,14,0,14,0,4,1,4,8,3,11,0,6,2,18,0,11,9,7,3,18,7,18,3,9,2,10,5,11,10,12,4,6,9,9,11,10,2,21,0,5,12,1,10,6,9,2,5,12,9,18,2,16,1,12,4,10,5,14,7,7,2,5,7,0,2,20,5,5,0,13,0,4,2,12,12,6,0,10,7,11,7,21,3,21,7,9,0,15,1,13,7,13,10,13,10,13,10,5,0,11,2,15,1,10,0,6,0,13,2,13,8,13,9,12,3,16,6,10,7,12,7,10,3,16,4,0,11,10,12,17,5,16,5,3,4,4,3,16,6,14,7,4,0,10,6,0,0,3,9,12,6,8,2,12,5,14,10,12,7,17,9,13,0,12,9,10,9,0,8,9,9,15,10,15,6,19,2,12,10,14,5,11,3,10,5,20,7,4,8,6,19,3,20,2,5,10,11,0,7,1,11,0,17,12,17,7,13,0,8,6,7,0,13,3,12,2,9,6,14,5,12,6,17,4,14,0,13,2,6,0,21,1,15,11,13,7,14,3,22,7,12,11,15,8,13,8,9,8,12,3,19,0,22,0,7,11,10,0,14,2,13,8,15,7,11,11,15,1,16,5,12,4,6,9,15,6,12,7,6,10,12,3,4,2,13,9,1,0,0,3,3,5,16,5,10,6,12,2,12,10,13,6,9,2,14,3,10,2,17,2,0,7,17,5,11,8,11,5,15,4,15,6,12,9,12,4,4,5,14,9,12,10,12,2,12,9,12,8,7,1,13,2,15,0,15,6,8,1,6,10,12,3,18,1,18,11,18,6,18,6,16,12,9,6,11,6,16,4,18,8,18,3,15,6,18,0,13,7,4,0,15,3,9,8,5,3,5,10,4,2,8,18,3,4,6,13,4,12,8,13,8,3,0,14,0,14,0,6,0,14,8,15,8,10,7,7,12,11,7,21,0,15,0,18,7,16,0,18,2,14,1,9,5,5,11,12,9,12,10,12,9,13,3,12,9,13,9,11,7,5,8,4,0,0,0,11,3,12,10,12,7,9,10,11,9,19,1,15,5,6,10,12,10,14,3,7,7,14,7,18,9,13,6,10,0,3,4,16,8,16,7,15,3,18,0,13,2,17,1,8,0,15,1,20,3,9,9,7,10,11,4,10,3,15,0,6,9,12,10,16,10,6,0,17,5,14,1,7,10,14,3,9,3,6,1,16,0,12,8,10,0,21,2,20,2,8,8,11,9,7,12,11,8,11,4,12,0,12,4,12,11,15,8,13,10,12,9,17,6,10,2,2,7,3,2,15,8,10,7,18,3,20,2,17,5,16,4,11,12,12,3,13,0,8,9,19,9,6,10,5,12,3,15,4,11,9,5,4,11,10,16,3,13,8,8,10,5,2,2,11,9,9,5,2,6,6,20,2,10,10,3,5,17,0,9,10,11,0,6,4,9,5,6,7,11,12,18,0,0,0,6,0,20,4,21,1,3,0,18,7,17,2,19,0,15,0,14,0,5,0,12,5,4,3,4,10,16,7,17,3,12,5,14,6,15,0,12,0,12,9,6,0,2,7,12,6,8,4,12,10,18,3,6,5,12,0,12,11,11,1,14,1,7,0,12,12,12,10,9,1,0,6,12,5,4,4,8,1,10,1,12,1,5,0,9,1,8,8,5,9,6,2,12,10,14,8,9,12,5,4,14,9,14,8,11,5,5,9,11,2,18,3,12,5,20,0,18,1,15,5,6,2,14,10,13,3,13,3,16,0,0,12,21,0,15,1,15,0,3,0,15,0,12,3,17,0,12}; static int rectangles_array5[2913] = { 7,4,12,20,5,13,11,19,3,8,4,12,2,14,11,3,11,5,8,5,0,6,6,20,13,3,11,13,5,12,21,8,1,1,8,6,16,1,13,1,2,5,4,3,1,7,1,1,5,11,13,7,7,5,1,12,17,3,3,1,11,14,12,8,13,17,18,10,1,1,5,12,17,17,17,6,5,0,3,6,0,6,6,8,3,0,11,6,20,6,13,6,6,18,23,12,12,8,16,19,2,17,4,4,4,16,12,0,10,8,8,0,0,16,18,8,19,11,9,0,6,5,5,15,17,19,0,6,1,3,8,11,12,16,16,5,2,10,5,20,12,4,5,1,1,0,0,7,12,13,17,14,6,8,8,15,14,14,10,15,0,0,3,0,1,0,0,20,3,5,11,11,11,11,11,12,13,4,0,0,0,1,1,6,16,16,19,4,18,2,11,5,13,4,3,19,0,1,23,0,12,1,5,2,3,11,12,12,7,1,7,10,6,16,8,5,0,4,0,0,6,7,19,18,18,20,15,6,8,14,9,6,7,11,16,6,0,0,7,20,14,2,1,3,0,21,7,7,8,15,17,3,11,1,2,14,8,2,8,17,11,1,16,16,14,14,1,0,2,2,20,6,7,10,8,4,2,6,3,0,10,10,16,16,10,0,7,6,9,0,0,0,12,11,11,14,15,15,7,7,0,0,3,3,4,10,19,17,13,18,19,0,4,4,3,1,19,3,5,2,19,22,14,2,7,6,12,14,13,14,7,4,14,6,6,9,6,6,5,20,5,5,11,2,0,0,14,8,14,5,8,13,14,12,1,1,12,22,16,13,6,0,7,4,0,0,12,12,14,14,15,14,17,0,1,1,17,9,7,4,6,10,17,1,11,6,17,17,7,15,8,14,16,4,19,13,3,6,11,7,6,8,15,1,8,5,2,11,11,6,1,4,18,4,16,7,7,2,20,14,2,0,0,17,8,3,12,7,8,7,7,6,23,17,17,11,11,9,17,0,0,18,18,12,6,6,1,0,15,11,16,2,20,0,13,11,7,8,9,0,0,1,18,15,15,17,18,0,4,5,14,0,0,7,7,5,15,0,7,2,2,2,6,5,6,0,3,7,7,13,6,17,0,2,8,8,8,3,6,0,12,21,8,5,7,12,7,19,20,14,20,20,11,11,3,18,17,20,6,6,0,0,0,0,3,11,0,0,8,12,0,6,2,3,7,6,1,10,3,5,4,1,13,5,1,2,10,9,10,10,17,7,1,1,5,12,17,15,16,13,11,6,5,5,1,1,15,11,4,4,0,0,19,11,8,8,12,12,2,2,6,7,6,6,3,0,13,7,6,3,15,14,12,2,16,16,3,0,10,5,16,19,6,0,2,12,0,11,20,11,14,11,11,8,17,0,0,7,1,20,7,17,2,3,6,8,12,10,5,20,0,2,11,3,17,18,15,14,8,8,2,19,20,3,6,0,0,10,11,5,8,5,6,22,10,4,8,9,10,6,5,4,4,10,10,2,2,4,4,4,4,20,20,2,2,5,11,9,5,14,14,11,9,6,21,5,5,4,7,13,8,2,19,10,2,0,3,2,7,0,3,19,14,14,5,6,6,5,5,12,12,3,3,1,11,14,11,11,20,4,3,11,0,0,11,23,10,1,0,3,17,16,12,12,7,6,8,11,7,6,9,0,5,5,5,4,17,17,13,17,16,9,0,12,9,9,6,6,5,6,13,5,3,16,19,13,10,9,16,14,10,0,11,2,4,0,19,8,10,17,18,18,11,11,3,5,0,17,17,17,18,8,6,12,12,5,9,9,11,13,8,8,11,11,6,0,0,3,10,7,13,4,2,5,0,4,10,10,11,10,12,21,20,17,19,18,6,16,18,6,4,21,7,2,10,11,9,10,11,0,8,0,3,20,1,0,18,7,3,2,2,1,18,15,16,5,13,3,14,12,16,8,12,20,7,2,6,7,0,11,12,21,3,9,11,7,8,16,14,11,13,0,10,4,0,6,6,11,11,16,7,16,14,11,6,18,0,5,0,1,1,17,5,17,5,9,4,7,7,4,12,3,6,9,5,4,6,2,19,19,5,8,13,12,6,11,7,5,9,14,14,11,12,0,0,1,14,20,11,11,14,16,11,5,16,15,8,16,0,5,5,6,10,10,18,10,0,4,12,6,12,16,11,11,12,4,4,9,5,9,0,16,16,7,9,1,6,18,8,19,8,8,17,11,2,12,4,1,3,6,11,8,18,16,3,3,0,0,11,11,12,20,8,0,10,11,12,0,0,5,14,14,1,0,3,3,10,10,6,14,17,1,13,16,17,3,6,6,1,1,18,18,1,3,0,3,5,0,7,7,3,3,8,8,13,5,1,1,15,2,6,15,12,12,2,7,11,9,5,8,19,19,19,18,19,1,2,16,16,22,13,10,8,10,10,15,7,16,19,15,9,9,7,4,8,7,15,8,19,19,1,12,5,4,16,16,0,8,4,2,1,15,11,9,5,4,3,14,11,0,7,1,11,7,23,16,0,11,17,17,5,5,8,8,2,2,0,4,18,0,15,21,5,5,6,5,16,5,8,6,13,10,15,3,8,6,6,13,15,15,18,18,17,17,1,2,2,15,2,2,5,2,0,13,2,11,6,8,11,8,0,0,6,20,19,6,8,3,19,5,6,16,5,5,4,13,1,12,7,5,11,11,5,2,0,0,0,0,2,13,7,8,15,10,17,9,4,13,8,18,18,20,8,8,5,5,6,0,8,8,14,11,14,14,17,17,0,0,8,17,6,22,9,0,1,18,7,10,2,12,5,5,3,13,19,9,7,1,14,21,11,6,6,4,10,17,4,0,0,0,7,1,10,8,5,0,0,2,2,0,1,3,11,10,3,6,10,8,2,6,0,0,0,19,18,16,17,16,16,8,7,8,0,8,5,6,7,8,8,10,5,12,9,14,9,18,6,6,16,17,12,9,7,10,10,10,12,17,16,16,0,1,18,18,9,0,0,2,1,8,8,10,10,7,12,15,2,1,1,1,1,11,11,13,14,13,18,22,12,7,7,7,14,14,7,13,7,12,7,0,12,13,13,17,19,3,5,0,16,18,15,10,9,16,9,15,8,4,9,6,7,12,12,6,6,5,5,5,5,3,3,11,11,8,6,19,4,1,11,12,12,0,12,21,4,2,10,7,0,15,3,7,20,12,5,11,4,0,4,4,19,9,13,13,11,6,0,9,18,7,18,14,14,14,8,9,7,7,14,18,18,18,1,21,20,1,18,17,16,18,10,18,7,7,13,6,0,7,2,18,2,7,1,0,3,15,10,3,0,0,0,4,17,20,3,3,6,6,14,19,2,1,0,10,16,16,12,16,6,6,9,9,10,8,10,10,1,5,10,14,4,2,4,4,8,8,17,16,18,2,2,2,3,2,8,3,22,11,11,11,8,8,15,15,14,13,15,4,15,15,11,8,6,9,4,7,11,12,18,2,13,12,5,7,5,19,5,5,1,4,4,4,4,4,1,1,5,4,5,5,7,0,11,6,3,18,8,4,11,4,13,1,4,7,19,9,6,5,3,2,6,3,3,3,1,2,3,16,8,0,0,11,6,9,17,19,8,17,18,19,2,5,6,19,19,18,18,13,14,18,13,17,2,9,5,7,8,9,9,9,8,12,10,10,0,3,1,23,10,0,0,2,13,21,1,7,0,1,1,5,6,5,5,13,7,9,9,4,6,21,21,5,10,0,2,0,15,13,0,7,13,22,3,11,7,7,3,1,1,18,15,10,9,11,7,2,2,4,8,9,4,11,7,0,0,1,2,7,3,14,14,19,0,4,2,2,12,15,10,18,4,0,6,13,13,13,7,6,18,20,18,13,13,9,20,18,2,2,15,11,18,19,12,12,1,15,7,12,0,3,0,0,11,14,21,0,1,6,6,0,0,18,0,0,1,1,16,3,5,10,15,10,8,2,16,6,16,22,10,6,2,16,20,0,6,10,15,7,6,6,0,0,19,17,4,4,16,16,16,18,0,3,17,0,12,12,9,3,7,4,3,2,5,0,19,19,15,22,15,15,6,3,3,8,4,2,2,2,7,3,6,1,8,0,18,20,19,18,8,15,18,18,6,7,6,9,5,7,4,10,5,8,0,12,14,10,17,6,6,13,10,10,9,3,0,12,0,0,2,2,0,0,8,8,1,1,0,10,11,11,10,16,10,7,8,0,11,6,0,15,14,1,0,3,2,6,20,20,19,0,3,12,4,3,8,15,13,6,9,0,9,9,5,4,7,0,0,0,4,3,13,13,2,13,8,9,8,14,14,12,12,17,17,8,10,10,9,12,12,12,12,12,10,15,10,1,7,5,12,16,0,10,4,20,11,18,0,0,2,2,7,1,16,15,8,8,6,19,18,5,6,6,0,0,5,5,1,13,1,18,17,20,16,1,8,0,6,5,1,5,1,11,11,18,18,15,11,11,9,15,17,17,16,16,5,18,21,21,20,19,2,4,9,19,2,10,10,8,5,5,4,4,7,6,4,0,1,1,17,3,3,2,2,7,22,16,3,10,19,0,5,8,1,6,3,13,14,7,7,10,8,19,14,6,0,0,1,14,10,12,1,1,7,10,7,8,0,0,5,5,0,0,3,3,4,18,19,19,18,18,17,10,19,12,10,10,2,6,14,14,1,21,1,16,1,0,1,1,9,16,4,4,4,4,0,16,7,11,5,6,1,1,9,4,16,0,5,3,14,16,11,9,2,6,8,1,1,16,19,19,4,20,12,12,12,12,8,8,14,14,7,7,3,1,11,6,18,23,15,15,15,19,14,12,3,1,1,2,2,14,3,6,6,0,0,6,1,7,7,20,6,2,4,4,2,2,2,2,15,18,12,1,8,6,12,14,14,18,6,3,6,5,9,16,8,8,6,5,10,11,2,0,4,7,2,4,0,17,17,0,3,7,9,14,14,21,21,4,8,4,17,16,11,18,5,8,8,8,8,8,6,8,11,11,3,10,19,18,11,4,19,19,18,17,17,1,1,5,5,0,4,0,0,5,6,2,2,0,4,0,0,9,7,8,0,10,0,1,1,10,14,14,10,18,16,16,16,14,15,15,0,10,9,9,11,5,20,10,8,10,10,11,8,9,14,2,0,16,12,12,6,0,8,8,11,3,12,16,6,10,10,12,12,15,15,20,20,19,4,3,15,2,12,11,1,10,3,6,0,0,16,12,6,22,8,8,2,17,9,5,9,11,13,1,18,12,10,6,18,18,17,19,14,10,9,17,8,6,9,9,17,20,20,20,17,17,2,2,0,20,6,9,9,9,4,9,0,1,0,0,12,12,5,6,5,16,13,13,4,4,7,19,11,2,2,13,0,11,1,10,19,10,1,1,10,10,6,12,7,7,2,5,13,4,2,6,8,20,15,17,0,0,5,2,9,6,8,1,0,0,7,5,2,12,8,8,8,11,9,14,20,22,4,17,11,12,19,18,1,1,16,1,10,8,11,11,6,6,9,8,10,5,12,14,14,10,5,4,4,8,10,5,13,13,13,1,13,13,17,17,0,10,9,9,7,7,12,15,17,14,17,3,17,4,17,8,7,4,1,5,0,11,7,7,17,6,15,15,10,10,15,1,0,0,1,22,9,6,6,9,4,0,3,6,1,14,20,1,0,12,0,7,14,9,1,11,11,11,5,18,18,15,17,17,20,15,2,8,17,20,8,7,6,20,20,1,1,3,6,9,3,0,9,4,4,15,15,15,15,1,2,1,1,6,2,11,1,0,6,7,7,0,0,13,17,9,13,19,3,2,16,0,9,7,0,6,0,0,11,7,6,14,14,0,0,1,12,8,6,5,9,8,12,19,0,4,16,7,7,6,18,18,4,0,0,0,4,14,9,8,8,7,1,0,15,10,6,12,4,1,1,10,4,13,13,15,14,19,16,12,12,10,14,7,15,9,1,6,19,0,13,6,6,6,7,8,8,10,2,13,13,10,10,9,2,2,1,2,3,8,8,20,6,6,3,6,8,2,17,2,3,6,6,19,7,11,1,0,0,7,7,7,0,0,0,19,19,9,8,7,8,8,2,9,4,8,8,0,0,0,0,2,2,6,0,7,4,5,15,16,2,1,7,7,5,1,16,14,18,16,12,9,4,2,6,6,14,14,6,13,16,20,11,6,2,13,19,15,12,8,1,0,3,3,5,5,3,4,7,7,11,11,12,17,17,11,9,6,4,9,7,11,11,11,7,7,8,2,0,6,6,6,22,21,18,20,16,16,0,0,16,16,16,16,19,19,5,6,5,2,12,3,4,4,14,14,12,11,5,4,8,8,12,15,12,12,15,6,6,0,3,3,12,13,12,14,10,10,13,10,13,13,2,2,12,13,9,10,9,1,0,5,6,0,4,3,4,16,9,5,7,7,7,9,8,8,4,17,18,17,19,20,17,11,5,8,8,6,6,5,14,14,2,1,13,2,9,9,0,0,1,11,9,13,14,0,1,1,20,0,8,8,13,13,13,13,15,15,15,8,13,13,13,13,14,18,16,20,12,12,19,6,19,19,16,14,19,19,19,19,2,17,1}; static int rectangles_array6[2913] = { 12,4,18,9,2,12,12,4,7,12,4,19,8,6,14,14,3,2,2,2,2,8,2,10,14,8,15,5,2,3,6,13,3,3,8,7,21,2,10,2,2,11,2,2,2,19,2,2,7,18,2,6,12,4,8,18,6,2,2,8,8,3,8,12,6,9,18,16,2,18,10,14,7,9,9,4,7,4,6,2,2,2,2,6,12,8,16,3,8,2,5,2,2,6,18,4,8,10,10,18,22,18,3,2,2,10,4,2,3,6,6,2,2,9,9,2,6,20,9,9,7,5,6,18,8,18,3,4,2,19,11,11,5,4,4,5,8,12,3,6,22,17,2,3,3,3,3,4,19,6,17,3,4,3,3,10,3,8,9,6,5,3,8,3,10,3,3,10,2,12,18,22,4,3,3,11,12,11,10,1,1,1,1,1,9,9,18,4,18,6,14,3,6,3,18,5,2,18,19,2,19,2,7,20,22,7,11,11,2,3,4,12,6,18,6,8,2,12,2,2,2,2,9,7,9,5,5,16,10,5,5,2,18,18,9,7,1,1,5,7,5,12,11,15,8,9,5,5,3,10,10,16,7,2,3,6,10,3,5,8,5,3,6,6,3,13,2,3,3,3,12,2,6,8,10,6,1,6,1,1,9,9,9,9,6,8,8,2,5,1,2,3,24,13,6,16,6,6,5,2,2,2,2,2,9,3,6,5,3,18,19,2,1,1,6,2,9,10,3,11,5,18,2,8,12,4,14,4,5,3,6,20,19,2,3,2,3,3,6,15,6,6,18,12,2,2,9,13,9,3,3,3,9,5,2,2,6,18,10,11,8,9,4,3,2,2,3,3,9,9,19,19,10,5,3,3,6,9,4,14,2,6,9,7,17,11,13,9,5,6,6,8,3,24,10,6,18,16,3,6,2,2,2,9,6,2,8,5,5,2,3,19,6,2,5,5,5,3,7,9,3,2,2,9,6,2,11,6,9,6,6,9,19,6,6,2,2,6,6,2,2,18,18,11,7,15,22,8,9,12,7,11,7,12,9,22,11,6,24,5,5,12,18,8,8,18,21,2,2,3,2,2,2,3,2,8,10,2,3,3,2,5,1,5,2,2,3,7,4,7,2,6,2,7,5,4,5,11,4,8,23,6,21,2,4,8,5,10,9,6,9,9,9,9,2,18,21,6,6,6,8,5,5,5,3,6,1,2,3,4,1,2,9,24,2,2,2,12,1,12,18,18,12,2,2,2,4,16,4,4,11,8,2,2,8,6,18,6,9,4,3,18,2,2,2,2,9,12,9,9,2,2,9,3,14,3,14,14,9,9,2,2,2,2,4,3,8,5,2,6,18,4,12,1,5,5,10,8,15,4,14,4,3,3,18,14,3,3,8,3,10,3,3,11,10,2,2,4,20,10,3,10,2,5,6,4,4,9,14,19,5,8,8,9,18,18,9,23,18,6,1,10,10,2,2,2,2,3,3,1,9,1,6,18,6,4,3,3,5,7,1,5,5,3,3,3,3,3,2,4,4,10,21,6,6,6,6,20,6,4,4,10,6,8,9,4,7,3,19,6,18,2,20,22,2,2,3,2,10,6,12,4,4,17,9,7,7,1,1,14,9,18,4,4,7,22,4,7,9,22,2,8,3,2,9,18,6,2,2,2,9,8,6,6,4,19,3,12,18,4,9,2,2,2,2,2,18,20,6,8,3,7,12,18,5,5,4,4,6,2,2,6,23,19,11,4,5,9,9,9,10,3,3,4,7,5,12,23,4,18,9,9,3,3,12,18,12,18,9,9,18,2,2,5,6,2,8,21,3,11,5,6,6,22,6,2,2,3,6,3,16,2,16,6,2,4,5,5,4,4,3,8,6,9,10,4,3,6,12,20,9,9,4,4,3,4,3,2,5,7,10,2,18,8,18,3,18,4,2,2,2,12,9,9,19,11,3,20,2,8,8,3,8,16,4,4,6,2,4,6,3,7,16,7,4,2,3,4,2,4,23,2,4,10,2,3,3,6,6,4,21,4,6,19,14,6,2,11,3,2,2,18,11,20,13,11,7,5,5,2,3,4,8,14,9,18,3,24,10,18,3,11,12,4,4,6,5,2,2,2,2,16,20,2,2,6,6,9,15,19,7,9,8,18,4,9,7,11,2,5,5,8,6,4,6,4,2,4,10,7,20,4,6,12,3,4,4,3,8,3,1,5,5,10,23,7,2,6,4,8,4,4,8,5,19,8,13,24,2,2,6,6,18,9,2,2,3,3,3,3,19,6,16,3,4,15,4,2,2,6,11,21,4,3,21,19,3,3,7,9,8,11,9,18,7,8,6,2,2,2,6,6,1,2,1,6,2,1,3,5,1,2,19,18,9,2,10,10,3,8,18,3,4,4,14,4,5,4,11,6,9,19,9,18,9,24,14,9,6,13,6,7,3,3,5,8,9,6,9,6,7,7,3,3,5,2,2,3,9,9,3,4,4,3,5,5,12,9,12,11,11,6,20,14,16,19,10,4,21,3,14,2,9,4,19,20,2,8,6,6,2,2,6,6,8,2,2,2,9,2,7,7,3,2,2,3,10,7,6,6,2,10,9,6,5,16,8,2,9,9,9,9,18,18,18,19,2,5,2,2,6,11,7,18,2,18,8,18,2,2,1,1,7,9,21,7,22,12,9,6,7,7,6,6,10,3,7,7,6,3,3,3,18,2,2,2,2,2,8,9,5,6,19,4,9,5,4,6,6,8,7,10,10,2,4,4,2,2,6,6,9,15,9,9,9,9,4,2,10,4,10,9,11,6,6,9,5,6,6,12,8,8,12,4,4,4,15,8,5,6,3,2,3,20,6,10,2,2,2,2,3,18,10,4,3,9,9,2,2,2,20,20,18,6,22,6,6,24,2,2,2,2,2,9,18,9,23,18,9,4,5,4,3,4,2,2,6,4,4,3,3,6,9,4,11,6,10,10,5,18,19,6,11,7,11,5,3,6,6,6,2,2,9,18,13,4,4,4,2,3,3,5,5,6,6,6,12,1,1,1,1,2,2,18,7,12,9,20,3,18,18,6,9,9,3,6,4,3,4,3,12,6,6,9,12,20,4,1,5,6,6,4,4,9,12,2,3,4,6,8,3,5,5,6,6,6,6,18,9,5,5,3,3,5,3,18,2,3,3,2,2,4,5,22,1,8,10,4,3,5,20,6,6,10,4,3,2,3,2,2,19,2,2,2,5,2,2,8,6,2,6,12,9,9,18,22,6,6,16,9,6,6,2,8,8,2,18,18,11,9,7,6,24,4,6,2,2,2,20,6,2,6,2,1,5,4,2,2,3,3,3,2,9,11,5,5,4,4,5,21,9,6,6,4,5,5,4,5,6,2,3,3,11,3,4,4,4,8,18,16,4,3,4,4,4,4,5,7,24,4,4,12,12,6,6,4,18,18,22,12,6,6,2,9,7,3,6,2,2,2,6,14,17,12,9,12,9,18,9,9,24,20,8,4,10,6,7,7,3,19,9,9,10,9,2,2,4,4,3,6,10,7,9,2,3,6,10,10,5,2,8,12,2,18,16,6,7,4,20,3,2,2,2,4,1,3,19,9,6,2,2,4,18,14,18,9,6,7,20,9,15,6,6,9,9,6,6,4,8,3,4,24,6,3,16,4,5,9,9,6,20,17,7,23,2,2,2,18,3,1,1,6,5,6,2,5,5,2,2,6,18,6,6,11,5,5,5,3,5,8,8,11,4,3,2,2,7,4,3,3,4,19,2,18,5,4,16,18,5,6,6,11,3,4,5,4,4,9,10,21,11,6,3,6,6,11,18,22,6,2,2,18,3,6,4,18,6,2,2,18,2,2,5,5,5,9,23,8,6,9,18,11,11,12,8,14,21,12,4,7,6,4,4,6,3,19,5,9,2,17,4,3,16,5,6,3,20,5,2,2,2,9,2,2,2,2,6,6,3,3,3,7,12,2,6,2,6,14,16,2,21,6,5,8,7,4,6,6,7,9,6,8,18,9,19,24,9,9,18,18,1,8,18,1,4,10,3,10,5,6,9,4,5,7,10,4,2,18,2,2,2,2,9,14,15,4,3,3,6,4,8,6,6,12,9,24,11,9,5,2,6,6,16,10,18,9,10,18,15,15,12,2,2,3,10,18,10,5,7,3,3,3,4,2,1,8,2,2,4,4,2,2,9,9,2,2,2,4,12,12,14,20,4,13,6,2,12,15,4,6,8,1,2,2,6,17,5,5,18,4,3,2,21,3,6,8,9,5,3,5,3,3,5,8,6,3,2,2,10,18,7,7,1,5,12,20,19,9,14,14,3,18,6,9,10,10,12,10,3,3,4,4,2,10,3,7,13,4,10,5,2,6,9,7,22,18,2,2,2,2,3,2,9,9,15,3,6,10,6,9,2,2,2,2,2,3,8,2,3,18,10,10,9,3,5,4,19,6,7,16,18,10,4,6,4,3,6,6,9,12,10,10,6,6,4,6,10,10,18,4,24,6,10,19,10,7,4,5,2,2,2,2,3,8,8,12,3,7,7,4,4,2,1,3,10,12,4,4,6,5,7,5,3,12,4,11,12,9,23,19,6,6,2,2,2,2,2,8,7,9,2,2,10,3,5,4,4,4,2,2,2,2,24,10,23,19,18,9,6,6,20,3,18,3,6,6,6,5,2,2,2,6,2,5,2,1,2,2,19,9,7,14,8,8,9,9,6,2,2,2,2,2,9,2,4,9,7,5,10,4,22,2,3,2,5,4,6,12,6,6,2,19,6,8,6,6,6,24,10,10,19,19,16,8,6,2,18,18,6,6,6,4,6,10,2,3,2,3,3,15,20,2,6,2,3,2,6,9,9,6,2,4,18,2,19,15,7,11,2,18,3,20,5,4,3,4,4,6,6,1,7,4,4,5,3,10,18,15,8,24,2,4,10,18,24,2,4,18,18,9,10,7,6,7,7,6,6,2,18,2,10,11,4,9,2,4,4,4,3,4,3,4,4,14,11,2,11,9,18,4,18,18,9,9,9,3,3,2,2,2,2,2,2,6,2,5,5,2,3,4,4,24,7,4,5,4,2,3,3,18,16,16,4,8,4,9,9,16,19,9,1,24,5,19,3,12,9,10,20,7,7,2,5,6,3,6,2,9,11,11,3,2,6,24,8,6,2,5,2,3,3,3,3,2,2,5,5,9,14,10,5,1,3,5,8,12,2,3,2,2,19,4,2,18,10,18,3,24,4,2,4,5,9,19,8,8,10,6,7,6,6,15,6,7,6,6,2,2,3,3,9,9,9,9,18,18,2,2,1,8,2,5,6,7,2,6,5,9,1,1,3,3,6,3,3,5,5,5,2,2,5,7,6,24,7,2,2,7,8,7,5,3,8,8,3,3,5,6,12,5,9,11,4,9,13,2,2,10,20,9,2,2,22,9,24,16,18,2,3,3,4,7,10,19,2,2,2,3,6,2,8,18,5,12,6,10,24,9,2,2,8,2,3,6,5,5,3,3,7,3,6,2,16,7,8,3,3,1,11,18,6,3,4,4,10,1,9,9,9,9,9,6,10,9,18,3,2,18,3,10,3,1,3,11,3,11,4,10,7,6,2,4,4,4,3,4,3,3,3,3,5,3,3,5,8,19,9,9,6,3,14,4,7,4,4,22,6,3,3,17,6,9,10,5,8,3,3,19,6,10,10,9,18,18,9,9,2,2,8,6,2,6,2,6,6,3,3,2,6,6,2,2,6,4,4,9,9,6,9,18,3,3,3,7,2,6,6,3,16,3,2,2,2,5,9,18,5,17,9,24,18,2,14,3,2,2,2,7,4,3,3,4,4,4,4,6,9,10,3,4,8,5,5,5,6,5,6,5,5,6,18,18,2,4,4,4,6,9,9,6,6,9,6,3,2,10,10,4,1,1,1,6,5,7,7,3,4,4,5,9,9,12,5,3,2,7,2,7,19,3,5,5,4,6,3,7,7,13,3,17,17,8,8,12,5,6,9,1,1,2,2,11,4,4,3,6,3,3,6,3,8,5,7,11,6,4,2,1,1,9,4,3,9,1,1,5,18,20,9,19,19,9,6,7,3,3,3,2,2,2,2,4,4,2,3,3,9,8,10,9,3,5,3,12,4,4,6,12,6,6,7,6,19,6,2,2,5,5,7,3,8,10,18,2,20,2,6,6,18,15,18,1,2,2,4,4,20,13,7,7,5,5,3,18,18,9,15,6,12,3,13,11,6,6,24,10,18,10,1,6,2,2,18,9,6,9,5,5,5,5,9,9,10,10,18,18,9,7,19,16,8,6,1,1,4,4,3,6,4,6,9,9,3,18,3,3,18,18,22,7,6,6,8,16,6,4,3,3,18,10,9,9,1,1,2,6,8,9,16,18,2,3,2,2,6,18,24,9,4,13,16,14,9,16,13,13,12,10,18,18,9,11,8,8,18,5,6,9,2,3,2,2,5,9,17,12,8,5,2,2,2,13,19,6,4,3,3,3,9,2,4,4,5,5,4,4,16,16,7,3,9,17,8,8,5,11,12,6,3,3,9,11,9,18,19,18,9,9,9,9,1,24,3}; static int rectangles_array7[2913] = { 3,7,3,2,19,8,3,5,3,2,7,4,3,5,5,3,6,10,10,9,11,13,9,2,6,3,3,7,10,6,3,2,15,15,15,6,4,10,10,13,13,19,9,11,9,1,9,9,7,1,11,3,3,6,5,2,3,13,13,23,4,7,3,2,6,2,1,6,20,1,7,4,3,2,2,5,7,5,3,9,9,9,9,4,3,6,4,6,3,9,4,9,9,6,1,5,5,2,2,1,1,1,15,10,10,3,9,9,6,3,3,9,9,2,2,10,3,1,6,24,5,6,6,1,4,3,6,18,14,1,13,2,10,6,6,4,4,2,6,3,5,3,10,8,7,22,22,16,2,4,2,7,5,11,11,9,7,8,14,3,8,6,4,6,2,6,6,2,9,2,1,1,8,6,6,2,2,6,17,24,24,22,22,18,2,2,1,9,1,4,3,6,8,16,3,4,9,1,1,9,6,9,6,1,1,3,2,2,11,6,5,6,5,1,3,3,9,7,13,13,9,9,2,3,2,4,9,2,2,10,7,9,1,1,2,3,18,18,10,4,9,3,4,3,19,3,4,4,8,2,2,3,5,13,14,5,2,14,4,5,4,6,3,3,8,2,9,6,9,9,2,9,3,7,4,3,20,3,21,23,2,2,2,2,4,19,6,10,6,19,10,6,1,2,3,2,3,3,4,9,9,9,15,15,2,7,5,4,8,1,1,9,18,18,9,14,3,8,6,8,5,1,10,4,3,5,4,5,7,8,8,1,2,9,14,12,9,9,3,2,3,3,1,2,9,9,2,2,2,15,6,7,2,4,19,19,3,1,3,2,3,11,7,10,9,9,6,6,2,2,1,1,2,6,6,6,3,6,6,4,9,3,2,23,2,6,2,2,4,3,3,4,6,1,2,3,3,3,6,4,9,10,9,21,7,9,4,4,4,9,17,3,3,19,7,6,6,6,4,2,6,14,14,2,5,11,7,3,2,3,3,2,1,3,3,9,9,7,5,9,9,1,1,6,3,2,1,24,4,3,4,3,3,8,2,1,4,3,2,5,5,2,1,3,3,1,5,24,11,6,10,24,24,7,12,14,2,9,7,15,9,7,18,6,10,9,7,3,6,6,9,3,13,3,4,5,4,3,5,5,2,3,2,12,5,5,12,2,2,8,2,2,2,2,9,1,2,3,3,3,5,8,5,5,10,3,18,9,7,5,18,9,2,1,9,10,12,6,21,4,4,1,2,9,9,22,7,5,7,7,3,9,16,16,4,3,1,3,2,5,6,1,11,11,9,9,9,2,2,2,17,17,2,6,6,6,5,5,2,2,14,9,15,15,9,21,4,6,9,3,1,5,2,20,4,4,3,3,2,6,3,5,7,6,1,6,6,6,3,7,2,6,7,4,2,9,9,5,1,2,11,3,9,4,3,5,8,2,3,4,8,18,11,5,1,1,2,5,1,3,22,2,2,12,9,9,9,6,9,19,2,19,3,1,4,5,6,8,4,3,19,20,20,6,6,7,7,7,9,10,10,2,2,6,6,3,3,2,3,5,5,13,5,3,2,5,6,6,1,3,1,9,1,1,9,23,19,9,2,6,3,5,5,3,4,3,3,18,18,2,2,3,8,5,4,2,5,4,2,2,17,9,6,9,6,1,3,11,10,17,2,3,4,4,5,1,7,3,1,6,14,9,18,18,10,11,1,1,4,4,6,7,5,1,4,4,9,9,6,9,11,6,1,1,2,5,4,3,2,2,4,18,10,5,6,7,2,2,5,1,2,2,6,6,3,1,2,1,2,2,1,10,9,4,4,11,3,2,6,4,4,3,4,11,4,9,9,7,8,7,10,10,2,4,9,5,4,4,5,5,8,3,4,2,2,6,6,3,2,1,3,2,6,6,8,5,6,9,4,6,2,15,1,3,1,6,1,5,9,9,9,2,2,2,1,6,6,1,10,3,3,7,3,4,6,5,3,9,6,3,6,3,3,3,7,9,7,8,10,5,1,12,5,2,12,6,6,13,13,6,1,6,7,1,2,4,9,2,6,23,23,1,2,1,2,15,3,4,4,9,6,5,3,3,2,1,6,1,2,1,8,2,11,5,6,3,10,9,10,10,10,3,1,13,13,7,3,2,2,1,8,2,4,1,6,2,7,3,9,5,5,3,3,7,6,6,9,8,2,7,1,8,5,2,7,8,8,6,6,8,18,7,7,3,6,3,9,3,8,4,8,8,5,4,1,9,4,1,11,9,4,3,1,2,9,9,19,19,8,8,1,4,2,6,7,6,5,9,9,4,2,1,6,6,1,1,7,7,7,2,3,2,2,1,3,4,5,9,10,10,3,3,19,9,19,4,9,19,6,5,18,12,1,1,2,9,2,2,6,8,1,6,5,5,2,5,4,7,3,3,2,1,2,1,2,1,2,2,3,2,4,3,6,7,4,3,2,3,2,3,5,5,17,10,4,9,9,8,2,2,6,5,6,8,4,4,2,2,3,2,2,9,2,7,3,1,2,5,1,6,3,9,3,7,1,1,13,4,3,3,10,10,3,3,21,13,21,20,2,9,3,3,9,10,9,9,2,7,3,6,10,4,2,3,7,2,3,10,2,2,2,2,1,1,1,1,11,6,11,11,3,2,12,1,9,1,3,1,9,9,18,18,3,2,1,3,1,8,2,4,3,3,3,3,5,8,15,8,4,6,6,6,1,11,15,13,9,9,4,4,4,3,1,10,2,4,7,3,3,3,3,2,3,9,8,8,9,16,4,4,2,11,2,2,2,2,5,16,2,5,2,2,2,5,3,2,16,13,3,3,3,3,11,5,5,7,3,6,8,3,6,9,8,1,3,2,9,9,9,9,6,1,2,6,6,11,11,11,11,9,1,1,1,3,3,3,3,2,10,9,9,9,9,2,1,2,2,1,2,5,6,5,12,5,9,9,4,5,5,7,19,3,3,5,4,3,9,6,4,1,1,3,2,4,3,4,7,3,4,3,9,23,2,1,7,6,6,7,9,6,6,5,5,3,5,4,2,19,19,20,20,12,12,7,4,4,5,1,6,1,1,3,2,2,7,3,9,6,5,6,3,3,3,2,3,1,6,24,4,6,4,7,7,5,2,9,7,5,3,12,14,4,4,3,3,3,3,2,2,4,4,12,11,4,7,1,9,7,6,11,11,18,5,1,20,4,2,5,7,4,3,4,3,2,9,8,17,6,17,17,1,9,9,9,4,9,9,4,3,9,3,2,2,2,1,2,3,3,3,2,3,3,23,3,4,23,1,1,2,2,3,3,2,5,6,9,9,9,1,3,13,4,13,18,5,8,9,9,7,7,8,10,3,4,5,5,16,16,5,1,2,4,6,6,4,4,5,4,3,9,7,7,6,8,7,7,9,4,4,4,10,6,10,10,7,7,4,3,5,11,8,3,3,6,3,5,1,1,1,3,3,3,9,2,6,6,4,16,9,9,5,2,4,7,3,3,5,1,2,2,2,3,6,5,2,4,5,5,6,4,2,2,2,2,9,9,5,13,6,3,2,5,3,9,7,3,3,2,6,9,7,3,9,1,2,3,3,5,1,6,9,11,11,5,18,6,1,2,5,9,9,5,1,2,1,2,3,4,1,2,2,3,3,2,2,3,3,5,4,6,5,3,4,6,2,5,4,4,4,3,4,8,3,1,9,9,13,1,6,24,24,10,6,3,11,4,18,16,16,3,1,3,3,2,4,7,7,6,4,3,3,7,5,6,18,9,3,5,6,6,5,1,13,1,4,5,2,1,4,3,3,4,6,5,7,10,10,3,3,2,8,11,6,9,9,2,2,2,3,9,9,1,13,4,6,1,4,9,13,1,9,9,4,4,4,2,5,6,3,2,1,2,2,3,4,2,1,3,5,3,3,5,5,4,6,1,5,12,12,3,11,13,3,6,3,6,1,10,9,9,9,2,9,9,16,16,3,3,6,6,8,6,2,20,3,9,3,2,6,9,2,3,4,8,3,5,4,4,3,5,21,21,1,2,1,1,2,2,1,1,23,3,1,23,5,4,7,3,6,5,2,5,4,24,2,5,9,1,9,9,9,11,2,4,3,5,12,12,4,10,3,9,5,11,2,4,2,2,4,9,3,3,3,2,1,3,3,1,2,2,2,12,9,6,2,3,3,4,3,7,6,6,6,14,18,12,14,14,20,20,17,17,2,2,13,13,9,7,2,2,3,1,5,3,6,9,2,4,5,3,5,18,14,9,3,2,4,4,1,5,6,12,1,6,3,9,5,6,6,11,6,6,4,4,3,13,9,9,3,1,3,3,21,4,2,1,1,2,4,6,7,2,3,2,3,3,2,4,7,7,5,5,10,2,6,3,3,5,2,4,9,6,2,3,1,1,9,9,20,20,7,9,2,2,2,6,3,2,3,7,9,9,9,9,9,6,3,11,6,1,4,2,2,6,4,8,1,3,8,4,1,7,5,3,6,9,4,4,3,2,2,2,3,3,8,3,2,2,1,5,2,3,3,4,2,14,8,4,9,10,13,13,6,3,7,2,6,4,3,5,5,13,19,6,2,2,5,7,3,12,7,4,6,3,5,2,2,2,2,4,7,3,9,12,9,9,11,6,3,2,11,11,2,7,4,5,6,6,16,16,16,16,1,2,4,1,1,2,3,3,3,7,1,7,5,5,9,5,9,9,10,3,10,4,10,19,10,9,2,2,3,4,3,3,2,2,8,9,9,9,10,10,3,9,6,4,6,7,2,5,1,10,6,9,8,6,7,2,3,3,10,1,4,11,4,4,3,2,2,2,1,1,3,5,5,9,1,1,3,3,3,5,8,5,13,13,9,11,11,2,1,9,7,9,6,9,10,3,3,3,9,15,1,9,1,2,5,14,9,1,6,1,4,5,6,5,5,3,3,20,3,13,5,4,7,2,1,4,9,1,13,5,3,1,1,11,5,1,1,5,21,3,3,4,4,3,3,9,1,9,2,3,5,2,9,5,5,5,7,5,7,5,6,6,2,10,2,2,1,13,1,1,2,2,2,16,16,10,10,24,10,9,9,5,9,8,8,9,6,18,18,2,3,15,14,5,9,8,8,4,2,5,5,3,5,2,2,4,2,2,23,2,4,9,6,4,2,2,1,10,10,9,12,4,7,8,9,2,2,3,6,9,7,2,10,21,10,4,9,6,6,6,6,9,9,4,4,2,2,2,4,19,8,4,3,2,10,6,22,22,1,5,9,1,5,1,6,7,5,9,5,5,2,1,6,8,2,3,3,3,3,4,8,4,3,3,9,9,6,6,2,2,2,2,1,1,11,11,24,4,9,7,3,3,10,3,7,6,24,24,7,7,19,6,6,4,5,5,10,10,4,4,3,1,10,9,19,3,10,9,5,6,10,10,6,6,4,3,2,5,2,5,6,2,2,9,9,2,1,2,19,19,1,2,9,4,2,10,6,6,5,5,2,1,9,9,9,9,5,10,3,1,6,2,3,2,2,2,11,11,3,9,6,3,4,4,6,6,4,7,4,9,6,10,6,7,6,18,7,1,4,7,6,6,11,20,2,2,2,2,12,4,2,3,1,8,12,1,7,2,7,19,7,3,7,3,5,19,6,7,9,5,5,5,7,5,9,9,7,7,4,6,6,6,8,1,2,2,5,6,3,10,3,5,14,2,3,7,6,6,3,2,2,6,3,6,6,1,3,2,2,2,1,1,2,2,9,12,4,3,12,3,9,3,3,10,10,9,4,3,9,9,3,10,10,2,2,3,2,1,7,6,6,3,13,3,15,7,3,6,9,24,24,4,2,2,4,2,7,1,1,9,6,6,9,10,9,7,5,8,9,5,5,5,5,5,2,3,7,8,4,4,4,4,9,4,4,6,6,7,1,1,10,24,15,24,9,2,3,3,3,2,10,23,9,2,3,5,19,18,18,3,9,7,7,6,5,5,8,2,2,3,4,6,9,3,22,3,1,24,6,7,5,5,6,7,7,2,6,3,3,3,3,5,8,8,2,18,19,16,16,2,5,5,6,5,7,6,3,6,10,6,4,2,4,5,9,22,22,2,5,6,13,24,24,4,1,1,2,5,1,2,8,4,16,16,16,14,14,22,22,20,20,9,16,6,3,4,2,2,6,4,6,3,6,5,4,2,3,3,9,3,1,3,9,9,5,5,3,7,5,3,1,10,1,11,4,3,1,2,1,18,10,10,9,9,1,2,7,7,6,6,6,1,1,5,2,3,3,6,2,13,3,3,1,2,1,2,19,8,9,9,1,2,3,2,4,4,6,6,2,2,2,2,1,1,6,3,5,2,12,15,19,19,5,5,6,3,5,5,5,5,6,1,6,6,1,1,1,10,17,17,11,3,4,7,7,7,1,2,2,2,18,18,10,3,3,2,2,1,9,6,9,9,3,3,1,2,5,3,3,3,2,2,3,3,3,3,1,1,2,2,3,5,1,5,3,3,9,6,9,9,6,12,11,2,3,9,9,9,12,2,1,4,5,7,7,7,2,10,6,6,4,4,5,5,4,4,3,7,2,3,5,5,4,3,4,3,6,6,2,5,2,1,1,1,2,2,2,2,20,4,11}; static int rectangles_array8[2913] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,8,0,0,0,0,0,11,0,0,0,0,0,0,0,11,0,0,0,0,11,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,11,6,0,0,0,0,0,0,0,11,0,12,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,12,2,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,2,11,0,0,0,0,0,0,0,9,0,12,0,0,0,0,0,9,3,0,0,0,0,0,7,0,0,0,3,11,0,0,0,0,0,12,1,0,0,0,0,0,17,11,0,0,0,0,0,9,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,12,12,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,18,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,4,10,10,3,0,0,15,6,0,0,0,0,0,11,17,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,8,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,1,0,0,12,0,0,0,0,14,5,0,0,5,11,0,0,0,0,0,0,0,0,16,0,0,0,0,5,0,0,12,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,0,0,0,11,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,4,0,0,0,0,5,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,10,0,0,7,0,0,12,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,7,0,0,0,0,0,14,7,0,0,0,0,0,0,0,0,12,0,0,6,14,6,0,0,5,0,0,10,0,0,0,0,20,0,0,2,0,0,0,0,7,12,0,0,0,11,7,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,16,4,12,0,0,6,0,0,0,0,0,0,0,0,3,0,0,0,0,12,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,6,0,11,10,0,0,8,12,0,4,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,11,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,1,0,9,10,4,0,16,0,8,0,10,0,5,0,0,7,0,0,10,10,0,9,0,0,0,0,0,0,0,0,9,16,0,16,4,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,8,4,0,0,17,4,7,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,4,10,0,0,0,0,0,0,0,0,0,11,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,9,8,0,6,0,0,0,6,0,0,0,0,0,0,12,7,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,11,5,12,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,9,11,2,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,6,10,0,0,0,6,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,10,0,9,6,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,9,0,10,0,9,11,11,0,6,10,16,11,8,10,3,5,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,15,4,0,0,14,7,0,0,0,0,11,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,4,10,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,5,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,9,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,14,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,8,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,17,4,14,0,3,0,0,0,0,0,0,0,0,0,6,12,14,5,0,11,7,11,10,11,0,7,0,0,10,10,0,0,15,0,15,5,11,9,0,0,0,0,10,12,0,7,0,8,0,0,0,0,12,6,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,16,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,9,12,0,0,0,0,0,0,0,0,0,12,13,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,9,0,16,0,0,4,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,2,7,17,0,0,0,15,4,0,5,0,0,0,0,0,0,0,10,11,0,0,0,0,0,0,0,6,0,0,11,0,0,12,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,12,6,0,9,0,5,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,7,0,5,0,0,0,0,0,0,0,0,10,0,0,0,0,11,0,0,0,0,5,0,0,12,0,0,1,0,0,0,10,8,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,12,6,0,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,14,0,0,7,12,0,0,0,0,0,0,0,9,12,0,0,0,0,0,0,10,7,0,0,0,0,0,0,0,0,0,0,0,9,3,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,6,12,0,12,15,7,0,0,0,0,4,0,17,0,0,0,0,4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,7,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,11,5,12,0,0,0,12,0,0,0,0,0,12,0,5,0,11,7,12,0,0,0,12,0,0,0,0,0,0,0,0,0,0,13,0,0,12,13,9,4,0,0,0,15,5,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,9,0,0,11,0,11,6,11,0,11,0,0,0,0,0,0,0,6,0,0,0,0,12,11,11,5,0,0,9,6,0,0,0,0,0,13,12,7,12,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,10,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,12,14,6,10,0,0,11,0,0,0,10,0,0,0,0,0,0,16,0,0,0,0,4,0,0,3,0,0,6,0,0,0,0,19,0,19,0,0,0,0,3,9,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,13,0,0,0,0,0,0,7,8,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,6,0,11,0,0,11,1,0,0,0,0,0,0,0,10,0,12,9,16,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,13,12,4,0,0,0,0,0,0,9,0,0,0,0,0,0,0,8,14,7,0,9,0,0,0,0,19,3,0,0,11,12,0,0,20,0,7,0,0,0,0,0,0,0,0,8,0,0,20,2,0,0,0,0,7,0,0,0,7,0,0,0,7,9,0,0,7,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,15,7,0,0,0,11,0,0,12,9,5,0,0,6,0,0,0,12,0,0,1,0,0,0,0,0,0,0,4,11,0,0,6,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,13,3,10,12,0,0,6,0,0,0,0,7,0,0,0,0,0,0,0,0,12,4,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,3,13,0,12,9,0,6,14,6,0,0,0,0,0,0,0,0,5,0,6,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,12,15,5,11,9,0,0,2,0,10,11,0,12,0,0,13,0,8,11,0,0,0,0,0,0,0,0,0,12,0,0,4,8,0,0,0,10,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,5,0,0,7,10,0,6,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,12,7,0,0,10,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,5,0,0,0,14,0,0,0,0,0,0,9,0,0,0,0,10,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,10,0,0,0,0,0,0,0,0,0,10,19,3,0,0,12,0,12,7,14,5,0,0,0,0,0,0,3,0,0,0,0,0,0,0,13,7,0,11,10,12,6,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,6,0,0,0,0,0,0,0,0,6,0,0,0,0,0,10,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,11,10,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,5,15,6,3,7,16,4,13,6,0,0,0,0,0,0,0,0,0,0,11,11,0,0,18,3,0,12,0,0,0,0,0,0,0,0,0,0,9}; static int rectangles_array9[2913] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,20,0,0,0,0,0,15,0,0,0,0,0,0,0,12,0,0,0,0,11,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,11,11,0,0,0,0,0,0,0,15,0,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,8,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,15,10,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,14,14,0,0,0,0,0,0,0,8,0,11,0,0,0,0,0,21,20,0,0,0,0,0,16,0,0,0,18,9,0,0,0,0,0,5,5,0,0,0,0,0,16,17,0,0,0,0,0,19,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,10,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,9,11,14,14,0,0,18,18,0,0,0,0,0,6,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,5,0,8,15,0,0,0,0,5,5,3,0,18,18,0,0,0,0,0,0,0,0,14,0,0,0,0,14,0,0,9,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,8,0,0,0,14,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,17,0,17,17,0,0,0,0,9,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,15,0,0,19,14,0,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,8,0,0,8,19,19,0,0,9,0,0,11,0,0,0,0,11,0,0,11,0,0,0,0,6,6,0,0,0,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,5,0,0,0,15,15,11,0,0,11,0,0,0,0,0,0,0,0,14,0,0,0,0,7,0,0,15,0,0,0,0,0,6,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,11,0,0,0,15,0,15,15,0,0,7,9,0,6,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,9,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,19,0,10,10,9,0,17,0,16,0,12,0,13,0,0,16,0,0,12,12,0,11,0,0,0,0,0,0,0,0,21,16,0,16,16,0,0,0,0,0,0,0,0,15,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,7,6,0,0,17,17,13,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,3,3,0,0,0,0,0,0,0,0,0,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,14,14,0,14,0,0,0,16,0,0,0,0,0,0,20,20,2,0,7,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,11,12,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,9,9,19,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,22,11,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,5,4,0,0,0,5,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,12,0,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,13,0,13,0,15,0,13,13,17,0,15,12,19,13,21,15,12,20,0,0,0,9,0,0,14,0,0,0,0,0,0,0,0,0,6,6,0,0,14,14,0,0,0,0,19,4,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,16,14,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,17,16,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,7,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,21,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,7,7,8,0,20,0,0,0,0,0,0,0,0,0,6,16,20,20,0,20,9,15,16,16,0,16,0,0,10,9,0,0,14,0,14,14,15,15,0,0,0,0,10,5,0,8,0,8,0,0,0,0,11,11,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,7,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,21,11,0,0,0,0,4,0,0,0,0,9,10,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,21,0,18,0,0,18,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,12,15,6,0,0,0,18,6,0,18,0,0,0,0,0,0,0,5,21,0,0,0,0,0,0,0,7,0,0,12,0,0,9,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,21,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,8,9,0,19,0,9,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,9,0,7,0,0,0,0,0,0,0,0,15,0,0,0,0,7,0,0,0,0,9,0,0,11,0,0,21,0,0,0,21,21,0,0,0,0,0,0,0,0,7,0,0,18,0,0,0,10,9,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,9,0,0,9,11,0,0,0,0,0,0,0,9,8,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,10,13,13,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,9,21,0,12,15,15,0,0,0,0,4,0,7,0,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,21,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,9,11,2,0,0,0,8,0,0,0,0,0,18,0,17,0,12,12,12,0,0,0,15,0,0,0,0,0,0,0,0,0,0,12,0,0,14,12,12,9,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,11,0,0,11,0,11,20,11,0,11,0,0,0,0,0,0,0,2,0,0,0,0,15,11,11,12,0,0,4,11,0,0,0,0,0,8,15,16,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,11,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,18,19,19,21,0,0,9,0,0,0,15,0,0,0,0,0,0,5,0,0,0,0,5,0,0,5,0,0,12,0,0,0,0,13,0,13,0,0,0,0,14,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,10,0,0,0,0,0,0,15,0,0,0,0,0,0,15,21,0,0,0,0,0,0,0,0,0,0,17,9,0,0,0,0,0,0,0,13,0,10,0,0,14,15,0,0,0,0,0,0,0,20,0,16,16,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,16,15,0,0,0,0,0,0,21,0,0,0,0,0,0,0,15,15,15,0,22,0,0,0,0,13,13,0,0,15,16,0,0,14,0,7,0,0,0,0,0,0,0,0,20,0,0,14,14,0,0,0,0,12,0,0,0,11,0,0,0,11,11,0,0,10,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,12,12,0,0,0,11,0,0,12,12,13,0,0,14,0,0,0,17,0,0,11,0,0,0,0,0,0,0,15,15,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,11,0,0,0,0,19,7,6,6,0,0,11,0,0,0,0,10,0,0,0,0,0,0,0,0,3,9,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,12,0,12,12,0,12,14,14,0,0,0,0,0,0,0,0,9,0,14,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,15,19,19,5,5,0,0,11,0,13,13,0,16,0,0,8,0,13,13,0,0,0,0,0,0,0,0,0,12,0,0,9,11,0,0,0,9,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,11,0,0,15,15,0,8,0,0,0,0,14,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,13,12,0,0,11,16,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,0,0,0,5,0,0,0,0,0,0,21,0,0,0,0,5,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,15,0,0,0,0,0,0,0,0,0,14,15,15,0,0,21,0,20,20,6,6,0,0,0,0,0,0,11,0,0,0,0,0,0,0,19,19,0,14,10,9,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,12,0,0,0,0,0,15,0,0,0,0,0,14,0,0,0,0,0,0,0,7,0,0,0,0,22,0,0,0,0,0,9,15,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,7,8,8,22,10,14,14,17,17,0,0,0,0,0,0,0,0,0,0,18,21,0,0,18,18,0,11,0,0,0,0,0,0,0,0,0,0,12}; static int rectangles_array10[2913] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,6,0,0,0,0,0,8,0,0,0,0,0,0,0,10,0,0,0,0,4,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,6,6,0,0,0,0,0,0,0,9,0,7,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,5,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,12,11,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,11,11,0,0,0,0,0,0,0,8,0,12,0,0,0,0,0,7,9,0,0,0,0,0,5,0,0,0,9,7,0,0,0,0,0,12,11,0,0,0,0,0,3,10,0,0,0,0,0,6,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,3,11,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,8,9,4,3,0,0,3,3,0,0,0,0,0,5,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,11,0,12,9,0,0,0,0,5,5,12,0,8,8,0,0,0,0,0,0,0,0,3,0,0,0,0,3,0,0,5,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,5,0,0,0,6,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,4,0,4,4,0,0,0,0,8,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,0,0,4,12,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,7,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,6,0,0,6,4,4,0,0,8,0,0,7,0,0,0,0,2,0,0,2,0,0,0,0,6,12,0,0,0,9,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,12,0,0,0,4,4,6,0,0,6,0,0,0,0,0,0,0,0,10,0,0,0,0,5,0,0,4,0,0,0,0,0,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,8,0,3,8,0,0,4,6,0,4,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,8,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,11,0,5,5,8,0,4,0,4,0,4,0,7,0,0,6,0,0,4,4,0,8,0,0,0,0,0,0,0,0,6,4,0,4,4,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,4,3,0,0,3,3,7,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,10,10,0,0,0,0,0,0,0,0,0,4,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,7,7,0,3,0,0,0,3,0,0,0,0,0,0,5,5,12,0,12,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,6,6,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,6,7,7,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,7,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,6,6,0,0,0,6,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,10,0,3,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,4,0,2,0,4,4,3,0,6,9,4,11,6,10,10,5,0,0,0,11,0,0,5,0,0,0,0,0,0,0,0,0,4,4,0,0,3,3,0,0,0,0,6,12,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,9,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,4,4,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,3,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,6,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,3,3,3,0,9,0,0,0,0,0,0,0,0,0,6,4,5,5,0,5,6,2,3,3,0,3,0,0,4,8,0,0,4,0,4,4,4,4,0,0,0,0,4,12,0,6,0,4,0,0,0,0,6,6,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,6,10,0,0,0,0,12,0,0,0,0,7,4,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,6,0,4,0,0,4,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,11,4,3,0,0,0,4,3,0,4,0,0,0,0,0,0,0,5,6,0,0,0,0,0,0,0,9,0,0,11,0,0,6,6,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,6,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,8,7,0,6,0,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,6,0,4,0,0,0,0,0,0,0,0,2,0,0,0,0,4,0,0,0,0,8,0,0,12,0,0,11,0,0,0,6,6,0,0,0,0,0,0,0,0,12,0,0,3,0,0,0,5,7,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,3,0,0,3,6,0,0,0,0,0,0,0,5,8,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,9,10,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,6,10,0,9,2,2,0,0,0,0,8,0,3,0,0,0,0,3,0,0,0,6,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,6,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,8,8,12,0,0,0,4,0,0,0,0,0,12,0,4,0,5,7,5,0,0,0,11,0,0,0,0,0,0,0,0,0,0,2,0,0,9,2,2,10,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,5,0,0,2,0,2,5,2,0,2,0,0,0,0,0,0,0,9,0,0,0,0,2,2,2,9,0,0,9,7,0,0,0,0,0,3,2,5,4,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,3,4,4,6,0,0,7,0,0,0,3,0,0,0,0,0,0,4,0,0,0,0,4,0,0,9,0,0,6,0,0,0,0,2,0,2,0,0,0,0,2,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,0,0,0,0,0,0,4,0,0,0,0,0,0,4,8,0,0,0,0,0,0,0,0,0,0,3,12,0,0,0,0,0,0,0,6,0,6,0,0,11,11,0,0,0,0,0,0,0,5,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,5,9,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,3,3,0,9,0,0,0,0,2,2,0,0,2,5,0,0,2,0,5,0,0,0,0,0,0,0,0,5,0,0,2,2,0,0,0,0,7,0,0,0,8,0,0,0,8,8,0,0,5,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,2,2,0,0,0,6,0,0,3,3,7,0,0,2,0,0,0,3,0,0,11,0,0,0,0,0,0,0,9,9,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,4,0,0,0,0,5,3,3,5,0,0,9,0,0,0,0,4,0,0,0,0,0,0,0,0,6,9,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,0,6,2,0,6,4,4,0,0,0,0,0,0,0,0,7,0,6,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,3,4,4,4,4,0,0,10,0,4,8,0,5,0,0,5,0,5,5,0,0,0,0,0,0,0,0,0,9,0,0,9,6,0,0,0,10,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,4,0,0,7,7,0,3,0,0,0,0,12,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,8,5,0,0,6,4,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,8,0,0,0,5,0,0,0,0,0,0,6,0,0,0,0,6,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,3,0,0,0,0,0,0,0,0,0,6,2,2,0,0,6,0,5,5,5,5,0,0,0,0,0,0,9,0,0,0,0,0,0,0,4,4,0,6,4,6,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,8,0,0,0,0,0,2,0,0,0,0,0,4,0,0,0,0,0,0,0,12,0,0,0,0,11,0,0,0,0,0,9,2,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,3,3,3,9,2,4,4,5,5,0,0,0,0,0,0,0,0,0,0,5,11,0,0,3,3,0,11,0,0,0,0,0,0,0,0,0,0,3}; static int rectangles_array11[2913] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,3,0,0,0,0,0,3,0,0,0,0,0,0,0,7,0,0,0,0,5,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,3,0,0,0,0,0,0,0,6,0,5,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,8,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,6,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,2,2,0,0,0,0,0,0,0,3,0,7,0,0,0,0,0,3,2,0,0,0,0,0,7,0,0,0,2,3,0,0,0,0,0,3,4,0,0,0,0,0,8,2,0,0,0,0,0,5,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,6,8,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,11,7,10,0,0,6,6,0,0,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,8,2,0,0,0,0,5,5,2,0,3,3,0,0,0,0,0,0,0,0,7,0,0,0,0,7,0,0,7,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,8,0,0,0,3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,7,0,7,7,0,0,0,0,4,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,9,0,0,5,2,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,3,0,0,3,5,5,0,0,3,0,0,6,0,0,0,0,9,0,0,9,0,0,0,0,6,3,0,0,0,4,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,5,0,0,0,9,9,6,0,0,6,0,0,0,0,0,0,0,0,4,0,0,0,0,7,0,0,5,0,0,0,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,3,0,7,3,0,0,5,3,0,6,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,3,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,0,5,5,3,0,7,0,6,0,8,0,7,0,0,5,0,0,8,8,0,6,0,0,0,0,0,0,0,0,3,8,0,8,8,0,0,0,0,0,0,0,0,4,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,6,6,0,0,7,7,7,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,0,0,0,0,0,0,0,0,0,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,5,5,0,10,0,0,0,8,0,0,0,0,0,0,4,4,2,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,6,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,4,3,3,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,5,3,0,0,0,3,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,2,0,6,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,9,0,5,5,7,0,3,3,5,4,3,9,6,4,0,0,0,2,0,0,4,0,0,0,0,0,0,0,0,0,6,6,0,0,6,6,0,0,0,0,4,2,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,2,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,7,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,7,7,8,0,3,0,0,0,0,0,0,0,0,0,6,6,4,4,0,4,3,9,7,7,0,8,0,0,9,4,0,0,10,0,10,10,7,7,0,0,0,0,8,3,0,6,0,5,0,0,0,0,3,3,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,3,3,0,0,0,0,3,0,0,0,0,3,5,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,3,0,5,0,0,5,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,7,5,6,0,0,0,5,6,0,5,0,0,0,0,0,0,0,4,3,0,0,0,0,0,0,0,3,0,0,8,0,0,9,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,8,3,0,4,0,3,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,5,0,5,0,0,0,0,0,0,0,0,9,0,0,0,0,5,0,0,0,0,3,0,0,11,0,0,2,0,0,0,3,3,0,0,0,0,0,0,0,0,2,0,0,6,0,0,0,4,3,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,6,0,0,6,3,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,2,3,3,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,3,2,0,7,9,9,0,0,0,0,3,0,6,0,0,0,0,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,3,7,2,0,0,0,5,0,0,0,0,0,2,0,7,0,12,7,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,11,0,0,2,11,11,2,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,5,0,0,10,0,10,4,10,0,10,0,0,0,0,0,0,0,2,0,0,0,0,9,10,10,3,0,0,4,6,0,0,0,0,0,6,9,8,6,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,10,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,6,5,5,3,0,0,3,0,0,0,7,0,0,0,0,0,0,5,0,0,0,0,5,0,0,5,0,0,3,0,0,0,0,9,0,9,0,0,0,0,9,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,6,0,0,0,0,0,0,5,0,0,0,0,0,0,5,3,0,0,0,0,0,0,0,0,0,0,6,4,0,0,0,0,0,0,0,4,0,8,0,0,2,3,0,0,0,0,0,0,0,4,0,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,5,2,0,0,0,0,0,0,3,0,0,0,0,0,0,0,9,6,6,0,2,0,0,0,0,11,11,0,0,9,7,0,0,10,0,7,0,0,0,0,0,0,0,0,4,0,0,10,10,0,0,0,0,10,0,0,0,10,0,0,0,10,10,0,0,4,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,11,11,0,0,0,3,0,0,6,6,4,0,0,9,0,0,0,7,0,0,7,0,0,0,0,0,0,0,2,2,0,0,12,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,5,0,0,0,0,4,6,6,6,0,0,2,0,0,0,0,10,0,0,0,0,0,0,0,0,3,2,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,9,0,3,9,0,3,10,10,0,0,0,0,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,9,5,5,5,5,0,0,3,0,8,4,0,4,0,0,4,0,6,6,0,0,0,0,0,0,0,0,0,3,0,0,2,10,0,0,0,3,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,5,0,0,7,7,0,6,0,0,0,0,5,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,10,6,0,0,4,5,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,0,0,4,0,0,0,0,0,0,3,0,0,0,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,6,0,0,0,0,0,0,0,0,0,8,9,9,0,0,3,0,4,4,6,6,0,0,0,0,0,0,6,0,0,0,0,0,0,0,5,5,0,3,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,3,0,0,0,0,0,9,0,0,0,0,0,5,0,0,0,0,0,0,0,3,0,0,0,0,2,0,0,0,0,0,3,9,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,7,7,7,2,10,6,6,4,4,0,0,0,0,0,0,0,0,0,0,4,3,0,0,6,6,0,5,0,0,0,0,0,0,0,0,0,0,11}; static int stages_thresh_array[25] = { -1290,-1275,-1191,-1140,-1122,-1057,-1029,-994,-983,-933,-990,-951,-912,-947,-877,-899,-920,-868,-829,-821,-839,-849,-833,-862,-766 }; ================================================ FILE: harness/README.md ================================================ # OpenCL harness This directory contains the wrapper code around OpenCL APIs (`ocl_src`) and top-level makefile. Part of the makefile is adapted from the Xilinx SDAccel example repository. ================================================ FILE: harness/harness.mk ================================================ # ======================================== Check Xilinx SDX Environment Settings ================================================== # ifndef XILINX_SDX $(error Environment variable XILINX_SDX is required and should point to SDx install area) endif # =============================================== Tools Used in Rosetta =========================================================== # # sdaccel tools OCL_CXX = xcpp XOCC = xocc # sdsoc tools SDSXX = sds++ # default sw compiler SW_CXX = g++ # ============================================= SDAccel Platform and Target Settings ============================================== # # Set Default OpenCL device and platform USR_PLATFORM = n OCL_DEVICE = xilinx:adm-pcie-7v3:1ddr:3.0 OCL_PLATFORM = one_of_default_platforms # Check if the user specified opencl platform ifneq ($(OCL_PLATFORM), one_of_default_platforms) USR_PLATFORM=y endif # Check OCL_TARGET value OCL_TARGET = sw_emu ifeq ($(OCL_TARGET),sw_emu) else ifeq ($(OCL_TARGET),hw_emu) else ifeq ($(OCL_TARGET),hw) else $(error "OCL_TARGET does not support the $(OCL_TARGET) value. Supported values are: sw_emu, hw_emu, hw") endif # Check opencl kernel file type OCL_KERNEL_TYPE = ocl ifeq ($(suffix $(OCL_KERNEL_SRC)),.cl) OCL_KERNEL_TYPE=ocl else OCL_KERNEL_TYPE=c endif # OpenCL runtime Libraries OPENCL_INC = $(XILINX_XRT)/include/ OPENCL_LIB = $(XILINX_XRT)/lib/ # opencl harness files OCL_HARNESS_DIR = ../harness/ocl_src OCL_HARNESS_SRC_CPP = $(OCL_HARNESS_DIR)/CLKernel.cpp $(OCL_HARNESS_DIR)/CLMemObj.cpp $(OCL_HARNESS_DIR)/CLWorld.cpp OCL_HARNESS_SRC_H = $(OCL_HARNESS_DIR)/CLKernel.h $(OCL_HARNESS_DIR)/CLMemObj.h $(OCL_HARNESS_DIR)/CLWorld.h # host compilation flags OCL_HOST_FLAGS = -DOCL -g -lxilinxopencl -I$(OPENCL_INC) $(HOST_INC) -L$(OPENCL_LIB) $(HOST_LIB) -I$(OCL_HARNESS_DIR) # xclbin compilation flags XCLBIN_FLAGS = -s -t $(OCL_TARGET) -g ifneq ($(KERNEL_TYPE),ocl) XCLBIN_FLAGS += --kernel $(KERNEL_NAME) endif ifeq ($(USR_PLATFORM),n) XCLBIN_FLAGS += --xdevice $(OCL_DEVICE) else XCLBIN_FLAGS += --platform $(OCL_PLATFORM) endif XCLBIN_FLAGS += $(OCL_KERNEL_ARGS) #XCLBIN_FLAGS += -I$(BENCHMARK_DIR) # host exe OCL_HOST_EXE = $(KERNEL_NAME)_host.exe # Kernel XCLBIN file XCLBIN = $(KERNEL_NAME).$(OCL_TARGET).xclbin # Kernel XO file XO = $(KERNEL_NAME).$(OCL_TARGET).xo # =============================================== SDSoC Platform and Target Settings ============================================== # # platform SDSOC_PLATFORM = zc706 # executable SDSOC_EXE = $(KERNEL_NAME).elf # sds++ flags SDSFLAGS = -sds-pf $(SDSOC_PLATFORM) -sds-hw $(KERNEL_NAME) $(SDSOC_KERNEL_SRC) -sds-end -clkid 3 \ -poll-mode 1 -verbose SDSCFLAGS += -DSDSOC -Wall -O3 -c SDSCFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" SDSLFLAGS = -O3 # objects ALL_SDSOC_SRC = $(HOST_SRC_CPP) $(SDSOC_KERNEL_SRC) OBJECTS := $(ALL_SDSOC_SRC:.cpp=.o) DEPS := $(OBJECTS:.o=.d) # =============================================== Pure Software Compilation Settings ============================================== # # compiler flags SW_FLAGS = -DSW -O3 # sw executable SW_EXE = $(KERNEL_NAME)_sw.exe # ========================================================= Rules ================================================================= # # we will have 4 top-level rules: ocl, sdsoc, sw and clean # default to sw .PHONY: all ocl sdsoc sw clean emu_setup all: sw # ocl rules ocl: $(OCL_HOST_EXE) $(XCLBIN) # ocl secondary rule: host executable $(OCL_HOST_EXE): $(HOST_SRC_CPP) $(HOST_SRC_H) $(OCL_HARNESS_SRC_CPP) $(OCL_HARNESS_SRC_H) $(DATA) $(OCL_CXX) $(OCL_HOST_FLAGS) -o $@ $(HOST_SRC_CPP) $(OCL_HARNESS_SRC_CPP) # ocl secondary rule: xclbin $(XCLBIN): $(XO) $(XOCC) -l $(XCLBIN_FLAGS) -o $@ $(XO) # ocl secondary rule: the .xo file $(XO): $(OCL_KERNEL_SRC) $(OCL_KERNEL_H) $(XOCC) -c $(XCLBIN_FLAGS) $(OCL_KERNEL_SRC) -o $@ # emulation setup emu_setup: emconfigutil --platform $(OCL_PLATFORM) echo "Please set the environment variable XCL_EMULATION_MODE to either sw_emu or hw_emu!" # sdsoc rules sdsoc: $(SDSOC_EXE) $(SDSOC_EXE): $(OBJECTS) $(SDSXX) $(SDSFLAGS) $(SDSLFLAGS) ${OBJECTS} -o $@ -include $(DEPS) %.o: %.cpp $(SDSXX) $(SDSFLAGS) $(SDSCFLAGS) $< -o $@ # software rules sw: $(HOST_SRC_CPP) $(HOST_SRC_H) $(SW_KENREL_SRC) $(SW_KERNEL_H) $(DATA) $(SW_CXX) $(SW_FLAGS) -o $(SW_EXE) $(HOST_SRC_CPP) $(SW_KERNEL_SRC) # cleanup clean: rm -rf *.exe *.elf *.xclbin *.xo *.log *.bit *.rpt _xocc* _sds sd_card _x .run .Xil *.json *.info rm -rf ./src/host/*.d rm -rf ./src/sdsoc/*.o rm -rf ./src/sdsoc/*.d rm -rf ./src/host/*.o ================================================ FILE: harness/ocl_src/CLKernel.cpp ================================================ /*===============================================================*/ /* */ /* CLKernel.cpp */ /* */ /* Defines the object class for an OpenCL kernel */ /* */ /*===============================================================*/ #include "CLKernel.h" #include namespace rosetta { // initialize the kernel from binary file CLKernel::CLKernel(cl_context context, cl_program program, std::string kernel_name, cl_device_id device_id) { printf("Creating kernel %s ... ", kernel_name.c_str()); int err; // set the name and device ID this->device_id = device_id; this->kernel_name = kernel_name; // Create the compute kernel in the program we wish to run kernel = clCreateKernel(program, kernel_name.c_str(), &err); if (!kernel || err != CL_SUCCESS) { printf("Error: Failed to create compute kernel!\n"); printf("Error Code %d\n", err); exit(EXIT_FAILURE); } printf("Done!\n"); } void CLKernel::set_global(int global_work_size[3]) { printf("Set global work size of kernel %s to [%d, %d, %d]\n", kernel_name.c_str(), global_work_size[0], global_work_size[1], global_work_size[2]); for (int i = 0; i < 3; i ++ ) this->global_size[i] = global_work_size[i]; } void CLKernel::set_local(int local_work_size[3]) { printf("Set local work size of kernel %s to [%d, %d, %d]\n", kernel_name.c_str(), local_work_size[0], local_work_size[1], local_work_size[2]); for (int i = 0; i < 3; i ++ ) this->local_size[i] = local_work_size[i]; } std::string CLKernel::get_name() { return this->kernel_name; } void CLKernel::releaseKernel() { printf("Release kernel %s ... ", kernel_name.c_str()); // release kernel clReleaseKernel(kernel); printf("Done!\n"); } } ================================================ FILE: harness/ocl_src/CLKernel.h ================================================ /*===============================================================*/ /* */ /* CLKernel.h */ /* */ /* Defines the object class for an OpenCL kernel */ /* */ /*===============================================================*/ #ifndef __CLKernel__Harness__ #define __CLKernel__Harness__ // standard headers #include #include #include // opencl header #include // CLMemObj is a member of this class #include "CLMemObj.h" namespace rosetta { // wrapper class around an OpenCL kernel class CLKernel { friend class CLWorld; public: // constructor // compiles the kernel CLKernel(cl_context context, cl_program program, std::string kernel_name, cl_device_id device_id); // set global/local work group size void set_global(int global_work_size[3]); void set_local(int local_work_size[3]); // get kernel name std::string get_name(); protected: // set cl_mem argument int set_mem_arg(int id, cl_mem mem_obj) { int err; err = clSetKernelArg(this->kernel, id, sizeof(mem_obj), &mem_obj); if (err != CL_SUCCESS) { printf("Error: Failed to set kernel argument %d for kernel %s!\n", id, (this->kernel_name).c_str()); printf("Error Code %d\n", err); return EXIT_FAILURE; } return err; } // set memory arguments for this kernel template int set_const_arg(int id, T& mem_obj) { int err; err = clSetKernelArg(this->kernel, id, sizeof(mem_obj), &mem_obj); if (err != CL_SUCCESS) { printf("Error: Failed to set kernel argument %d for kernel %s!\n", id, (this->kernel_name).c_str()); printf("Error Code %d\n", err); return EXIT_FAILURE; } return err; } void releaseKernel(); private: // global and local work group size size_t global_size[3]; size_t local_size[3]; // kernel information and objects std::string kernel_name; cl_device_id device_id; // target device id cl_kernel kernel; // compute kernel }; } #endif /* defined(__CLKernel__Harness__) */ ================================================ FILE: harness/ocl_src/CLMemObj.cpp ================================================ /*===============================================================*/ /* */ /* CLMemObj.cpp */ /* */ /* Implements the member functions of CLMemObj class */ /* */ /*===============================================================*/ #include "CLMemObj.h" namespace rosetta { // default constructor, initializes everything to 0 CLMemObj::CLMemObj() { this->mem_data = nullptr; this->elt_size = 0; this->length = 0; this->flags = 0; this->bank = nullptr; } // meaningful constructor, initialize data info constants CLMemObj::CLMemObj(void *mem_data, int elt_size, int length, cl_mem_flags flags, cl_mem_ext_ptr_t* xil_ext ) { this->mem_data = mem_data; this->elt_size = elt_size; this->length = length; this->flags = flags; // can use Xilinx mem extensions to specify DDR bank if (xil_ext != nullptr) { this->bank = new cl_mem_ext_ptr_t; this->bank->flags = xil_ext->flags; this->bank->obj = xil_ext->obj; this->bank->param = 0; } else this->bank = nullptr; } // return the pointer to data void * CLMemObj::get_data() { return mem_data; } // get size of each element int CLMemObj::get_element_size() { return elt_size; } // get the number of elements in the buffer int CLMemObj::get_length() { return length; } // get OpenCL memory flags cl_mem_flags CLMemObj::get_flags() { return flags; } // get xilinx memory extension pointer cl_mem_ext_ptr_t* CLMemObj::get_xil_ext_ptr() { return bank; } } ================================================ FILE: harness/ocl_src/CLMemObj.h ================================================ /*===============================================================*/ /* */ /* CLMemObj.h */ /* */ /* Defines the object class for an OpenCL memory buffer */ /* */ /*===============================================================*/ #ifndef __CLMemObj__Harness__ #define __CLMemObj__Harness__ // standard header for command line output #include // opencl header #include // xilinx opencl extension header #include namespace rosetta { // wrapper class around cl_mem class CLMemObj { friend class CLWorld; public: // default constructor CLMemObj (); // a meaningful constructor CLMemObj (void* mem_data, int elt_size, int length, cl_mem_flags flags, cl_mem_ext_ptr_t* xil_ext = nullptr); // get information about the buffer void* get_data(); int get_element_size(); int get_length(); cl_mem_flags get_flags(); cl_mem_ext_ptr_t* get_xil_ext_ptr(); private: // pointer to data void *mem_data; // size of each element int elt_size; // number of elements int length; // OpenCL memory flag cl_mem_flags flags; // Xilinx extension describing bank assignment cl_mem_ext_ptr_t* bank; }; } #endif /* defined(__CLMemObj__Harness__) */ ================================================ FILE: harness/ocl_src/CLWorld.cpp ================================================ /*===============================================================*/ /* */ /* CLWorld.cpp */ /* */ /* Implementation of the CLWorld class */ /* */ /*===============================================================*/ #include "CLWorld.h" namespace rosetta { // default constructor // make sure it does something meaningful CLWorld::CLWorld() { // default: run on alpha data 7v3 board this->target_device_name = "xilinx:adm-pcie-7v3:1ddr:3.0"; this->device_type = CL_DEVICE_TYPE_ACCELERATOR; // configure the OpenCL runtime createWorld(); } // meaningful constructor // user specifies device CLWorld::CLWorld(std::string target_device_name, cl_device_type device_type) { this->target_device_name = target_device_name; this->device_type = device_type; createWorld(); } // get the compute device cl_device_id CLWorld::getDevice() { return this->device_id; } // get context cl_context CLWorld::getContext() { return this->context; } // get compute program cl_program CLWorld::getProgram() { return this->program; } // insert a new memory object int CLWorld::addMemObj(CLMemObj &new_mem_obj) { int err; printf("Adding memory object into the world ... "); // first push the CLMemObj object into our vector mem_objs.push_back(new_mem_obj); // then create the actual cl_mem buffer, push it into another vector cl_mem buf; buf = clCreateBuffer(context, new_mem_obj.flags, new_mem_obj.elt_size * new_mem_obj.length, new_mem_obj.bank, &err); if (err != CL_SUCCESS) { printf("Error creating buffer for memory object %d!\n", mem_objs.size()-1); printf("Error Code %d\n", err); exit(EXIT_FAILURE); } cl_mem_buffers.push_back(buf); // write the buffer onto the device if needed if ((new_mem_obj.flags != CL_MEM_WRITE_ONLY) && (new_mem_obj.mem_data != nullptr)) { err = clEnqueueWriteBuffer(cmd_queue, buf, true, 0, new_mem_obj.elt_size * new_mem_obj.length, new_mem_obj.mem_data, 0, NULL, NULL); if (err != CL_SUCCESS) { printf("Error writing buffer %d onto the device!\n", mem_objs.size()-1); printf("Error Code %d\n", err); exit(EXIT_FAILURE); } } printf("Done!\n"); return (mem_objs.size() - 1); } int CLWorld::updateMemObj(int mem_idx) { printf("Updating mem object %d ... ", mem_idx); // write the buffer onto the device if needed if (mem_objs[mem_idx].flags != CL_MEM_WRITE_ONLY) { int err = clEnqueueWriteBuffer(cmd_queue, cl_mem_buffers[mem_idx], true, 0, mem_objs[mem_idx].elt_size * mem_objs[mem_idx].length, mem_objs[mem_idx].mem_data, 0, NULL, NULL); if (err != CL_SUCCESS) { printf("Error writing buffer %d onto the device!\n", mem_idx); printf("Error Code %d\n", err); exit(EXIT_FAILURE); } } else printf("Buffer %d is write_only! Not updating it ... \n", mem_idx); return EXIT_SUCCESS; } int CLWorld::readMemObj(int mem_idx) { printf("Reading mem object %d into host buffers ... ", mem_idx); int err = clEnqueueReadBuffer(cmd_queue, cl_mem_buffers[mem_idx], true, 0, mem_objs[mem_idx].elt_size * mem_objs[mem_idx].length, mem_objs[mem_idx].mem_data, 0, NULL, NULL); if (err != CL_SUCCESS) { printf("Error reading kernel buffer %d!\n", mem_idx); printf("Error code %d\n", err); exit(EXIT_FAILURE); } printf("Done!\n"); return err; } // create compute program from a file // return error code int CLWorld::addProgram(std::string filename) { printf("Adding binary program into the world ... "); // load the file size_t code_size = (size_t) load_file_to_memory(filename.c_str()); // start to compile int err; cl_int create_binary_status; // Create the compute program from the source buffer program = clCreateProgramWithBinary(context, 1, &device_id, (const size_t *) &code_size, (const unsigned char **) &kernel_code, &create_binary_status, &err); if (!program) { printf("Error: Failed to create compute program!\n"); printf("Error Code %d\n", err); exit(EXIT_FAILURE); } // Build the program executable err = clBuildProgram(program, 0, NULL, NULL, NULL, NULL); if (err != CL_SUCCESS) { size_t len; char buffer[2048]; printf("Error: Failed to build program executable!\n"); printf("Error Code %d\n", err); clGetProgramBuildInfo(program, device_id, CL_PROGRAM_BUILD_LOG, sizeof(buffer), buffer, &len); printf("%s\n", buffer); exit(EXIT_FAILURE); } printf("Done!\n"); return err; } // insert a kernel into the world // return the position of the kernel in the vector int CLWorld::addKernel(CLKernel &new_kernel) { printf("Adding kernel %s into the world ... ", new_kernel.get_name().c_str()); kernels.push_back(new_kernel); printf("Done!\n"); return (kernels.size() - 1); } // methods to set kernel arguments // memory argument int CLWorld::setMemKernelArg(int kernel_id, int pos, int arg_id) { printf("Set mem arg %d for kernel %d with mem object %d ... ", pos, kernel_id, arg_id); int err = kernels[kernel_id].set_mem_arg(pos, cl_mem_buffers[arg_id]); if (err != CL_SUCCESS) { printf("Error setting kernel argument!\n"); printf("Error code %d\n", err); exit(EXIT_FAILURE); } printf("Done!\n"); return err; } // run all kernels // return error code int CLWorld::runKernels(bool flush) { printf("Start kernel execution ... "); int err; // wait for previous write buffer tasks to finish printf("Waiting for queue... \n"); clFinish(cmd_queue); // enqueue all the kernels // temporarily we assume kernels won't have any dependency between them // or the dependency is handled inside kernels (such as pipes, etc. ) for (int i = 0; i < kernels.size(); i ++ ) { printf("Start kernel %d!\n", i); err = clEnqueueNDRangeKernel(cmd_queue, kernels[i].kernel, 3, NULL, kernels[i].global_size, kernels[i].local_size, 0, NULL, NULL); if (err != CL_SUCCESS) { printf("Error enqueuing kernel %d!\n", i); printf("Error Code %d\n", err); exit(EXIT_FAILURE); } } // wait for them to finish printf("Waiting for kernels ... \n"); clFinish(cmd_queue); // remove all of them from the vector // so that this function can be called multiple times // at a cost that kernels won't be released automatically if (flush) { int total_size = kernels.size(); for (int i = 0; i < total_size; i ++ ) kernels.pop_back(); } printf("Done!\n"); return err; } // create runtime environment int CLWorld::createWorld() { printf("Initializing OpenCL runtime environment ... "); int err; // scan the machine for available OpenCL platforms cl_uint platform_cnt; cl_platform_id platforms[16]; err = clGetPlatformIDs(16, platforms, &platform_cnt); if (err != CL_SUCCESS) { printf("Error: Failed to find an OpenCL platform!\n"); printf("Error Code %d\n", err); printf("Test failed\n"); exit(EXIT_FAILURE); } printf("INFO: Found %d platforms\n", platform_cnt); // find the target device char device_name[1024]; cl_device_id devices[16]; cl_uint device_cnt; bool found_device = false; // scan all platforms for (int p = 0; (p < platform_cnt) & (!found_device); p ++ ) { err = clGetDeviceIDs(platforms[p], this->device_type, 16, devices, &device_cnt); if (err != CL_SUCCESS) { printf("Error: Failed to create a device group for platform %d!\n", p); printf("Error Code %d\n", err); printf("Test failed\n"); exit(EXIT_FAILURE); } // iterate through all devices on the platform for (int d = 0; (d < device_cnt) & (!found_device); d ++ ) { err = clGetDeviceInfo(devices[d], CL_DEVICE_NAME, 1024, device_name, 0); if (err != CL_SUCCESS) { printf("Error: Failed to get device name for device %d on platform %d!\n", d, p); printf("Error Code %d\n", err); printf("Test failed\n"); exit(EXIT_FAILURE); } if (std::string(device_name) == this->target_device_name) { this->platform = platforms[p]; this->device_id = devices[d]; found_device = true; printf("Selected device %d on platform %d as target device!\n", d, p); } } } if (!found_device) { printf("Error: Target device %s is not found!\n", (this->target_device_name).c_str()); exit(EXIT_FAILURE); } // create context and command queue this->context = clCreateContext(0, 1, &(this->device_id), 0, 0, &err); if (!(this->context)) { printf("Error: Failed to create a compute context!\n"); printf("Error Code %d\n", err); exit(EXIT_FAILURE); } this->cmd_queue = clCreateCommandQueue(this->context, this->device_id, CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, &err); if (!(this->cmd_queue)) { printf("Error: Failed to create a command queue!\n"); printf("Error Code %d\n", err); exit(EXIT_FAILURE); } printf("Done!\n"); return err; } // read kernel binary file into memory int CLWorld::load_file_to_memory(const char *filename) { int size = 0; FILE *f = fopen(filename, "rb"); if (f == NULL) { kernel_code = NULL; printf("Can not open kernel file!\n"); exit(-1); } fseek(f, 0, SEEK_END); size = ftell(f); printf("Size of the file is %ld\n", size); fseek(f, 0, SEEK_SET); kernel_code = new char[size+1]; if ((unsigned int) size != fread(kernel_code, sizeof(char), size, f)) { delete []kernel_code; printf("Reading kernel failed!\n"); exit(-2); } fclose(f); (kernel_code)[size] = 0; return size; } // release all runtime constructs void CLWorld::releaseWorld() { printf("Cleaning up OpenCL opjects ... "); // release memory objects for (int i = 0; i < cl_mem_buffers.size(); i ++ ) clReleaseMemObject(cl_mem_buffers[i]); // release program delete []kernel_code; clReleaseProgram(program); // release kernels for (int i = 0; i < kernels.size(); i ++ ) kernels[i].releaseKernel(); // release device and context clReleaseCommandQueue(cmd_queue); clReleaseContext(context); printf("Done!\n"); } } ================================================ FILE: harness/ocl_src/CLWorld.h ================================================ /*===============================================================*/ /* */ /* CLWorld.h */ /* */ /* Defines the object class for OpenCL context */ /* */ /*===============================================================*/ #ifndef __CLWorld__Harness__ #define __CLWorld__Harness__ // standard headers #include #include #include // opencl header #include // CLKernel and CLMemObj are members of this class #include "CLKernel.h" #include "CLMemObj.h" namespace rosetta { class CLWorld { public: // default constructor CLWorld(); // meaningful constructor CLWorld(std::string target_device_name, cl_device_type device_type); // get the compute device associated with this world cl_device_id getDevice(); // get the compute context associated with this world cl_context getContext(); // get the binary program cl_program getProgram(); // insert a compute program int addProgram(std::string filename); // insert a kernel int addKernel(CLKernel &new_kernel); // insert a memory object int addMemObj(CLMemObj &new_mem_obj); // update a memory object (write new value) int updateMemObj(int mem_id); // read a memory object int readMemObj(int mem_id); // set memory kernel argument int setMemKernelArg(int kernel_id, int pos, int mem_id); // set constant kernel argument template int setConstKernelArg(int kernel_id, int pos, T& arg) { printf("Set const arg %d for kernel %d ... ", pos, kernel_id); int err = kernels[kernel_id].set_const_arg(pos, arg); if (err != CL_SUCCESS) { printf("Error setting kernel argument!\n"); printf("Error code %d\n", err); exit(EXIT_FAILURE); } printf("Done!\n"); return err; } // run kernels int runKernels(bool flush = false); // clean up void releaseWorld(); private: // OpenCL runtime variables // the platform we will use cl_platform_id platform; // the device we will use std::string target_device_name; // device name cl_device_type device_type; // device type cl_device_id device_id; // device id // compute context cl_context context; // command queue cl_command_queue cmd_queue; // binary program for the device char* kernel_code; cl_program program; // kernels std::vector kernels; // memory objects std::vector mem_objs; // actual OpenCL memory buffers std::vector cl_mem_buffers; // function to create the OpenCL runtime int createWorld(); // load binary file into memory int load_file_to_memory(const char *filename); }; } #endif ================================================ FILE: optical-flow/Makefile ================================================ # Set kernel name KERNEL_NAME = optical_flow # Set host source and headers HOST_SRC_CPP = ./src/host/optical_flow_host.cpp ./src/host/utils.cpp ./src/host/check_result.cpp ./imageLib/Convert.cpp \ ./imageLib/Convolve.cpp ./imageLib/flowIO.cpp ./imageLib/Image.cpp ./imageLib/ImageIO.cpp ./imageLib/RefCntMem.cpp HOST_SRC_H = ./src/host/utils.h ./src/host/check_result.h ./src/host/typedefs.h ./imageLib/*.h DATA = # Set host code include paths HOST_INC = -I$(XILINX_VIVADO)/include -I./imageLib HOST_LIB = -L$(XILINX_VIVADO)/lib # Set kernel file OCL_KERNEL_SRC = ./src/ocl/optical_flow.cpp OCL_KERNEL_H = ./src/host/typedefs.h SDSOC_KERNEL_SRC = ./src/sdsoc/optical_flow.cpp SDSOC_KERNEL_H = ./src/host/typedefs.h SW_KERNEL_SRC = ./src/sw/optical_flow_sw.cpp SW_KERNEL_H = ./src/host/typedefs.h ./src/sw/optical_flow_sw.h # Set opencl kernel arguments OCL_KERNEL_ARGS = --max_memory_ports all --report system -I$(shell pwd)/src/ #------------------------- # Leave the rest to harness #------------------------- include ../harness/harness.mk ================================================ FILE: optical-flow/README.md ================================================ # Optical Flow ## Description This design computes the movement of each pixel in five continuous image frames. The hardware function constructs a streaming dataflow pipeline between different stages of the algorithm. The `dataset` directory contains our test input and the reference output flow file. The `imageLib` directory contains a small image library from Microsoft Research for image file I/O. ## Major Optimizations Our optical flow design uses three major optimization techniques: 1. Data packing. The hardware function kernel takes in five consecutive image frames. The corresponding pixels in the five frames are packed into a 64-bit integer for fast off-chip data transfer. 2. Image line buffer and window buffer. The kernels in optical flow have sliding window access patterns. As a result, line buffer and window buffer are introduced to exploit data reuse and reduce accesses to the next-level memory. 3. Streaming dataflow optimization. After using line buffer and window buffer, the kernels in optical flow have perfectly balanced throughput, and access data in strict sequential order. As a result, execution of all stages can be perfectly overlapped to form a very deep image processing pipeline. ## Usage ### SDAccel To execute or simulate the design, do `./optical_flow_host.exe -f -p -o ` ### SDSoC To run design on the board, do `./optical_flow.elf -p -o ` ### SW To run software version, do `./optical_flow_sw.exe -p -o ` ### Note `` must end with the extension `.flo`. Example: `output.flo`, `out.flo`. ## Known Issues 1. In function `gradient_xy_calc`, if we use the hls built-in line buffer, the tool can not fully pipeline the loop `GRAD_XY_INNER`. ## Current Benchmark ### On ZC706 | Benchmark | #LUTs | #FFs | #BRAMs | #DSPs | Runtime (ms) | Throughput | |:---------:|:-----:|:----:|:-----:|:------:|:------------:|:----------:| |Floating_point|42878|61078|54|454|24.3|41.2 frames/s| |Fixed_point|27869|47860|72|354|19.7|50.8 images/s| ================================================ FILE: optical-flow/datasets/current/frame4.ppm ================================================ P6 1024 436 255 |x{lvfqb~mow~mtb|iZ|j]~moq{j}jZq`}k\rcp_m\N_QEvcTxfp_td}jZjZLvcTtbTkZM[MBSF;OB9XJ@G<3OH@vncrurr~s~tht}xne[LF@{p}{xy{{||xsykwjsvxwywyz|yu}pwjwjwk|th~vj}uixpeypd|o}puz{~{tvia[R=:6--,+,,,--.///0/-.-,--*++,,,,-,,-,*+*%#!(!4-)2&--,+-,,-,+,,*++++++,++,,*,++,+?=:`[S|o{~xstxzwr{n|ov~~||{yy~t}rkcYGB<-,*''&'('$$####$###"""""!!! 2/+WPHypcuzxqe^Uuodzshe^U_YQVQIXRKd]SmeZd\SldZ{tixqfng]B=7HD>[VP^YR[VPVRLQNHJGC?=:;96:86653864985874:87<;9<;9::844210/110121./.+,+,,,+,+()($%$$%%###$%%(((%&&*+++,,,--,..+,-+,-,---./,--)**())())++,-..**+'((&'''(()**,--,-.-..-..///011222344566566566566122+,,,--,-,+,++,+-...//-..-..)**"##!!! ! #$$)**)**)**)**)**###!!! ###"""''' TNE^WN^WNh`Vnf[le[qj`c\SYSK[UM^WOhaYyqga^XBEGEHIDFH?BC>@A?@A=>>AAAAA@??>@?>CA@IEDJFDLHEUPNWQNWQOZTQVOKQJGVOLUOKVPMSMJNHDNHDSMJXRNVOLYROZSPSMIOHCKE@GA=@<8?:6B=9E?;KE@PIESLGUMHXPLXPMXPLSLITMJRKGQIFUNKTLIPHDNGCLEAJC?MGDIC@GA>KDAG@<=73=74:414/,1,*1-*83161.831<74831:52:52?:7C=:D=:B<8B<8C=9?:6A;7B<8B<8D>:F?;A<7A;7B<8A<8HB>HB>E?;F?HC?HC@IC@FA>GA>JDANHEPJHSMJRLIOIFIC@JC@LFBPIFQJHTMJKD@IB=KC?HA=G@E>:F?;LE@HA=HA=HB>GA=D>:H@ug[wtux{~{py~|wvl}tjzp~s~st~r|qtuaVKtḓ~}xymsy{}{yxw|z83-'$"sg[|{wwxtw{rcth]}pcodZs}qzo~svz|}||~|}|xwypwnc{rh}r|q~s{}~zwts}{xuuzqn~ltd~nxvzhr`uew}lzi[wg}jZo_p`n_vesap_Q^OC{hYscp`}j[p_Pp^PjZMdUIZK@RE:J>4MB8D91YRIxpdsw|pu}qwkvve]TGA:sj_|qezmtxyyz~~z{z}}yqt}{}~}zxwuq{mxj}p~qty}|yx|oujtj`wma}rftj_tj^xnb|sfuiqw|}~qog]OJD21/,,++,,-../00011-..,--+++,-,-.../.-..&#!*$ 4-)2& --,,,,-.-,-,+++*+++,+,--+,+..-FC?gaY~r}zwsy}{}|xsym}tg~tg}pvyszmtx{z}|~q~uh{rf}sg|sg~uhqxvr~qs~owiq|uq~o}thwnb|sf~tgvm`aYOD?8)(% 41,XRHypcx|f_Urkaunbg`W`ZRWRKZTMg`VmdYbZQkdZ{thxpepi^?:4ZTL|tj~vk{tivndslbng^gaYe_Wb\U\WPYTMYTLUPJVQKWRLRNHPMGLHDFC@A?B@=?>;?>;?>;98665322010//.-//.+++,+***)'(''('&'&(((&'&'(()**&''()))**+,,.//...-...////////.//....///0/011343444444566566566567455022122011/00.//.//.//.///0/+,,$%%#$$!"!!!!$$$())())(((+++---...(((&&&$$$*+**++-..""!UNE^WM^WMg`VkdZicZoi_c\S^XOe^Ud]Tpi`}uj]YR6899:;<=>=>?<>>?@@=>>?@@@BB?A@?A@?@@?@@?@@?A@ABABCBEEDHHFIHFGFDMJIPLJPMKRMJMHELGCGB>QKGYRN^XUYROVOLWPMQJFOHDMGBHB>IC?JC?MFBRKGYRMZRMZRN[SNYQNRKHNGCMGCOGCQJFTLHMFAOHDTMJPIFPIFHB?HA>JC@HA>@:6?95<63:5261.2.+40-830:52<74;53<64;53@:8F@=GA>G@=GA>D>;B<9D>;E?;D?;F?F@:G@=E?;F@IB?JDAHB?GA>GA>IC@MGENHFRLJRMJNHEKEBJD@MGDPJGJDAKD@KD@F?:D>9E>:E>:G@;LE@VNJVOJKD@JC?HB>D>:>84A;6E?:F?;PHDOHDOHCOHCQIDLEALEANGBUMHSLGUMHVNIWOJXPKZRLXPJYPJsf]y̯ŬʯʭԸˮѳٺ޿ܽݾںɫǨŨ¦Ȫp^P sepcyi}k~mruգ֧âũͳĬ湯ʹŲųƲͰίϲªРڣůιȲǪ̱ȭТƙפ߭گ֭ٮ֫ܫݧy糩뾱侳ҭǢ×|ʚꮤ칯츭춭뱢ԛz{|qygksy|vmȒڟ˜|yurvmjcb^hefcidsmsnrmto}v{ywq~wƝ̡ЦƟxuƕ֥ةѧƢäҳұ«ιųݼǻȻǷʻŹøŷ̪ˬذ۴ݳƜ™̊plovqzjtڥ­ۮТxwϖɑ{szkqfmdldmc{o{rsmvo|r~y¥Ĥڲ黩뼪ñɶ긧Ǣʒ묛鿳ۻ״ҧ춡ĮDzʴи˶뺫ѭŨɩӫ۫ΧƤƤĠߥːzwrthodlaobmeldpdrjyz}Ęաt]MF1-,820931:52:415.+2+(2+(3,)-&$QH@wi]wvz|~z}}yxv}q|q~rrh]R}n`ˬǬ~xxwtz{|q{~xt}rtv||y~yLE=ZQIzlqtustuusdh]T|{vipdZ~rvtux~~|{x~wvsti}rvk~sxv~}t{~sx{txrzkxiswuvg|k^yiomoumn~kzhXwfyhl^l]q`zgVyfWm^qa~k\ygWn]O`QE]NC\MAXJ>WI=G<3A6.`YOtma{nu}{oxs|owxaZQLF?pf[pg[tj]ynazpb{pctg~tgwj|nrru{z{xww{|zy||{y{vvs}oru~oykxjwjzl}owzu}ouxws}puhul`vm`ypdsk`zpdxnb~uhrw|nh`VD@;++***)))()*)()(%&%####$$#$$%&%'(()*)*++&"-&"5,(2&*+*+,+-.-,--,--,--,--././0/997[WPzo~{yz||{|{xz{}zvwwtvustst}rxlvjyl|ozn~thtgviui{mtu}o{nwkvjxluivl`d\RE@:*(%.+&QKCpg[|n|ze]Sqj_rj^ibXd]T`ZRc\Sg_ViaV_WNhaWxqfwodpi^<82h`W|vwxws}qt{nzrgskatlatlatmbtmbkeZg`Wjd[gbYa\U`[S_ZS_[S]XPZUNTPIQMGMICJGBDA=@=9974863<:6:85984;:7=<9985653664442332--,()(&'&#$#%&%''''('(((&&&'''&&&&&&())+++,-,---------.//-..)**)*))***+++,,,-.-././.,--()(())### !! &&&&&&&&&$%$%%%'''""" !!""")))*++/00##"TMD\TK_XNf^UibXibZpi_b[Q_XNjbXg`Vpi_{shZWQ<>>?AA?AA@AB@BBBCD@BB?AA>??:;:8997875553433435559::<<<=?>=?>;<<9:9454233666898;<;:98<;9B@?HFEIFDIFDPLIOJGMGCPJEOHDQJFQJFSLHSLHQJEYQL\TPaYT[TPWOLQJFNFBPHDQJFWOLSLHRJGOHFIB?C=9B<8F@95=7471.:52<6472/830>86@:8A<9?97C<9A:7?95D>;GA>E?;B<9A;7@:6E?;HA>HA>GA=F@;HB?LFBF@=HB>IC?KEAIC>KEAHB>E?;C=:JECICAMGDOIGOIGNHEKEAKD@LE@GASKFVMIMFAQIDQJFMFBHA=F@;HB=HA=HA=E?;JC>LEATMHUNITMHYQL\TO\TOVNITMGSLGNGCNGATMGUMGug^ԴǬԷҷ׻ͱçϰշǫˮὟղ἟ЮɨƧϮã̫|hX|mvhwgmivgndlh}~~}|֪ୣ沤ɳɯȭ©⬘һȳ⬠¨겘Ϡڤ竞笡֢zpj嫣︭۸ήϨzƓ鯡ɿ췫ښ̘~snzșѡĘu{諛߯٫㲠簞㬚٢Җ΂rwxvȏ~~yrmufk\m[iWdUn_qerdndpitp|w}{nue~pÞŢݿྣ徣ǭDZϲɮսǷµĶ·꿵¶꽰ӱۺ޻໰Ҩ–ΩǝtrÎv˓}˒~usƕ̻ȶǴƲ䱟穕祐јēz͙ҩ}yjqdmevnnhzc^jb}iaibtnx}oۑ|ﰣݲհֱϫجᆲı̵Ѹ˵뺨ӯūũ˪˪ɩĦƥǧɨ˨Ĥ䧚̘z{sopx}|tmqgjaeQK310741=74:518208204.+1+'2+(4,)4,).'%OE>ug[vzzyzy}{zwuz}xyxk_}n_y¤|z{{yuzotvwxywwl}sivtyn}sivkzlSKBZQI{n~pqqqu~o|l}n`YQI}{xzy|zmnbWuz{|zyw|{xuu{}tr|q|qyzyvku{{vuux|~wu}lty}m|l{i[yh[pv}l}movqxftc{jxgudVrap^l\n_qao`ucUtbTm\N[LAVH=RE:TG<9c]Ts|{wv}o~pswyxuxzz|~}{}zyvrurvjmcYLFA/-+$$$#$#$$$###!""/+(WPH}sgz~`YPpi^ri]jcYhaXibYibYe^Te]SZSJc\StmbslaleZ84.tl`~}}|{u{n}tiwl{o}pu~q~vjznznxlzrgxpfyqfrk`mg]ke[hbXgaXke\e_V\VNXRJWQJVQIVPIWRJUPIWSLWSLQNHNLFLJEHGBBA>A@=>=::95974:8598566343075231./.,))'$$#$%$"""!"!"""!!!### !!!"""###%%%'((&&&""" !!!!!!!!  $$$$%%)**"! QKC[TK_XOf_Vke[kd\pi_`YP^WNjbXg`Vog]}ui]YS<=>=>><>>@BBBCC@BB:<<566122./....,,,++++++,,,...111110111221222232///+,++++,--/0/000/00.//122334233555555444998;;:?>=DBAIGEMJGJFCLFCSLIZSP`YV\TRXPMSKGUNJVNKWOLNFBOGCHA>GA=B<9C=9E?;G@=HA=>8472/82/;52C=;C>;B<:D?IB?KEBOHDLEBKC?G@IB?IB>D>:HA>MFCMGBKD@F@;GANGBOHCMFANGCNFBTLGZQL\TOYQLTMHXPLSLGOHBMFAULF}neзٽƬ߽ҵعӷҵڽ༟̮Ͱڽظή俠״Яֱ̪Աtd椒城̏ᘀ~͑xr{n|rzqrkgcp\\wb_|c`hfli}kh{igpqutytx̙ўʢ|鰠氢Шʨ௠谟㳝ȣ}ڣ諣ڢzmd~誡شΨĎ{˒yݧù纰븪좌ytܜﵥ׳qҟ뺬浨귩ﴥ硔ᥔԞޝ훆{sou||xsʈqutvjpcxg{mypyry~z|ֲ̫޻ڹɬŦʯҵ࿱źвɧ۲Ѭ˪翳ķ庭ئ̡ȥÖȒ|ϕ֚ԛʖ}y~Ѥ̺мѾϼ˷ᥑѝ˙К۩⺨ܹƥvwm|qyoldaZh_kdidg`|c]g`f]m益~{~Ɵө絣êʰƭ嶤ί̮հү˫Ϫģ£ĥȨΫǧã語եğ~|ÍupsÝѧΥʢ׬Ŝk_Q>7-*(72/@;7<6382/5.,3-*1*(0*'3,)4-*4-*0)&F<6xi[xyxxxy~{u|q}r|~|{|sem`Tt|zxvvu~~{x|x{~{zozo{ymacYOus}p}p}pt|nzlseOHA{|t~rxz|nreYwuu|yzwu{yyzoyx}r{|v|{~||qutx{}y}ozjz}|{j{j[~l^txryip~ml]rbTzi[qa{iYwfWygn]sbS{i[~k\tbSn^Po^Q[LAUH=VH=]NCUG=;7753/.---,+,+)))***$$$""!  !"!"#"&&%""!&&&))((''&&% !!! """ ! $%%#! TNFaYPd\RibXkd[ke\qk``ZP]WNe^Tc\Sle\|thYUO7898996889;;89:233...+,,+,,****++)**()))*+-..12123212100/...///222455243/10/002322334554542332222336779:96775664554555668::9;;:;;<==<==<<??>B@@CB@IGFPLJOJHJDAE?;B=9F@=B<9GA=HA=HA=G@86>86@:7@:7GA>OHENGDNGDNGDLFCSLISLHRJFNGCQJGRKGNGCKD@IB=IB>KD@LEAHA=GA=LFAPIDTLHUNJUNIUNIOHCSLHOIELFBMGCLFCLFBLFDKFCMHEMGCHB>KD@QJFKD@KC>PHCQIEOGCMFAPIDLE@G@MFBRKETLFPIEWOJZRMVNIOHCPIDMFBKD@NHCRKFRKGPIERKFXOJ]UPYQLSLGOHCQJEKE@JD>WOI}oeɲ׼۽ϰвҵҴд̰ݻ¦ˮټ߿նѲԵɭƩڷسѰue~מy˒wy}~ulzo}nmЌqm~iyhzjrchYdXaXsdugqhh`j^}rx~ƣѰܽ{pԡצ٧Ң͜yocČ{Ŷ澵ӨƙƔΖϑzҝ没¶ɽʾ⩔ƠzثܽƩxzﺩô軮繬鹫Ʒ̾砕ĮȲîٗ~З~ztqƐxǑzt}myklcjal`ue|p|ßwqvz}sw~w{s{sslpkzswyʦڰ嶩ת˨ѭӥ͘՛ݡ۠ʗzĘݶ˴걟٥ϞϝН㴣⺨彫ٵέҬز˧v}r~txor{mpNjv˔~規ל|tssn}kyhsevl{o~ptxçç¤ħʭάȣȟ믡ݩ̢ßzrrŸ˭̧֨ҫϨ|rC:5/,*3-+941D>:60-3-*4-*3-*0)&/(%2,)5.+4-*2+(<4/i[Opv~r|rwxzyy~rvgYu}|~{}sypv}w{{}zu}|w~sxuj^ZQI}psz}xSKDyvxwvzlobUs|~xwt}}||{|s~q~q}yu}tjvlt~}y}rxz}{~sxz||xpxhssufozh|i[qcpussp{jyg{iZl]n^p_PtbUzhsal]o^QwdUl[Nl\O_PDVH=QD9[LBYK?SG=pi_rj_wj{xt{}ruw~yQKC`YO|rewjwj|nr|nzqeoh]nf\me[me[sk_wnbtk`ri^wnbxpdxpf~rv}utwvynwk|sg|rgsj_jbXmdZwmc~thuh{m}o}o|n|n}oqp}nvisf~sfxobneYg_UjbXulavj{nzmwjymvyxzvw~~|swi{qezpcvguhtgpfZXQH;71#"  !!! !  "#"#$####""!5'>2,A1(-#!! """&&&&'',,+JFAph^xy}sui}sg}o{{yuùĹ~~~{vj\VM:84,,+()()))*++((("#"62.`YOq~`XOqi^vmale[uncme[]VMYRIg_T]UK_WMng\ng\me[84.vj~|~}|||zuyw~qxmznxmvjwm{sixqfzrgwodumcpi_jcZkd[c^VXSMDB=431./.---+,,)))()(&&&%&%&'&&'&'(''((%&%"""! )(%,*'0.+,*',*(/.+)('%%$##"''&--,*(%YRJh`VkcXme[jcZmg^uodd]T]WNaZQd]Tnf]zqfUPJ-/05658:::<<799233132233344355455455233133455:;:<==<==<==;<;<=<=>>=>><>>:<<9;;<==;=<<==<>>;<<9;:9:::;;;<;:;::::::::;;;<;:;;=>>ABBCEDDEE@BB>??>@?>??>@@?AB>@@>@?=>=:;;788:::>>=A@?A?=B>>9751.730831C>:A<9?96>85E?;F@NGDQIEOHCOGCRJFSLGRKGKD@GANGCOHCG@OHCPIDPIDRJFTMHTMILE@MFBNHDOIDOHDNHEQKHSMJPJHJDAMGCNHDLEANGBME@PHDOHBTKGYQMXPLWPLOHCNGBOGBPHCTMHVOJRKFTLGXPKVNJQIEOGCOHCMFBLEAMFBRKFPIENGCTMI\SOZRMUMHRKEOHBMFANGAXOIzk`ʭӴʱβغۻαٽ۽շʬŧѱ׷ԴٻѳͮӴͮմxg~ƗÕ{|ȧǩ}Ýڢ椆駊~t֋lz|Жworqpemf~ietmxedzhjĨh]l`ogqnzx}xw}ir`Փ~䨚߱ߵݴ֧ʗɓҙ֗͗~Ԩⲧøø¶ŷŷö隄̖Ŝ}ֳҶrʛ漯ϾȻ㫠飔ƱǰǦǦƧŧȦţ頇ӔzΑxƌrortwvv͈tx}Ӄvok|irǝz~|К쬙觔͗ԏ͌ŝة䳧ʢţ׵ͦȘϚԙ͖v×Ý콲ҿйìIJ붧ܬب֤פⰠ帧繤渥们⺮ܷ߹Ǣ|}~̕ɑ͚զߢ蛀ד{nqdiametlrmqoqqxv}{}Ӻ͡孟㲢خ䯡ਚդžŖx}̮ϴɧϩ($70-4.+4.+60-5.+1+(3,)4-*1+(1*(1*'3,*5/,5-*4,)6.+]PGqbwi{odxmc|qf}rhuk}qh[Nk~zqzzz~|zy}w~pwy}rznvk_>94thxxvvw{}ULD~owxxjj\Pxj|vuj{pe{p~~z~xx{~st|yuymsynzo~uj}xxx}r}z~yyz|nvztpumnquuxuudqlrbvetbweV~k\}lpak[MfWJaSGXK@bSF]NBVHSNFZTLVPIQKCNHAHC7;72:61850961=:6-*'UOGc\Rf^Tg`VhaXmg^voehaW[UMYSKc]Upi_qi_RMG110321555566233444787898577566899:;::;;798899:;;;<<<=<<=<;<;;<@?>@?<==:;;=>=<==<==>@?=>><===>>?@@>??=>===<==<>?>@AA@AA@AABCBABB@AA=>?:<<:;;9::777455333566899<==<>><===>>;==8::567678566344766666<<;;::976764<:8@=;IEBLGDJDBKEBJC@MFCNFBNFBME@KC?OGBQJEUMIQJEKD?JC>PIETMHPIDOHDRKFRKFOHDTMHXPLUNISLGQJFSLIPIEPIEQJFOIFMGDTNKPJFLEAPIEOIENGBRJEXPKUMHUMHXPLYRNZROXQLRKFNGBKD@PIDTMHOIDTLHVNITMHNGBNGBPIDRKGNHCKD@PHDUNISLHQJFSKGZRMUMHRKFWOJWOJWOJbXPqcַèȬֻӶϳǬԶ̭ͮ߾ݾݽظضyh~뻬ӨĞ̤ˣϦ׭ڱ֮ʧǥת}柀ӑwΎsċrml}lx}jrf}o֒ʒy̑xÆrugqgmbrdp`vd❄ǐ}x~{|vv}͗Ԣğơک殨ꯧ͗yyzwzė˨ss诟Ŷ³ͺ˺Ԡɴʸ禖ˮαͮ˪˪ƧΕ}ՔyЏtˍqppsvssy͑y˖ѥƥӠ뭚ꭙ㪗ﯠԤԞƓ{œʣxx’xty}Т˻ƶƸѻȱŶ̽õ䶩ޱ߮ଡ߮躪ൠ߳湨辯ôݸ¡vzǠęƖ̛՟娟˻訜ϵϵ̲ūéƍ{xyzw|sslmhhctkzpxlzo{ryx{x}ɞحͩĦʥ߭篞͝ɟġŢ}|ũ¢~.'#80,4.+2*'0(%1+'2+(3-*3-+2,)2,)1+)1+(5/,70-6.+;3/yj]{kzj}mwywvtvyyxz}|xz~xj]QFn^{y|~vvwxz|~}z}|~}v/*&52.ync~xx}q{oxg\Rwi\ouxrrqbVK}l_yyy{x|{|w~su|qy~z}pxodt~{z}~}}tj~sz|xwt{j]tf}xvu~nt|wqc}k\qz|km^zixg}kxfrap`n_xfXq`Qn^PdUIYK@YK?QE:I=4K>4NA8TI?qj_sk`ujy|pw}|wj~qz~~rC>8?70UH>`RF\ODeYMbXMdYOaWN]UMc\Sg`Wkd[rj`xocxodxocype{rfwocvmasj_tlazrfvj~qsw{zx{{}|}{~~}~~xuuq|ozmwkwk}uh{sgypeypezqfuj~uixl{o|pznw|}{qqgZTME951*)((((''&&&%&&%'''''&''&&&%%%%&'&&&&&&&'$#W>/fKDB?GFBFDBBA??><@?=BA>BA?>=;=<:??=A@=DC@FEBCB@AA?CCBCDBABA@A@<==;<<;<<:;;;;;898899:<;<>>=>>=>=:;:;<;>??CDDDEDABAABB?@@>>><==9;;:;:;<;<<<:;:665333233455344232121011011.////////011344444454566233,-.,...0/;<<>??<==;;;<<;A@?B?>D@>HC@FA=JD@NHDRKHRKHRKGOHCPIETLHVOJSLGQJFRKFSLHXPL\UQZSO[TPWPLTMIUNJSLHNHDKEANHEWQMSLIHC?OHDRKHQIESKFSLHQJEOHCUMIYRNWPLUMISKGNGBVNIWOKRKGLEANGBWPK[TPSLGWPKYQMUMIQJFSKFYQLXPLVOJXPKVNISKFVNIUNHWOJXPKXOJmaYvαɮھѶγͳںҳ¥ֹٻյݽ׸޻yh|ݾƷóͮย㹦䶥긨긩ѩѫ汣ȱѶé餁ԔvʏvuvŒusmosnsٞ}Ȕ}̓~{᥍ۤwvxyolcoevjyqkqmtrzx~˜ʜxlwh}koswr{h~˻˿ƺô̹ι٨ӥɴʺଠ٥çɮβ̫ͮήȪΙΓzʍurrswtt‰wƱȳʶ®ޚ՘ڤɟʛ­負ఠɹק~}rxjrqqu׬±̷뿰Ƹ̻ɶ¶亯ܴ௤ީϞ泣ߴ۱䵤帩廬´ŷu˧ǟΟۡĸ貨ʵԿԿҼйϴ˰ϠĞŠĢߦ뫕媓⪔㭖泞㫘Ï}tyΥɨv{n.($8/+3+(1*&1)%2+(2+(2+(2+)2-*3.,0*'1*&5.*9307/,1)&k]Rz~uuw{l}m`|m`vi~qvxswjxj|nrvwv~qRH>}m_zsvuvz}s}tjyowvw{xuyv{~~~A;51.+si^}~}|zw}wj^zk]}nqpvi|n~o]QGtdXy}w{uwwz~ttw{wxx{ox}{zw{x|}w|{ksbUzltzlwyjwfYnayxhrbrumweuexg|ktdl\~k[jZNp`RzhXraSl\OaRFZK?ZL@RE:PC8K>4VLBmf\rj_ymz~ry|~z|sh~q{|vk73.NC:jYLm\No]OtaTn\Ns`RvcTubUveXk[O]OE\ND^QFYMC_SHaVLf]RjaVkbWri^xoczqe~uiw|zt}xqstr}p}pxl{nsvxyzri^UOG641++*)*)*+*********)(((**))))((()))((''((.(%fH7sSAS;.-+),,,+,,*++./../.******220QMGvod}wq|nvi{qe{nuy}~qylrx{~~~|}zwyszmviwjzn{oymu{{y{}vl\VO:75))*&&&%%&%%%!"" !/-*RMEpg\{nuuwjc[Rog\nfZe_Vtlbqh]WOFVOFe]RZSIc[QjbXwpepj_62,|o{xyvq|nrywy}vr}~|wwzy}zxzy||vtqr~pyk~seqg[TNF963'''&&&'('#$##$##$#"#"$$$&&&%&%%%%#$$30,SNEph\uhylrspvrzkzlsvwwWRISME_XOd\Rc[Rg`Xsmdxqfg`VXRJUOGXRKb\S^XOg`Wa\S\WNTOGVPITOHPLEVRKSOIUPJ\VObZRd\S_YQXRKWQJXSLWSLXSM]WQZUOXUOVSNPMIEC@<;9343001.//...///-.-,,,/0/4559:::;:232.//566@AABCC@AA?A@?@@>??<=<344122554997998332-,+(('(('(('))()))))(''&&'&&&&$%$())/00000+,,+,,+,,&&&%&&***9;:>??<==799:<;?A@?@?<>=?@@?@?>?>9::777999>=C@?HECNJGNIFMHDNHDWOK^VR`XT[SO]UQ[SOYRMWPLQJFTMIUOLTNKWPMUNKNHDPIEUNJQJFQJEPIENGBMFASKGWOKRKFRKGUMIWOK\SOTMINHCLFBOHCRKFVOJVOJQJEPHDTMIUNJQJFTMHZRNZSN_WR`WRWOJWPJZRMXPKUMG[RLk_Wt׸ۿֻèԴѲཡӶȬǪ˭عӵԶعַ߾غг̮޼{j}Ũϴڿʼdzɷɸʹ̽ʻүæڷ´ƵӼ̴ڣΗ~ē}|{tu{tpܡĬȬ鳠䮜ԧЦۦ禓䦔譙ܫզڧ߫ե~ry~uxxsvplchbjejdu_Yq]Tt_TwaVgZk_wirpziqeОô麫粦ͣ޵ϻ뻲º๳֩ܤˬͰˮ̫ҲβǪߧunjutuuxuutˑðǴȷǶ̶ưۣٞԥᰟȲï۲൧Ƿ鲥ԢÖuselardnbpgyrr{l~ţϯճ乫±綫ݮŸⷭׯޫ˝śԯݶ鼫²໬׺|ȤֵşѢ章ȺȻ跫ѼϼּֽζĠ¢ƤѰӵå䨗ŬʰŪ¨ŭĭ۞ޥ᭢Τ~u{qyq{pztpvp}wyyoyfnv^--(3+'1*&2+'2*'1)&1*&2-*1+)2-*0)&2+(7/+:2/3+(B;5`TK}navkzy{y~qrdru~oxjtfw{psvvtuOE\RHjcYqi^znzrz{yt|sg|n{vwod63.iYLyg{jq`scsbp_yfVxdT|hZqb}j\{hY~j\vcUucUwdVvcUr_RgWJm[NhXKiYL{hZ}l^oaUyj^wk`yodvj~rsx}~z}~ymaZQEA<.-+((('((())())()))*)(((*+**++*++())$%%$%%4*$qP=yWDS;-**)*++*++)++*++)**%&&&''642ZUMxlzw~q{nzm{n|sg|sgylrvr|n}prwywy|tgaXB@<000---++,)))$$$"""!!!30-RLDvnbv~znh`Vng\neYd]Snf\neZYPFVNFd\RWPGaZPh_Vvofmf\62-ym~~|}|yxwsvywvrruswyvvwz}yu~p}p~quvyxzmd\SA>9,,+))(()(&&%%%$###""!$$#&&&%&%'''&&&"""63.XQIxocqstst{yrs|yOIARLE^WN`YP`YPe^Vuof~wkleZ[TLWQISMFVPI]VNvztsrwj{sg|th|th|th~vjvnbri^f^Tb[Qg_Ue^TmeZhaWiaWkbXsj`xpfslbnh_ZVP?>;121...,-,...---,,,+,+---554554,,,&&&())344788776655444344222---10/853<85>96;85:7442/52/41.752653875431210//--,*+)(-,*.-+10.10/0/.-,*.-,00/998=>=<==6776779::9:9565676:;;=>=>?>=>==>==>><==677:;;?A@>@@<==:<;=>=DCBHFEJHFLIHNKIRNLTOMNIFRLIWQNVPMUNKZSPZROYQMUNJNGCRKGQIEUMIWOJXQLZSNQJERKFPIDMFAKD@JC>MFAJD?NGBTMHZSN\UPSLGNGBQJETLHNGCSLHWPKVNIXPK[SNXPJXPJWPJYQLXOJ^UOl_VuԵ̰榧ˮչػնٺ޿ڼαвҳ˭ĦѲʮضڷίxhȰǴʶٸij̼˾˫ĮϺİ껪켨߮ե֫دǡĝʛĖÜvíů֬٫௞ᱟܬ베筜嫚֠‘ڤﺦ䭚ݦکѪᴟË{{nrvws|lzjykvhnbodpgkaw`Xnf~ŠǦΫЫǤ篠购ѭٿ㳩ת磒¦ַ̮ͯͭҷͰȕpɏtǏuvvvvsrЕƱ˷ѽϺ˵릒ӛНʛÚơİ辬循îư⸪쾮빫ڪ˝ǚtug}sqhi_j\mbg`icqnttzy֪粨ݭҬ̪ɥʣس滭ǹ;ͽȼ߽|ȥẮڴ̤ۧ볦黮Ȼܯ®ѺƲܬƤŭŪǣ͠ǮȯĪ«︭춪쳧ܪעʝƙ{}r}ptjpfpdiuU-&"7.)3+'1*'3,)4.+2+(1*'0*'0*'0*(/)&3,(6/+92.HA:TJC;3.?83jaXu}syo}s}swm~vlyqg~nwE=4zk]szzuuttzxujzpf{pewls}yvkukxmv{yxw^UKRKE{pdxncxnc{pexlr}o{mui]2-(!%! 82,B;4+&!' ;3-LC;aVLl`U}pctg|n}p}opr{vv{{{|}vty}}t|x}|z|xz}~}|wr}|nuhuopsdygn^hYN]PFp_QsbT|l{u~l{j{jxh{jtb~k\q`p_zgXtcUo^PfWJ_PD_QEUH>K>5[RIkdZtk`}p{u{{y{nzqfyly}pjcZ<82n]rtmny~}x}juco_vepp|jwgqam^p`n_{hZ~k\~j\yeV{gXk\t`R}iZ|hZyfXxh[naTpcVymauhquy¶}svmaUNF63/''&%&&&''((('((())*++*++,--,---..,..)++)+,=0(uS?xWCQ:-+,,-..,.-+,,*++*++)))*+*;:6^XQ|o~z{yu}pylykzqd|rfuiyocuhznbuhzøƺŸõyw~qrsy~~pe_V@>:+,+&'&%%%#$$ 1.*NH@tl`zumdZri^neXe]Trj`qh]ZRHVNF]VKUNEd\SjbX|ujpi_73-ym~~~}}}uuu|}~}|y|}~|}|}|zxyysg_VB?;--,***))(%%$$$$$$$$$#$$$&&%&&%(('&'&##"!! 63/\ULuhy}zvwy~SLDRLE]VM`YOaYPd]Uune~wljcYVPHSNFWRJTOGZTL}~}~zrxkvjwkzrgvmcmf\oi_b]UHFB664232011676788:<;===;;:777555333011,--*++,,,***)))0109;:89:899GEBWSM\WOYUN_ZSgbZd^Vd_Vb]Ue_X`[Tb^V_[T\XQUQJVQJSNGSNGNJDQMGQMGOKFKGBJF@JF@IFAA>;=;8:96864764764763864=<9B@=DC@DC@EDAFEBDCA>>=??>ABADEDEEDDDDCDCEEDDEDDDCABB@AA?@@;;;677789999;::>==FDCLJHNJHJGDHDAMHDPIEPIEPIEUMHXPLUMHSKGTLHOHCPHCOHCLE@KE@RKFZRNWOKVOJVNJVOJRKFQJEOHCUMIWPKWOIVNIPIDWOIXPJWOJ[SNYQL[RLpbXxϲδֺҶӷʮῤ޽ڹ̰۾ٽȫƩָӵƨĦˮĩֵܸέpѱǵȴ軨緣⹦龬㹥ůɳۻͫѩөХ̤Ҩŝ̸̹ȴⷦ׮趦껨갣ਜΜ֠沣ﻩܨڦ۩絥{w{}zњ؝Ϙ}{|mwf}kwkoh~hd|gdjhsp{~ĘŜع¼渭渤۬ȫͯͮϰдΰˮ򬘲wőtϕtŒvwwwvuwߝʵκ͸θ˵˗z“ɘҩ컩ڹܾ㾬®廬߹òٯš™ǡzuÞy}mu͖|Ǔyđumvimevjzkn`i_h`jdto|v{v}綪µɼ˾ź濵Э|ڱ㭣ǟ}էᮢ㶩ݽܵԬլĸ뵦Фťū¤Χڬưĭ⻥ײٲ㴢㫜뵪µۤǚɠϧ帧뺩޳׭əw}~m5+&7.*3+'1*&3,)5.+3,(0*'/)&0*'0*(.'%/(%:4/NG@E=85.+5.+QHBxnc~s|qzp{q{quzp~uksf{lw~qxxʯʯȭ}xy|kxi|m`xk`uj_ulaynd{oyvzw{wuhsgut}pytsx}~g]SVOHuhznc~rg~r~w{ovj^[RH[QGVMCIA8E=5IA9NE=OH@=710+&'#  ,&";3,OD:dVIpaSvgZzl_tfzkpzzvzxvwvw}tx~sv}{}{}~{{v}mu{kqo}l}kn^~k[p_tbtdupxhxh|lxg{i{iscqao_tcTdUJ^PD^PD[NCYLAWI?G;2\TKnf\wnctzwz{{xk{qevix{od]T@;5~jZ{hrsjmx}¢ǥضʪʪ||vq|~xsuwsypowf{hYxfWxeUxdTkZo^xgk[j[n_oatfpbpbxjwjzmu~xtk^QKC20,((&&&%%%$%%$$$#$$$%%%%&%&&&%&%%&&&''%&&%''A1(pP>rR@L7+*,,-..,-,*+*)*)()(''&,,*C?:b[R|o~}}wy{yqylxkvivjxl{ozmuiylxk|re|qeynaxmawmatj^ph]|sgyqf~qx}pzm~sg}re~sf~tfxk{mqu{m|n|~}ywtv}ywxodPKC/,)-*'IE=rj^z}ph^Tpg[lcVg_Uwocul`cZPYQHVOFSMEd\SibXxrhnh^;71|p{{zz{}}~|~{z}rvvx}~zmg]HEA00/+++)*)''&&&&&&%'(((((()(((('('&''### ! ##"750ZTKum`qyz|}OJBRMEYSJ\UL^VMc\Stmd|ujhaWTOGTNGd]T]VNXRJ~uu~{oi_GD@10/--,,,+,,+*+*..-+,+,-,,--+,,,---..-..)**())***+,,011688688<=<<:;<;:;::;:<<;<<;>?>EFE???;;;ABA@@??>=@?>?=;@<:DA>GC?IDALFBOIDPIEQJERKFUMHVOJTLHWOJWOJYQLYQMWOJUNHUMHVNIYQLYPKWOJYPKUMGVNHWOJRKFPHBgZPsҴ©˰ɮǭԺھֹȫݻҲҲ¦βҶ۹æв̯ƪĩŪٸʫڷ}k~æȥΩʫȧˬ׮Ʒ˶ڭحϿѹηðټܻɺŷ㻰ݳ쾳˷ŵɶϻѼǶĵƷǵƴ﷬굨ﻭ泤ڤڢਗ簟֝wqʑ}ݝܛǑwĜrnx{~tvkncj`sfxmumqiuorpihhgnl{{ɓ§èƩ֙uКwҞwzyvvuvz«˵ɵ̷κ̹ڣvruwȫʳ־ѹϲ޷๧ֵ߹ự޽έɧȤsɝجy~n~Оٝ{Ǖw{~wԌw׍xܔ͓}prek`d]b]kdnfxn͢ݯ޳⹯۶޸㼲Ṭ̢ȣ}|ͤڮ潱۷׳ܱʻ¸赩㳦ۮɟ¡Ե˷ţܮǴ۵ֲײԮѢ鲥빭ߦΠΣۮ³ŷ÷߸|~?1,6-(3+'2*'3+(5.+3,)0)&/)&0*'-'%4.+KD?GA<:4250.60-71.A:5d[S{qyo~uk~ukyqgwl{q|q~sgzky~~rowhzktftek_TrfZrf[|pdzkv}y~~{~wt{nrydYN PJCrvylxkvv{nvkzmayk^tgYqcVn`SrcUrcTqbTsdVi[N_SGUKA/*$        &!:1+QE;gXKm]zr}p|ottx{uzlxma~tixmxm|qzx~sxmty|~vyuprvgzjvfqyh~l\ra}k[qaSvdWxho`~k\m_p`sbvfxhzhZYLANB9QE;^OC\NBQE;K@7TG=RE:g_Uqi_xpdwvvxyy~ui|sguiyr_YPKD<{hstwutzz¤ɫ˪ͬͭ۹ڹͭʩڷ⿥ᾥݻǨťƦǦvz~vunnrmqur~n{ksdoarcn_{hZyfXvcUubUxfXsbT}j[qcyk^vi\vhuhuhylxjsrtx}|x~phaWFC=--+**)++**+*++*))((('(('&'&%%$###"""##"!!  A/%aF8gJ:F4*(**,,,+++***+++**)'''10.MHBjaW{n}}~{vtvz||}tuwwzqwjzpdularj_sk`wodxpeypfwkymxkzmvjwkvjzqdsj^pg\h`Ve^Tc[RZTLe]TkcYwmbwkznzn{n|pzm~wj{m|uhsj^{qe{o|o}p}p~q}prr}o{n}rfwnb}uh}p|pwkvjuzvt}qylznymrw|o{nx~ypfRMF0.+ '&#C?8e^Sviu~zlg]SofZi`UkcYyqeuk_f]SYQHRKCTME`XOc[SrlcgaX>:4xywv~qxkzlwjznznstuxzm{o~r|prx~z{xyurtuw{z{xwz|xkf\HFA--,&'&&&&$$$$$$"""!"""#"########"$$$!!!!!!851aZQwi{zvv{~}~NIASMFWPH[TK[TKa[Suof|vkhbXXRJXQJh`We^T^WN|~zsnh^IGB665554443444333333121110111./.-.-**)()('('&'&**)'('())+,,+,,443PMHnh_u}|}~|~}~yz}||{xuurwz~zx}qzo|qxm{sizrhzsixrhztjvpfslctlcpialf^ic[^YRWSLUQKTPJTPKTPKTQLWSNRNIJGCLIEFC@A?;A?<@><<;9=<:>=;<;9=<;@@>AA?@?>BB@GFDJHFMLIOLJMJGMJGPKHQLIRLHWPKXQLXPLUMHUMH]UP[SNVNIZQLVNHTLFVNHWOJWNGpaUxٹƫʮƪƫֺ̲дΰæåˮӶŪֶۼӴçڹowdT{Ĩ̩ӬϱƨܴǷȻƷⲢ٧߹ҼŵĶ̿Żƻŷͽμ̿Ǽ̾µƸڨҝעଚ굣⨚ȝÚ}‘җᝉҘtpuyvsx|s颎؞ڟߗʼnxtge\mbqeshphvnvo}tx|Ǐ젎⛌wΖw؞zȖzzyzvtvŽ{ĮdzŲǴ͹Ú}«˪y波رq{foǒqƖw|ǘ֥ڮΤɜƘÑsufՄny畀ݠáݲЩvozt}ylosϫպֲٱۮǺ鳨᳧ز۬řϧ꼭³⹧۷ٵͪ˟ꮣ鴩鲧糩곩ܥӣᴧ޸ὲΰ~Q>97/*3+(3,(2+'3-*2,)0*'.'%0+(>83C<7=631+)3-+4.,5/-70-:2.XPIyoxn|siyqgypgtlcvnevlzoetf~z|}~r|nx{l]Pj\OQG>C;44.):3-KA9_REraS}l\}m^yi|lrtrqvhrdyjqcWKC>9xjpuqwi~qevk`{peykqcxiwhwhududyhueqawhZpbULC:             =6/rqsrsv{xxsmbXpg]wneqi`xpg|sj|sizqgvmdy{xnynzpwl{pwm~ujti~w|t~k]pbzjquetdUxgWtdTveVp_QveVxfXl\qarbr`Rq`Roan_jZLTG;E;1SF;ZLASG9**)&&&$$$%%%%%%$$$""""""%%$$%$###""" 52._XOxkz~uz~QLCTNFUOGYRJ[SKe^Uwpg{tjd^U]VN\UMf^UhaWd]Syymkd[GD@221121121122122222232121000/0///////...,-,...010010000122/0/:85WRKrkaxlym{nuhuhzmr{~}~|{wy~s{o~uj~wl|qvtw}ryrhvofqjanh_gbZfaZgbZgbZgb[d^Xc^WfaZd`Y`\V_\U_[U[XSZWSTRNMKHLKHONKSRPVUSZYVUSPKJGPNLLJHMJGNIEKFBUNJXQLZRMWOIWPJVNGpaTrַҶ˱βػϲĩ§̯Զѵܾӷ̰ܼαƨҵԶ۽ָħήίȪp^tƣĥ¦qtfxltz}§ںƽɻ⯟հ̻ܿοɹƹȽɿƽƽɿƻǺ̼Ȼ̽ʻ̼զԠ٤⭚㳤ެԨʪӬˡѥУᦕ穓Кv}ijqw{y٘㤐w~陇Ϗ~sqr~mqgogvnyqqkoΒurvvwxuwv՘Ѧɞѣխ̩}vvpzt|z}t}qrvivᰞܶ԰mhqȚ{Ǟġ̪ЫУɛə˘Žؘt}pxmke|gdvq|wuog]o^ycuan`hZl^m`i`rkwr{wѢ궫䵬跭뼱㫚~ŭХ³ijȸĴճʧɞ毤᯦ޯ߮ݩΡ͢µ긯佳Ÿײ\HB2+'3+(4,)0)&1+(1+(/)&3.+F?:A;73-+1,*2,*2,*3-+4.,6/,<40\TL~tkwmyoxm{ri|sj{sixn~ti|my{}|wyitqcreYi]RZPFQH@G?8F>6C;4A:4ME=WNDdXMxj[qb\PF,+)i^TqeZ~qeuptfylwk|osfr}mnnl~lnuovfh\P       ?7/G?6ZPEdXMbYPne[yodthyl}pxkzodyoeulc{rivlyoxof|rhwlvkxmymvkxoezqgwnd|shqg]|v~tutczhZ|kqm~k[~kZl[n]|jY{hXn^n^l\ygXo_}jZo`ueo^o^ObSE]OBUH=QD:NB8G;2RG>sla|ti~uiwtvrxz}ti|sgvjyuUOGUKA}jww¤£մ׵۹طԳճѰŦȨϰٸں׶ǧܻê߼⽢ٵ԰԰سЯԲֳǧ̫ά~~Ĥѯ˫ǧã{x||l{hucygucsbp`o_|j[tcUfWKWJ@>5/)%"'$!*'%)&$'$"#!#!" """$$#%$"4&;0*Q;.8+$&&&+*)+*)++*,,,,,+,-,A?;d^Uzm{{|p}p~|{~}pwodslaqi_mf\ph^vodyqfxpewodwncyod|sfuiznty}~|wzsxm|oxw~quixnc}qfzpeuiynvj}qvz~qc\T@>:,,,'''%%% !!!! !"!"## /,)VPH|rf}xki`VofZe]Soh^yqfsk_d[QZRITMETMEYQHbZQrka[UMA<6}{yvt~rss~suwwwxx|xy~|{{}{x~{}sw}pf_VD@<--,***&&&()(())((()))****+**++***'''&''!!!###962]XOyl~}~UOGXRJWPHYRJ^ULmd[{tj}wle^UaZQ^WNg_Ug_UhaV{{{ob]U@?;110/0//0//0/110/0/./....,-,,-,,,,----.-+,,,--)**()(()(*++//.EB>mg^w|{u~q}owjzmylxkpvi{muvzxyx}|~uvsvxx}syooia`\Uhd]kgamjcnkdokdd`ZOLHTRMQPMJHFB@>?>9zl_~nyjzl_j_TVMDRJBZQHYPHXPIWPId[SpeZ}mvsqpoptt|l}n_! #   72.eZOaUISI>J@7LB9JA8SJBtg[}obviylvj|qfzoe}rgwsi_qg]~shuj|rgulbpg]tkbqh^tj_vgzktcW~k^teyktoos{jn{kozgr`zgyfwen]tbyg}k|iYtcudpa~l]l]tbTkZKjYL\MAMA6H=3L@5NC;umc~wlxlxsuzmx{~r~uizn|tPJC\PE}jvvƨŦͮбħͪӱὣ©éܹ˩Яյ۹޻§ݹ俣ǩ俢ϭǧ۹ֳܸ۶ڶݺܹάɨϭ̫ɩɨ˪ѯɩήѱѰյظͮضçƩڹ¤xsxst~wxhn^POD;71,*'%)%#+'%-)'-)'/*(0+)1-+.+(,)(+('!!!%%$&$"-"5,(I5*3*%$%%$$$''&'''&&%'''()(@>:`[Symxz}|x{nuixk|pqq{mvi}th}py|xvwxy{o}ti~ujxl{o{o{n|ory|~~{}|{xu~qv|xtfsfobxg[ueYtdXwh\}pd{qe{nv{rvib[R=;7()($%%""".+'WQHypdtsu{reg^TlcXb[Qoh^yqgsj_cZPZRIRLDOIAYSJg`Wrk`UOGB=7z}~||y~z~vle[HD?10/--,()('''$%$#$#%%%()()*)())(((%%%%&&$$$&''863[VN{nyx{SMEaZQ[TK\TLcZPsj`xmynibXd^U_XOmdZe]SjcX|}wlZVO986111121011011333//.,,,-.-/////./0////111000011+,,)*)++++,,221IEAqj`|{z}~{wsss|tiwkwjzqe|sg{rfryy}|uuxy~{wmibYnh_tndvofpjblf^ic[b\Tf`Xkd\lf]kd\lg^rlcysiysjyskuogpjb~vmİӽ˵δϵٻδعˮɫط׵ɫΰȬྡʬrb zoujme˫٭ݮ质毣ۭɠΟƞ{z|ǰʴƲɩҳϴβгʳʺĪླཱིĺǻѾһ֮ǡğӯϱ׷ǪǮӴݿŻȵӫ~ɛӢџҟӠۨ粚봜ڦдپֿӽϺ̶ګ꬚ʴ˵ݬԥ뮙xmyh}j~kq_l]m_i\ybX|d\}f_kflhidi`sŤ߯Ź̿Ȼ㽱ɦɥڶȴҿнŴ긩حʣݪ}prfsy~}z}Ϋ޽ҵʨծسƝƱưŰ˲˭릌{}і¡ȧږ}ӖϙƛӢ͖Қڝ֛ď}|Ǖspdqesipitoyvxuxquipeum{w|Р۩޲߽гϰϭ͜䳪ްۭ߱٬٭ʨحõż⾸ըe_" 4,(0)%*$!71-;6271.0+)1,*2,*2,*2,)1+(2,)3,*5/,81/;41`WOrjatlcskbng^ph`og^og_umdzqgzmazz{|~zzqxn|sixofzqgzoxz}{s~o}{{l]@<7twwxk{l^m_Sh]Rtensyiufvg{k{l~n{j}m^" # )%!&" 0-)qbrnyg}kpuezj[xgnqzircxivhug}pcxrf[virh]}qemdZi`WbZQpf[|hZ|lrbfVJiYMq`T~k^whufyjm^qbvf~lovdra{i|j|jnsbve~kqaudVwfY|iZl^l[NhWJ_PD\MARE9K>4J>4QH?yqf~wlymu|psvjxz|vk{n}}qKF?aTHtaxezgwȨЯŦuzַ̬ݽǮ¨⾥ūĪཤὣڶѮհҮέέЯұǧťή༡㽡޻ڸضͫӱݻ޼ٶ޻޺ᾣƭǮ⾤ұϯѱȩǨܺǪʮ޾̫ἡ⼡έtl\WJA82-1-*0,*1-+1-+-)&0,*-*'0-+/+)1-+.+)$#"###&''%$#) 2+(A/%/*('((%%%&&&%&&!+(%*&$60,MD`THoaTtc|kyhyjrc{reXpeYzm`re~ko|ok\o_|j[l^ygYp_SueVp`Rzjpnwf{iwemrwfuezhYtdqaudziZzgYzh[fVJ_PDYK@VH=ZK?VH50-2.+2.,1-+51.83095240,1-+4/-3.,2.+$#"&&&)**%#"( 2+';+"/,*+,,)*)++****(%$40.61.F>7\OEo_QzhY{iZm]m]k[p`ucSl[Mq`RzhXxgVyhXpbTrfZsh]kbXwma}sfzrfzrfxkzm{n~vj{sh~vjznuy{}w~rzn}qwxv}p}q{ou}{wuux{|v}~{s}owivhzl~ptut{nuhyk~ouxytstu~pug}ob}qdwjzm{n{nww~revk_mdY`YOIE?10-$%$"## ! !"!####$#""" %#!GB;mf\{o~rskcY`YPg`Ud]Stmbwpepg\g_T]VMTNFRKCf]Ssj`tmaSMERLE{|~}rj_KFA11/,,,&'&&&&&'&&&&''&(((''&'''&&&""""##$$$'('874`ZQvUOGoeZe[P_UL`VMnf\zsi|ujibXjbXe]Si`V_XOibX}|{slbMJE665454676555565676444222/////.00/11100////121122222343666344;:8UQKtmbr~y}}{}{|~z~xw~qtv|tiyqgvjylym|p{ps~s}}z|v{p~q~rznznymylrx~}~}ztsyzxtvk|sjxm|q|qyxqpeZ73/|tiȥˤ۪͜׮ܱୡ箞㮝Ԥȡ̩ڶ껭Ƿζ©Ǩɠ˜ҟ秕٤|xnrj{w~qnxjgxic~lfuo~|ãάɰԼƻͿͽȳ軞䬋ࣄ赙ݿϸ㿰Ⱥῤիߧ߬ڧ੊ﳏɬǰϸн˶Ʊï­ĮưűñסtrƑwsm|kvwģԭǻĺɿְͩ๥ƺƹ˼ǥžѵпθuwa}}}}ΨߺΰȨͪӭά˯ĩ̷ʸʺʴ˭ʭ̜˵ϴΰͮӷŬ֠ȓݧڮ㫟갤ꭞƕ͟䳥峣߫УƜ|Ԣżݭߥ٢ԝzvkkbg[qaseman`pam_pdqeujtnuqxt~y}ŜÛĞȣ̦z!;4.?723-*.(&0*(1+)1+)1+)2,)2,*3-+4.-61/5.,6/,80-81-ULDulbvmvltlcibZmf]qjatlcqi`pe[sxv|q}ruwy~zwusu}xs?94pf]zl_|kqw|wt~oseuf|kUMD:622/,('%$#!&$"(&$)'$(&$%#"#! "! ,)'A;5IA:F?850+  (&$xi~}y|vfyl_sg\peYvi\vh[[QHG@9*&# 0)#>6.?6/aTH]QEOE71\OE}k[vdql~k~losvd}jYl[xemlyfygrbtcTweVygXm]m^o`tfYyk]pdXpf[{qeypd~qwy{|xuuyzvvrzmyl~py}yvszm|rf{qe}sguhvjyl~q{o}th}thqz~w}oylviwis~}txl|thzqfkdZSNG863***)**&''&'''(')))())""" ! !!(&#F@9aYOtf~rezpc_XO\UMb[Qd\Rwpe~vksk_g_T\UMUOGVNFlaWtk`sk`RLCTNF~~|{wtrsxxy|umbPKE210**)$%$###$$$$$#$$#&'''((&&&"## !!#$$21.XSJylyOIBpf[dZO[SJ[TKjcYwpfyrgf^UmeZjbWf_T\VMhaX||}}{soh^KHC453121122221332343232111000010111111.....-/0/././//./.000.//763UPIvnc{z{z}~}{||~{vxx{z~uyssym}thwncqi^s{rgska}qwt}r|qt{ysvireyl`{odymv|z{pynsy|{~u|s~t~tvx{oph_NJD}ujɩ٬㶩㷩칩鳢ݬϦϫ޷ŷ·йǰâƟѨìĭ̷Ų鳤ԩ}vٲάz}yt|}}sv~ضðͻμ˷ȽͽѴթ|誃뻝ؽǸȹ̹̹˼Ļɽɳή᷒嵔泒ੋߥŸ˰϶̵űʶɶƵɷɷĵN亩³긬ﶪիƝϟݦΟ}}Ģ˨ʦţɥ쿧ϿȾĹƻر۴꾱뼲㽱Ƿ㸬˫γƯŬdguw{xxxx|۫֬ʨĨɬҵؾʶϭŵʵĴƲ̭б˱ﭙԞɶȱŬǪ̯˰ŘĖҦѬ˧Ѩשટՠద繬ߵ̦~̚벨౧뵩︬貧ৗv|pxg{g|nuxouϘʛywrxmkcb]faf_kdpjpjoivnjdI7271,-'$-'%/*(0+)1+*2,*2,*3-+3.,3-+3-+60.5.+6.+70,7/,QG@rh_xoevlynwmvlvneld\rja}qfyywxwty|x~{}rtuw~uzny}z}}}|E?8f^V{{pb}lrsw||wqo{kodY\ULTMEHC=B=8B=7>:5=8384040,51-62-40,1-*0,)940KD=[RIZQHKC; tg[}{wgreXj_Tsg[yjsx{nvk_aXN_UJZPF[QGF>6 usmvpuwtrzzkrdpauezj|kqwgudvdUygWo_rbveV{iZsbqatd}k]n`xeWvdUweVq_QfVJ\NBPC9WJ>YJ?h_Uxk{tirt|pwl|oyzzznynf\@;5~j[syzģұԴֶ׷ԵֶʫЮῤӲ׵׶ŦƦٵ۶۸è⽢⿣ݹֳٵүάѯܺŪǭὣ⽢俥ὤūūè߼ཡལ˫£ұֵ̬ʪض׵̭~rud`RGC<683084161/2.,51/2.,40.3/,4/-51.73040-$##))),-,"*# 3+&6( +**+++***,,,)))+(&:40VKBm^|ʬħwxƦŧ~|âzpqyg|jm~msco_l\o`xhvfr}kl\~j\|j\{k]}oaym`yk}osx~|s{mpuvv~qzlvi~uhyl{n|o|n|nrxl}shzqfulaqi_umbzrf|thxpfrj`|rfty{}|zy}~qb\S?=9++****((((((((()*)())!!! !!"!!&&%#$####1/+VPHxobyng\a[RbZQd\Sxqfymsk`d]S`YO]WNYSJldZumatk`QKCSNF~{{~{x~{vssttutxxvyxuuxvje^UFB=.-+&'&####$#%%%%%%(((+,,-//+,,&&&"""$$$%%%&'&/.,RMF}vj~x{{xuPKCtlaf]S[TKXQIkcZwoewpeg`Wog\g_U^WNXQIof\vvwxxty~w}qy|z|~qibZFD@45423201000////...-.-,,,*+*+,+-..,--*++,-,-..+,+,,,+,+...010?<9f_Ws}~~{~qqyu{n{rfumarj_zrfxpewpe~vj~vk|qy~{}pxl}o}nui|peyodtkasj`ypf}sivl{qxwuzq~t~t~svuvmcOJD{si˯Ū緪踬뺫鸨컫跧ԪаѶӸӳèϪ׬ijκξ¶席ҭܲ漲ЭĜҥ֧Ø᭟洦䲤ͣÕϙyuuonhnhulzozozn{vj{nyzuŔsП~гʹѻϹɷǻĸԶȬບ东㮓⮗ϯպŴ̻˼Ϳп˼ƹƶǶ׾ҵٷݹԴʭƩΫᆬ㶠ϭέմΰá˧ǩۼª纬ನ䱨贫帪Ѯڵ뾳޹཯ഥ~sv{ylp^QdVn]o`ocrezi|j~ovԤɤȬʰڲôòŲɰͰв¨פ鬘ϸϸƬéѠਖ갤촪鳤ߪӠx|w͞봩ݶͬȢ~ਚǽ곧婘͖y}lsΝt˗讞ݮت㰞⫙ܦ֛Ջzy{~ϗwˇs~kYK,%"/)&0*(0*(1+)2,*3-+3-,4.-2,*3,*5.,6/-70-81-91-QG?j`Wme[d\Tog_vnewoftlcvndwoewl`x|}~|}z}t||zvzxnzosty~yvxyz~~UMDVPJ~zz~|yinp~opvxvt~nte|pcof[oe[ndZjaWf]T]ULXPHVNFVNEVNEYPG^TK\RIRJBRJC]TKj_Uj_UaWM*&! g\Q~z~xpyiseug|o|o|prssfsetzzkaWM-*'ljdyyxut}n}k^veXo`sczi|lxyhp`}ko^n^pal\ucTxgqayixixil\r`Sl\OcTI`RG_QFSE;L@6YK@meZ}vjztitt{oui}o}}u|pxg`VB<6m]q{~ƧŧĥŨ̮έֶԵͮĦƦ԰޽ٸѱӴȩʩ߼ӱɨԲϭѰ⾤ѮԱܸݺ༡ǫѷͳ¨ݺٶལ¨ٷۺݺ⾡⾡׵ӲЯ̫׵ϰǨֵͬҲаƧy|jweVVJA:40730942;52?96?:7:5272/841=85;73;74:63%%%)***++!+%!3*%3' (((*++'((())&&&.+(E>8j[Om¤Դݽΰٷ{ͭ˭ݽظүү~yŤƦåȪ|}ywoklontd|iZo`zhZ{hZxgYwfXxgXpaqb~oayksg~shxlxltgtg~sgzmzwwjvhzl}o{n{nq}pzmykylqttxs~ui{rgzsgwpewodyqfzshznxlxkw|}~|o_XO:73&%%%%$#$#%&%''''''###! +)&SMFsk_tumbg_VaZPd\SxqfwlvnbiaWe]Sc\RZTKg`WxpdwnbQKCJD=xlznzn}q~vk{pwlxm{q~ry}{xx}tsj`QKF653,,,)))******''&&&&'(()**)**'(($$$%%%%&&%&%++)EB=:332233455565565454333222121010010///---...0111223433444559:9OLH{tj~||}w{||~|{|{xwwxwtuvurzmylxk|ovu}p}ptñszo~ujvxvkzpfzpe}rg|p{~|wuuvuussuvxx~{{|xmSNGyrhȬʯδ㵧中縭꺭鹬麮ۯŝ§Ȭɭаϯʫȫɪݰξ軱ح™ʠ빯෬ȧǟը೥㳦ը고DzűⱢ㵥궦ﴩ~{wwpng}mf|me}pdvi}s~~v{pwŴкԺٿؽĩְ䶙趚㵝뼤Яӻ̷徯ǹ̽տ̵иӻԻӹизжȵллò޼⿬²ѵȨͲ|~ͥѬˬˬ༩濱ฬش߹ǷⳢzsccVkYThXUfUPfPG_NʄiۏuljvsɊuюtnugoizvwuqqnosr}}ȠϦس븦⮛œïԧթӨƛ͛뭟ޤ~og쮤شΩwӛǽȿﻱ䴧꩖u̒~骙ׯxਖ਼븩㳥崥쵧﷩촦꬞㦔ܡ蠌ƀn/(&0*(0*(0*(1*(2,*4.-3.,3.,3,*4.+6/-81/:30:2.7.*@60wi]{y}qzntixmbvk`pf\wj^z~~xywxm|rgr{~{}y[RHC?;~p{z}}whzjo~n|mrrp{lrdwi\tg|nwk|ozm~sg{pdrg\mcXlbVrg[ym`~rd|obrfZh^SpeYvj^vj_vi]F>6TLDw{l|muxrugxiykylxlxl{ns|zw}o}qe~rexrs{krdwhzjqam]qa{j}l{u|kt}k}k[zi[sbsaRxfY~k\m_vgvg~k]q`RiXL]ODUH>WJ?XJ?L@6TG=pi^~wk}ujvs~qvj~p}z{osy{aZPME=mwvzŦ{rr~ĦȩЯɩĥ¤ȪƧǦаƧԴ׶ֵ۹׶ͮέȧѯЮ̬ϮԲڹᾧé¦ȭ§ٶ۸߼༠ܹӳֶũɫʫ߽Գ۸׵׵Բٶ޻Яp`\PG?95940841:63@;8@;8A<8=84952<74;63<74:64&'&******,&"3)$2'"')))**'((***%%%.*'KA:p_R}j̭طȫŨظʬȩŨǫϰӳӳյϯĦ£Ϯضͮضέұѱϯݻར߼ɨyϮƧϯɩ}~kp}lnvfrb|k~mzixgzjuem^k\|hZo`zjqbpatepb}k]cWLbWLh^RncWjaVmeZsk`}thqssvz}vu}qzy}qt{|qdSLD1.* !!!$$#%&&#$$(&#MGAof[ylq|vl`kbW_WM`XOqj`slaog\g_U_YO]WNVQIc\Sulaul`MG@OIAsz}{z~yww}qr|o{ovszztx}y{tiZVP<;9./.*+**+++,,***)))'('()(''&()(&''&'&&&&&&&/-+OJCvnbwyutxyx{{wsuiOJCzpendY`WNWPGibXwodph]f`Wrlae_VUOH_XPym~uhVRJ<;9554343565565787798787798687455121111110000111333232343566;<:YVP|q~|xvwtx{~zzz{xx{||~w{|zyy{uy|yvttsw|wsxl}uivjxkzrf~ui{nsy~~r|pvlypf~vjym{n}pzn{oym|ow~~~~~znXRKwlìȰΦ൪ᶫ㷬෬⹯ĺۮũȭʯ˲̱˯ΰªϪʽʿɾŻ꽵⴮ҡ豨뷮ⶪװӬӬӮ֮Ӫة㰞峢︩ڨžڰͧƞ—}{y~tyڹķ߹ҭɤ~sjsgvjpvysns|ɝڡ~۞}˚֭໥ʲȮůƱ˵̸ѾòŴŷŮ̳ɽڿӺٿͿ;ɻμݾ˦ٷήz|xwtvsoƣ޺۷ӱٳ쿲ò˷ヲ١זtkkscvcwcϏvݛ~yw|{unh{c^iblcqekag`jflfldmfmgxowvovlȦϦթЫɧvۣਜܦӡrgtƶƺذȞ”ɒ͒zأ鴤ĸʿø奏zֱ̛ɫ}絤켬ᶨ涩껬óȹ밥íҘ0)'0*'0)'0)&2+)2,*2-+3-+4-+5.,71.920;4180-6-)5,(H?8{mpt~{x~~yyzwmukbukashq~}{uwm{p{ob<85w~vuxyqwh|lo|mykwivhwhwhqdocWqdtqtsquwr~nrr{lyl`wk_}pcvh}qdti]pcWI@8KD=szryqyl_znb{oc}qethwj}o}otwptguhxk}rfqpnqswhpa{jonwerbwfuypo~lm|jyhm\ygX|j[wfX}j]ygYsbUwfWo^QeUIXK@QE;^ODZL@QE;rj_znznxsuyks|yxlw{}qZSKVKBppy£ǧ¤ťʪӳ~utĦƧϯаѲٹҲ߾ҳ̭صܹŬǬȬٷүέȧ˩ͫʩٶڷܺٶ׳ܹճ޼⿤׵ӲԲ̫ܹͬ޻ὡæὡ¦޻ճڷĨɭϰʭ価㾢ճ|~l^WLF?:6<73941941@:7>97>96?:7?:7:52941;6440.'(',--,,,!.'$3("2)$*+,)**()),,,&'&2.+RH@{jZuæմ޻ҳͭٸɬǩ޾Ӵɫ὞˪Ħ߻ῢȫгͱ׵ܷ̩ģѬ˨ͬٶݹײɨˬy{å}txf{jstpqnram]l\yhufsdwfZscVl]PpaS|l^pbugzlw}{tw{nwk{qee\SGB<-+( &'&,,,+++((("##)'$KE?bYPmcYneZvmazl_odX\TJ_WNpi_pi_ldZe_U^WNZTKVQIc\Sri^ph\ID><`\Uu~{||y}u~qsuv}pzmzn{n|nwzxttxwuw}|xtwx~~{y}y|yxts{ovj{nsuuvtyszmzm}psusttrt}sfypc|rf~sh{nyncsi^qh]h_UndYiaWqi_zm{}r\VO~vké渪⸬ݶܸú㼴දȣůȱƮͯɮĩٱȼƻúカ鹳罶ҫ֦궫ᴨܲذӭͪѬЫ̨䲢峢䲡߱鸤²㳨ɣٳ߶޲寣ۨʝ˗̘Ϡ帬͸ð嶨ٶ˱yy||}~y|soej_revfqeyn~u{rthvjzpw|wx~~ȯʴ绨ษصճǷԻưϷͿյ˰۾ϰƢ̠֞럍嗄ᛇգˣЪấֳ̲ٟ奁դ™ŒΗ۝Ι˖z|uz|垂ДxȏvБxωoŀfu^injp}hxclppjonsqwtzyؽobwlx~yg{i䣑괨ⸯڰРɔΖҕ͕~ԧ糧ø´֖}ÚѲw콱滯뼭Ƕ´媞¬7,)0*'1*(2+)2+)2,*3-+3-+3-*5/-931:31:206.*5,)7.*6.*:2.j_Urvgw{p|q{qz||xyyxywmujw{}pxwv|~z|vj]974wkt{pr|~mxi}n{lzlwiugvh}nwirdugyk{msr~p|n|npuwvuyx|~xszkk]P>94o{szm_xl`ti]xl`wi{mp|mxiykvizobugzmtgymu{judud~mu}lyh{j}krvftcqb}m{j|krbwgws|i~kZraRp_RudVvdVyfXtbUiYMdUJ^PDNA7K?6PC:RG=sl`zmsxsuzmu|yyly||tiRLD^RG{¤åƨѲаʫŦ¥ŨæŨŧݼῧҲ̬߽ٷɨ˪˪ܸ㽟߹ֳӰ޺ҰϮұܺ俤໠ὢçé߻ʪĤҰڸũũæܹᾡæƨݻͭͬ໠ܸұֵ˪s{iZ]PGIB>C>;A<8=84<73<74=85=85=85<85:51:52<852/-)**-..***!/(%3'!0*'+,--..+,,-..'&&93.`SHnæҳյٷŧȪɪŧ˭ϳݽŧǧͭʭӵٺԷϳʭçϳǫʮݻϰƦέѯ޻ݺЮٵ۸۹ԴԴ߾ݺᾣŪط̭ƨٷض̫æ£zvtu}xn}ksasbnzkyjn`ucUwfY{j^udX~w}{xlxncpg]meZhaVZTLE@;+)'&'')**$$$#$#)'$HB<_WMkcWpg\qh\rdsg[\SJaZQslatlask`jcX]VMZTKZTKc\Sof\ldZE@9YQH|wu~p{mzmzn}{{y||znuizpdvmbzpdyobzocypdzqdviviwiwi~tg~tgwj{m}osqxj|rfog[[TK@<7)('"""###&&&**)&&&### ! ! !!! !! !! !!(&$OIB{rezzwz{xusrvrsvhUPHnf\e^TZTLUOGhaXrj`e^Uoh_xqgng\h`Wme\~ujssr~qu{u|ouy{xtyxslaOKF66400/--,,,+--,---,-,----.-*+**+++,+-.-/10132011.//121455565>>;`\Tznz}|}xvvx~{y}{~~|{}|yz{~{~{yvttts~qv}}z{sr|o{n|sg{rfzm|oruz~~txm{pvt~uiXRJslcŦΪç崣缰ܷ⾲ѳɯˮƪ廯µĹᲯڱݷº̲ᶫ庮ඨ۴ԭϪӬװѮΪխത޴㸤Ȳųュ鸫ݲϭܶ⻴湰鵨ᱡةا֨Ǣ˟߭ŸξιͶ°¶ʵǨáŦѱť˥븫۶xǔĔy|q{ukclfulxtznsfrӯð˺ͼɽӧʫ˴־ȼп̽ξ˽¦ͳѵвײ߳ŴʴDzƯĪՒ~vvowp|ru~법߭㱙⫖⩗䭝㫗ȚęěɤΪάƦʥ~Ғwʎuplyjpj`d`z|zllugiagaman^vdܚwxȓΘˡṢ̌ᬦ鮧Ɠxusw ~oƗǽ齱ijʷܥ¯İܛt}r;0,2+(1*(2,*2-+3-+4.,5/-6/-81.80.7/+6-)6-)80,7/,5-*3,)YOG}u~s{pzstezvvyu~shui|zttvy}wukzo|~zvyozpvlzqgpg^~tjvxv|oa>:7}qext|rdsezkyjvi~rf}qd{pcvgvhyjwhxk}orq|n}otuwwuvw{}{zz|~m72.}m{r{l{msxqxz}n|pcxl`|pcsgvit{~q~r~uve~l{jvw}m{kqtxgtcvevetdzixhxfWn`sdziwem]zgXzgYq_RjZNbSH\NCeVKfWKYK?L@6J>4RH>umb~uisxtw~py|szny{zrhLG?eWLsvttzɫ̭ŧմطǨȩǨŧǩ˭{έմұέض⾢ٴ״հ޹㾡ڶ״ͫձ״ἠũ۸״޺çϲдѵ俥ܺٷ߼ݺĩĨ¥ཡ̭ԵȪ⽠⾠߻ݹֳཡΰ̭׵vo_ROE>A;8C>;C>;?:7<74=85?:7@;8@;8<74941841<852/-)**,--()(!0)&3& 3.+.//.///00011('%E=6rbUvҳ޼ںŨƧطƩгշħĩܹǪĤϮٶĨ¥Ʃͱͱçʭ˯ǫɬȪ¦ὠ⿠Գᾢ޻ֳٷںڸܸǬȬƪϴѵŪӲɪֱ̪ͭ۷ڸմ׶̫ĢäԳֵճЯ˫{yuqornvfvgrd}obXk_Uf[QncXvk_uhylypezpfxncypfyqf{o}qwk}sg}thxodrj_ibX_XPKF@0.+!""##$!!! ! ! !! !! !!""" (&$D?9f^S|re|o|n{qelcX[SJd]Stmbxqfxpeph]aZPYSJ[UMc\SkcYe^UB>7\TLtwu{zw{{wxxxqykzmt|||v~r{oyl~thldYd\SkaWjaXjbXsi^oeZmcXri^tj^viu|s|oyocbYPFA;.,*%%%&''***0//++*&&%###""""""""!!"!!!!#####",*'SMEvhys{lyk~p{mzl{my{rvh]VNog\e]TZTLTNFg`Wqi_g_Upi`yqfoh\haWicZxl}|}}xyvxxxusjcYIFA454010..---,..-,,++,+--,/..,,+,,,++++,+-.-/00.//+,,-..344566CB?fbZ~r|}sv}|vur~q{n|osrv}p|zt|qwx|thZTKumcž췧빫幫軭øȴŭƮɰЯ꿱ɽ￵ׯŨ޿Ƥݴ߶ڳر۱޳޴ӰέƣٲݴٳDz軪巩ߵѯίܺ㽷㹰ߵҬ˧ҭЭʦ۩ƶƶʶ̶ȷƸɲЭЩѬݹٵַƭڲͿ̼ٸ̝֡ܦΦղѪɟᨔ쵧ߵᷬԯ~Ø{v~suvmskvn~tuz}|mszvwݾξο޿ɯβٸ踬̶ѺѺϷϸ̷՗ϖė⼢˯༧│鶤꼬ʻƷıٱ֯޴ݳ㵥繩渨׭ڭ©ʮè{ՔwʌunjtŒsokpmpΖwtwx͙۠xs~rvmneqf{n{unjuryw|wktezhlp|}n~k١ıƸdzı鱤ԦⲞt=71*1.#'$-(%3-*2,*1+)2,*3-+5/-61/93181.4,(5,(7.)6.*5-*6/,6/,:2.^TKus}~ymzn}~m_}{z~||{twz|}r|q}rtxxxy|{}yws~qFA;A<9>95>95=95?:7A<9/-+*++-..(((#1*&3&20/011./0011122*(&PF>m^ӳྡྷæɬç߽ʮƫܺƪɪӴݹίཡ⿤ұٺĪȬĩɮɬԷҵαʮũظ¦ɬྡྷٸ׷ݻЯé˰ػгũལᾣͭұܺ⽟㾡¦ᾣ࿥ݼԲȧͫ۸ڸŧ⾢ũĩ§}zä|vw{vfZygZraTm\Ol[O}j]na}j]rdsf}k`l]SgYOj\Rk^SaWMdZPf]S^WNaZPa[RSNG862%&%$$$%&&&'(#$$$$$ !!!"" !!!""#$% (&#KF?wnb|zqeiaV^WNjbXtmbyrgtmbog\h`U]VM^XOg`Vnf\f_VC>7ZSKwkvi~re|qeyodwnd|sh~ti|ovxwst~p{pvx{{}{z~r|uiumbyqgxm{pymxqfulbumbtlavmbwncvmaqh^le[le\qjayqhzo}q|p~r~q{n|sgzqfuiynbg_UYQH?:5*(&###!!!##"&&%$$#%%%&'&&&&((''('&&&$%$%&&%%$+)&OJBzqdw}}zys}os}{tx~p_XOri^f^T]VNVOGe]Tqi^h`Voh^{shrj_haWd^U|p|~wnh_KIE454121110221443221121221222332222000./.010111/0////122355455CA>gbZx{|||x}~xx{ztuwy~~z{n}pznvjxlwkx~{xv~zw}|z~r{nxkxpd~uhumbri_qi^rjazp{nxpeYSKmf]spwr|xz~v~vxãĸ¹Ħ}ŭůƳĭƩ޶轵ղ໴żǬ֭ݴܳڲڱᴧನҫʩɤӬͩҬ㹧⸨๬ݸҭҴֶԴѳͮЯڻǫ쬙ǰվٿҽ˻ĸԻԶ幨հǷ³ٵʫⷩ³òֶʦΤТҡț̢ժԨܬ洤ĸźԮÞ᳦ͧ۬쫟ଠȞv{~yttksktkwn|tuzҴҼμʻʻṴ̆侴µѺֽԼս͹ԣΥħĤͤฤּ˶ȱŮ约۴ֳܻȺɹůŲIJƳɸĴ۲ɤڲɴҹﵘܡɒywy|wprsqޟç殛ϣɠڣ祐㤑⦓צС֤ӣÖrr}zswssqmdgahbwaZr]Ts_Tu`T{bWl_thwjteviΝޱⵦⲥ^OF!@60F?973.4,)4.+3-+1*(1+)3,*4.,4.+5-*5-*6.*90,5-*2+(5.,81.5.+-&#eYMzk|l{lzl{msgxj^yku{iZoprx~}r|}tyluit~|}rvs}qus|ovy|~~GB5654444545657877879::9::898898788566344555677787788788787:;:NLHtne{|}}z~|z{yw|zyzyxy|||~z}|sznynuzz{~~|}xvv|pw|}yzvuvuz~}wwuxyuxtzrfVPHf_W|rh<33N?TGHB?F@3,C81E=8<614,'4,)4.+3-*2+(3+'5-)4-*4,)5-*5.+60-5.+1*'/($2+'4-)3,)k_T~ou{vxm~r}q|oqts~qtw}o|nviuhtgcXNTLCNF?VMETJB`SIp`R|j[ueyj~pdyl`~qe{ocreyioq~o~w}}x~zykseooJB;ne\sf[Pxj]qcugvh~rexmath]ti]znaug~o}o~p~pt{}xuvyyzyyxt|nrewj]KB9f\Qxyrrvu~{yvfvprotd}mwg|kxgvdUm^lxg{jwfziwg{i[l]}j[~k[l\~l]|i[patcSo^P]OC^ODaSH^PEVH=QD:RE;h_Tumbvj|w{n~pz|~tit{}kcY=82yhwy~y}ɨӱݼճɪƨʬǧմܻѲĩֵʩܷͪ԰үҰձħʭĨ忣߻἟㾢Ĩƫݻضصϭٵἡ޻༡㿣ɭ¦ݼƨ׷ƧӲ¦޻㾡ˬỞȪв߽æreYRF@=B<9D>;E?:D>:?96)(',--,--" *# 2*&3'!010455233/00010H?9sd}ˬǪɬǪçɭǫĨ߻۸߽çɯū̱ũظٸ¥ӶҴ˭ʭʭ̰ʭྣĨῤç߾Ĩ¦ضϱǩݺྡ߼ħŨ㿢⾠ͭɩѰݹ἞ղϰٸͮаطͭڷԱͮ޼մϯ׶Ѳٸ§༠ҰĦӴݻͭssw}w~ֶǯʹέٷ߻ߺݺῦŬŭŮῨѱ˭xw~l`ND>2.,0,*.*),)'""   4,&_PEyfYyfYwhZyod|pcj`Uph]wodzshyrgrj_jbXaZQicZjcZnf\f_U;71rj_}yid\DCA678466455/0/-..+,,()))*)()(&'&%%%%&&"""!!!#" ?;5_WNtk_|oy~zyyt|puh|sge^S[VMng\lcYh]Si\Qyk_wmaldZune|vlyshvncqi^r~wZVO776111232343010/0/010111232132122011122232132/00/00/00/00.//210MJEtmc|z}uylviqxzsv}{|ovjwjvjzmxxtst|mr~wt{n|rfuhwjykviuhzltz{}{x{y{okd\ZTMuj        2'$E71UB;\JE^NHsaVre|pw|ryq{|z{ŪǨϬʩӬ䶪黮丬뾲Źصٶ⺭軮⿱ֵӬΤ꧑æƪíᬟԠߧ߮ܳ侭Ħ෭׭ȞԢأ٪ĸǼݻڰ괤ݱ嵧˽ȸŷƸ´⴪㻲̿۸۵ڱޮ߰絣㵥弬óպ~mih[Zm_\rb_sd`vfcpku{{|z嶢ƮɲDzɵͷѹкǴ乨ʮŮɰбŸΪȴïͷ׾׺˫ȥ¤˪ݶɿѰȳųٰܱðͼмиغ޺²ݺطݶ۱͹濯²Ƴ̸ɶòŵųﵨ췩궨ݪءܥ㭜꫚˘xp˒}֘ϓuz{pmscW=3.6-)6.*8/+;2-<2-=3-A94:504,'4-*2,)1)&2*&4,)2+(1*'2+(5-*6/,5.+/'$0'#4,(4-)4-*2+(^TLvityn}r~szoewk|pymvk}rgvkymthymc|pesgxlrs||vyn{qfkaXRI@cWLyk^wh[m`TfZOi[OtcTn^razj\ykyk}nuyxwtttu|~}rH?8_XP{x}{mH?7MD7KCYPGtw|nzlqqopv|~~|~tdt~w}ltcvgo`qboziq`|ks{jnowfvdUverbq{jve|iZxfX|jZ{hYgWJ]NCYKAWJ@VI>VH>QE;og\tlaxk{tznq}vjr{~f_VB<5p£ϮϭǨť̬Գ׵ῥ̬æˬɩͬͭɪ£ƨťЭٵϫЬٵϭЭݹར§ĩɬèéɮĨ¥ἠ޹޺རƩѴʬ̯ƪũæЮ׵ͬյᾢӴϰ¤ݹɭطxh\LD>941?96D>;B=:C>:=85>96@;8@:6@:7A;7E?:G@=E@=+*)+,,-.-# ,&"3)%3(#011454233000787aUKrֳ޻ɬոҵӶֵͯ׵ΰܻ޽ٹῤƩǩç߼çǩ޹޺ᾢħ㿢ܹٷܺཡ¦ۻ޼ض̭Ѳֶ£б̭Ȫͮǩ۸ִŨˬƦ὞ŧŨܺ߼Եϰӱаٷˮ׹߻ܺ⾢༠׳ǦťǨͬض׵ڸĪêxsuxtԵںĬǭʰʯɯڷ˱Ǯȯҹϸས״ԲɪsfSHB9423/-/+),)&(%#)%$#  !1+'NB9m\Oo`tdl^ypethkaWne[qj_wpexrgqj_jbXb[Rslbundri_e]T;71_VLs{mruvvx||xz}}wvwtuwx{xxzyzqg\WP>=;233233244./.,-..//.//.....-..---,+++%%%%%$&%#D?9i`Usev~{ywu~p}omdYYSKkdYlcYi^Th[Pzk_yoclcXrja~wl{si{rfypd~uhyzsiNKF443010233344343222122332232232343122232444566455344244233233<;:^ZTw|~~~zz|z{zz}~zxzwywvwxu{o|o~q~rwkxkyl}pwws}p{o~q}p|o{nviwj{n}pym|nxv{~w}r|pymsz{}ytx|y~vjgaXYSLwl                -&$B52bLG}^Xiamdz”ŚŤ}||xz~t~wzΩخϩѫ뿯̹׳ҫϪ֟褗᧗氤͡Ęؤ䵤ٳΧ仮̽̾Ƴװ᳨֭߱¶ʼŴٷ೥൤ܶب续߻ӳԱͪͦЦԨ䱟䴤ᴧ乫ۺεȲyuwrz}جƛ~͒~zx}~—ۣ㸩ܷͱʱҳ๫ιܼsǭոҰӭشѲͬӬʽ⿰ķ弭۪ḢȴȺʿƻ˻Ⱥ̺ӿƺ̾Ѿ˻˽ɻ﷧֤Ҟڥ⮜粡ڥĜßϗۛ˔~qotqaQD<6.+:1-7/,6.+91-:2.:2.:1,C<7<620)%/($/'$1)%1)%0(&0)&3,)5-*3,).'$0)%3*'3+'3,)4-*5.,4-*D<8qe[uwxyttjqh^md[md[of]qg^ri_}rgznxl}qvtqrwk^~zxszlzlyrzktsv~|yXNDOICyla}vvi\s}o~pvh|pcpeYdZPVMEPH@\RIqzvzkseykzlxkqy|nzlwvtsq}mziqa\NCG@:yjrvisfwi|lo|kqx{}{{{|yx{y|xfvf}n}muf|hY|iZzj}l{kyir`|kqyh~mnvel[xgwgsdqbxfW}j[xfXxfXp_RbTGVH>VI>VI?VI?YK@RE95C=9A<9A<9A<9B<9@;7?96@;7@:7?:6>96('')**)**.($3(#3*&133343233011676l]Q~ϮǩַܾոҶʮǫǫ¦ۺ޼Ʃȫɭ⾣ȫϰЮ˩⿠Բ׵⿣⿣ݼݼ۹ڹڹæĦѯὠ¤ƨȨ۷ͫӱ۸ݺ⿢ܺҰ޻¤ɫ俣⼟༠ūϱ̭ϱŨʮħ⿣߻ˮߺܸ⽠ħԳ۹©êͰ~zsxw~qӴìӲѰ̫۹ǯԺεܺ޼ȯʹ͵͵«ĬݻѰ~yg[I@:50.3/.3/-/+)*&$%" # ! %" C:4r`T{juxp|qfwkndYof\ph^wpd{ti|thog\`XOri_yqfvmbd]S:72k[Ovfteo_{hZweWp`Rp`SteXpbzm`|pczm}qtts}}~}yt}p~qrsqrtr~p{nylylszmri_XQK;96--,--,-.-***)*))**)*)******,,+,-,+++%%%$$$&%#FA;kbW}n~|z{tk^WQHh`VlcYi_UfZOteZvl`lcXqi`}vlxrgwodqi^|rfwuzmwjzmvjzpd~tgzmv{haX<:6++**+*,--/0/232343232232121232454465565455566565566566677787DC@faZ{|zxx{zuw{~~}|}~}{|{z{y{z~thf^TYSKym                         ."B72E;7C98I?=QEC\LHeTOl]Xwgb}lgtj{nsi}rxuvv}twzysoqkun{|~ƴó鳥籥⯡谠ʧӭüƷ཭̮سᵭ乯澴ᾳںַήմѱԷѸ꺩﹩±ԧҪڳԱЮʩƣǣɢ㯜츦䷩嵪⳨ݻȮŞƟէۥજԤϞܝߡȚzw~£Ǩƪίܴôæ|~ȫշҰձʬr{ɣ׭ḧ濯޿ǹ津ݮпǷöɾƼǽɿĹŶȸǹɹبԡ֣ݪةҦȨ̦ˣЦۨ欗ЛtdfTJ81-8/+;3.81-6.+6.+7/+6.*7/+80,>7372.(# /&"2)%0(%/(%1*(5.,7/,2+(0)%4-)5.+3,)1+(2,)3,)6/,70-PGAxlaqv}u{p}r~r~tiulbwmd|q}r}sivkuu~oyoc{u~xrg[aVLth[{m`zk{kRI@($"D<5l`Uvi^sfuw|~~r}vuxswup|lxhvdgWID=7vsugvhzl|msxtvy|}zxwt~qx{|zpr{ktdwftdvgp}lm^tcwf}lpn^n^xg~kk\n_eUIzhYucUweWxfXvdViYMYLAUH=XJ>SF\NC[NCtlaul`sy}q{or|||vjs{WRITJAtzwv|ȨƧ״ݺڸֵض߼Ѱ̫ѰêĪͮʨֳ۷ŨѳȪݸ忤èϴչγʯԹؾѶǬ߻ҴɭũƩ˭Զӷٸˬȩݺ߼έȧܹ¥߼uf]QHB;7;6372/:41B<9A<9@;8?:7A;8B<9C=:C=:B<8@;7<74###()))** 0)&3("3*&011011000110986{j]ұݻӲγԸѵβͰʬ¥Ĩɬ˭ˮʮǫྣͲγɮ˯޿޿ݾַǨʪȫĨֶյῢæ⾡Ѳħֵç˭޺ٶ忡شҲήѯֲǦִ¥Ǫçۺб޼㿤ǪضЯ¦˯޹״⽡αȫçƩũݻֵԷywt{urӴ߽״ѯܺε㿧϶īص߽ɰȯ͵ɰêέto]QC;43/-5206210,+/+*&#"# # # !*&#I?8ubUvģĢvqi_}thi`Vg^TjbXrk`rkayrfnfZ`YOri_|sh|sgf^U850{hYmzzq}ltdvevfxhrbn^o`sdp{lrcte~l^yi\qcwi]si^}shxluz{{x|~zy}vttxwtp}n~pr~p{mxjxkrzmtk`WPI741(('(''((&$#"$$###"############$%$$%$ %$#FB96?96=84?96<73<63<74;63<74;73941<74@<8<74$$$'(('''!1*'3'!1,)022122010765C@82YMCyhprwewgXi\P`TI\QFSI@HA9?942.)&# !peZŲǴǵ||{s|zmadYOF?7bWLsfYth[th]qf[rdoz{yzz}|vtzlykvi|nuwxvxxwgwgo`sdufqbziraqaqa|j}jzivem]~l}lveqan`}k\o^QdTG_PDdTH]NBVH=UH=YLAL@6LC;kdZrj_wvymrv|{z}qxwrC>7n^RͮίåɪάӰɩ¢ǧԴݻٷ§ɮʮʮϲɭ㾡հẝçȫĨéǫū˱ҷҷҷʯǬɮ㾣ὡ̭ԴĦƩɫȪĩǫʭ⿢߽ΰԴˬЮˬٹӳ۸ni[QKC>=84A;7D?;A<8@;8<73:51@:6@;8;6373/940<84>963/,###)))'('#2+(4' 2-+233022011::8FA7yfXyʨx]XPoi_g`WiaWkcXpi^ng^pi_ibW\UMhbYvodwncc[S42.~޺ܸǫ㾣ڷ˩£ϯӲصѯãǨ£}ufwu~o~~|q~px|sgsdyjvhm`}j]veXqaTsdWzk^|m_uh[re}nw{sqq{n|os}ptvvrulaZTM=:6--,***)))$$# 63/YSKundtwznvjuitk_ne[vmauiykrofZZTLb[Srh^kbW_VLgYOnbWjaWpi_rkaslbpi^e]Tvk`ymxmvwxwt|~quh|reuguhugxj{mykwiyobaZQEB<,+*(((**)**)()(&&&%%%''&''&'''((''&&###"""##""#"%&%&'&((()*),,+B@4sMB^Tob{g|fixī˲˱ΠֳôǸŷù·۾ݾçնöö⿵԰ܱ￶ὲź署ǹرѪըԥʜɚ}䥅粘ʻܭҤ⸭ŷȹ۟ƚ޲õô÷中˥㷭̿οɹǹ벢٥ߴذѩw|צܴ䵫尥촣波ѣ֨¶Ȼٰ~zwvx|owzt}sz}w¤պŸֿµοͺīౖӠޫܸдٷ̲j\S/'":1,=3/:2-80,4-*1*(1+(1*'1*'2+'6.+:2.91-7.)91-5/,$!-*'1)&0($5,'6-)4-*2,)1+(1+'2+'4+'3+'5-)60-70,6.*=50\TLwi|qf{qg~tj~tjssuuu}r{p}rtvt~r}rg|pcsgsjajaYf^Vg`Xtkbulb~shsi_z{{|||zxmb\QGmvqyivfufyjwhwithuj`jaYjaXh^Ui^R@92g^T|Ųȵɶȶzw~zqgztv{|zwvxytxkrepdYbXNPH@MESH?UJ@ND:MC:H?6WKAaSGyiZ}lqrt|m{m}oo}nyis{lna|~nrb{hY{k|kvfrbo_l]xg|j|j|jtctbtdm^zhZl]k[N`QEkZMiYK_QE]OD\NBVI>VI?]NBYOEjbXrj_w}qxmsy}zxst{o{rg<82udW~|ɪĦ̭ȩƧʩ¢ڸ⿥§еԸҶɭἠ⼟㽟Ũ޺ߺˮϴͳĪƫὣȭдɬŨΰͯũˮɭǫ߾޼̭ͯڸǧ~׶ӱԲִ~teZNFG@<@;8?:7@;8=85<74<74=85A<9A<9A<9?:6>:6>96=8551/%&&*+*&&&$3+(4' 20/122122021@?98=98=872.-.+)*'%$!#   !'$#/+)E;4p^PxŦͬy_[Rnf\g_Ud\Ri`Voh^uncvncmeZZTKc\Stlavnb_XO--*oάݺӲὢ⾣¦§ضŦѯ߼ɮʮгƫԲ״޺ڶťzjuw|mxy{tt~v{wupvfterctdqarbl]tbT~k]{iZsbTsbSyhXl^PeXLgZNsfYpeYui]wl`tj^vlbjbYTOH974*+*))),,,%&&  !! !!"##$$$!"" !!,*'LG?g`V|sgylzmymxkyl~uivjym~pxpg[_YPhaXukareZbVLgYOqdYmdYmf\mf\qjark`c\Sri_|ti|sixmznxlxl~vk|pw~pq~o|mr}}xxjjaWKGA11/,,,***+++*+*+++,-,././0/110010///11101/..-.../0/...//....331MIDkcYwjurtuttyk|owzyywv|~yrqtx{q|nu}yz}~xyz}zv~|}|~wle[RMFs                                                     >4+\I@pTJaUh^g`kbkaqgwm~s|~zw{|snd{tٵ޿øҵ˪޵۸㾸ƽȼƺ·̽Ŵ̧ڬץ٨ԦϢۤᧈ٭˿躭ѥޮ䵪丮Ÿ̾ʝĥ䶩ż౤ơϬøο̿ɻᴦթ³ǸṬᶨөܦ౤പ௣篟ଜХծ๫콯ôõƬŧƟɚߤأxwm|v}ypmzlg}lfpj~wxwɱؼ¶ʽͽƲݶܦ᥄継ڽȭul:1,5+'=3.>50<3/:1-4,)1*'2*'2*'1*'3+(6.+;2/=40:2.8/*:2.71.%" ,%"/'#3*&4+'4,(2+(1+(1*(2+'4+'6-(7.)5-)60,5.+4,'5,'5,'G?:whuiyoe{qg|rhyoetjavlcwndtkb}si|siri`xneyn~rzmwizjrt}rzpvlypg|rhvk}rf{x~xwtvksgqcWnxy|xvurvvt}r|pujviSJAZRJʶ̹н«ůů{{|}q~}uu}q~sx}rxzyzyzyxl{pduj^~qd}obpbqbtfYB<5UMEmcXmcYsi]~qdsfqdXwj\ufzjvfufrrbrw~lsbqbvhl^wdV}j[p`p`scm]wejZs`q`n_}k\vf~k\hXKk[Nl[N_QDVJ?TG=]NCVI?YK@`VKhbXtk`xxlymrz|{vvuxmqi_950n_ȧЮͬ{y˫˫ŧέɨάΫǦ׵¨ͱββȬȫ˭ħ¥̯дβͯĩɮѵӸ̱ũ⾣޺ʮç¥ƩͰ¦۷ܸũȫ㽡ħ޼׵ɨʩήϮ{{j]QHBC=9C=:D>:A<8?:7?:7@:7A<8@;7941<74>97=96B<:C>;:63'((,-,'&%' 3+(4&10/132355454HFBWOG{޿ܾϲɬڽҴαͯб߻ϳ߽бɫۺҳֶӱЯܺɭʮָؼвǪҳ޿дӴå˫طæҲĥĥ׵¤Ʃʬʰ⿤޼а׶޼ȫط޼̱ܿ۾ὡὡܸ㿣շгĨ俣ұƨ̬{vjt~}ұ۸ὤӰǧԲ̰ʯ˱˲ͬħҳصҰyzh\OE?=86:5373140.-*(,)'&#"$!!"'$#.)'G=6n\NmĤ׳b]Tof]ldZe]SmdYrk`wodyqeldYZTK\VNnf\tk_\TK32-ٷɪɫ̭׶۹ܹܺڹ߽ܺܺྣǫеֻ׻Ͳĩܸ¢{jwy}osz{z~άɨƧ~w|wztozglvdl\}jZo_}k\|iZqam^weWp`SUKB82.-*(*'%'&$ """!"" !!!""####$#"##/,)RMEumau}vma]WNibYvmctfZi[OhYNqdXmdYibXkd[pi`pj_`ZQvnb~q{nzn{p{pv{yzqi_NJE654342010121000232565454222454454344676576232233455666898898BB?b^Vsxqt}orwuzyzmzm~qv~}~{y{}|z}~|ymc]TID>y                                                            '!@3/N=8RC=VF@`NHgTMaQLdVSrc^qb\ua[w`Xr^Wjcrjqfmdpfqitnskxpáٶ۹ʿȻķȻŷ۴թચئӤ̢ͥڧܥϡܮĴʿܴģްƹʼɹ䫞Ǣѭ긯S鼴ʢǡڰȼȺԩ޲ǹŸ鼰׳ѮťĞಢ纭꺫ﶣܬɣ˩ḪƸ׾ηŧҨŮ˴ɵԧ~Ţհƥ|}y{}uz{~uvŪİѠ{֢}qTJB-%!90,=40=40;3/:2/9304.+3,)5-*4-*5-*6/+91.<40=4090,8/+:1-70- *#6-)5-)0)&0*'1+(2+(4,(6-)7.)8/*91,5-)3+'3+&5+&7,&7,&>50\PFf[Q]ULYQI_WNi`VjaWpf\wlbsi_~th|qfrh^ne[uk`sgxi~m]r`w}{v|}wk}}zu{whz{xv{t{oxkZPFbXN͸Ӿ̸ǵǵò|}}puytvy~zxww|}xxzyx{peY~ob}yqvg|ktdk[Pk]taSsbV}pxr~mvfrcuezjtdzgYsaTubUtaS~iZwcT|hW|iYtbTn^rcm^q`RbSGaRF\NBTH>PD:QD;PD:MA7_VLibXxocu}ti|or{z}twvwlkd[=83ud|Ǩа{~̫ʫȨЯұ׵߼߽ݻ޼ɯβǬ˯ϲҵϲе̰ͱѵҶɭƪũǬͲӸ˯Ʃ⾣ç㿣⽢ڷɬ̯çѮڶִͬЯéƭྣҲط̭ƨͭͮĦpeXNF?;;63@;8E?<<73=86?:8?96B<9=8451-83/<74=85@:7?:640-(((-..%$")"3+'4'!///011344986ROIQIA{hճʫʬϲֹٺ׹ָܿ忢ڷϱϱնҳԶѳֵϮٸħ̬ϮĤ⿡ʭǫгԵҳعֺȬص̫ͭˬҲմմ߻޺ä¥ֵĦұŦ俢ྠѳݿǪ⿤ڷڷβǬͬĤ԰׶èὣƬͲү޹ά~wkuί׶êǭٶɩ⿦ʰ©¨ЯɪήҲήЯť}|i\J@:3/,3/,2.,/,*,)'+(&'$"$!! $! ($"F;4wdUs~m_[Skf]nf]jaWvk_umaxpewknf[\ULYSJbZQh`UVOF42-¤ƫʯȮ§§⾣ִ׵ݻƬȮݻ¢ϭδʰǬĩݹŤ|luytr}}|~{״ԳӱԲִԴѱͮаƨʬΰཤطƦz{z{~zposq`l\OWLCA;784173/40-%#!$$$(('((($$#"""%%%&''#$$"#".*&LF>e]Symxph]\VNe^Vqj`mcXeXMhYOqcXkaVh`Vmf\qjaoi^\VNxkzyy~tneMKG::9:;;9;:6772223436769::7988998998::7996771332336777889:9788CB@eaY{}zzwtr~qzmtwj{sgwjwk}q~rw÷µz~}~z|~~~tzqgc]UA=8}                                                                        -%"6+(E83ZJCv_Vlaj^mapfuiwkri˩۷Ƚʼ¶źö۸{ǜ֞Л›~ޯǸǼ̬ǥ趨ƻĹƼԨ˪ڵὴ⽴¸ƺຯʪȡ䷫ȻЧǷٶѱ˯Ǭá淩°Ҩ˫ѵӷѳ¦ãԬ䶩ŴμϿɻܱ֯纰ڲɟ֧ΡԤ败ᱢҥڣҟ|vtnlfog~mevkbqk`zrfslgTG-)'90-<3/;3/;3/92/6/,5.+4-+4,)5-*6.+70-70-80,90-=51=51;3/:2-;3/:40 -&"6.*4,)/)&0)'3+(7.*8/*8/*8.)80+8/*5+'3)%4+&5+%4)$/% '\RH{lwiui\laV_UKVMDTKBRJBRJBUMDXOF[RHf[OteXo_m\|iYp{y~zxz|ym|{xyurdXq}{y~~}ui]@:4tư{wku}|~~}~}xz}{zzxywswk^~n^wrbUm_}iZsbTn^Sykvpzkl^pbxi}mk]hXLdUIgWJr_PwcTo\NubTzhYn_rck]ygXraSfVJ^PDOC9UH=SF96C=:=85>97?:7@:7A<99413/,72/<74941;63;63*(&'((-..#!*$ 4+&4("/0/011443A?;^YQqbU}ЭȨճᾣаֵԳӴˮϱ̭ӵѴ۽ɯ࿧ǨҳֶҳҴ̰ӷٻַ̯ԶɬȪܼԵԴȪˬɪΰȫܸѰѰҲ̮ħϳŪǩԳֵŨȫ༠ط⿥ʯ㾢ѰǨĤִϰίұũβǬ㽡ƫ༣rv££ͬѱȮཤճӱض¨ƬƬὤͮʫŧϰطͫykTIB50,1-*0,*1-+/,*.*((%#&#!!"""&" B70vbUv˩Աn]XPkf]pi_g_Uwlaularj`xkneZ\VMWQIZTK_XMQJB>93ڸᾤ¨ۼҳ̬Ǧױ༠ʮеβ俣ڶྥéṵ̄ħ¥Ұq}pyzt~{~xv{ϭѰϮү׵۸޼ྤݻèطɬٻҵۺĥǦѯ̭ytcfXME=872/40-50.#! ###&'&()(&&&%%%((()**'''### 5-'RE;p^On^p_}jZxhYxi[uhZrdsf~sgsze^Ub\Sc]Tg`Wg_UbVLiZPsdYmbWg^SjbYtlbqj_[UL}~tc^W@?=455577577577233354354566455566576455233232010011121222454454B@=d^Vw{{yv~pr{nxl{nylwlaynbtgvjswzúȽŹ÷u~qwjvivizlpwyt}|{}uym{rfwob~uht{{ozz{}y|~{zwwzzy{{yrxoef_WA=8                                                                              ) <1,=3.NB=gUQu`[pjx{ssrvkoeneqfwgk{ஙܯЪѪձ¹ྱ¢˥Ҭ۳⸱ȼö׬Աڼż˾˾ᾴմǤğհ廫˾÷حڱ±꼰꽰ڵ˯β˲Ъ繬麮컮뻭缰ʡĩʭϰаʬɫΫ캯˻Ƽオ⵫Τ̠䲩踯ְɤХڮܮשů⯞߰촤ߩ›ŝy|tph_SLwi]`TK4+)=3/=40;3/:2/81-6/+3,)3+(5-*7/,80-80-80-70-91-;30>73=51<3.:1-91-4.+,%"6.*4-*3,)3,)6/+:2.:1-90+8.)7-(9/*8-(5*%2(#/%!'*&#-(%WLByj~}yusww}o~rfsh]peZcYO]SI]RG]QFyk\rcxi~pwyyxti~r~y{~}}ytvx|~{ztwi]|nymwl{oznxl{o}rtz|wuysf/,'xl^~~~t{vx~y{}~~}|qxmzoxn|qty~zpyj[~xfWoovezgYxg[rdykl^xeW}j\zgZoauf{hYp_QeUIhWJtaRzfVrarb|iZtbU~j\p_RraTbTH^QFSG96:52:51>95,*(+,,.//# ,&"4*%3)$-//.//553JGBd^UyiԳұضໝѯֳصԲܹԴѲԸڼ޿ٹαֺֹ۸е׺ӶαƪͱдָϲˮᾢƩطѲٸԳήҰԲå⾡ƫ㿣гŨ׵ͱʮ˯ʭˮǪˮǫ޺̫ʨʫԳղὡ⾢ղƧֵ§ݺմåuwƪе߻ʩѱܺ㿥ᾥ俦ǮëƦ̭ȩƩ׷Բťzl\PI@:794251.8318317311-+-)''$#)&$)&$"! "&" <3-s`S|ӱӱzjXTMoj`pi_aZQne[sk`oh^wkrj_^XORMEWPH`XNQKCA<5¤׶ѱض§ٷĥү¨ǭҸ˱ͲǬʰϴȭũ޹ٴȦyjrz|v}z{vܻ޽㿥ʰʹƬ޻ٸյɪϯȮͮҰ̯ϲ׷ȩŧѰͮ}k^MD>;523/,.*("! %&&)*)())(((&'&())***((($$$#F;2l[Mp_wesbo^l[~jY}iX{gW|hWtaQp\LtaRRF;f`WjcYf_Vg`U[SIdWMpaVl`Tf\RiaWtmctmb_YPvtl`PKE320+,+*++***+++*+*+,,---/0//00122233/00./.---++*,,,,,,,,+00/432EB>d]U}p~}wxxw{nvi|rfyqe|shvj}tiym|p{nwj}sf|reuk_iaVi`Vd[R`YPf`Wtmc~ruz}}syl|ot}p}p~q~qs~q{n|rfvjst{or}zws}p|psxsvuym~ti|rh{rgvktznwj}srtx~qrzx}ysxk|tgxqe|sgvjym|p{otka_XP=94                                                                                            (#";31MB=VLHQFBmWOk_e[c[d[d]g^l`~iƛ|ǞœӬ޸๬ˢwypyˢשΧòʺȻնͭĠǣέ㻯üŽĺ߷Ϋ۸鿱ڳǰȰĦٯⶫ䷬ᷬ廱中ȣŨʮ̱̱ȭʭŪׯɽȽ¸帱ܭߩ贩೦ׯԭϪϪΧ٫寝ᱞ붦簤ϤΧԭЦʜ|q[IB.&"_SJXMF;3/=51;3/6/,6/,6.+5.*3+(3,(7/+91-91-70-6/,7/,92/;40;3/;2-:0+5,(6-(70+)%"-&"6.*6.+5-*4-*7/,91.90,:1,:/*9/*;0*8-'0'"(  #+&#+&#$LB;yj}zvq}oxk{mwq{mk^Rk_TmaVj_VndZti_zn|wvyzv}s}sywtryl_ykvjuizodvlbvlbxmc}sh|rhxmymuhwk{ouj^IB;whxwugvwx}|}z{{}~zvl{rhyqfvlxmsyyi^S~~}kzjpbqb{j|lwg{lrc{hY}i[zgZraT|i[~j[zgXweVn]OubSm\NxfWp`}j[k\ucVjZMaRGWJ?QE;UH=]OD[MBRE;I>5b[Rog]zn{owl}qtxuytzny{oZTKNE=ls|wvw˩Ю̬ܺèèܺӲãŦŦ۸§ڶ佡㼟ɫͯʭŪŪʯȫɬȫӶϴҷγǭɮֺոҶϳͱȭĨ༠㿣Ǫɫ˭ӵȪໟմֵ§Ӷΰ¤вƬudYLD?@;8A<8C=9=85?:8A<9?:7@;8B=:A<9A<9@;8?:6@;7A<8C>:*)(+,,,--!.'$4)$3)$,.....986RNHhcZtdVŦ޻ܸڸʬ̯Զϱ⿣ɭչ׺ܾݿܾظն׼۾޾ܺѴʭརҰ⾢Ѵϲ¥ʭǫ⿤ڹίɨ̬ѱħǪϲͰвʭäæټֺĨ¦βͱͲũά£ٸῤմЯȨֳԱصȩήҲӲx|¦ϴ޹ͫƨݹĭªήѲīᾥīཤ״ǧxeXP>84952620720620/,*1-+.*(*'%,('+'&$!($#'$"'$" <3-r`Swʩٷp_ZR}ujypee]TjaWrk`ph^|uixpde^UQKDRLE]VLOIAB=6¦Գдʭݻаܺݼ㿧ٸʫǩյ࿦յ׵ໟ̪{lt{{u}~x¥㿥̰éܺྥῦŪ̱ɬ⿢ֵ̬˫Գ˫Ϯ۸޺ѯ˪߽ۺ~m_QHBC=:;740,)$"!&''***'(())('''((()**(((%%%*% WI>l\mtztsqtzysq^s`]OCfaWibXd]Ue_UYRI`UKj^Se[PbYPg`Wslcvodb\R{m`ykvhqp}ourxyy{}}sgRMF542--,***()((((''&&&%&&&()(,,,//.010////0///.,,+-.--.-+++..-210EB>g`W{o~wvy~}z|{}yz}o}shskapi_tmcxqgwoexpe|sg~uiui~uiymylwk}thwodrkale\jcZumct~yzu~q}owjzqe|ouh~sgwkzodwkykzmxluiymvvsursswx{{{z{~}|ztww|yv}pxlxlwlynzo{p{qf_WP<83                                                                                                        #7*'H71ZC:jRBs[IyaQiYvfr}s}wwz~wyq|tzt{{xqyϮΰŨ߻ⶭƫĩǤᵧ乭ݷ㽴Ļ෰խí«Ǭ˯ɬٲ÷ƺĺﻳ淲廵߻ͧڬ㵩ܳذӯԱձҮۯౡᲡ߲컧ﻬ䳧Ҫְ̦wpB722*'3+'J@:KC=<41<407/,4-*4-*4,)3,)3,)4-*80,91.80-6.+4-*7/,81.91-:1-7-(7.);3-=4.7/+)$")# 4-*6.+4-*3+(5-)7.*:1,<2,=2+;/)4)$,#!&!.'$+$ (!)"G=5{j\vtx{wuspxjwizl}owjssrqxitu|q{z{~~}|{~}~~yzm`sf}rf{odqg\ukavlbzoexmcxnd|rhtj`wlbzod}rfvj_XPFz}{|oyy|}~}z{||}|u}rzo~s~sypfwlvtf[Pzvgsdwh|iZl^}mo|mxim^l]l]xeWucVueo_weVk\wdTjYKfWJwfWzhZn_p_SeVJ`QETH=RF:=85>:7<85>:7D?;@;8=84''&)***++"/)%4("3,(.01011@>;]XQpi_{iYãص޻ͯƨή⿢ֵ¥ٺѳȪͲڼֵ̫ͯҶӶԵӯݸ۾ַ˭߻ħЯѰѱĬ߿޼Դ˭նճбçۻ޼ӳ޽¦޼ҷھػڽڼշԶҴĩȬ߽׵ճض׵ٷͬʪ׶ڸ̬~w{~ڸὤ˪ѰڸݺӲϰܻǰȰӺζʰ㽢seXQC=:<85;64<75=8650.3.-,(&(%#+(&+'%%! '$#&#!&#!A70ucUtƧٷrb\Tvk{qfmdZlcYvncxqf}vjyqeibXSMEQKCXRIKE>C=7Э¦ɭ߾ڹظյ׶ֵԳܺٸϰ׶ѱɩʩĤ{ly{t|z޺⽣éǭǭƫ˰߽ū¨ѰմմѰϯٷٸ̭¥æĥұͬٷٷ{j]QHB=85:533/,)(&*++***''')**'''&''(((#$$""" 0+&ZL@wd}ŦήǨƨåvͬyhXkeZiaWd]T`ZQXQHh\RpdXd[PbZPibYslbvode`Vwhur{ixgudygp`vfvercsenaobtf~pc|pc}ozlzlwjldZFB=//.*++)**+,+./.00/0/./.-,,+,,+//.321210221221/0/./...../.010665PLGyrg~rtzmvncqj`ng]slb{ti{shwodwncyod}thxk~rx||xxs~wl~q~wswk|rfzm{owk}p}qz~|wzz~~}upf]C>8                                                                                                                 -$ A73RF@WIAZJBgZtzɞ̝˞Сѡɣȣʢw{~uzmw{{pskplurwtwr|vڸ෫ߴӮʬ֬꽱ڷٻɷǸ˼Ըƫì˰ʮæ֯뷰׭ԯںβ۳߶tͳαط׶ܹ仪ṩٵgVP*#3+(4,*3+(;2.>62;2/91.4-*4-*4,)3,)3,)4-*5-+6/,80-6.*4,)4.+60-6/,4,)5-(>60@933+(0(#5-)*%"&!3,(4-*5-)5,(7-)90+<1,;0*5*%+#""*%#/($1)&/'#-%".&#B82xgX{~zx{wssz|vqzysu|}t{qf}}{~}}nre{oduk`ne[wmbwmbnd[lcZvlbuj~shxmc{pe~rgwk_MEMC:d^Urk`~qs~rsu||ovwzn}qMH@\PFväåá໡ƫ⾣Ա״޻Գ̬׵ȦȦǦ¡ѯ俣޻صŪαȬʯ㿥ūɭȬἠĨƬ¨©ū˰ɮȬƪ̯ɬвϱҳίɬħҳѲҳعϰ£¥Ʃصxg[QIA<9?:7C=:B=9=85>96<74;63C>;C=:B=:>97?:8D?=E@>B=:;63&&%)**(((!1*&4(!1,)./0443IEAf_Vvnd}i׵˭ƪȫ׵ٸ׷аԴԵ˭ɪŧǪдٽϱ˪ģ۸ݻѱĢȥϮˮȫҴټոҵͰڸȩ༟۸а߾ѳ̮ѱ׵ȫոԶˮ¦Ʃˮдٽչھֻѷݺ׶èȬè߾ۺὢή̬ĨѳӶʰٸ~w{ĦĪ໢ѰԲ¨ڹŧäǪΰ࿨̭ή״㽤ڵrdWLFGA>A;9<759428424/.0,*)%#(%#(%$($#+'%+'%)%$&#!!D;4weWwѰzk[UMri_sk`mdYi`Vnf[umb~wkvnbg`VTOGPKCVOGHB;HA:ħ׷ΰǨڷ׳߼Ȯܻ࿦ίͬħгƫĩ˫ɨǧ}nzy~p~}¥㾤ὢ㿥©ȮĩħçᾣұԲմϰӲݻٸˬ~ĥήӲl]VKD83/61.61.+)(*+*())'''+++(((''''(("##!""!2,(ZLA{hŦճ߼޻ΰΰٷ{Ȩίٹucmf\f_U`ZQ_ZQWOGfYPpdXcZP`XNiaXslbrk`c^Uɩät{iwh{kwhsdxhzjufqbueo`{hZtdWfXOE>91.+,*(,*))(''&%+)(.-+20/00///.220776987;;;<<;9:94663443333449:9XUOuttwxvznymxzxttuzn{sh}ujymzn{o~qv}~{{zywsv}ttgob~l_{j]ueY}ma|nb|pdvi}osrtxwszmzl}p~q}x~ypeHC=~                                                                                                                             2'$P>6iPHy_Vlazm~~Īáťʭƣ}|ŤģĤܮۭqhj^Q|ȶɷҿ͹ҽҽйݿǶɸںɬɮym:2,YOGq}{xxzqzmy~wk`A842+)5.+2*(1)'4+(8/+=5180,5.+3,)3,)3-*4.+4-+3,)4-*5.+70-6.+3,)2+(3,)2*'2*&:1,:2-/(%,%#0($4-*+&$#2*'2*'5,(7-);0+;0*5+&+#"% +%"-'$1*'2+(0)&1)%/'$:2,scV}|~{{ywzz~zwt{|~q|qf}~tqytxltw|p|rgxncvka}qe|pd}rfsfvj^SJA}l{z|yvu|y}r~zzxu{pvkzo{p}rvx|}z}r~ukuk|opi_S|mxgm_oam^pan_zksvw}n|i\xfXl[OjYMucUyfXtbS{hX|jZudUp_RjZMgXKm]On]OaRFXK@SG=OC:QED?;D>;B=:>96<85@;9B=;FA>C><'''***'''#1*'4' 0+(,..886PLFri_zqfsӳϱ̯Ȫ̮ϲֹȬа§ῤֵ޻ʭҵˮ޼޺ģٵҰ޻ΰĥɪϱȬݺ߽ˮ̱ĩʬȪгҴܹƩɫг׸ݽˬ̫ڸۼӸѶʮ⾡ᾡɬҶոԸͲͱˮбѴдƪèʯçɭԸؽѶˮαҶ̲ݼ|||ä׶˲ѷʰط̫ͭɩʫбԳұظ⿧㾧徤ʧ{sfbVOJC@<75<7594261/50.51/,(&)&$+(&.*(3.,2.,1-,*&%;3-o]PzƤwh[SNFc\SkdZh_Vg_UkcXpi^{sgtk_gaWTOGNIBWQIHB;NF>ˬϰع˭ȬȩЭཡ߾׷ʩҲίɨڶܻ޼ݻԳѰӱ¤t|u}oǫĩèʯɭݻ޼俤ཡֵظħִٷݻظڸضͭѯ״἟մЯvf]RJA;8;633/-('&,,,)*)'''***'((())'((###"##(# VJ?ucͫäʪӳཡӳƨåŨίn^oi_f_U[UL\VNVOFbWMmaWd[Q_WNjcYrj`ng\b\T¦״ճܺ㿤ᾣ¤z~wmwfX]PGE>:952:63;648411-*0+(3/,51.40-.+)*'%+)'-+)/-,-,*)(('''((())(())./-IGBoia}xxl}shzmxxzyxytzn}thyqfxlwzt{n}uiymx|yz}q{otvzxtyzz~z{wt}q{nwkyk{m{mzk~sfvh|mrrxjresfre|qdwjv{yl}nb|nbvi^of\sj_ri^xoczqd~uhxkxocxpdrw}{oOJC*'#                                                                                                                                          /)#KB8bPCxcSpazltx~ǡ˥{wwr{xzn]ME#~m_||ĨະVJA-&"3*'cWMvj|s~qq~qzviSJC6-*91/4-+0)'0)&0)%3*'8/*>625.*4-*4,)3,*3,*4-*5.+4-*5-*5-*7/,6.+3+(0)%0)%80*7.*2*'2,).'%,%#/'$4-),'%#2)%3*&9.):.(8,&-$ "#,%!.&"/($2+(2+(1*'0)'0(%+%"6.)k]Q{z~s}r|}~xznzox~ztw}puka{}~zwjuswkvjz}ws}ozlugF?8ui\vywvzmui}p}|~~~||ox}{yyus}r}quuzozo|q|q~ru{|zy|oar{kzjo`vfyhveo`qct~ptg{mpbucUkZNm\OzgYm^}iZucUm]m]vdVl[Op_QraSo^Q`QESF;?:7:5262/<73A<8>95=96:62<74?:7@;8=86;7484140-$%%*++%$$%2*'4&/,+./.@>:7730+*(+++)*)'((())'''((((((#$$!!! K@6n]ȩ¥۹ٷͮͭܺǩqamg]b\R]WMc\SZSKbWNlaVcZQ^VMhaWmf[ldZ`[S|Ϊϭ޻æ׳ϭִȫʬԴԳ׶ط̭ȪԳҰobTID=895384183072051.40-831;64:636202.+/+)40-7308422.+-*'3/-3/-2/-820F=7\OEcWKsfwvurwjylzmxkzsgzsgzmvxzv|qymsxxts~r|{wvwzzz|rxkvhyk~puwsyl{nuz}{ywsxkreykuz}}vjyod{rfxlw}|x~prym}shym}pxlNIAy)&"                                                                                                                                                    )!K<8dPIjYQn_Xz{qijclgsb[>60(!.%!n_Sy|~|z{p~yg^3,'2,)6/+5+'aVMzo}uu}wzoymocX>502+)81.2,*/)&/)&0*'2+(2*'8.)?724,)6.+6.+4-*3,)4-*6.+5-*5-*7/,:1-5-)/'$80+91-2+)1+)2,)1+),&$+%#.,(-(% 4*%7-'8,'/% % +$!/'#0($1)%2*'2+(1*'0)&/(%-&#*# 1)%aUKsz{x{uynyn|vyuznc~~~|myl}ot|m|ny}}z~puhIA9yl^|{{z{{zwy~~ssx}~|}{xvvtvl|qvyz|}uv~~op{{~}{kyipzjorvfn_sfwipcpcpbvcVraSxfXvdV~j\~j[xeWraSq`Rn]Pl\OdUIaSG^OD^PD\NCWJ?RF:;6361.72/<85A<::637309413/,&'')*+"! ' 2*&4&0/-343FD@`ZRxlzm̭ǫ˯ؼ޿ܿΰڸɫȫΰ⾝ä߽çʮΰݽ׸ǫӶػַϰæͯѲڻɪŨٸ˭عԶִħαճ¥ͮʬɬ˯ط߿Ͱ༟འ޻ǬũΰçβͲʯдϳٸ㿢۷ѮŤմ}|zϮͭέϭݻ̲ǭԳ¤ˮЯѯʪŦṱ̌ѰճάǨpcZNGA;8720:53=75=74:532-,,(&.*(/+)-)',(&+(&-)(+(&*&#E;5p^Q}jtgZPJCbZQxncsi^neZph]pi^rj_oh]nf[c]TYSLkf\QKD^RHͭܺ§ƫظ˭æͭնҳҲӳط©ĪǮ޽©ཤڸǩ|o~zy|x~Դèӱƨ̭ճƪʮ俣ǪĦڹѱ㿤⾣ۺطұåҰԸ׹¦ue\PHC>:A<9952+*((()()))**))))))()('((%%%"##% NB7kYճݻյ̭Ʀ⾡ĦĦå̯o`nh]d]S_YOjbXiaWg_UkaWc[Q\TKd\SkcYmf[b\SҲԲӲݻִ޺⿢ݼٸῤརç̰ũ׷ȩӱɩvqaTE>895251.50-4/,4/-4/-841;64;6384284151.51.62062041.2.,2.,731831G?;dWNweXyfWykr~naxk^wk_yocypd|sgtv|~~||uuzywrylxlqxvsqxk}tg}sg|sg}thxl{o|shzqfr}{|o|otzvw{~{~xrszl~px}p~qxz{wrvmcFA;x4/*                                                                                                                                                       & >50.(%(" -&#*#aTI}q}}zzz}wy{}pdD;6/)(60-5.+6.+5,(UKD{qg~zptmdyozoi`WI>70'$1*(1+)/)'/(&0)'/(&/)&1*(3,)80,;406.+:2/81/7/,5-*5-*5.*4-*4-*7.+5,'7.)?7292/0*(/)'0*'0)'-'%*$"*%#-*'/)&3(#0&!&'"0(%1)&1*&2)&2*&2*'1*'0)&0(%/'$-&#*# -%"XLCo{}y{~u}|~sgqpzk}muqqtytqsw~|aVLreW~}vxvvzwƮxwtyzy}w|q{{vwz{|qw|vwin_}{{}m|lrxise|i\}i\oanazlyjvdWo`m^}iZ}i[n]PxeX{gYyfWzhYo^Pp_Ql[NgWJaRFVI>YKAZMBQE:@;8?:7;73941;63B<8A<9B=:>85;63941@:7A<9?;8<85>9651/'())** )"2)%4' /0/676JGCjbY|p~sgԳʮ˯ʮֺҴƫ۽è߾ںͭմαٹϰƧֶܺ˭ϱҳӴĩбʬѲƩ߻ӶҵҴնظ׷ɫ¥ίںҲѱعĦᾠݼƨͭɫȫͰΰͮݺضƨĨˮȬ̯̮㿣ӳٷྣ̯ƨ༠ضղ἟޹ݸ˨ǩ}|}x¨ϵȮȮ˲׾ҹжжīᾤ޼޻ڸܹٸڷ£|udWKA;83050.40.;74>86942/+)+'%.*(/+)1-+2-+'#!$!&#!*&$H>7zfWp£qdXRLEg^U{qetj_mdYnf\oh]ph]nf[iaWa[QYSKne[TMEl^Rڹֶˬ˭׷⿤аˬԳ࿦طϰ£¨éѱٶƫݸЭxk{zz~w~޼˰γƫܺ׶ᾣĨɮɬָ̮˭¤༟޻¦αʫڸǩִдͱziaULGA>E@<952)((*++)**+,+)))+,,***())%&&"""(#OC8p^Ӳ࿤ܺбåұǪʬڹhZNoi^g`VaZQjbXsj_tj_oeZh^T^ULc\ShaWqj`haWϱƪåظٸŨԳаӴմܹȬͰ˰˰ɮèή˫nl\PE>995295283072.72.;62=85=85>96<75;742.+0-)/,)0,)3/-3/,0-*3/-61.RGAm_w}vztfugvhqs|mu{ln`~m`obpcuivi}os~z~prtvr}oxlwjyl~prrswk{rgvncslawoe{sh}ujzrg|n~}~wyxvu~qzmylzn}rtu}qzovsx{{wt{shFA;y|;60                                                                                                                                                           ,&!3,')" )#!+%"-'$*# l^R{~x}s|r~zmWKC-%$0)(4.+5.,5.,7/,80,A84h`Xuzpyoskb>61+# 2*'1+(.)'-(&/)&1*(0)'-&$-'$/)&0)'4,(81.:30:3091.81-70-70-7/,5-*2*&4*%=4/;4/5.+/)(/)'/)&/(&.(&,&$)#!)$",�)&/)&!$-%"1(%2+'1)&3,)3,(2+'1*&2*'2*&1*'0(%.&#+$!,$ MB;wi}~~w{xxy~y~r}rwtzocxm{}|}}}{xw~~~}o|lreYxj]|lqqupzlyl|o~qsyk^SYNCy|yz~}|v{~|tvvwy{|yusts{qzxyn{pq{mwfwwrctvpnn^}i[n`~k^ugpck]ucV{gYl]pavcVm\Op^Qo]Pp_QsbSucUsaSeUH`REYK@XJ?YLAMB9OC:L@7UH>g_Uyrfrs~vk{nt{ytsuwb[RA=6{jzy˫ֵӱЯϮὤ༣ཤᾥêĪè¨ǬݹάҭֲҮƩ俢ߺڸҲԳڷʪٶֳִͫߺ佡߻ٶ༠̪ʧɩ̪ڷ俣ڷཡȫ⽟ڶởʭɭǪçŨʭĩݺӱ~l`TJE?:B=9A<9<85;63;74?:6A;7?:5>95<84;63941;63@<9D?=B=;>9641/())*++!*$ 2)$5("232;;:ROIri_{nzlǪ׸Ѵ¦¦ȩ¥æԷҶݻڷɫ㿢ֵԳڸäԱԲֳɬѴֹҶȬݻ׹ոƩӳ̫Ờߺ༠նݽݽݽέ߼¥ŨͱչѳŦݺƪ޽δԹǪå㿢ܻ۹۹Ѱ̬ӱݻƪĩ߼ҰῤĪȬͪ~}~||u޺Ҹ˱ҸĬ״ƭϷؿּжǯ̴ǭ߼ҳɪ}y|i\UJC>95;637207201,*,(&)%#,)'/+)3/-1-+3.-*&$%" '$"/*(H=6ucTyɨɧtgZWQIjaXyodmeZc[Rg`VleZog\nf[f_U\VMTNFcYPOG@sdXɯǬֶбϳȮԵͮˬϱƨǪʬٷصởܸâvix|}}wնֻ׻β۹ƫ⿤ںܻ޼̭عбӵѳˮٷܹɬӶʭ޺ͯڼд¨ʫqbVMF@93                                                                                                                                                             ,%!0)$("(" (" )#!-&$)"UI@u|~|~vyh[R=3.0)'3-*4-+5.,3-*4-*6/,6.*C:5mc[ypxn~vlog^) 2*'2+)-'%,&$/(&1*(0*'-'%+%"-�(&1)&4*&81-:2/91-91.80-81.91.6.+4,';2,:2.92/2,*1+)/)&.(%.'$/)&-'%,'%*%$)#!,%".'$-(%%.&"1)%3+'3+'0(%1*'2+(1*&1*&3+'3+'2*&1)&/'#,%"-%!QG?{oc{yv||z}{}~~~~wsyn|qrvj|puu|~|zxxyxyzy|~~wnzstvi|m~nuh}pdvi{m{mviquh[LB8p}{|}|}xv}sxu~svvwuv}zo}r|qyoywxxw}sh}rezm{l]ƪv~xz~k\vg~oqcprtc{hZo^Qzh[rd{k~j[m[No]OygY{hZkZMiXLm\Om\Oq`RraSn]Pl\MdTGWJ?TG=[MBUI>PD;E:1PD;ldZznuu~wlwlu{y~qzovw^WOGA:yhw}Ȩ̬ϮطԳᾥ޼޻۸俧δ˰ϳԸӸеŪƨ濢侢¦ȫ¥۸ϯճЯصүӯέ¢Ǧ޹忣ݹѯֳǧʨ̫ͬղ״çħϲƩ۷ҰɭǫĨմ߽ڷ{paYNFF@;B=9A<9<73;62<73>95B<7C=9<84951;63>:7@;8D?620())()*!,%"2(#5*%344@@=[VPype{nvhæ˭ڻܾԶɪаϯֶ¥ͯˮٷضȨǦǨǨӵгֹչѳ޽ɭͱۿֺǪҴǬӷͱĥߺ޸ŧ۶Ʀ޽ͰǫˮٺӴǪʫȫήԵèũʬ¥æͰᾣݽǬʯֵŦŦའèŨ忢ձطƪĨ޼ܹݺä{ysӱжپѶ㾣Ϊ̭ͮ׹¬íĭ߾㿧êܺϮ}obTJC<7462/62/:52.*',(&,(&.*(+'%0+)1,*3.,0+)($#)%#1,)PE<k[|ɧrfYWQIg_Vri_g^T_WNf_Unf\qi^nf[c]TWRJMHAXOFHA:fXL״¨Ǭĩۺҳյ࿧޽éίίԴٸϱ˪༟ձٴ۷uhx|zŦϮԱִݺ״ཡϰ¥ήἠɬʬѲɪ޺ٶ۹ŨгٻϲѴڽܿβۺuYLDC<8A;7;73++*-..-..-..-..122///133*++!!!"NB7lZᾡݺ׵ݻۺ۹ش޺æ̮wh[xrgibWb[QjbWqi^vlavk_rg\d\Rc[Rc\Srkatj_ӴۺԵұϰۺβֶ޼ִήƧ׶ῤ۹ȨåˬŨ|k[PG@:6<73=85A<9A<8<7394083/;62:52:52<85?:7C>;B>;B=;>96>97@;8?:7G?:o`U|juuۺǰٷ¤ɫϯЯطԳĥzpudyiw{kufseoaxeXm]PgXLscUygYwfXzh[yh[paUqcWmbVym`~seuh|nvyyxt~q~thwnczrf~qxkuiyl~qt|w~shulaxl{oyl}p|~r|o|{~{zyvuswznID>u|C=7                                                                                                                                                          (")#(!)" ("'"(" ,%#)" RG>ym}z{sj~vl~t}~}uiXKB1)&5.+4.+3-+4.,4.+2,)4-*5.+4,)TJCuk~t{q~tg`X' 0)&.'%+%#-'%/)'/)'-'%,%#,%"0(%4+'5+'3)%1)&80-80-7/,5.+5-)2*&5-)>61:3//*(0*)1+)0*(.'$/)&0)'/(&+%#+%#)$"*$"-�)&/*'*"/'$2*&3+'1*&0($0)%0)&0(%1)&3+'3+'2*&1*&1)%/($0'$YMD|ocxyz~y|{xyt}shwlquhp|suxyyvutttz~~z{v}qru{bWLXMC[QGi^SqeYqeZyl`sfzmvxwwvszm`F<2uduz{~}w{yzywi}vuyo|qtvu|qyqgxpf}tj~ujwmzp~swwyth[«}|v{sb~j\setbUl_vvm^wdVvdWufpvgk\k\{hZxeXgWKhXKn]PtbTraShXKp_Qn]OfVIXK@OC:PD;L@7E;2B8/H>5oh^{otvznwlt{z{oxmttTOGKD:A<9>96941=85C>:HC?HC@B=:@;8?;9>:8@;8E@=GA?HC@KFD420(**()) -'#2'!5+'665JHDhbZym}pxj]Ѱȫֹ׹ۻֵǧĤִڽԵԶѴǩ߼׵ԴմԸֺݾҴҴĨ߽Էˮᾡ⿢ٶܸ۶߹ʬշᾢϯ㾡߻ĨͰͰٹˬٸħũ˯⿣ཡ˭˭Ͱæ߽ĩ⿢ͬ˫æǬѴϳݹ˫ʫճἢʰῥԳϮ£{wvǨͭʰӸеΫƧ¤ǫίа߽޽ٸ˪аͯrbVOC=;94272/50.,(&0+)-)'/+).)'-)&-(&0+(,'%$ %! 0+(J?8yfXӰάj`UVPHd^Voh_d]T]VMe^Uoh]sl`nf[aZRVQIMG@YOGHB;eWKæԴۺĩںʫ۸޻ྤ׵׵Ū§俣۷޹༟ٶzmy|ִἡ⽡㿤ĩὢ߼ضȫ޼ϱͯ㿢ĥ¤༠⿣ʮ̱ټ׻ѴѴŪ˫s`TKIB=HB>C>;-,++,,,--.///10011-..122*++&!YLA|i̭ǩɪ޻Ӳ׷¦¥߻༠ĨvgZxqekdYe^SkcXpg]yodvk_pe[d[Qd\Rg_Uvnctk`ΰܻնܻŪ§ݺڹƨħֵ߽⾢æݺЯzp`QG?=84?:6;74=85=85<84?:7=85>:7>95<73=84>96@<9@;8=85951=95A<:A<9PGA~m`wzzxɮԲݺ⾤㾤©ɯϵз̳ᾦڸɩ׶̳ǯճӱǧ}vq~l|kuevezj|lvtxhn^k\rbl\ubSl\|hY}j\{j]xh[uh[vhtg{qf{rgxmv~rwzvkulari^ri_qi_qi^vnbxvkq}~p|rfwnbvnb{rf|rg|sg|oxt~quz~{zv{|ur}oylxlw}|pRLE|p~D?9                                                                                                                                           '!&' (!)"'!'!(" +%"+$!I>7znc}|zyzpe[D817.*6.+5.+4-+4-+4-+2,*2-+3-+6/,4-*PGAnd\}tj|sizpqi`)"/(&.'%,&#.(%-'%,&#/'$0(%0($4*&5+&3)$+#,%!5.+6/,5-*1)&4-(<50:3/2,).(&.)'/)'/)'/)&/(&/)&0)&-'%+%#*$")$!-'%.(%/)&1+(!+$ .'$1)&2*'1)&0($/($0(%0(%2*&3+'2+'1*&2*'2*'1*&1)&MC;pdZwzwz~|q|qvx|~~}yxl}rf|nsfvhZzpwxxt|ozm~quvt{o}qt~q}qwk~rf|nyyk^yl`rf[laWnbXocYcXOPG?QH?KC;KC4OE;smbymrs{oymt|wymxmt}qQLDTKB~kyȩήֳִϮť˪״⾥ĩŪ¨໡ͳѶϴǫ御忣ɬڴ⼠ƨӱӰϯܹ¥ضໟɫΰ¥⽠༞ڶ߻ٷάղṵ̃ƪæʭƪ߻ݺħڷƧմ˪{ubaTJKD>D>:D?D?97.,+)**'((!/(%3' 4-*897ROJqka|o{nveݷǪٺΰбܾʮعܾ׹׸ϰɪط۹˰ѶؼֺھͱԳԳ˰ۺ޼ٷç¥Ϯ̫£ӵϳŨϲͰƪʭĦ⾡ྡܺˮϲҴΰˬ˫ɪũ˭ֹѳĥŧũŪ޼޻Ȫȫçè§۹£xuuʬʪͭݹϮʪ˫ήѰ̫ں̱ῦªȰʲʱʲrbUNE>;=85=7472/1,)2-*1-*0,*1-+0,*,'%*%##+'$K@8taRt̪ͬg_TXRJb\Tpi`h`W_XOkdZuncwocoh\c\SWRJNHAYOFD>7veWϮ£ٷƪӷ̲ᾤطܺ޻ʰƫѱͬǬ̰޻ϭ۶ϭzvjwzy˫ͫ۷⾣Ĩ˯ũྡྷŨ̬ΰ㿣ȪͭƩӶβػܿ׻гͱxh`SJD=8E?;@;8,+*+,,+,,,--011.//,--/00())*%"]PEoɩɩضƪŨĨ۸ѰүִЯm`Sxpeqi]jcWmeYme[zqfwncmcYd[Qe\Rg^UxpfxocӴũçᾡֶӴڸ޼̮ȩ¥ƨç¦޼Ũ㾠έ}pbTKEF@=D?;>:7@;7@;7B<9HB>HB>C=9D?;C>:B<8>95=85?:6A<8B=9C>;HC@KFCRHB{i[}}zʯ༣ǭɰݺδʱзҺªݺ¨εǮǮݺȨäέЮ¢}xw{ylsmso{jyh|jwfudo_q_n^n^yfWvdV}}|vkujuj{o~rvk~uhzrfumcrj_wod}ui}tht{svzvxz|z||r|o~o|o}q{ossv{ypykvizn{rgOIB|p|B=7                                                                                                                                                 % %&%'!'!'!& &!)#!+%"-%"I>6|oczxv~t}tk{sj~vl|ryu{ri<0+>3-90,5.+4-+3,*3,*1+)0*(2,)4-+6/-5-*D<7`XP}sjxn}ukiaY*# /(&.'%,&$.'%.'%1)&5,)5,(3)%2(#.%!,$ /'#4*%5-)2*'1*'5.*81-3-*.(&/)'/)'.(&/('/)'0*'0)&0(&/(%,&#,&#*$"*%"-'%,&#.'$2,(%"!(".'$1)&2+'1)&0(%0(%0)&1)%2*&2*&2*&2*'4,(3+'1*'1)%E;5h]Szoy~xy|u{p}r~|x~s~si{qfyow~}w{n~wsvi],% 4+&F<5SI@`UJ^SIf[QrfZzmatwuuws{otyxt~p|nzlyjo}nvs}qtxw|qf|ococWC<5ocWzm`xjwl`rg]sh]dZPlaUrfY~pbufqsuzɲ~th|xz}{vu~s}r}r}zzzvuswwwqg[}w~~zi{jue{juexfXrd{mm_~k]o`vdWyfZn`pcm`weWkZNdUIjZMk[No]Pq_PiYLZL@^OCcTH^OCSFB<8?:7?:8<74?:7F@=GA=?:7@;9;74953?;8@<:;7462/941<74A<:-,+,--())"/)%3&5/,>>:C>;ID@HB>IC?HC?JDAF@=FA=E@:C=9F@D?>96=85;74830=96C?;?;8B=:D@>E@>**)*++))(#/(%3&620EDAa\Uxm{vټϲٺڼ׸ʬԴطӴͯҳظ޾׹ʮçʬŧƪʯϴԺе¦Ũ¦طྡྷྠ۹ϱԷֹʭå㾡ִħдӷȭ׺ɰضǩָնɪӵΰȪ׸շ߾նɫͯ׺Էͱӷٽ̯Ĩɮçæ޼æɭĭ~stxǧ¦ɯδὤѰ̫Ѱίȩŧίʬ׶࿨ζɲȱ㿨reTIB:418418303.+.*&*&#.*(-)'-)'1,*.*(&" %" 61-RF>o`޹ڷf^TTOG`YQumbph]c[Rog]xpevodkcYb]SZUMMHAOIA;72~l]ͬմҲԴ޻ϳԸ˯Ūʯƫལལ׶Эױ㼟߻w{oz}{|{ڸũԶ׺Ѵϱϱѳƪ§޽ݼħɫ§ῥᾤǪͯϲçٷŨ㾡ƦɨݺϯxpbWLD@@;8=84''&+,,,--+,,./.,------.-%&%%"!82.gXMvұĥŨȬҵβũ¦འᾢ޼m`T{qftl`meZldYd]RibXpg\reZncW`WM_XOzsjxpeͰֶܺͰ׶ŨݺὟ޹׵طִ⽠ǦmgYNKD?HC?GA>A<9A=9E@=HC@D>;A<9E@C=9F@ID@F@>D?sPIB               "4(%PC>PD?B94+# %$   &B519.*0'$\JEXFC"(                                                                                            "$%'!'!&!&!(#!+%$-&$/'$?6/uh\u|ruxuzp~ulyoyoxmwmG>9;2,5,(3+(3,*3,*1+)2,*2,*1+)3,*5/,6/,A84lbY|rhypgqh`^UM/($-'$,%#+%"/(%3+)4,(/'#+$!.'$4,)7/+6.*6-)7-'3+&*# ,%".(&/)'-'%.(&0)'0)'/(&/(&.(&/)'/)'-'%,&#,&#,&#)$!)#!+%"/&"0'"0)%(#!,%"3+(2+(1+(2+(1*'1*'2*'3+'4,(3+'4,)4,)3+(2+(2*'1*&<4/cWMvjx|vuzoyn{pw}zxxwppbxhvgsfxjG?861-=72G?8SIATIAVKB_SJ\QG`SIgYNi[OhZOeXM`TJk^RtfYoavhwh|mvt~z~rwwz{{wl_Tf]Sqv|{puj{o~r}q|pynu~zx}p|n{nviuhrf{ncrfocX_UJd\S}{uvw{|}u~s}rxnyo~uks~ykqyx{kzitcueueuf{lyjvgpa~k\xeXvcVm_tbUiYMhXMp`Sn^PgWKo^Pr`QfVI^OCbTF\OCQE;OC9OB8L@7OC:K?5\SJ|q}ps~ujymymxtxmrt}ti@=7zi\ŦĥǨұԳܺªĬŬὣƬʹжū俤ƫܷӯٴݷײӮͩڴͯԶԵȫϬֲصضղ£ϬҰɩͬ״ܹұӰүڷ¤⽡ڷܸ༡ݹ۶俤æ¥ܸٷа|p`TNF?HB?C>;?:7@;8B=:HB?HA=E>;;62;63>96>97A=:FA?E@>D?=C>:?96:5150-4.,/+)2.-2.,/+(0+).*(&#!$!&#!3.+MB;{hY๞شf^TUPHZTLqi_ri^d]Tof\wodvockcXe^U]XOPJCWOG<83}l۹ֶʬֵǪ̱ʯĪ˰βῥܹγèǨ̫ڶ޹侢ƪtyy~}ٶԶʭƫæȪշγմĦȩԳұȩ״¤ɬ˯ʮˮ̯޺ԱصǨrhZPHA:D?;IC@LEBG@:IB?HA?C>;D?;FA=JDAKEAeYOrʫִĤ˩ѰɱƭྤƬὤéж˲⽤״ղݻŬ«߼Ȱ۷ٶ޹ǨήٷѰɪͮϯϮɨЮճԲ̫ͭѰصճȨԲ⾢⽡ǬҰ|vͭέʩťxrxy}{qzln`m^m^m\vdVxfX}l]~m^|k]tfX~pb~rdxjuvz~}qUPHuQKC  ,#;0+8/+'"7-*4+(K>:RE@RE@E83M82]@8R:3-#T>0WA3VC7E840&$$'$#  ^A8WL{PFqJ@mKA{YN}e]|jbUGAF3*Q9-D0'3%                                                                                      "$%& &!% & '")$!-&$/($<2,k^Sxm{sjvmwm}ukwn|sjwogog_zowlH?9:1,6.*3,)4.+4-+2,*1+)2,*3.+5/-6/-6/->62cZR~tig_VC<7(!+#!-&#+$",$"0(%/'$+# *"2*&4,)4-*4,)5-*5,(5+'3+&+$!-&#/(&-'%-'$/(&1*'0)&.'%/)'-'%.'%,&$*$"+%#+%"*$!'!(".% /%!,#'/($4-*0*&1*'2+(1*'2*'2+'3+'3+'3+'4,(3,)3+(3+(2*'0)%91,^RHujv{w{pzo~zvuyq|m`qczl_~pdsfZQHPHBUMGbXPncYodZrg]rgshvjzlxkwk~qxwx}~{{ywx{}zeYNg^T}psx|utuuvx}{wx~~pcVQLt}ywuwzwwy||t~ukzqgu|||vx|pdvdz{|~xh}i[tdqb~k\pavgvhugo`yfXvdWubTn]QucU}i[p_Rl\Pn^Q`RFcTHp_PeVH]OChXKcTGPD:RE;QD9I=4D:2I=4bZQurt~uixlyly|vymvvumb>;5qb¢ɨǧɩǦǧضڹճ㾥ʯеӹ׽жƫ㼠çײկֱ߹Ũæởẞǫϲå⺜ĥշҵũٵүҮִִմťƦ̬ǧ⾢Ͱĩæ˭ҳΰɬ¥⽠ར⿤㿤ŦzibTIIB=GA>C>;A<9=86941>95@:7:5283073/941?:7A=:HC@JECFA?@<9>97842&''+--%$#%0($4&963RNHle\r~szϭǦͬݹɨղ̪ܻݻںعܼںͱ¨ӶؼԶڽçƪʭྡྷѱæ߿ͱڽڼ۽Ӷ㿣ұ̯⿣ݻͰʩĢḪ̂ŧ̰ھ˰ȫӵͯ˯ػ̯ͰѴػǪŧɭ㿣ͮԴĩǭ״ѱǬ㽡⼟޺ӱ~~y̱ʰѶĪ߻ɪӱས޻յаܺݺᾣ¨ճԳٷͭ׶޽޼ugdXQLFDGA?@:7942:4250.3/-0,*1,*/+)-)''$"'$"-)'3/,E;5p^OrѭЭg`VWRIWQJrh^znamcYme[qi_rk_i`Vg_Ua[RQLDPH@52-w̳ۻϰ۸¦߽ྤִ۸¦ݻ߼Ӳ⾤ĨĨ̯ˮүϬ~r~wy~ǫҳίǪʬħҵα¥ҰӲұѱί޻ήմ̬ͯˮȫ¦ڸٶ༠༟{ij\QIA<95151.''&-..122011+,,,---..)**$%&&$"/+(ZMClֳåˮŧ̰дԷϲŨ߼ԳWNEskaph]h`Ue]SaYO_XNh^Tn`UqeY_VLZSKsmdviĦаշܾҴαĩħͭѰ̭ܻΰ¤ϮմǦyhdXNJD@E@;GA=GA>C>:@;7A<9F@=D>;B=:E?HB>GA=@:7?:6A:7@;7D>:NHEPHDhZNqʬ׵ǨϮԴ޼é俦صѯīڷض׵Ȱϸ˲ٷݺʪҰϬģħб޼ٷڸܹٶܸݻЯɪҲֵ̬¤¤ʪղԲťʪĦȩӰ⽢è˫zv~}ç㿣ç忣ٵضʪäȨ̫ЯղϮ̫ǧ~xwyzv~lpucvdm\saSq`Q|hYwdV~j[m^zgY}k\qbqcsdykxjtg}o|nt~{{{zy{zy|zpSNGtZTK    ( E70QD=NC=-($ "0'%F84L>:YID`NIaLH]IEH85"%;/+8-(#"#(  "!  (#3!4$P70R<4N>52'!+@+"E0'O8-U<0K5,H4,G4,2%                                                                                     #$%%& %& '!*$!-'$1(%=2+n`Uut}tjvlwlxn{qzq|rheZRF>87.)90+6/+3,*5.,4.,1+(1+)2+)3,*4.+5.,4-+80,TLEh_W5.))" ,&#-&#.'$,%"-%!*"' 0($6-)6-*3,)3,)3,)5-*6-*5,(5,(-'$.&#-&$,&#.'%0)&1)'.'%-&$-'%-&$,&$*$"*$",%#+%")# ("+#-#) !%0)&$ /'$2+'/(%0)&1+'1*'1*&1)&3+'2*'2*'4,(4,)4-)4,)2*'0(%6-(WJA|od|q~sy|~{~sv}s{quystgqdyl{msg\lbYqg]wlbtixm~s~sxu{pzotz~~[QGaXOxk|os|ztv~}~||}v\VNssxmtz~{}ti}titxy|zu|rtyxtxzxwvh}m^x}sratcn_zgY~k\o`~k^ucWr`TucUsaTqauer`RraTvdWhYMudWm]PiYKtbRfVHYK?]OCjZLYL@SF8wgƥʨЮέȨzʨմݻʱ̲̳γʯ˰˰ũ徢㽠ٵڴαʭ޹޷ݷѭ传忣Ϭٳٵὡ¦ɭŨصԱԲѯִܹͭȧش㿣Ӳʪִ޺ش忣ǪǪǪȫŨȫɬƫŧvfVJBC>:GB?D>85>96B=:=8462.3/+72/:52=86953841A<9B>;@<9B>;;75'((+--#! ' 0($3&?=9\XQtmcv|}ujĨɫήŧݹ״ໜ۸ԲҰʩģزұ޾ظϰϱ¦ʭշ㾡ᾡŧͯˮ⿢⿡ڹбݽĨٻͯæΰϳԹĪʮç⿢ƨæڽع徝Ἔȫᾢ׵ƪػڽֹвĩȭɭũˬåǧߺٵصũ㿣ѱۺèӲѰར⼟۵ȧz}{zۺٶۺũἢڷԳྥۺ߽©ݻֶ¤ϯݻä|neXQMGDHB@A;9<75>9761/0,+-)'+(%-)',(&'$")&$0,*3/,H>6wcTp_YPUOGQLDh`Wwj^mcYkcYsk`tmbibWldZg`WUOHLE>63.|lêῧۺ߽⾣ܺʪʪͫѰˬݻĩɭд׻Էֹϲհ}r{x}~རʬٺͯͰ˭ɬɭʭŨյΰյͭаǪ⾢ĦݹĨ̯çྣྣͮwqbXNGB>96830'('///122/00+,,.//,--)**$%%&#!.)&\NCpү˫ַݾˮͰ̯ȪѮME>skakdZb[Q_WN_WMbZQi`Vn`UnbV^UK\UMtmd|nʭܽټغΰϲ⿤ʮ޽æ߽¦ɬʬĥĤὟåvf\QIJD?LFANHDKEBLFBKE@D?:E@ID@GA=C>:D>:E?D>:A<8A;8D?;KEBPGBqaTϱٹåάѯ⾤γͳīӱѱٷ⽦ݹصܺǮɱŭ޺ܺ޼ἤү¢ͭͮұѲ⾧ٶťѰ㿦۷Ȩæյִʩͭή£ͮѰήӱӰ۸۸մϰ{txv޽гˮ⽠׳༟ܸЯʩصض߻໡俤ִܸʫˬѰϰɫȩå{v{tws}jpn|j}k}kzip_tcq`}iZ|j\vdVn_QsdVvgY{l^zm_{obwiyk~rs~r|qumcKG@}q~_XP!0'%8/-=4/gWPB73A40Q@;J;6?2.2'!=/(O<4N=6_ICYD<7+'"   3&"?2.B41?2/A41>30&# !    E@:<8262--*%%/!3#8'!F2+<.)A40+" .&"/($                                                                           $$$& &!%& )# ,&$/'$1($5*%eXNuj}rypgyofvlyn}rnd[F=73*&=507/*:1,6/+3-*5/-4.,1+)1+)2,)4-+3-+3-*3,)3,(JBL?6E:1D90K@7oh]rqswkvk|n{zmtymysf_VB=7rb}ã¢۹ªǮê侥Ūβʯ߼Ӱس⾢ǩس޹Ʃຝ⼠Эǥմʪ԰ѭհ۸޻ˮħ޹ЮЭħᾣɩͬ㿢ΰ¥߽ڷִæҴغΰƪƧ}zh\LC=A;8?;7?;8?:7@;8?:7B=9?95=8472/4/,831=96>96<73>95D?;E?=A;8?:8@;9720.)',(%,(&.*'+'%!&#"/+)3.*J?7}iYz¡YUMPKDNIB[TLncXkaWg_Uqj_unchaWnf\f_VSNFJC<74/td˪ܺն̮аݼٸٷԲϭάͬ¨дҶԸڽոгåܸ|u{zzƫʮƨ̮ˮŨɬ˯Ĩ߻ᾢྡྷۺ߾Գұͬ⿣çɬͯҰԳܺɪwl^TG@ID?LFBNHDPJFLFAJEAPJGWQNUOKKEANGCLFBSMISLHQJGPIFGA=GA=ZPInaݼƮֵĪϭṯ̌ȯƬ߻ťͮ׶޼ڸִϮϮڷضٶϮӲЯ̬ĦʪƦ̬ٸ޽ڸѯɪЯʩͭɪ̭̬ɩа۹ɩĦմӲȭĩ§ƪ̬uy~qѳ̰ɬ἟἟ὠ἞ӱἠص̫˩޺ܹݺ޺߼ܺ޼߽ྤƪαæʫäɩֵ¤~tmxfxfyg|jwfn^zhX{hX{hXsaRk[Mj[NTJ@$"zo}b[S $ (" 2(%@2.#.&$.'#=3.0#!1'$+# 2(%#,$!TD>QA:7,(A2/5)%                 "'#+&!/*$1+%4.';5.ph^qj`ph^kcYf^UhaWe^U`YPZUL/,'8,(aMGRB=aPIaTM_SMhYR`OIG94                                                                $%$& '!& '" )#!-&#/&"2($6,'k^Svjujwmbvla~shpf\YPH6-*4,(4,)<51:2.:1-5-*3,*3-+2,*2,*3,*3,*3-+2,)2,)2+)4,(RHAKD>+$ *$"*$"-&#-#.% 4+'8/+8/+8/+7/,5.+2,)2+(1*(2*'2*&3*%4+&1+'/)&.(%.'$/(&1*'0)&.'%,&$-&$,%#*$!+# -%!-%!*"&!*$!.(%.(&/(&5-)/)$,$!1)%/(%/($0(%0)%1)&2*&3*&2*&3+'4,(4,)4,)3+(3*'4+&7-(]MB}p~{u{pynuz}{ssfZxi[qcVbWM]TKwk_ymcynx|~}|xw{qynt{|wwx{}yjWPHvj}puxwu|q~r||}|zwxwww{|~|cXNxhywh~pcwiug~qdxj|mrw~q|ot}q~qsyzz{|zv~qph]Qsdo}k~k~kyguerbygX~j\vfk]wdWwdXr`TsbUm`vdWl\OeUIm\NtbRjYKjYKaREWJ?VJ?YKARE:K?5MA6LA8unb}pr~rxkviq}~uiswlx}qb[RIB;o}~££ˬɪҲطٶ⾤ֲֳçƩພԯֱຝ你Ʃ⼟⼠вصģͬձҴǩڸ״æα˭㿢ὢ۹޺ٷմճӲ۹ƪç¥ཡ㿢æϲַˮ߼ܺngZQJD@JDAC>:B=:C>;B=:B=9E?;A;8<7372/73/=85?:7@<9@;8C>;FA>E@>C?;:63)++,--!*$ 1'!:1+WTNvoes}rfǨ˭¥⿢ȫϳˮçˬմڸѱյֶں޿гħɫݹ⾣ᾡ׶æ§ྡྷƨҵȭũƪ޼߼ὠήӱѯϲϲдػǩĦѴػѳʮ§å侢ճ߼ὣٷϮ̬ԲӲյֶұˬ§ҷȭ俤ݹߺãԱά~xŦŦὣԳۺêҺʲ޼ǭ̳̲ѷɮǬལյҲ|n^QIE>;D=;<63=857204/-/*(.*(/+)3.-/+)%" .*'5/,I?7vcTu¡}YVOQLERLEVPHmdZnf\ldZpi_tncf_UleZe^TSMFGA;53.pӱǪɪط߽۹׷޼߼⽡߻ϳ׻ٽӶӵԶΰyx~yٶὢçʭгὡҰũǫ߼㿣дǫ߽Ӳໝܹͮ¦ƫŪƫᾣὡݻȩudVLB;5?:6831)))/00122011,-,-..+,,())$$$"""%"!'$!>5.kZL⽠ʬ̰Զݾڻҵ׹ƨղ׵PJBumbhaVd]Sd]Si`Uh_Uj`VufZm_TbXNd[Rzsi|nɮѴնԶԸȬҰέϯϯбӲ⾠ǨɪnrcWQICMGBMFBMHDTNJPIELFBJD@MGCSMIQJGJDAA<9GAOIELFCQKGUNKOIDQICh[SpatæͲٷճҲƬƬƬϯʫϰմѯέٶ¢£ǨѰȩŧ¤ϮȨ˫ִضֳ۸۸޻ԱίƨȪӲ̬¤¤å׶ί׶ٷ޻éв~u{}q˭αʬŨί¥׵¦㾡ŨĨԲڷݹص޻èȮྤྣ۹ΰ۽§ɪ⾡Ũ⿣ѱ̭մ߽㿤صصʫұմҲۺῥܻή{spnl~ko^r`R]OD ~uj|f_V )#!2+''!%  $          '!' % %!*&!-)#.)$0+%0+%0+%1+%3-'=70kdZnf\ph^ph^ph^sk`tlaulawnc:61#% .*(B:6\LGmWPoTLcLFL;7:-)3'%  @,&D,&kD:RFqKA^B;M:78,*/$#+                                              $%%'!'!& ("+$!.'$1)%3*%5+'WLCh]RocWn||naC:40(&4.+60-2+):3/;3/91,4-*2,)2+)2+)2,*2+)1*'0*'2+)2+)2+(3,(PF?KC=.'$-&$,&$.)'1*&9/*8/*7.*7.+7/+6.+4-*2+(0*'/(%0(%2)&3*%4)$0)%.'$.'%/(&1)'2*(/)',&$,%#-&$-&#,%!.% .$ )!#& .'$0)&/(%/(%1*'3,),'$)"1)%/'$/'$0(%1)&2*&3+'4+'3*&3+'4,(4,)4,)4,(3+'4*&5*%WH=vj|xvxxuvyx|q{qt|qfvgYsdous}p{oy|~{}~zy}||zux}oOIC{pe|ottt~s~s{{y{yx{yvtstx~TJBUJ?~m]o_uesdvf{jn}lp`whv{u~qxzvtuy~tym~sgvi|l_UJ{~tcqomp}lve~k[yfWm\Ol]o`}j[wdWm\O^PEiYNucVtbTfVIbSFucSjYKeTGcREcSF\NBJ?5NB8SF;QD9TI?xqezn}qymxl}sgr}~vjuwly{oXRJSJA{ŦͭήӲֶȪͪ߻ٶҰ׳Үүݸڶײ⺞ҵ۾ػȪ۶۶ʫ俢˩âὡèũἠڸڶ⽢۸ܺ׵ѯҰڷִݺ۸ճ˯Ǫæܻӵɬܺxi_TMJDAGB@<85D@=HB?JEALGDIC?A<8<74;74=96A<:E@>D@=>:7;74>:7A<9@;751.+--,..!,&"1& @82b^W|q|ykִʫӴ׸ݽ۽շַַָܿܿշĨȬϱŧ̮éݿո㾟ħɫĦƩŨ¥ΰ̯ƨȪѴݾѴ༞Ǫٽ׺˯ֵ޻ϮäȩҰڷũçͮɪѱط߾ܺʪ¤ٹԲٶڷɮͰ޹ãǨ}t¤ݻͳᾦūϴи̴Գյ޼Ϸ׿ռζƮήysdXLDA;8?:782/:5272061..)','$+'%.*)+'& %!($"0,*0,)C92saRuɨ_[SVQI[UMXRJmf]nh^rkarkarkahaWng\e_VTOGHB<63.oťӲԲ޺¨˭ίӳڸè˯ɮūǬдͱ̯ϲԷд¨wx~~{ὢ㾢㿣ɮв̮ŧ˫̫ӱͰܼǫӶָٸ߼ʮƪྡྷճԳܹܺݼʫvdVK>83:52830***.//......,-,,.-+,,*+*)))(('%"!*&#I>6taQyشٵȧ⾢ϮұϯԴɬǨὠSKCqj_e^Tf_Ug`VkcWg^Th^TvfZrdXh]Rb[QvpgyҴҴϴػո̰ӶĨѲѲ̭Ƨå⾢ᾡѰqyj^YPKNIFOJFLGBKEAOIDPIEMFBKDALFBIC?HB>F@GB?GA=OIERLIQJFTLGk^UnɪƩȭ޺ڷ׵§ʰŬɩåɩƨ׸ٶ״Ūʰٶ̫̬޺ݺݼֵͭҲضѰƦʩܺڷض⿥Ūٷ¤åŧǩħʫħ׷ӳ۹մճѰ~t}sǫũ㽟⻞ڵݺܹЯұར˯ĩ⾣ĨǬƫȭȮ˲ʯɭֵӳյԵҳȫ˯ᾣִή⿤ƪçũг༠ݺ׶ܹȬ§յĦƨʫ|yfsbS woe|yf_V,4)#("            !$ '#+&!-(#/*$/*$1+%2-&3-'B<4nf\ph^qi^ph]ph^tlatlatlatk`3.* #5(%D40A2.E40P=8N;7B0,O95L84lI@XL];3tI?xLA\;3B,'1$!%."?/%^F8_G4XD.R>2WB9H70@2*.$6*'F50=-)#                              #%&'!'!& )"+$!.'$2)%2)%/&"( .'"?60]PFaTJ1)&,&$0*'2,)3-*0)'70-:3/90,3,)2+)2+(2+(1*(1*'0)'0)'2+(1*(2+(3+'A83G@:.($-&#+&#.(&2+(:0+7.*6-*6.+6.*3,(1*(0)&.(%/(%/(%2*&4*&4*%1)%.'$/(&1*(3,)/)&,%",%",&#-&#,%",$ ,"&& .*'1)&1)&2*'2+(3,)3,).+))"1($/'#0(%1)%2*&3+'4,(4+'3+'4,(4,(4,(4,)5,(3+&4*&7,&UF<|maz|}~zx||yu}x}q~r}pyk^zl~prxlsg|pz{z|~uz|xz~~sytSLEtj`wj|p}q|q~sy}{|}|yxwwxyyz[RH  %91*C:1J@6[PEg\Ri_U|qesswz{|qvw~~{m_x}ww|k[qb~mwgzjue~j[zgW|hXp^PzgYm^o`yfXubUvdVxgYvdWucUjZLkZLfVIbSFbREbRD`PD[MAJ?5E;2RF;>9661/;63;63=85A<:A=:FA?B>;A<9?:7953731/,*,--*++ .'$1$HA;lg_xqˮնָػֹͰָڻʬ޾غ˰ʯ׻˰ڹ̰ϰǩĦ׹Ͳټַ⽢߻߼̮ܽаշ¦ѱѲټɫ߼¦βèʭȬçڶضЯ̭ط̰ʯȭɮϳؼչͰٶϰӳ̬ä㿤㿤ԳƪsǨӳضִ׵Ϯ⿦ȯиռϬݼڹݼȯȰٷ۹ྦͮ{l^QI?:7<64930?:8C>C=8FA=KEAKEANHDPJFE?;E?;GB>JD@OHCm_Twѱܻʪɪ⾤Ϯɪ߽ᾦ˪ϯ߼ٷܻ⿦⽢Ǭӹڷܺ߼ܹҲճղ׵߻ճϮˬ׵ѰѰضཤϮѱƨմԳĥֶǩƩϰ޼㾤~u~uٷåŦ忡ħ⾡׵մ̫Я߽ǬγȭʯͲĪêƫϲڹֳ޺ݹֵյڸ޼Գƫƫȭ㿣⿣འͬݻҲӳݻᾡϯήϯаԳѱ̭̭we pi_y}~qZSK            !&")%*% .)#/*%1,&1+%2,&C=6qi^ph^ng\nf[kdZmeZng\ph^og\1/+  $,!*(      "',!8*$1% ) 9*%X<4J3,/# ?41QA>D62YIAYHAL=6I;4WE?[JDTE?L<72&#&1-                      #&& '!(!' *",$!/'#0'#+#' 1)$80+/'$.'$/(&.(%.(&/)&1*'2+(0)'5/,80-6.*1*(1+(2+)1+(0)'1+(0)&/(%0)&1)&2*&5+'?61B;6/)%-'$,&#-'%1*'8/+6-)5-)6.*4,)1)'/)&/)'/(%/(&0)&1)&2)%4+&1)$/($0)&0*'/)&*$!+$!,%",%"+$!( &!(!4+(6-)3+'2*&2*&2*'3+'4,(4,(3+(,)(%1)%0($1)%1)&2*'3+(4,(3+'3+'5,(4,(4,(5,(5,'3*&5+'9-(A4.H<5TIAdWNpcXzma|octvqryyvw~uwykxt|pznzm}q{z{|{xu}rxxx}}{XPGkbXthxmxn{p|rxu~svz}}~}{|~ocX*(&)&$#! !61,NG@\SKk`Vvj_zncynd~sgr~e\Stdyxy{owdU{is{jm^vf}iYxeUm\}iXraSvdWzh[l]weWraTygZxfXp^Qm\OvdTm\NZL@RE:cSEYK?NB8NB7D:0B80G<3ULCzmznznxpeymwiv}~|o|zn|{oOIAdWMåήʭ}ЯֵɩڸٶѮܶ濣侢ү԰㼠еȭ̲ƬἡִĤȦˮƪ俥ԳåԲ§ͱūصĨӷдʮèᾣĨæԵӶα˯̮ƨƨ״ܹqj\RHA=A;8=84840;62A<8?:6=8561.0,)620=96?;8?;8>:8D@=C?=73162051/61.*'&,--)**!/(%2$RKEvof{ugɬֹ׹ܻܼӳعӴɬѴд߿ѱǨŨ̯ӵʬ¥޼ʮвར⾡ܹƪ˭̯̯ݹڵϱαȭػϱֶΰʭѳͰ㿣ܺȩֵܺԳϯ޻ɭеʰܻʮǬڷť̬ήŧt~Ѳ׷ѰãŦ˭ѱݸέίմԲа߾ʲǯĭì⿪m_YME=84:52;63>97>97=8661/-)'-)'*&$+(&($#-)((%#-)&1,)K@8iY|Э{e_V_YP_YPZTLhbYlf]og]ph]mf[haXng]c]UUQIHB<52-z̬ڶéƫɯȬ§߼ٶضܺƫͰȫȫ̭Եϱū⾦x{{ʮɭ俤Ǫʬΰв༠۸޽Ūֺ۽Ǫۻڽʯʮ㾢ܹܺŪῥȩxteZPHCA<9;73*+*-.-./.+,,*++*++)**(((())&&&0,*2.+F<4p^N|gݹ۷ִའæ˭ȫݺ׶XQHrj_d]Se_Vf_VmeZf_Tf^Tg[Ql]RqcXf^Txqg~ҵɬұصѴƪ⾢Ȭȭ߽аԲٶĦ߾ྣæqg\STMIPIERLIWQMSLHQJFQKGRKGSLHMFBGA7qi_rj_umbvmbph]jcXldZpf\h_U%#!#"!'&$,*(0.*63/1.*1.*)&#            1&#+"5*%8,(1&!/% 6*&1&"#&$'-:#@("0 3%"5'#5($,"+%"                 #%& (!)")!*".%!,$!%$1(#2)$2*'.'$.'$0*(/)'.(&/(&2+(1*(/)&3,)5.+5-*1*'0)'1*'0)'0)&1*'1*(0)&1)&3+'4+'5+&5+&*$!*$!,%#,&#-'$/(%8/+7/+6.+6.+3,)0*(0)'0)'/(&/)'0)&0(%3*&6,'2*&.'$.(%-'%.'$/(%/)&/($+$ $#8/*90,7/+5-)2+(1*&1)&4,(5-)4-)3+(+'&#2*&2*&2*'1*&2+'2+'4+'3*&3+'5,(5,)6-)7-)5,'4+'6,(5,(0'#+# ;3-=5/4,'7.)/'#8/)6-(7.)A71J?9RG>_SIj]Stg[qeqswupc~{{ztvi~suuwxw}rzp{q~t|ry|~{|yZQIjaX{nsswuwt}r}rtwyz{~|}|uhD?:B=8<84:62;84=96:6352/-*))'&#"!  )%!:5/E?93/*B:2UJ?cUIgYKbUHrboy~{}r_Qziotep`rbk[yeV|hXp_xeVsaSq`S|j[m^veVqaTk[Om\OucT~k\ucThXIUG;PC8RE:<3+J>4QD9I>4?5-VMD|pymxmvodwkzmv|rz}p}ymGA:sbV}Ƨ׵ϯ}Ĥέ̩ѮԱέάʨԱʮĨἡ俣⿤㿤çг˯⾣ٷа߽߾ԳѰֶڸճܺаضĪῥ¨§ͱ׻ټܾڻ׸бݹέzj_SK?95<74D>;B<8@;7@;6<74>96953:74>:7B>;HC@D@=C?;=9773062/52/51.*(&-..(((#0)%4&ZSLzo|se۹¥ֹܿ۾ˮϰַշгˮвն۽ҵƩɫѲٻʭʬɬݺήήȫȫ˭⿣طܺ⾡ݺܸϭˮ§̮ԶֹҲĥɫɬټԹϲ˭ȩའ¥ħĩħ̯̰ϵɯŧԵ̬ӲݻĪèڸ״ɩ~t|ѯүʨä¤ŦԳἣܹݼȯªֵ߽˴ϸͶܻմpbXLDE?<@:8941941:5372150..)()%#+(&.+),('2.-,('/+).)'OC;qaݹhbXc\SZTKWPH_XO`ZQkcYoe[nf[haXnf\c]TYTMLF?52-ݺʮéɮ׼Ĩ׵Ҳȩֳƫ⽢価ʬί̯俤״wz}}~ɮȬǫǪ¦̯ѳҴħ߼ƪ̯׹ָȭĨ㿥߼ὡ޻ݻյͯzsdYPIDC=::63())---.//+,+)***+**++**)*))'''/,)*'$=4,s_O}Ұ¥ཟŦضٷϰӴǩ⾠ĦQKCqi^b[Qd^Tc\TldZjbXog]dYOj[PrdXf]Twpf~׸̮ǩὢ˫Ӳ̭շ߽Ǫָ׷ط޼qdWNGMGCOIERLIVPMYSOYSPYSPVOLQJFPJFPJFNHDMGCLGCLGCLFCHB>HB?MGCQJEbWQuh߻⿥ض{ܹմѰɫбٷа޻©˱Ĭ©Ǯ˱ɯŬª©ܹ̫ϰ߼༣ضέѱݼ޼⿥ڸݼٸճմұɪɫ˭ʬʫѰӳٷմ׷ֶٹȪȨy|p}ʮèаߺݹἠ㾤˯ἡ§ʮպδŪƫ˰ĪéĨݻݺའյմ޼ڹұǩ˫ܸܺŨѴϰĨ¦ϱۺа̭ʫӴֵ¥ǪԳͭƨ׶׶{i qj`xswQLD           !#)$,&!,'!-("2,&1+%-'"IC:74131.52/30-2/,51.51.-*'(%#    >6.F=4]OCwi\p^Owfvgrb}krbraq`l[m]n^~j[k[weWygYxfWo^QfVIiYLtcTo_Rn]OdUG[M@L@5QD9I>3D:0NB7L@6F;1\TKtznwlzrfwjpvwqwr|}ujB>7|j\ˬѱӳϯȨͭϯȨѮήԳȨִܸܸͫ޺ٶຟαٷձڶٶĤ˨ߺҰȧťϮȨŦӲè˯ƪʪǧťӰݻĥɨܺĩɮèũѴԷǪའ̬|udXLC=@;7=84?:6@;8B=9<7451-941731?;9EB@GCALHFEA?>:7952952<74841952:63-+*022)))$1)%7*"`YQtz{jڸݼƩ¦߼̯ʮŪӱݹħΰӵΰԴ̬гҵӷϳʭåʫ⿣ӵܾȫ¥ܹЯǨٹаڷ߻ݺέҰַܸ׹Զΰϱ׺ոǭʪˬȬȬͲǭݺ޻մݺཡǪβ߼ĪҷپԳƩɪ޼ƫ޻Բçཥȭ~{v~ƧֵܺǬŪƪȮ߼έɪ۹޻ͭƩظԳݻŮƯƯཥήwi[SKDAA;9:52=97:532.,2-+/+)+(&.+)0,+,)(1-,($"+'%,(%QE8    $*$-'!/)$1+%3-'-(#+% RLDwncyqf{sgxpexpeumbtlarj_jcY!!##"+)'*)'$$# !! !!    )(&-+)'%#         ( )"")"B4-5)#;.+>1..%"       #( '&( ) $$/(#1*&.'$-&#/(&/(&*$!-&#-'$0*(0)'0*'1*'0)&0*'5.+4-+3+(/)'/)'1+)1*(1*'0)&/'$1(%1($/%!)!#+%!60,-'$,$!+$!)# ,%"7.*3+'2*'3+)1*'.(%.'$-&$,%".'$1*'5-*6-)7,'5,'/'#/&#/'$.&")"!#*$!-&$.(&.)&;2.;2-7.*3*'/($0)%2*'4,(4,(4,)4-*-)''"5,(3+(1)&0)&1)&3*'2*&3*'4+'4,(5,'6,(3*'*# +.+80-XOHtet~|wr{oxluivjujymcj`Vf[RlaVdZO^TKHA9H@9uwv{zr|qtt~r{pwmxm|qwyy|qwmzpv{{|}~z~y~yj`U_WO|o~ruvtxnvl{os~sxnzo~rx||{~yluj~tjtj{pwmwmzqhriahaY`YR]VO[UNWPJSMFUNHQKDMGAKD> $"84/PIBZSJbYQ`XPPJCJD=A<6:50;5/4/)&!QNJ@8/eVIk\tcvfvfl\rbm]o]tb|iYxeVyfWweVvdVsbTsaSraRp_QbSG]OC[NAK@6B8/F;1MA6MA6D:1H=4I=3bZQv~r~wk~uiugpv}pruuzyqf>:4udWvŦåƩҳֶϰΰǨͬ۸ִ׳ضåȧĤϫڶǫʮ׵̪Э߻ͭâťȦӰȨãἡĨརڸ⿦طӲ˫ǧϬ޻Ϯ˫׶߼޼ִ׵ϰɪڷٷ£{i^QFF?:ID@HB?IC@JDAKEBB=:73/2.+2.,620A<;C?97?:8=97:63<85:63731952))(022(('' 1)%=1)kdZ{{ziͰʮħֵڸ¦ϳͲǫ׵὞£Ȫ߿ӳȩ̮αɭˮɭŪ߾ĨˮȫԷϲʭίƨƧƩ߻Ʀ˫Ʃ¥༠ˮȮ˯ȪԵշƫ༡äԳܹ޼״Ǩаΰ༠ЯཡػƬֶ̭ݼêѰƧصŦصڸͭڹڷèƮֺzt|{ϯ޻ЯέܺȮ˲¨Գұ޼⿥үͮ۷ë޻ݻڸѰȨwh_SKG@=A;9953>:8=8773151/2.,1-+1-,*'&*&%/+*'#!($")%"J?7udϬsb]U_YQRMFUPH_WOb[Rf]Tsh\meZoh]qj_c]TYTMSMF73.ݺϭ۷ǭĨϲֺ˯ܺݻٸ׵״ຝشƥ ƥάťzkz~z~}¨㾣ũβֹѳбίɪв׸ܼܽҳƧ۸¥ħ¦ɭĨ޻Ϯصٶŧxh\ME@?:730.()),--.//,---..---,--,,,()(**)-)')&"B91wdTཡȫѳӶçȩ˫аϮڷRLEvmaiaWslbslaumbf_UvncpeZrcWpbWe]Srkb{ƫ§Ͱΰ׹Ѳ༠ۺʮ۾ܽ¥вܾǭ|mbXOJNHCQKGWPMUNKPJFQKGRKHVOLRLHPJFMGDKEBPKGSMJSMIUOLYSPVPNUOKQKGdXQuصȭϳʯϯ}׵ճѲѱǨྦྷ߼༣ڷŬ̲ѷϴڶܹܸܹȯǮ༣Ŭɰ侥ճұԲӲʩЯԵֶԴӳ̬յū̲ضѱۺὣ߼ݺ۹׶st}ūͲͱܸղղص⾢¦çĩȭ߼մִƪʭŨʭæٸ㿤׵ʪȩɬغ̮俢Ȫɬʭ㿢ǩɫܻ̭˫ħѰܺ߾ҳĥܺ߾˭u"pi_tr~|z}pog]FA;      & ,& .'"/)#1+$3,&/)$/)#QJBtk_vmbypdtlaumbumbtlarj_haW##"   !  #"!(&%'&%"!! .,)53.-+'   $5*'F73aKFaLF`NGB52   #( &&'$)"/($/'$.'$,&#-&#.'$,&#)#!-'$.(&1*(/(&/)&0*(0*'0)'3+)3,)2+(.'%.(%0)&1)'2*&2)%1($/&!+"&% %,%!70+-'#-%"+$!)# *#!4+'2*&2)&2*'0)'.'$,%",%#0)&2,)3+(5,(6,'6+&7-(1)%/&"+#$!+$!+$!-&#,%#-'%,'%7/+80,4-*2+(/(%1)%2*'4,(4,(4,)3+(-'&"3*&2*&1)%0)%1)%1)%1(%2)&3*&4+'0(%*# &!0*&3,)5.,930[SMufu{z{zyzpxn~swzvzlzk|na5/+rfvjrx~p|o}rwv|qzn{p~sttwwm~si}rwx{xvttzy~zpdYYRKuwwvxnzqg}tizouu}r{qs~rvy|rv}z|{wv~svluk|si|rh}rhzpfvmbqg]ME=2,':4.51,73.C>8UNFlcYxlwy~rvkxoexod|rgzm{mter1,%82*n]Oq`vdV}j[m\ubTn]|inq`yfWr`QvcUraStbT{hYweVhXKn^Om\MkZL`QDOB8F;1H=3L?5D90B8/F:2g`Vur|ujyluhrvwkstyyrj`=93xgYs~ȫ¦ˬƧ{£¢ҰЮťãѯֳܹӱɨղڶέʨݹ߼ҰŤĤťЭ㿤ִ߽׵մྣĨȫ߽ɨέɩϭ޻״ΰ޼¥߾˫ٷֵqaSH><62E@=FA>GB?D?E@>B>;C?;K;6XF>UC=;.+/$#+" .%"0&$+" 0#!,",!:,'.$ "$#*# ,%"+$",&#-&$,%#-&#-&$+%"(",&#/(&0)'.'%.'%.(&0*'/)&2*'1*'1*(.'%/(&2+(3,(3)%0&",#' '!'!&!& )"4-(,&"-$ *# *#!)" 3*&2*'2+(2*'0)&.'$/(%1*(2+(3,)3+'5+&6,'6-(8/+2*%(%+$!,%#+%",%#+%"+%#)%#4,(3,)1*'0)&/'$0(%2*&3+(3+(4,)3+'.(&"1($1)%0(%0($0($0($1($1(%/'$*# #,*'2+(2+(3,*4.,QJE{k~~}xwxy|xx}p}owh+&"pcXvj^uhvixl`wk_si}rszo|puvttyx{~}}szp}sx}pbNHB}qs{pxm{rhwndsj`woe~svvuwz{}z|ytvyxxusdZQ81+dXM}mpurw{|xt|puy~ywq-'".)#4.'^PDweVvdUtcp^wesbrbn\p^OcSFl[M~jZzgX{hYsaSm\Nk[MjZL^OCk[MiXIXI=L@6F;1F;1G;2NB8ng]|p~rxrgznxjsyuir|pzxe^U?;4oawyr~æŧǧˬ¦æŧ¤z{Ťʩض۸ڸԲ̪Բ׵ԲŤѯԱѯɩ״⽡ݺཡصܺضֵֵ̫ܹܹྣῥݺ㿢ڸάܺٷ޼ྡྷڸٷܺӲmtdVPE=61-952D?A<9=85@;7?:7841620842:64;74;74842:75=98B><<75=75>9750./+)0,*,(',(',)',)'+'%)&$+(%+'%&" B81q^OpmfaX]XOYSKg`Wd]TjbY^WNaYPf^Tslbnh^e_U[UMZTLF?8ͭ޺ũд׼ոپҷͳéԳܺ׶ڸ̫ӱղٵæɩxjz}|zǪܸ߻㾣ὡŧŧ¤ϱȫԲ߼㾣ΰũũյǩֵڸݻۺ޻ڸ⿢ᾢέpfWLH@;A<930.,..+,,...*++*++,---..,,,++*+*)/+)*&$F<4o_ྤ׹ָϳٻ߼£nKG@kcXaZQtmcslakdZ_XOf_UcYOl^TmbWf^Tlf\|гӵΰָԴԵǪ¥ѱѲӵ̮¦ǩѱvl`WUNINHDOIEPJFMGBOIERLHSLHQKFLEAID@MGCOIEQKHOIFRLHQJFLFBJD@JD?PHCpaVpӱ㿣価侢ٷҶԻзжʹêལ޻ڷڷطֳǧ˫ִɩäɪұɮȮἢʰպٿ˰޹èὥұ״ܹѯƧȩմ⿥ӳ׵ԳططϯƨѰྤèܻʫ|{ĩὣ忢濡Ƨȩ忢⼟¤ϰͯĦȪҶټĪĩƪƨظҳԵα߼гα¦ָ׻β̯ũũῢƩɫᾠֵħ¤ŦӲ߽ۺٸڹӳմа¥}6.'haYu|wuu{oqj`HC=     (%".-+$#" $(",%/' 2*"4,#7-$;0%A6*H<1J?3OD8SI>VLAYOD\TJaYOVPH.,*%$#""""""!!!!! !! #""$##$#"$#"'&$(&%*)&1.+41-,*'!! )'#2.**'# .$ I93I95M<8UA?O>;O>:M;8:+(?-+<,);+%R<4aE;Y?6C1*D2+:+$'* ,%#(#!'#!*$#*%#)#!+%#,%#*$"(",%"/(&0)&-'%,%#-&$/(%/'$5+&2+'.'$.'$2*&2*'0)%+# -&",&#*%#(#!&!% % ("4-(-&#/&!+# *# )"1($2*'2+(2*'1)'1*'1*(2+(2+(3,)6-)7-)8.)7-)5,()# #*# *$!+$"+%"+%"*$!)# *$!-)'3,(1*'/)&0)&/($0(%1)%2*'4,)4,)5-)3-+"/'#2*&2)%3*&1)%0'$-%"(!",�)&1*'2+)4-+2+(2+)4-*e]Vwivstuwv~t|~rxlxkuf$ eXMpcWxj]reYqeZtg|o|qf{peznyv}qxnvvtxzwyz~|}uxsyteMGAxm~rvkypfulcyn|shzqf~ujtzyww}~||}~~{|z|{zxuj`V4/*utw}~}}|{{~~w)$,&!.(#0+$UI>n]O|iYkZo_k[|hXxe}iXm\Mn]NtbTraRweV|hXq_Q`QDaRF\MANB8^OCVH=I>4G<2G<2H<3J@7tmb{o}qsmczm{muy~~uiqymwwaZQHB;{kywqoִῧط׸Եͭäѯάɧѯ˫äƧŦƦϮĤݹ߽Ϋἡ۸ɩŦǧ۹Բܹƫݻ߼۹Ҳʪմճִ⾣ܻ̫ɩЯŪɮ޽̭Ѱճ~kdVJA:4=85@;8D?:7963;74;75:64=:8?;895341.(*)/00!-&"/$[QH{sո׹ͯϯŧѱ̬ħäڸçʮ˭ۻ̱§Ӳͭྡྷ¥յ̯ܻΰӲϭ׵ɬַ۽гίбཡԲϯĦȫݾնвֹϳضǨԱڹдӶӵˮѳɭԲǨͬұܺ⾣ݻӱȨɩʩյʯ¨άǦ}|r޻ڷȨǨᾦ޼״ճͭͭݼ¨ɯѹ©Ұ˫xj_SLF@=:53942;642-+2.+0,**&$(%#(%#*&$+'%)&#&#!&#"($"F<5yeVu{jmg\d^U^XPle[cZQi_UaYPcZQf^Tnh^lf\e^U_XPZTKF?7ήٷὢĩеҷжеٶ§۹ٶɩϭ۶Ȫ߻ħݺĥyjx}z}ֳҰ۹޺æ¥۶۶Ũո̰ççܺ޻ٷӲЯұݺ⿤ç⿣㿢འˬxqbUOF@FA>:64./0.//.//,-,-.--/..//,--**)))(,)','%LA9udմŨ߽ʭʭݼѰ״ϭsIE>jcXaZQtndrkajcYaZQf^Ud[QfZPnaVi`UibXxҵټܾ˭̭Ŧ忡ܹвնַ׸ˬٷ޻ཡpj^WVNJOHDIC?MGBNGCNHETNKPJFMGBLEALFBJE@HB>E@;731./-+-,*-+)/-*0.+2/,41.740<84C>9FA;GB71pbUtfZpcXnbWsg\}obzlw}p|pwwxysxmsvsx||v{owsd=94wmcxm}si{qftiyn~ti}q|pt{yxtvyytw~}ywyyy}~zvxtwhov~}}{{{|~w&")$ +&!,'"-("C:1p^Pubxetcn]xfm]tbS{gWm\ucTl[MxeV{hXvcSeUHdTGYK?VH=MA7E:1<3*=4+C90J@8yrg|p}qtmbzm}ouz|xksymtuUOGPH@|l|knrwz}ȪǩǨղѮֳͭ¥ٶղŦv}Ŧյٸںյܺƫȭϳͱǫ¦߽ݺ⾠¦ཡص̬ͭͮƦ̪ڸyhbUK?95<74?:7HC@KFDHB@D?<:5341/731:64953?;8@;8@<9B>;?;8=96953841<85<85953*++-..!.($/"i_Us޼߾ũˮټгƩ׶Ӳ۹ۺֶƧ׵ڹѱʪ޼޼ֺͰྡྷմط޾æŨƩæ̭ίַڼѴֹβֺ˯Ĩħ߽ǩ޺ƧڹҶϳ̯㿤Ѱ˫˪ͬԳŪɮ޻ŦƧ߼Юǧ⿤ƪçٷҲݺصť۸ҷˮ༡yr~ªɯɨӲͳзƬ俥ղ¥ֵƭ˲ǯὥӲ㿨êЯxugcWOJC@=85941:534/-8312.-.*()%#)%#(%#+(&'$#%"! *&$J@8yfX|ʩwhmg\g`W_YPkdZ`XOh_UaYOc[Rf^Tle[kdZe^Uf_VZTLH@9ٷĩͲеҷӸպԹչѵҶչ˰ܶ㼟߸ί㾢Яykw|x|{{|¢ϭརħαǪ⾠ʭαʮƫǭū޼޺ض׶ݻྣڸ⿣ὡڵղ¤yxg[PGAF@=;86.00.///00,--....//-..,--***)((-*(/+(TH@weǨèǩĥĦྡྷ༟æ۹zC@;f^T`YPtmcsmbgaXa[RhaWiaVeYOn_TnbWg`U{̯β׻̯侠۶¢޺ӰƪͱǬԶԶȫ¦z}l_XPKQKGQKGOHCQHCQKFKFCMIFRLIKEAE?;F@;MFBOHENGCJD?A;7E?;MGCPIFNHDVNHzj_u¤Աس˩ǧ|ɫѳܻ߾ݾ߾⾥©߽ӲĦ˭׷ضԳ˪ͭʩѯ༢ǭỠƪҵ˯ĪʰŪ¦⾢۸⾢մڷ༡ɮγ˰߽Ǭçѯ˪Ѱݼӳ||̯⼞åʫƨĦߺ༟¥ϲɭƪ˯ũƪƫ⿣ҲƩҲΰвƨɪƪѴֹٽԷϳȬǪŨָٻίŧǩͰͯʬƪƨǪŪȫ߾çۺݼҲƧs;2+XSKy|}rzn{o|thhaXFA;              +'#62-LHDPKFMICKGB?<9/.,#$#(&#;82HD=FB9FBMHAVPH^WO`YQd]TjaWpg\neZiaWg_UaZQVPI?<7'&$! +)&20,-,)"!   $##$##%$#&%$&&%('&+*(.-*,*')(&*)'0.+63/31-.+()'# !0"2$-!3% @0+fWS{kdohqiwgafWR^PI`QJ_NKfURiYUgXU[QNSIFC967,'3*&/(%7/+C94C50K;7?2/-%#,%"1($0%") :+(6)&3($A3/L:5tQH}SJvNHT=86-**&$,'%0)&3+'4,(4,(.&# & )# *$!*$!(" (" *$!+%"+%#*$"*# *$!+'%,&#/($/(%.'$/(%1)%2)&2*&4+'3+',$ ! +"3)%,$!$"*$!-'$0*'/(&/)&/)&3,*2+(3,)1*'2*'0)'h_Wv{vwzzyxx~stu:3-G=6I@9SIA\RIdYOwh[wg}mquhyl}psxztuwzz|~{z~~{zk951uk`wlwlzn~quiujsywuxv~r|q}qrs|nuz}|{z}t~rx|q{psw}~~}~|vzx.*&xj]pw~}~|z|}~xw$!)$*% ,&!.(#<4-gWJl\zgXp_P{hY~jZ{hXp^OubTkZLlZLp_QvdVxfWr`QdUHZL@SG;6350-40-<85A=:?:8;75620842=86?;9D?=D@=B>;>:730.+---..#0)%1"wmbr̬ƪ࿣çརظ࿥ɮ¨ݼҴշˮåƧƧյյҲΰʯֻʯͭɪΰȬαٺ׸ڼعͰʮպʮطԴƪ˭ƪոбҲ㿣۹ڷťֶʰĩֵ׵ˮг̰ܿڹԴݻὢصٵڷໞ̫ܻ߻໠ӱܹ۸۸ݻϯͬ޼íz~wtŮǭᾤүƧŭٿδ侤ص۷״俥̳Ǯݻῦƭǧ|}nj\UNGDICAF@>F@>94240.-*(-)(*'%+(&,('+'&)&&'$#"/+)TH@qc˩tfmf\e^U]VNe_U\VMd]SbZPbZQd\SjcZkdZf_VhaXXQIMD<߼̱Ͳеδͳ׼ݿαǫͮǪɬ̮æ׵έylyx~p|zzxЮٵڷ¦ɭβȬߺٶũ˯˰ֶڻܹͬڷ㿣ݺĨའǪǪʬʭԳzvf[PHCJDA>;9/00/00./.---.//-..-..,--**)&&%+(&($"J?7q`¤̱ڻϱίƦֳĨҴŧC@:aZP^WNundxqfgaXb\TkdZjbWbWMq`UseYg_Tɭ޼ར۸἞ݸໞΰ޻ίὡ¦ɭβԴzmr]PVGAQ?8N;5T7.Y5*[<3Y=5V>6SD>NE@E?;E@;NIEQKHTNJMGCF@:++*#$#"#"#$$$$$###!!!  !!!!!! !!&%%1/-8621.+%$#"""###"#"!!!  !! !!!  !!!   !  !!! ! !!!  !!!###$$##$$!""""" ! !""##"%%$&&%&&%%$#%$"+)&-+'0.*41-30,63.0-).+'#!&" 2,)C:6MD?B:7,%#!(! )! '! ! ")"1*%G<5;.)9,(*  (7)% *&,6!N1,`AVI=UH=NA7I>4L@5J>4SJA|uiym|pyqfzrf~pv}s}pv}q}qrKF?UKByhoz}ĦίƧ̮̫ѱ¤˩԰ݻˬήͬʩͬǨ{ĤŦϯݼʰྣʪǦ̬ΰаӲЯ״ЯԳаԳӲط۹ڷ༠ŧͭym_S?9351.<84@;7C=:F@>GB@FA?A=:;73>96E@C=:>96?973/-/+)+'%*'%.*)-*(-*('$"  "-)'RGAwhڶvhpjac\T\VNd^UXRJVPHZSJ[TKaYPibYibYhbXd^URLERH?۹¨ĪʰжٿӹպԸؼˮƩѳͯ忡侠ݸضƥuh}~q~x{}{z⾢ڸѯ߻̯ƫὡˮʮŪ§޼æʬέȧЯྣȬ̰ҵŨ⽡ṵ̃˱߽pdUMHKFC<86/00.//-..---/00-//+--+,,)))'&&/,*%"90)xdT¦ݽ޽ܺѰ޹ѳϲѲDB<^WN^XOsmcvpficYe_Wng]kcXcXNq`TteYh`Uz޽ڹέЮƩոĨ⾢αٶvq_|WErG4yL7zL6yL7vI5mD2g?.W4&C$>F$T, Y2&W3)O5.NA=OIFKFBMGCPJFRLHOIEOIESMIeZR{lå޼ἡڸѱYK@hSH϶ѹɲ~rdɨ߻§״ŨӶеչ̰۶ڶὢǫ忣⼠ǫ̰Ī׶ٸ۸êɯ⾢⾣޻ٵߺӱЮٷ|ëԱݸܷܷ۶⼡ȫͱϱͱе˯ʭǩƪ˯ٻعѴг㿡⾡Ǫظ׸ʬͰ¨¦صԲȬȭǫçŨƨ˯۽ٻշƪɪ߻ոڼѴƨгҶʯ߾ظϰyE:2ID>zzv{~pvncf`XVQJC@:,*&       "*'#($ ,'"72-woerxkymqjaFB=,+*$#!:72,*'!! ))'1/,52/1/-*)')(&+*)0.,31.52/852852963<95<8473/?;6A=8ID>MIBEA<=960/-%%%!"""##"##$%%$%$$%$$$$$%%%%%$$$"##))(974A>:640))'$$$"##"#"!"!!!! ! !! !"!"""""""""##"""!!!!!!!     !!! """###"""!! !! ""!!!!  ""!"! "!  "! %$"&%#*)&+)&,*'&%"(&#&$"+)'-+'-+(*(%)'$)'$%#!#!#!       4$!C0+Q;3P80\A9N82I50@1/6,*-&$*$!*$!,&"/(%% % "" ! % '" (" +'%+'%+%"+$"-&#/($/'$+# )!.%!-%!""&!("*$!*$!,&#-'$-'$.(%1+)0*(2+)1+(2+)4-*4,)SKFwl~|{z|ruxt~r{os^TJ]SIbVL_SIcUJsdWtf|nwitg}odvj`jaX`WOWOGKC7TJB]QH_TJ_TKdWLsbTo_p`wg}lomrn~m}luyyp<4,NE<_UKbWMeZNmaTzl_qc}l~nv|xyz~¦yt|yq|{~}zvv||r}q~sixndujuxuA:4SJA|ob|obresf{pezodxncwnd{qgvk}q|otwzzt}m¿"'")$ ,&!.(#2,%\NCn^yg~mtc|hWtbSp^ObSE`QEiYKaRFPD:TGLA7F;2G<2G<2D90YQGxlzn|pyrf{rfrt|ymst}q}q{oEA:gYMw}}ȩֶӴѱӲճڷ|ʫ¤ťŦťʫ}ƦȩǦ¨ֵܻܻǨɪŧͮήڹί̬ήִέЯڷཡԲֵŦʩƪ¤~m`TJ>95730:52B=9GB?HCAD?<=86=85=85@;8HC@D?=>:8842731:63?;9A=:953841@<9C?=631+,-%$#' 1)$B5,y|re}̭ũۻ¥ٸǬ̰ͱȫݻåƧϱаίٸѴո޼ͮطĦȪʪаջݼұ̮ϰдϳ޽§ϯִֵϯұåʬΰƩ׶ϵӹϴǬӴۺݽϰֶ§ĩǬƪȬ̱ȬִܹͮҶɭħϰΰ㾢ʭ߻⿣۹ӳyrt|stŪƭݺճЮȩڸ༢Ұаܸ۹Ǯ©ʱ޹޽޽Ĭ⿧Ƨt`SL>7483061.4/,/+(-)')%#+'&1.-1-,/,**&%# # $! /+(RG@se£ᾤqxrhgaW\VNc^UYTLOJCUOGYRJc\Smf\lf\lf\b\TOJCdWLêǬᾣߺȮѶ׺ػβչӶ̮ʭϱ̭Ǫħ⽡~thr}xyx~}Ŧܸ޻۷༠ɭϲ̯ũɭ§صص¦մΰ⾢ڵڶݺڷ⿤ɯ߼§ɭ¦ūظocOHC=951.,-../00.//,-,-..,--*++*++)))%%$0-+,(&C91~jZ俢Ѳݻܹ׵նͯѳ̭бEC9PD?TJEWMJSMJPJGSLHfZQr˫ֵȧť{{oph]\UMPJBYSKibXD80 %jWKL?6" -J-$ںݽnZN )u`R˨ڴҮƫϳӸè޹Բܹç忣ˮѵԸؼֺ̰״޼¨Ͳʰᾤ޺§ʰ۹Я׵ֵյ~zҮຜɩ¥ǪȬҶѵֺѶȭʯѴ׺ԶҴԷũٹƩ§۹۸ǩαƪǪ¥ͬݺŪŪɭʮʬƩ̯ҵӵѳͯ⿢ũո׺ɭ׵ӳۻƭǭūٸǩG=4C?:v|u{|oqh]TOI>;7-,*    # *&"+&")$ ,'"72-{pxy|pPKE0/- !!!20-SMF@<6 &%#840ICA<7B=8GB<9FC>963++)$$$!"!"##"##"""###""" !! !! !! ! !!  """!"!!!!!!!""!%$$%$$#""#""&%%'&%&%$###"""##"$$#$$#$$#$#"'&$'%$'%$)'%)'%'&$#"!(&$.+()'$  ""!$$#$$$$$$##"""!!! $#"$$#'&%&%$""!       *8*(>1/B64=2/0( C8/gULYI@K<6E84TD@ZIEkVOcPFSC9K@;E:5A506,)>0+?2,?2-8-)*!")"(")"*#" & & '!(" )#!*$!+%",&$-'$.'%0*(/)'1+(2+)4.+6/,4-*HA<|qg~z|y{z{}~weZPbWMj^Th\Qn_RzhZn_rczjotrvgxk{m|mte{j\n`SbUIRH?#+'$%"  "/'#2+%;2,H=5I>6G=5VI?_QE" ("4-'D<4WMC`UJh\Qui[rd|mpvũǩŧç§znty~|swjuhqr~pqrxvtrykJA:KB;wk_vj^qcre|qewkwlwndvmcxodujxlrvj}oq{ko`¿"&!(#+% -'".)#LA8~j[rcl]p_yfVhXJfUHfVHkZLjZL_PC[M@TH;C>:8<85;63<85>97<85,*('))!*#0&!SH>rg\{~Ħܻҳĩ׸׶Ĩ۹ݹٷݼ߽ڹཡƩظȪΰȫ׸յã¥ԸдԴʪçƩé㿢մյȧ˪߼ܹܺұָ̯ˮ˯αɬԹҷҷ̰ԲåˬŪƫγҵͱгؽƫȪ׹̯ո㿢޺ڷĤx~qt}st|Ŭ˰俥ղұڷڷѰԳѯɨҮί׵ֵض۸׵մʪǨug_SKE?<51.3/,2.+1-*4/--)'.*(0,+-)(,)',(''$"&#!&#!.)'J@8m_Բvismce_UZTL^YQWRKJE?MHATNFaZQkd[lf\oh^e^UNHBhZOȮͲϳԹӸγӸ׺б޿ΰ˭ΰ޻ģʨ~ui|~qzw|{|yƨѯὡ¦ཡضݹ༠⾢¦߻߻߻¦ʭݸԱݺԲϮḛ̀˯Ȭίuyj^VNHC>;.,*/00011---+,,,--+,,*++*+++++'&&2.,-)&I>7rbɬҳˬɪϯ̮Ǩ̬ظҳGE?YRJWQHjd[vpfng]ibYoh^rj_h`Ue[Qi^Tg_Ux۹ħշ˯}sREY1(U)"X(k=,uH3tH4c<+I(C!BE!W.%T)P)L(L(O)X0#jA/rH4d>.M.",&4 G!K&N)Q/$]9+a?2`@5Y@7WB:p[OvvbcPlX{grcVxodth^XIA # ' V;0>1*2obgSH331 3 ycT⺞澢γеƩɭĩ忣㾢侢¦ͱӶггѴԷǫƫʯ̱ū߼ղϮ۹⿤ضֵƧƧ|}xé޹ӴҳȪˮԷֺھԸ̰ϲٻˮɬбҵݻǨήݺݺٷ߼ŦȫˮȬũܹ޺ݺݺڷ׵аῢĨгͰֹӵ˭˯ԷӶƩ޺¦ƪçǭɯܻƧxD91B>9u|s{{njbXHD?..,""!   # -($*&"+&"*% ,'"82-x}{oPKE21/ !!##";84e]TMG@"! #" "!%#!.+'E?8aYPlcYg_Ub[RbZQe]Uqi`vmcumbrj`of]iaXkbYle[pg^{qf|rgulame[]WPC@<--,++++++)**)**)**)**)**)**-../00/0///.332@>;GE@:85-.-+,,*++****+*)*))**)++'))&''$%$"##!"!!!!"""!""!!! !! !! !! "! "! "!!"!!"""##"#""%$#/-*63075164152/730852;84:73962<83>95A<7D?9D@:@=8962962?;641,"!"     ! !!!!! !    *"4*$.$3(%N>;J<8J=9NB=NB;QF@UIC2'##/#-")(5)%C3.ZE?P=9WC?P>:F86E85=413+(8.+,%#)#!$ %!'" *$"+%#-&$.'%.(&.(&/)'2,*5.,6/,5.+D<8|qg|ryou}uuzwj^eZPvi^sfrsrq|nr{zp}mpmzfyesbUKCTLE^VN[RKXPIKD>?9461--)&&# # 6/)bVKbUJMC:92,,'#+&")$ %!#!   +&"?70PF=fYMqbTl\zgrvt~}ureui]wiugyizj|krvpufxgYLAC<5th]vj^rd}qeznc{od}rg}shri_vmb}sh~tiym|p|nroue!$ '"+% ,&!,&!I>5r`RjZLiYLq`Qr`QtbRwdTr`QfWJgWJ_PDUH=SF;UG8840;73>96;74@;9C><>96=96?;9A<8?:6C?:8A=;A=;?:8=86;75;74:63)'%"##,%!.#cXN~tfܻ׶ӳвбåٹܻǩརˮˮ̯޻ǩ߽ضϲӵնα˯ʮťħҲྡྷ§ŧ俠Юڸճ̫ȫᾢħæྡྷŪɭũæ¥㿤˱پֻǫܺ¦βƫéȮؼոԷ߽մٷˮϲܸܹٶݻ㽢Ȧƥ~v}pw~uv~ƪྥīĪ׵äŧԴۺյ׶ֳǪʪʫԲܺ׵аviUJC>95841<7583140-1-+/*).*(1-+-*(,(&)&$*&$!'$"3.+NB;l]Ϯ{obtmcleZ`YP]WOSNGHC=ID>OIB_YPkdZjd[mf]ibYNIBtdXѷؽڿеͲԸپ׺ˬǪȫ彠ߺ㽟Ǩ¤˫|nzrzx~}{xͮԳЯѯ׵޻ֳֳݺ޺ܸ§ç㿣༠çϴ˭ڶĨȬȬдͱǪ໠ݹڸrfZQLHDA310355455010,--)**)**()))***+*'&%2.,,)&A82}j\༡Ǫ⾡ӱܷ⽠ٸ⾠ܸͬyfJGAYSJVPGf`Wvpfoh^g`WjcZsk`ph]g_UaZPb\R|ħåѯ~_QMU)"Y/'c8,oB2l@1\5)K+!="9D%A$D&Y5,N.$I,"B+!@*!@*!>( =' D,"M1&`=-]:-O1'5$*4@ E$M(X1$[5(Y5*U2&Q,!O,"K) N.$Z2 e8"[0(5=#    # kXKwdV69 &441 2 5( kWKͰոֻӶѴϳβʭȪ߻ղԱ޹ɫæ㽠忣ũ俤§еҷèڶ˪äճǬݼ̭˪{v۽̮忢佡ҴոټھպҶβϲعѲѳϱӶΰῢֵаյίƩȫɬ俣ƩŨƪٷص⿢æвͰڽܽˮƩгշѲոոŪèۺͬvA6.B>9vz{oyxlc\SA?:(('   (%!,(#+&!+&!+&!,'!4/)yynNJD220$%%  $$$@<8lcYVOG('%/-*1.*0-*3/,@;6XQIpg\uizm|o}p}qtv~qvj{rh{ri~vk{p~syvvndSOI542--,,--,--,,-.//011/00+,,*+++,,+,,+++0/-?=9IE@=:6-,+''&(((++*/.-210221222011./0,..*,,'(('''+++--,,,+-,+--+,,*(('%%$&&%*)(/.,0/,,+)''&'&%('&20-E@;PJCPJCLHALHBQKESNGTNGUOHUOHXQIXQI\UL`XO_XO_XPXRJWQIXQID?9+)&$#!,*(+)'$#" ""!%%#'&$##"       "6(%>/,?1/>10E95RB>XF@O>9XFAE61C40/$!-$ ,%".'$0)&0)&2*&1)&0*(3-*2-+2-+?;8~uly{}~xxvv|reaVMxk_zlsvuwxv|yzyunyiaVLcZRtiukvlci`X\TMQJED?;;6340./+*,)(,)(,('*&$+'$<61^SIzj[vgXcWKQH@IA9F>7E<5D<5?71=6071+1+'-($,'$*&#*&#($!&# $!!  :62r~re{zu|||xpqn`S+(%>71mbWpeY|nare~rfyncyodvj~ti~tivk~ui~ti{nruoxi~»"(#+% *% *% 80*SF;fVIgWIiYKjZK`RFgWJ]OCbSGp^P`QDPC8L?5G<2B7.?6-B80mf\|pv}q}th}nt|y{rgw}q~r{pph^=94|i[yĦãĦyz}~~ҳɫȩұǨͮЮ̬ܺ£ѯӳäƦͭཤҶֵ̱ү⾢׶ִֵӱʪܹմ˫xsd^QGD>8952730;75=:8?<;B><@;9@;8=96<85?:7C>;A=:<86;74>:7<86?;8@<9=96>:7<86953*('!"" -'#-mbW|{l࿦࿥յ¥ȪֶͮۺɬմܹڻǪɭǩعåڷϱгĩۼƪɬڹʫŦῢָѳ̭ʫ἞۸åԳط¥ݻɩ˫ɮͲǫƪϴϴɮ¨ƪ§éѶȮۻ׶ƬϵѶ׺ۿֺӶѴȬشέԲťȧ~u}owzyնƭܹԲ޻༣ݻ˲©طں©Ұ¤ʬ۹ܹٷͭӲᾤڵ˫yj\PHC=:>96C>;94340//+)-)'.*)1,+1-+1-+)&$(%#(%$3/->86ZNFrcѯqg\tmbog\`XOXRJPKDJF@KGAOIB^XOle[ke[mg]oh^NIBscWͳֽؾδԸֹ˰ʮαåẝ迢ä㼟æç˪yl}tw}|~|{vȨֵͬҰȫҴ̮ʭΰɫǪ¦çƪɮἠȬϳƪֶ۹ղѯԱήqe]UONIF532344344000-..())***())())())"!!*&$,('<4.fUIye|ЮѮ޷ϭԳqKIBXRIVOGd\Sslbmf\b[Se^Ung]qi^g_T_XNa[QzdTR'R$\1(^2)`4*`6+i(K0&H-#///1569wxymxwj^XP><8&&&  "!'# +&"*%!+&!,'"+&!4/*zxmMIC100%&&!"" ! ! $$$A=9pf\\UL?;6ID>OIBQKDRLE^VNqh^ylsxz{uwkzqhzsj{sjwnzoxvtmcUPI:84..,++**+*,-,000443775664221010011132=<9WTMfbY\XQFC>;85>;8FC?MIDNJDEB=<;8443010/0//0///.441=;8@=9>;7;85=;7=;775210.0/-752DA=LICIFADB=FD?GD?TOHh`X|rgznylvjyl~q~q}p~qxluixkvi{qezpdwmbtk`meZQKD31."#"!"!   !!!!!! !!(&$41-95141.,*('&$##" !  ! !!!'&%2/,30-)'% !  &%#.,)('$    &  ', 5&A0&9-'5+'Q:6[@;[A:7200,+0-+0-,.*)/+)?94[PGpaSyj\znavk`rg\laW_UKaVMcXO`VMYPGPG@LC;JB:JB;HA:C=6>82>82<61<6061,4/+1,(+'$(%"($!1-(>820-)xi}{}l`Vvgw}q{p||zz{{}}xkui\qdW~o`re~qewl`{qeym}qym~ti~ti~tiznsvqugw»ºû!'"+% *$ +&!0*$K@6RE:\NBl\M\NBRF;dTG`QE^PE[MASF:MA6E:0F:1A7.E<3smb|pvzowjqtyzrfszor|qd^T>:4wdUzhu~~zxxˬˬw{Ϯϭϯʩӱұմۺаظ޼ڸڸáͪЯ|ĤЯұͭƦ俦ѵè޻æٸұ༠ܺήͭʬå|jn_RJA972.41-2/,1-+0-+30/953>:8<85=86>96B=:?:7<8562073/;74;74=85@<9=8562/51.40-%%$##""/($1#thvqūǬ׶ݼ˯ܾͯں߾çͯոǪ̮׺ھܾȪ̯ػڿζϵ߽ݼظ޼ݻཟܹαдȪϰ˭ŧвҵвˮҵڼԷǪ޾ɮʯȭŪؽչϳӹѶᾢӳĪƫƫγ¨۸ֵᾤβͱƫҷԹɭ信ٵѰЮ£}}~v}puxz~ִ⽥άͭêѷ˲Ի޻ڹܻ⿦ݻέӱݹ߻ٷ˫ʪԳ⽤ͭq`SKA:7830;75731620/+).*(-)'-)',(&-)')%$*&%-*(51/<64XLDufұqg\uncng\\UMVQIQKDNJCOKDQLE_XOibXkdZnh^oi_HD=aSHʩ©˲ɯ׼ھչ׹ϱȩڵħҴ¤㻞你ڶģ~thz{~qu||~|{wҮߺұұ޺¥ͰͰͰ̯ɬˮѴҶݺ̱ۿƫ㿤ڸݺƦǧʪɩ~sdXME?JDA642022011./..//+,,,--+++*++*++%$#+'%($"B93weVӱӰشڶԲέǦǤ๚մuOLEYSJVOFc\Svoeqj_b[R_YPhaXvncjaVaYOe]R}hYc@6Q"X.%Z0&X0%O,"H* ?&A'@&8"9"7 50/,+)(&$ $ $ # # # $ $  $ )-02687775454< E&S1$tB.rB-I(       !  " )-2! ! $ * 475)bPFҷδ໢濣⽡۶ضȭѵç߻ڶ㾢⼟価çѵϳ⾢༠̱ϳƪ⽡㽡ճʪ׶Ӵ~|uw|׺շϱȪͯӵϱӴټؼдʮḭ̃ѴвָʭḬ̃ɬǪǫæճϭʪ޼Ǫ˯Ǫç߻Ĩũ¦̬۷⾣§ǪϱֹӷҵӷҶ߽ͭçǫṵ̄ϴĪť}WJ?851wyymwvjYSK974%&& &"!'#+&"*% +&!,'"*% 3-'x~vkKGB//.%&&###!!!!!!%%$C>9tk`g^USNG_YQg_Wnf\qh^xnc~r{z|zwtsxzw{p{p}ujwm}q|qyn|pwlri__YQMIC@=9=;7<:6974752863>;7C?;C@;CA=QNHmg^}vjvoee`Wa[Sa[SfaXkd[ibY^XPSOHIF@EB=C@<@>:><9GD?RNGYTMWRKSOHVQKWRKNJDHD?JF@QMF]XPd^Ujd[rlcuoexrhtƲɷtk`EB<**(&&&&'&&&&''''''#$$!""  ! !"!0.+C?:SMFVPHJE?>:620-,+(,*(('&&&%$$$###!!!! )(%:62=:51/,!!  ! " (&#$"         @($J/+<%"54 %$":% bB:cF>OB=\OJk^WyiapbY]QIreuhwk{p|rzpyo{qtt{q{q{p{p}r{p|p{nxjugZh^U~r}rvlynzoynyofjaZ]UOMFAA;8952831620620B=9eZPuvwjxnc~sh{oynckaWui_th^pd[j_Uj_Tk`Vi^Ug]TbYP`WNaXN]TK^ULXPGSKCTLDPHAHA:F?9RJBVLC+&!~ozu`UKdWKwj]bXNZRIf\RaXO]ULi_Tvj^ynb~sh|oviyip`zi}nzmuiznus|p~th|qfxmuithr~nsft¿»»û&!*$ )$*% ,&"0*$/*$0*$4-&1*$E;2SF;J?5NB8MB7M@6L?5G;2A6.KA7xqf}qwwlvjrv~twodwlymu~r^WOD>7p^kprr{{xmowxsyɩɩŦ̭έѱŦ}ťɪäܹݻྣ״ʩ£ǨѰմ̬£Ȧ߻æ}¡״ٵڷ޺ᾡΰΰ࿣̯upbUJB;84084162/30-0-*/,)30-963;75>:7=96:6451/5202.,40-841:63;7462/62/74174162/''&$$#$0(%8)!}pwyǭ˯ӳ̭Ѳῥڽҵ¥ĩϳ̯ĨƪгϱַݾѴѶջջٽ׹׶гغαͰбƧ۹Ӳའæʭɫȩӵػ̰ŪȫαѴƬγ߽ƪֺʮèǬݻطӹؽؽڿʰྤྣ̬ٷȫپδĪдɬ㿣⽡߹ղԳү~w{nux|zɪéԲ޻ɱ˳Բ̬ʫֵܻ۷ϮɩǨ£ضȯ俦߻ɭپջ߽gYPD=:<6372/40.51/1,*/+).*(/+)0,)0+)(%#)&$2.-832@:7^QIyiǨg_Vrlbng]\VMXRJSNGOJCOJDQLE[TKe]TjcYmf\nh^EA:fWK¢״ὥԻֻܿŨʬ˭ˬƩӵƨƨ߹¡sumbuxxlu~{}z{}۹Ѱɨἠæᾡ߼׵۸ŨӶٻϲͰè˯ʮ㿢⿣ƫƫƫ߼۸شݹɩ|k^QHAGA=420/01/00,,,,-,,--.//+,,*++)**$#"(%#!<4.yfWԳåή¥߽¤߽ղãѱqOLF[TLTNEa[Rwqftmcd]TZTLc]Uyrgqh]g\QbLAZ1'W+"W.$L+!B'<$7!41/.,+(% #    " " & ())))*./--..143-+ . ;:' " # $ + * %" !!! ! " ( * *;943;>93)dRGǨgUHWG;ϭβӷçǪƩå⽠޺ߺڷ㾡ຝƩαؼеǬβɮὢ忤ǫũղͮ}rvغԶ׸׸ոٻֹαͱٽڽ̰ȬǫƪʭӶ̯༠èճִ©Ū߽вåܻũῤٷط۹ῥç⾣ĥǧضݺִ⾢ʮǫٷݺͬڷ۸Ŧήåŧб^PD750zz{owvjTNG32/"#$ "&"#'"+&!)$+& ,'!*% 1+%r{shIE?--,&''#$$""""""'&%GC=zpetj_e]Tqi^zqfwltuw}|y~zuwuzo{rhng^f`Xc]Ub]UZVOVRK[UN`ZR]WP\WP^XQa[Ske[zrgznxlrkale\mf\pi_umcqi_gaWd^Ta[R]WOXSLTPINJCUOH_XOkcYrj`xqf{uj|q}ryn|qy{y}±}y|zz|f_W>;8320442975A?<9A>:A>:C?;FB=DA<<:553/?<7WQIme[vncjcY\UMPKDB>9:72/-*)(&'&%'&%%%$$$#0-*C>8JE>@<7+)'"!!  "              0!!@-)cE:jNBkVKo_Uuh]tjasi`pg^pf^pg^rh_vlb}qg~sisizof}qgthxjqcf]T{|qzo{ptv}sukzpgh`X]UNMFAIC>JD@D>;LFAf\Tzjzkth}rgsj`|rgym|qfpf\sh^shuithrg{oeuj_ui_{od{odvk`sh^ncZcYQi_Vk`We[R`WOj_Uk^S@80zoc~x|m_h^T}mrqsxireznbwk_peZuj_e\SdZP|k~k}jp}oxk|ou}qs~rrwwvus|nt¿¿»»ûü!!  %!)#*$)$ ,'"4-'5/(4.'2,&.(#.(",&!/("6.':1)@6-E:0F:1MC:{ti~qw|ti~thqu~r|shwoexlu}qSMEIB:r`lpront}wrbbTHqtsxwvu{ͭҳҴ׷նϮֶŧ̫ί׷⾤Ūڸ̫ɩʩͬĥƨȪٶܺүϴ̲ˮ|scYRICC=:>9795385363141.30-30-741<85=95:6374141/2/,952>:7;74852953;749537411-*&&%#"!&1($?1(t~~vӸҷԸĨڸӲ޽˰ܻҶ۾ŧŨг޿вͰ㿤རȮδԸдոʮ׵¦Ʃ̮ˮ޼¥ᾡֲƥضԸٽˮܿܿͲƬ˰ϳܿ׹Ҵèֶݻջɰپֺˮǫ̲ƮҺȯ⿦ҷ׻ǬɪȪæ⽢Բɬ{~qy{|ͮȯ۷⼣ԳٶӲǨʫаа۷ήƧήֳ۸˱ٿԺ׼طn`XJC@A<9:521-+2.-2.-3/-2.,1-+/+)0,*,(&*&$0,*61/:52XLD|lťc\Srkaph]^WNYSKUOHNIBMHBRLEXQI`YPhaWkdZmg]B>8ygY޺©޻ȰεѶǫçָгໟ⻝ŧƩΰ㽠ȫϰȧ}wewoex}ylu~z|~ճརұضִ߼ǫŨ¦çвعʮŨƩҴٻٻΰԶϲŨٶѰͭugYOHIC@421/11011---,-,,--.//,--+,,*++#"!$!80)ubSճཟȫȬæĦͭԳұԴsSOH\ULQKC]WOvndwpeibXXRJXSLoi_rg[mNAg9*_2&P+!B%40..-+&#  ! # ) -././-,,+++++,./22/- .- , , + ) ( ( ' & &&$ "! &* (  )*&# '- <?;54%2#bPDs}ra{ƪ¦㽡㿢¥ѳٺѲ۽ڿ̰ŪŪݹڶལɩЯճЯwxҷαغ۽ػҷҷ׺Ҷдβ̯ոгͰ̯ҵԶв¦Ϯ޻طǫαΰŧåֹغȬᾢ⿤ūū㿤ֵӲյԲὡũĪèǬƫǪΰ㿣̭׵̫ɪ˫ˬȪæbTI,+(xxznw}vjQLF0/-"##!#&"$ &!+&!)#+% ,'"+& 0*${pwodGC>++*)**$%%"#""##!!!*)'MHB~ujzm|o{|zzw}q|qzoztitmdrkale[le\oh^slb{tis|~yvwz{y{{v~rs~wkvi}thxoewncvkynt{xodVPILHBLHCSNH^XQa\Ta\TgaXke[ke\pj`xqfyrgmf\me[}p{nunca[RPJCC?9/-*.+(HBl{twdxdU\MB.&!x|~¥ʫɪȩίˮǩɪέˮϰѰڷԳǩͭ׷ִԲ߽ڹбɩճĨ̱ɮ߽©۽ڻغtfXMDHAC>;?:7?;896462073062/:64?;9B><<9652/41.40.<85B=;@<:;85<96=96A<:C?=30.$%%!(!0'"M@7y~rԸϴū̯Ȫᾠçβ޼ܺƬгæ㿤ٷӲұԱཡ˰дˮֹƫӳ׵ȫֺͱβؼ̰£صŦЮˮͭˬྥֹ۾гҶŪĪҶῤʯɮƭط§ѷջپѶ׵ྥͳѸʹɰεɯγ̱вոɮڶ{s||ڹ˲Э˩ɪɪƦʫ̭Դ۸ڶ̫ͬἢ༣ʰֽϷȯ˱⾦Ĥph[SIC?@;9>979426213/.2.-2.,/+)-)'.*(/+),(&1-+61.61.RF>ueȨe]Trkaph]aZQ\VNVPHMHANIBWPI[TK_WMd\SldZrk`B?8vgཤëȰ߾ڸĪʮ㿣ç侢¤ỞĦ۽׹㼟ӯشsumcz|ow{uywɩ۸ضݺٷḬ̃Ʃħྤéֹݿ̯αвܾ˱޽αũԳҳб~pYPIB=:--,/11/00---,-,,---..-..,--+,+$#!%" # B80{hX¦ԵָܾعӴϰٹҴpZULe^SUOF_YPwodvncjcY[UMXRKjWLpI;e6'T-"C$2-..+& !  #( * -...,) ' % # # # " ! " " #$$# # " " % ' * + ..) ()(*+(' '$$#%6A C!A 9.--( & &/ ?<34 0  %M?6aPDjXK{hŤȨǫշػָгƪ侣аѱͭåʪ̫ճéڸ~yӷӴڼټغɬɭټټۿ׺ۿֹѴʮɭ̯Ѵʭ޻çƫ׺ۼбܼ۾дçڸ޼ū¨èǫĩ¦Ǫɬۻϯ߼ƩǬȭྤίմԳίҳۺۺ¤~cUJ%%"yyymuyqfNJD-,*!"" #&"$ %!*% )$+% -'",'!/)#ynvmcFB=++*,--(((%%%%&&$%%.-,RNGxlu{zu~rznt}}yxyy~su|}}}pvmbof\og]ypewl~rzo|p}q{pyn~vkzrgtlbtlaxl~{|qyrgjbYVOGKE>3/+  !'%#"!  %$"$#!"!     + /'#4,(/)%6.)#9-*N?;[NHXNGh^Urh{pvu{}zvuuzo}rhsi`~shzkzkxjxm}rzo{p{p~rtuj|rgukakaXbZQf^UlcZne[of\vlath|ovvz{xu{mrdVYRJ|~u^VNv|vwxwt~m~kygue|n`rctdte{lw|{q~oqsp|mp»»ûļĽ#% &!(#(#!#*$ ,% '"'".($2,&3,'3-'3-'2,&2,&2,&1+&.)$,'"("$*% ;60GB;VOGh`Uzrfu}p~rumc{ot~ujE@:\PEquwes`RA7/!"-'!y¤ƨ̭έƦȩ߾ྤۺֵ߽ظճԳɩѰطִ㿤Ĩ¦èɮӷֺպͰ߿̮ͰѴݿ̱|ueYOF?>94?:6A=9?;7B>C?<=96<96>:8964731953<85C><@=;;86732<86632$$$ +$ .#^RG}z|p¦ٽ׺ֹշѴֹȬǪ⿤ݽç̯ϲŨ㿢¦˰ε˰ڹܺʮеչ̯¥ԶݾԹؽ׻˰ʯ̯ʬѶ̰̭Ѳ¥ϰ¥̬̰ʮūǭίū¥γγ˱ƫĩ⾣ūɱūɯȭŬζ˳Ѹδֻպèὢ⽢ڵƪèͲ俥zx~~ŭԻ໣άֵڷܹɪ߽ὣ޻⾤߻έäղٸ̲еչγɮǮ̫obVNF@=@;9;644/-,)'-*(,(&.*(+'%,(&($"  *&$2-+61-NB9l\]VMjcYkdZc]S]VNWQINHANHAVOG[TK^VMb[QkcYrj_A>7{kܺմª¨ڷ㽣Ȯ¨⽢⻟ȫҳʫ˭Ҵܿڽڼعͫmtlaz~wkvyswxͮ޺ǫƪݻѯ⾡ʮӶʮ¦⾢ϲçˮ׺̰ܸŦ޼རῥѰɩܹطӳ}o]SMFA>10/122122.//,,,,---..,--,--)**$"!'#!'#!E<4n_èгշǩݾ߿ͮvd_YPg_TWQH^XOskaumbjdZ`UKgG>? :/-+)*0:20 3$    D,%91aLAx㾣ŨԶ׹αݹճ̬¤ήұԱ㿤ִ{ѵԵԶβչ׹շ۾ؼ׺չ۾ۿд˯ˮҴշҴȫ⿤̰ܾݿԶɬʮè⾣߻޼©¨ǫǬ̯˯㿤ȮŪǬǬ˰ۺܺῤմݼӲ߽ῤ̬}cTI"!w{znstmcKGA+*)"##  "%!%!% *% )$+% -(#-(".("zowodFB=++*,--)**&&&())(((210XSMzous}~x}uixlwsznwlzo}r··zvvy|yz}yurtsutx|}}z{wq|oviwkzm{n}psvu|o|px~ɽʵȳμϺı~~swpeqjaf`XSNG=:6)('   %$#('%%$"            ^D:7<86C?=D@?C@>DA?FB@@;9;8574230.30-842<85A=;=96:74=:8?;9:7541.3/--*)### -&",uj]wy~ymȫ˱ٽչӷǭǭֶƧаݻʫаɪϰʭҶĪ˭ָ¨ݼ߾βȭǫ۽׹ֺ̱¨ȯʯɭ޼˯βͲ޻ѯ̫¥ʭŨᾠæèٷԴֵܼݻӳȮڿؽ˱êɱĪྥêʱֽԻδеʮçڵصղӲɩ~}{z}}}⿦ʹ˱ƫ©ŬŬ԰׵ܹʰ̲ê۸̫Ϯȩܹ޼ʯʯ۶ἣͭtdXPC=;?:7:5351.2.,2.,,(&-)',(%,(%'$!&#!1,*72.NB:~j[|~TMEe]SldYg`U[UMYSKPJCPJBVPH[TK\UL`XOh`Vog]?;5rcǪåݺƬ޻ȧ⽣Ƭ⽢ħвͰæ޹׻ϳӷȬݹzhrk`x|ylwtruzȮϴɭŪĩǪٺػҵг̮˭Ȫݺȫɬΰʮ߼۸ĥ̭۹ᾢའմظݼͯq`WQ;74***012/11,--+,,-.-121011.//*++'%$*&$'#!>60|iZƬϳϲյոԷշظ׶ۻmb\Re]RWQIZTLkd[slaj^TmF7l;*Q+ 7-.*%  " * .01/,&   # ( +-../00.,)        ! ',-$&*,27:8654 1 . , ++$      , 55-+- . , ' "', )(   ! ) 6921cK@sbܸܾα㽠㽡ڶ׳ӱὢ໠ũ۹}ɯƨ˭ɬ׹ܾܿպչ˯ϲӷպ׼ҵӶӵΰвַϱȫӴܽϱŨͯȩίƪçٷܹڸǫʮܻͳֺǫееɭ¦ܺٸǩˬç޽ض޼޼ֶѲ}fWK{ox~rroh^FC>))($%& !"&!%!$ *% *$+& .)#-'!+& {p~xpeFB=,,+,,-'('''''((())431\WP}q|pqi_yn|~zu{|wl|p~q~rvz|w}{}ywu}|p{sg}thxkrux}st|nwjsvu{mviylzmwjymznznuw||}~zng`WKF@=94962A>9FB=QLFZSK\TLNHBF@:D>9?:620-/-+/-+)(&!! $"!           0#@2*VKCj^Ush~vuvkulbxkufxivi~ti}rw~}}qwl{qf|rgvkym}qws|quyuwk|rhuj}qt|nxj\"JD>sUMFug{ouesdsdue~morp~n|m|n|m~n~m{k~o{kº»üĽĽĽ(#%!"(#)#&!#(# +%!,&"-(#/)$0*%2+%2+%0*$/)$-(#,'"+&!*% )$("("'!!+'!:50@:4 ##"$ %!% $% 3,${ŧ˭ɫҲϯӲྣͮĥĥٶ޼ίֵմή˫ЯճۺӱӲѰȨѰ§⿥ĪῥʫĦ¤ӴԶǪ}qaZOGFA?C><>96=96;75;75A=;HDBFBADA??;9;7541/1.,30.952842>97@<:A=;<86<86=9784230-*'&"#"!.'#.wj~yqfxʫĩϳٽܾټͲ©ͮǨὢԵӴɫٸֵŪɭͯǩ˲ʱΰæɭд̮α̰дͱ࿤Ҳ޻Ĩ׶ұᾣ۹ӱ۹ᾣݼῤβȫԶʭٷ޽߽¥ར˯βھӹ޽ظ˫ūѶʯʹĭյȰʹªʹǮʰĪ޺⼡ճ}}{y|{ᾦīǭߺ߻©Ƭܷὢ޺ᾥƭĩ©ĪĪ༢ʯβͲͳ׵u_SLE@>D>9761/2-+*&$+'%+'%*&$%"  %!/+)82/UJBzjͭSMEaYPjaVe^T\VM]WOSMFOIBTNFYRIXQHZSKc\RjbX960yiմֶŭίϭ޻۷ߺ㾢ܸٶ۶æҵũũçճwuncvxzmw~~qrv}nƧɪڷƬྤ߻§β׺Ըڼܽ׸ŧĨǫƩὢ˫صέί̭ܻǫҷѷպ˲ugRJC<84,,+122012*++'((*++.//.//,--())'&$)%#!4-(jZL{׶ç⽠ɪǪɬ׵἟ƨ˭|j[b[Pc[P[TLXRJicYtg\oI:k:)M*/-,%  ' ,11/,%   $ *./0//010.+(& % $ $ $ % &'''&&&&)3<?;72 . * &"       ! )(& ( %    )$   * :C'D$;4 1 , J7.ĨŨũ߻༡໠རݻԲ§ȭzȥ۶ݹŨѳԷ˰ԸӵˮдͲϴ˰̯ӷټظӴ̮̮غۼعʫ⾡æ⿣Ǭӱٷڸè༢ĪƬչβ̯Ұྣݼཡ׷ֵۺƫ̱ɯͯxp]PD~wlus|ohbYC?;(('$%% !"&"%!%!)$)$+&!/*$-'!)${o|xoeEA=++*,--&'&'(('(()))642^YR{oyme]Tnf]xoevkxl{oswkxoewnd|rgvjym}pz~twkym|pzntxzú¶~~}{ttt{yz|xrvj|sgq{|~~rwkwk{nr|oyqfldZg]ScYPi^TmdZtkaylvrsvx~qym{sgph]^XOLGA>;6640.-**)'$#"!!  '%!2.*.*&   8/*L@9MC<\OGm[Qr[SdZw`Vlbukzq}ty~t{q{qvj`wg_o_WcTNQF@VF?]MFdYPncZi_WaWPi_Wqh^zoeti|qfuka|rgsh|map`S>1+=62vtXPHti]|~mqbzj\yjsdsd|obrfvi}qdvi}rfzoc|pdxjug}n{k¿º»üüýĽŽ'"(# !("*$&!&!(#(# *%!,&",'".(#0*$1+%1+%0*$/)#-'",'",&"*% )$)#'"& % % #! "$ %!'#(#'#&"% % % &!-&lxæãyz£Ӳֵʫɩұ̫ὣĪڸ׵Ǧƥʪմִֵ޽̮ʫϯɪƨ¥Ħέͭɪƨ|oaWQB=;=87=97:64953>:8>:8EA?D@>FB@B><;7530-0-+520>:8@<:D@==97;86?;9B>:7>:7/-+""!#/($4%~q~vmb~ʭĨԴԳЯɪطضའϮֳ޻̰ϳѵ˯è˯Ը׿Ϸ⿣߾¦Ĩƪѳʮݼܹ׶ִ༡ΰཡٷճɮ˰дֺ˰̱ӹؼͱŪɯʱӺūϱϱٸ߾ǭʱʲƮ׶ֶê۹ѱῨ˲ɰū׵ձ俥׵~|{yv{yëֺֻ̲ͲŬԹʯͱѵֻپͱȬʯδ̱Īƪ̰̱ĬҲ}h[TE><>97;65:5450/40..*(-)&.*(.*((%#'$"(%#3.,830UIAvf̬WQIf]Sg^S`YO`ZQe^UYSKRLEUNF[SJUNETNE_XOh`V31,tɱŬ߽ཥᾥܸ߼ܺٶĨ⾤¥¤ո⾢ܷݹϮ~lwodwwxkv~x}ti|ovpäƦү߼ӳέݻéĩᾣʯĨħ¥ݻʭʬħĩ§ͮĦۺȯεʱëtfTKDA<8..-122122-.-***,,,.//-//-..)**)'&)%#4-'o^PyϯϮϮὡç¦ӱЭڶĥzhX\UK^WM^XOXSKeUKoF8j9(M*--' # ,11/+$    ',010/--.-+)& & % $ & ,/(+,+*)(&$$ 0<@;4 . ) "        "   ) 2/ ) #   ""! '    >$I.G*@$9 4. *%B0(ĩè໠㾣ִӰԱvѭ۶侠ƪȬѵֹܾѵչɭἢѵݿбǨȪȪˮػͱӵˮܺϰѱ߽ܹ߼ܹұϮ§ۺΰϮȭƩܸ̯è߽ƬжҷγƧǨr}i\NC}vkutzne_VA>9''&#$$  ""&!% &!)$)$*% /*$-("*% zozwtmbC@<--,,..&'&)))'(()**753_YRynrxnd{rg~ti|p|p~ryztrtvyuy|y}z~|x{~~|wttwtu~syrfmf]c]TYTLSNGIE?HD>HD?FC>B>:FB=IE@:84)('!"!*'$73.51,%" &$!!    -R81P5.bB:gIASB>[LHmYT]LGD739/* )    4+&/($(!5.)2*%-#/#2$5*$g[Qzma{lasgtwrbXNXPH{kvz|v~n~nsx}~yvhZeZPqtym{nxkuhzl_»ûüüýŽƽ"(##  ("+$ )#("'"'")# *%!*%!+%!,'".(#/)$0*$/)#/)#-(#-'",&!+% *$'"% % & &!)")#*#*$*$)#("% ###"+% ltz|}ίڸظ}~Ӳ࿦ᾥ׶ʫɩ׷ͬͬ޼ϯԳӳʫĥɫ˫˫Ĥʪȩʪίӳ˭rgXPKB=:?:8>:9;76;86B?=C@>IECEA@B?==:89536318523/-<86A=;EA?B>87;6473150./+).+)/,*.+)($#+(&)%#3/-50-SG@sde]TndYi_Te]SjbXkdZ`ZRZTLXQIZSJTNEQJB\UMh`V41,̴Ĭݼ޻ɰ¨¨طƧȨұҰڶ⽢ˮӵὡֳڶ׵|j[tlaw}ty~wzrg|puqήӲʪӰضЯ޼¥޻۸Ʃִ⿢Գ̭ʮչ˯ʯеཡƨ̮̮ݽīۺxkYOH@;7..-022.//-------..+,,+,,,--'(($" # 2+&k[Nwήճܺ俤߽Ӳȩ侠ǦȨsbSZTJ_XO_ZQaPFlA2j9)K),-- % ,11,%  (/111.*$ " # ((& & & & '-: D%C$; ,*)(&"   / <CB7. '! $ -154310*$ 1?!A!<71*#    ! !   ( /) " ! & , )(B(B%@$?#; 5. <$7! jUHѯ۷ٶճص޹忣༣wٴ御濢ٵ޺۸ƩɬӶԷɭȭȭ㾣ĨĨˮǩʫʬϲ۷ཡ㿤èèϰаٷ޼۹ڸ㿣۸̫རྥӳۺǬȬῤèŪŪéȭ߾ūб|k]OC}ukusxmb\S><8&&%"##    #"%!$ &!)$(#)$0*$.("+& {o{wpi_A>9+++,-.'''*+*())*+*974a[T|qws~}ywvv{}{y|zyxusr{wv~zu}qzshxqfslaoi_f`Xd^Ve_WYTNA?;220//...-00.00.00/00.10...-(('%%$.,*@<6C>841-'%".+'(&##!)'$+)&#!)                6'!R>6YG>XE<\LB|n_rvvxvryk{pcznarcnqcU.+'|m_suzīɲȳƲɵdzųŸ¿ºûüüļĽžž'"&"&!+$ (#'"'"'"(#)$ )$ )$ *&!+&"+&",'".(#/(#0)#/)#-'",&!*% (#'"&!& *#*$)#'"&!% #  %!lu{ǩбέںͯͭմۺརҲɪˬ̬Ϯظͮήܹ޽ҳӴɫǨ~ͮȩͬũǯҵpbYKD@?:7;75;75@=;:30/30.853953?;8@<:B>=A><=:8>:8B=;A<:?;8+)($!' 0'"MA8zx{}~maV{~ƩϱȪ¥ίԴʭԷ̯ڻҳȪήӸֺϳƪȭӺҷ©ƫ׹¨࿦жھָӴũ࿦ȮԷڽǫ޻۹޾ĩа˭ήȭϵ϶׽ٿؾзǯֵۻۺݻɮ˯¨ʱѸԻӳῦԲұŬδڸyyxrs|}y|үǦťӱѯܸҰ޹ū໡㾤ɯδĪ̲ҷѶؼĩ§ƫԱscUMB;8?97A<;>98:643/-1-+-)'-)'+(&)&$%"!-*(/+)51/3.+PE=o`i_Uj`U_VLe]SldZkcYc]TZTMSMESMERLDNIAXRJe^T2/*sϰԵعҲڹа£Ťѯά޺༠ӱӰӱἠڷЯӰǧvf|rfw{uy|x}uitw{߽èݻԱ׵ɪضٷݻ޼޼⾢ضֵͭϯʰǭԴ˫⿢࿥ٹعٹƩym^UOFA>110466/11,-,....//,--*+,,--&''!#!"60+gXLnĦ̬ѱֵаˬض`RF^VL`ZQ`VNjC5k:*H'# -' $ -11+  (.121.'   # % & '' ' ( ),4B$G'D%7,)*)(&"   & 6D!@ 4) " +"E#>;:2&    ! ;#C. ?+?*5/- + . - 0 ( -:;86E*eE4|VBqN;7***+,,(('***())*+*:86d^Vzz~q}}{yyt~qst}q}q}p|nxkvjzn}p}pt}}y~ĸ÷¶ĵǹʼ̾~{xwwwwu{~}xuu~rwkumce_WQMGD@<>;8?=9A?:B?;@>:@>:B@=B>/-,%!)"/$SG=zx|x~pdWʫ׶ںڹῤ۹߽ȫũĨۻŧٷǭеԹγϵѵҶϳū§߾߽ݻʫɪݼ߾ֵаұʫˬ࿥ܻ۹ʯ˰ǪͰƬ߾׵ҲѱڹæͰϳɯԹе̱׻δͳӱŧۺǮʲϷͶ̴ɰ϶ḙ̈޼Ǯɰʲᾧy|zq|pz~~xὤ俥ӱ˪̫Բϭ׳ݷçƪī˰ҸּּƬè侥˪sbTLB<9?:7B=;>97:543.,/+)*'%,)'+(&%" $!+(&-*(1-+/+(C:3o^Qo|kWNFaWNXPGc\Rmf[kdZd^VZTLOIBLF?RLDNHAUOG`YP62-ë޾ڻ޽Ӵ˩׳άέ״⾣ᾣ㿣ִݹܸ۸ɧţ{k~vjz}ww~yvjwx{̬ܺ⿤ݺȬڹճԴè˯¦ҲִίĦȩұЯ߽Ͳǫϳӷʯ׸ҳΰçpc[RLHDA221355.//+,+././00+,,)**+,,&&&# "70*sbVyӳ߼ұͭ||{UI>aYOcZQhH!? @ ;610694'     ( 7"aE2cH4hL6eI4U=+A,/& 64$ ) - ) .8624X:,yT@oL:\>/L1$C"^G<ƧϮӲé̱Ū㿤Ȭǭëy{ʬæ⾢ཡ߻׳ໞæղѮЮ߻ƪǫϲæŨͰαȬéῥضὡ۹ݻ߽ᾢໞݺԳܻҷ׻ӷչϴɮ§޽ۻֶḬ̄ͰҶɭܹˬѲ~q`Rxmu|owodXSL652$%$"""     !"$ $&"+&!)%+&!2,&.(",& vkxwa[T975***'((()()*)'((***:85d^V{ulcYula}shyl{nxkxlwjuithzmymxm{o}p|oymym{o}qz|uvyvj}ujymxµöô~{xxxw{|zut~r}q|psvzz{{ussvuv~stvx~}|yv{~}~~~xxmundic[gaYhbZgaYc]U^XQ`[S`ZR[UNVQJZUNibYyqfvjumcng^icZg`WgaXf`Wb\TWRKLGAJF@HD>GC=KF@MHBGC>20- ).**'# ! .,)/-)$#!        XNDbUJrcWsfv}{uqpmaT`THud|vyÿººûûļżŽŽžžžž '"" #%!% &"&"'"'#(#'#'#(#)$ )% ($ (# )%!+&!,&",&"+&!*%!)% (#&"&!% $"!!!!("uvyѳڻĥЯ޺Īཤϯ̭ǧٸظ̭äǦаնŨƨааԲ׵Բ׶޾޼طͯwscXVMHHC@@<:?;:964:65C?>EA@GCBFBAB?=A=96=96<87>:9@<;C?==98953964;75*(' ,%!.!`UKx{~}~zj\ĥԳۻҲȩۺȫʭβçڹбྤββũԳ׷ī̲̲Ƭݻྡྷ˯˰׸࿣¥ба¦ƫɭʭ¥ũ޻޾é޻ԸҷĪԵвֶȫͰдҶ̰ϰȫ⾢״۸طལٸںӸݻƫγ̳εӺϷῨطݺۺ׶ԴԳݺҰֶ~~x|o|ox{x{ɨүֳ໠ݹЭŤȧص˯δֳܷܹŭʲê̱ƫæݸή}h[SF?<=75>86<769421-+.*(*'%+(&*&%$!%" *&$)%#,)&*&$?70l[N~jsbLG@XQHYQHaZQmeZmf[f`WYRJMH@HC=RMENIARLEZSK1.)εƯйĭΰ̫ԲԳ߻ڶὡٸȩήĥϭͬ׵vgxpev{v}p|{~ήӱӱڷ⿤׶Ϯĥɪظʬɩ˯ʬæӳѱéҸͳ˯©˳ʲӵҴֶٺseUKE<74*+*022,--+,+//.011-.-,--,--'''!!!/*%gWLsϯɬħ۹Ǩ̫˫ˬåЮiZLaYOgMAl;+[2$# & ! .2/# " ,121+#  % .1.//+' *.7E&L) F&8,++(%# "     ()( . (  . C#U/"[2$]2$Y/!U,Q)J&@ 85;?8/*3756/' #!    4H*]7(Y3%X4&T1#M, ?#/$) 960 ) % $ 21/58? <>B#A 3[D:|dVʯɭɮѶê~x|ʬݹ߻ߺߺѯֳħݹղѯֳص޺ĨβϳŨ俢⾢ɭʯԵԴʪڷĨƪཡ˯βƪĪƫպֺڿжͳȮū¨ݽå˫Ӷ׻гʬԱѰ׷¥}k]{ox{oqj`PLF10.$%%"##     !"#$%!+&!*% ,'!4.'/)#-'!zqftu`[S764*++%&&()))**())+++:86f`W{{qh]tk`sj_ynczmv}~ůïv|qyz{{x}}s~qy{{w|pxm~uj|sg}thwkym{nussu{}w~r}q}q}tixpeyqf{sh{sh{o|wv{o|sh|shzn{n}tizrfvnctlbrk`jcZYTLA=9''&#$$ !!)'$73/52-$"  .,(0-*%#!"" ('$('$#"   8&#T@9YH@_TaVqcscV!RH?pau|{~~ruº»»»ûüĽŽŽžŽžžž  $!$!  "%!%!&"&"&"&"&"%!&"($ )$ ($ &#'# '#'"(#)$ )$ '"#" $ ttou}{Ǫ~äǩ˩ԳԳӳӴʪ¤ɩ׶ۺۺή̬˭ȪٸǭƫٹԴӵɫͯȬufaTJKD?B=;>97=97:65;75C?>D@?GDCIEDC?>>:9=97?;9D?=JECGCA>:8<86:64?;:@<:B>==97=97>:8;75+)'!-&#.mbWvzzqaںΰ࿤§ɮϴǩᾤ˰çˬѱԵ޾Ƭֵ׶ѲɪѱۺݻǫҴӴԸԹ׼еᾤéèʯǬڷֳڷܺ§࿤޼ໟܹ۹մղӯỞ˯ϳݻطڷ̫ƥ޼࿧˱ūεҹ׾̳Գ̬¨˱ݼέЮὢ㿧۹~xxl}pw}}ʨͫãܹἠ忣ƪ㾢Ϭ۷㾣俥ܸ߻Ŭ侥㼡ĩ˯ɬʮʩ~pfYRHA><64942;64=8651/1-+.+)-)'+'%%" %" )%#%" *&$'#!B81taRxygNIAZSJ]VL`YQjcXjcYb\SVPHJD>GB#+# ! ,8A!===#+#( 2. .;9<>:5"- ~gXѯƪĩŪ߼wz你߻ձӰ⽡Ȫĥ¤å㿢شݹ俢æڷὡгʮæ̯ƫ⾣޼ʬӳ̫Я޻èͲ¦ŪͲѶ˱êܻٸĩͲԺĪѵٽҷ̲ᾡ㾠ȬѴѱ̮¦߽մƨvf|py|ppi^OKE10.'((#$$    ""#$ % ,'"*% ,'"4.(0+%-'!undtt^XQ542+++&&&))*+++'((+,,=:7kd[y{~µŷɹƵ¶{y~}y|xz~}~}}zoc\TA>9(('%&&$$$ "##$%%#$#.-+?<7FC=53/"!  "#"$"0-)/,)%$!! ('$'%" "" !-%!4($@3-E714*%4.(D<3KA8D<5neZwkymxlymtw||{}|tû»»»üļĽŽŽľĽĽžž "%"!!$ %!%!%!%!%!%!$ %!&"($ '#%!$!# #$ &!&"$ " % r{qpx}}{|t{yz~ǨƩή׵ضŧۺ©ƬëǮʹǭǮҴֵ޽гȬƫxjaVNE?<;75;75631954?;9B>=FBAGBAIDCFBAA==A=;C>@=;@=:7<86842953.+(#.'#2"zqevv~vnΰΰط̮¤ֶݼè׷ǩ࿥ȬаƧƩֶ⿥ٸаֶմ˫طҲݼͲǭūжҸǮ¨Ƭūγϳɮèִظʯѵΰ㿣߼Ĩʩťӱ̰չ޼ַյήέɫ˱ѵպѷϵҷĩ߼ǮīݹԱ̫аа|{nty~|Ӱܷӯ༡ƪո̯Ǫƫ㽣ѯЮ忤éĬΪܸȭر形ʧtiZRIB??:8<75943;6450/-)'*&$*'%*'%+'%,(&.*((%#'$#%" I>6m^yiMHAZSJ\UL\WNjcYkdZa[SVQIGB!;+& 5973589<"G+G'7, 27'    ) -+) * aOCϮ˯޺ֳwyǩħħѯͪϮ۸߼ȫѳϰʬŨ¥æʮβɭʮ§ܹ༡۸ũ⽞ᾢڷ§Ǭ§éۺ߿ĪӴܻ̲Īǭū⿤ǬɯϵβӶϲӵˮæ߼ܺݻän_ zox{omg]NJD00.((($$$      "!"$ % -'"+& ,'"4.(/*$+& qkaxt]WP331+++&'')**+,,)**,-,@=:pi`w{}zz{ywz{z{~¸~~}|ujRNH10.())'((#$$###$$$$%%%&&&''&''.-+?<8GC>;84+*()('*)(**(&%%  $$#'&%'&$&%#  +)%:61=84/,)$#! "! )'%'&#!$!'# *&"+'".)$/)$1+&0+%1,&2+%2+%4-&7/(i`Urj^rj_qi^of[oeZndXt}z}~uü»»ûļĽĽĽĽĽĽĽŽŽ  '# "  "### $!%!%!$ ### $!$!# !!"##(#sx{{x{}~zs{Ĥʪť۹6-'~k^طӺиȱٺԳݼ޿ڻڽٺڻ̰yj_WOJHCA@<;<8651/731>:8B>=HDCIECHCBB?>>:9:6551/941841842>:9=98954731;76?;:?;9=978412.+(%"$/'#=/'znuv~{}qvȪĥΰΰĦַ˭Ѳ޼۹ѱ̭ɫŦʫ׶Ҳб⾣ᾢӲĦħȫĥ߿γֶ׶˱¨յὢ˱پ׻̱طԵ޾ۺ޼ظܻͱŪརٷ߽ī۸ճݽۻ࿥ݼݾջ׼еԹѷӹѷӹȮ©êǭǫᾤ˫}{~~pxz|{ٵ俤ຟݸ༡Ͳͳʯ¥ǫĩຠڶ¢ģڷɱ形ӮЬàŢ}rc_RJIB?>86<879533.,0+))%#)&$,)')&$+'%/+)-)')&$$!'#!J@8{iZ{yhLHAXRJ\UL^WNleZibX_YQRNGEA;FBLGALGA30+ῦῦཤȯܻͬ״ĪطմԳåȨЮضĥ}zwj^tg~uixxywyztʩѲ̬̬մұմྡྷִԳ˫ݺʭç࿤ݼǪή⿤ɮȯ࿤޼˱ַͯsaVN<74'((/00,--***+++./.,--+,+)** *% [MBpӳظçŨΰѱ]=0k;*\2%"  # $ 0/% # .31* & ),036 6!3,( ,16E%M) C$2+,+% ! " "!! (<J%J';- +/ F%U."R,!J'E$:, S4'rJ8jD3A#51* 0K']2%l<+c7'I(  ! ""   " 7= 8,"  !   $+ 6; 8381=#B&800I%D#;$F+M3#5" $ )" ! # WG=ѰβŬªx{ë˭ֳس㾠価ղݺ޻ར徢гŨçརçརݹ޺⿤¦ὢ༡ũæղ߼Բ⿤ѵɭ¦§Ը̲δзϵ߾ݺ㿤Ȭ̲ͳɮʯƫǬ⿤ͭέέŧԲ|hY wlwxlhbXJGB0/.()($%%      ""#$ %!.(#+& ,'"3-'-(",& pj`|s[VO321+++&'&())())'(),-,C@<8--+()('((&'&%&&&''&&'&'''((10.HD?WRKSNHFB=@=8@=9?<88630/-**(+*(/.+640?;7C@;A>9/.+"#" !! ! "! '%#+*'%$"! ! &$"+)%-)&2/+=83KE>OHAC=852./-*,*(('%$#" "!#! # %"&"(#*%!+&",'"/*$2+%3-&3-&4-'4-&92+mcYph]qi^umaxodypdulau}{zz|}tļûüüļĽĽĽýļļļŽŽ  %"#  !""#$ $ # "##$ $ # """" %!mrqäĥ{vz}tuv|zȩʪĦfVKOC;Į޽ѳ¤ɩٺĮ۽ۼΰzk_XOIFD@?@<;96441/954<87=97A=;D?=C?=?;::75:75<86;74;74;75=98<98;86963;76A=;B>=A=;>:8730*&"&/&"H:2s}qs|}x|tiuŦ~Ħӳ̭ĨƩۺݽĨྡྷӴè߾¤ɩٷڸƧƨǪۻݼϮĥЯ¨Բڸ¦ĩé߼Ϯǧέطéʯ̱Ǭݼ߽éۺҳǩ¥ͭᾤ߽ªиεնӴۺᾦŪ̱Ǯεٿȯܹմ޻¨ѯ~xtyx|Ϋٶӱ۷༣Ƭ⼢ƫͰ˯Ĩǫūʰѷѷ翥ẞܵʦ}ncVNF?<<75<86;752.,1,*-*(.+).+)-)'-)'/+)($"(%#"(#!G=5yfXzueLHAVPHWPH[SJjaWb[Q\VNMHBE@:KF@OJCGB. I+mE4T@hB2<2,,2>P* a6'Z2#-05+27.&*9= 4 #/0-)'3954I*O."P."@#83-)& 1.,<%E+I. #  & - ' ' &((cQF߽ʱwzỞǨӳӴ¥⾣޻Ұʨٶִݻݺݺæç俣çȬĨǫ˯ߺƪɬŪĩç޺ܸǬپֻɯīѷͳظմ࿥Գ˱ضƧɩ{}Ѯǧwf{shv}uje_VIE@/.-'(($%% !       ""#$&!-("+& +&!2,&-("+%rkb|}q[UN431+,+%&%'((&''&'',,,DA;742//.-++*())(((&''%&&&&&21.PKEhaXmf]hbYd^Vd^Vd^U^YQYTMVRKXSK\VO`YQe^Uf_U[UM>;6&&$ ! !! !! !! !!!""!""*)'42/6410.,''%'&$('%+*(+)'0.+2/,51-=94HB;HB;LE>WPHc[Qf\SbYO[SJTMELF?D@:=:531-(&% !  !$ &"'#*%!)% +&!-'",'!-(".(#/("1*#>80of\og]og\tlaxpeypetk`}r|}|wty~rŽļüļļļļüüļŽĽŽż   "%"    "###### ## $ $ $ $ "! &!|kutxzz|xu}ʫƨsc  m`ͮྥϰǨѱۻع߿Ҵzn_UOGBA<86842953731:63>97<86A=?;:A=<>;:853742:63=97>:8A=;;7696485363195485430/-*)'$""(".#UI?y~rtx~}xunctȪ޽׷ӳҳϮڹῤȫǪ˯дϳαŪ޽޾éʹ¨޾Ǭɬͯήյå˭ħŧʪ㿤ܻ̬¨δȮ¦߼ܺ࿢¨ͳǭڹطԵԴбٸع˲ؾŬ޽ٹˬճݻƭԻӹ̳δὢִ״ƫƬٶçxvwx~{zӱ§ܸүݹͲҶƫɮǪɮѷŪ§Ҷҹɱܶ׳ײἣຠկͪteXPHB?@;9>98<7661/40..*)-)(+'%,(&-*(3/-+'%*&$" &" @81raS}rcRMFVPHRLDUMFc[Q]VL_YPPKDJE?VPIUPIJE>NHBMHA:60бԲϯŦŧä̭z|~wrsfvylu|y~zzyŪƫῤմҲϯڷƪ⿣ܹضȩɩȩ̮аعۺͳϴĪ޽ϯū̲ȮīǫraVN@;8&&&-..-..,--./..//-..-..*++""" " %" 1,(_QFwft¥ȩڹĥضħĨxdd2!X0"  $ ,0& +32(# )' )016 7!3(( /35B$M) C%2,-+% " """"##2F!M(E$4,/ F%U/"O* I&D#6@!f>-T?XCf@181+068@!b6'Y2# .F"K%=8I&L(E$9:> A";37 40.-259H(W2&\5(D%.& $ !      9;73;73B>9EA;JF@OKETOHUNGTMETMFXQIbZQneZndZf]SbYPWOGWPHZTLYSKLG@=:5.,)%$"%$"-+(1.++)'!! !!  "&")$ +&!.(#.)#/)$.(".("0*$2+$4,%A:2ldYnf[nf[ph]rj_ph^qi^y}||wtuuüļļļļļļļļļĽļļļ    $!" !!""#####$ $ %!#  ! '$"t~}~~}Ƨʫ̮̮߼ۺ/("  K@9yȪұմ޽ɲȱ¥|zkaQIEB=B>97A<:<75721620/+**'%)&$(%#)&$/+)*&$)&$$!)%"G=6jYLnvi]YSKUOGPJBTMEaYP]VMd]T[UMTOHd]Tg`VTNFRLEOIBIB:ҴѳǪǩѰĦĥ¤¦Ե̭¤Яy~sfv~qw~{{zwγĩұ༡ܺطڷԲ׵ڷϮǩĨȪұʬѳ׺ï̳ȭԵҲǭê޽ظ~paVN?:7'''-.-+,,*++,-,-..---*++))* ,'$^PFygϯյӲç׶ΰf9)X/!= $ .00/30" ' )& 7F*>%7!6 -& * 258 G&M) =".--(# " """##$7I$N)D#2+7Q,U/#L(H&;C"X0 vI5XCYDkC3;/+49::[2%[3$& ?P'R(H#6<B"L'P)E$> B"F%>#8!4 2123B$Z3'g;-m?0a8+B$) % ' & "# # !   =$a;*W5%F)>$2# % $ /1 68>!< , <({h[~zvzŭħ¤佡Ȫ἟çˮ̮俢߻۹⾢׵ݹ¦ڸ߼ݹĨɬҵвгβҵ㿣Ǭè⾤۷Բֵ̬࿤׵Ĩū߽޽êȮԵƨѱݼƬ˰Ȭ޽ݻ޼Ӵҳɩãsc}tjuxpfd^VGD?..-&''#$$$$$    $#$ % &!,'")%+& 0+%/*$-'!oh^|xlUPJ432+,+)**())&''!""''&C@;xqgzo{~|zxtt|p~vj}uiymt}|{~~}}ĺĺwxltlble[b[SUPIKGAB?;;8542/20-=:5YSKula{nrtx{|{yyz{x{nldYHC<%$! !  !! 41.TOGhaXkd[f_Vb\Sa[Re^UhaXnf\rj`yqgxoeqi^sj`ype~ujxmwkwodhaXTNGKG@LHBIE?973-+*&&$$###"!-+(30-.,)+)')'%'&%""! $ (#*% *% ,&!-'!.(#1+%2,%3-&4-&4-%JB:nf[mdYog\sj_ri^nf[tk`~}~zwuzûļļüüüļļżļļļļļ     "#        !"#""""### $ $   !!"!)%!~r}{zz|}~|{{}~\OE  " m\PظªůƯ׷usf]KEA>:8:64;65:63;75;76742/,+(&%&$#   -)%c]Tuiwvzzxof\̮ٸɯũڸɪյѰ̭ض߽մӲ¦۹ίīܽŧֶͮݽܹƪۻ߾ظʫǩŧǧԳܻ׶׶ݾȭᾤʮг¥ضӲΰȩĥťҰݺԳȮǭǭ̳Ŭ߽ī϶̲©߽ۺ۸ªἢүʰϳеʰῦ޻ʫ|xwz|}~y{˫޻شݹҰ忤߸ͨΪ̳Ժؾ˲ŭȯ̳ʱǭ˱佢⽣۶qcVIB93/941@:8=75731721.*))%#(%#*&$)%#,(&,(&*'%%" *&$MB:xeWmsgZ^XOUOFPJBWPG`XO_XOke[f`VaZQmdZsh]\TK]SKUOG94.~ίԳطʫƧˬضմЯ۸׶ĦԳ׶vis~qyx}yts}©˰ܺᾣմᾡڹϯίɪŨں߾ܻԵбѱϰͮɫxi_TL=95())-..+,,*+++++-.-,,,()))** !!/)%`RG|i¥ĩҵ¥յ۹Ũ޻[JQ'C"") 01220  ()'3M/!?&6 3(& .46 >"L) H'5,-,& ! " """#$# 3I%I'@ 0 ,:O+P+!J'E$? N)c7&{M:ZDYDlE4A 4-6;9E$[2%M* 7G#=?8@!O)V, V, J&> ?!C#?#:"8!312:U0$m?0tC4k>/T0#4. >H%H%@ 2.24- !#623/- /:' -7=D"D"C!C!A 4 !5PD--,%&&#$$$%%    $#$ %!&!+&!($*% 2,&0*$/)"kd[x|shPLG432,,,)***++**+$$$'&&C@;xqgxlz}{~¹¸zy{}~}{}v~q|p}p|ox~{nzmzmylzmwjznw·ź~}}}zyyznvnciaXb[R_YPZTLTOIQLFUPIf_V|shz{nZTM/-* !""###!"!#$$#$#!"" 63/ZTLumbzmym~wl~vk~uj~uiwkvj|pt}rzn|p~stsznym~ujxperk`d^URMF>;60.,++),,*0/-**) !!$" &$! #&!*& -'".("/)"/)#1+$2,%6/(81)5.&TKBtj^qg[rg\ui]qf[neYvma{}~|xsxÿļļüüļļļļļļļļļ    !$!"!!"!    ""$ $ #$ $ ""##$ $!$  "# $ $ #"!*&"znduz}~}~~|xwy|~rj_  #"D:3uë΍sdqaVKB=.+*$"!     1.*h_U|oyyvxl`ϰܺٷطǬǭ̬Ȩȩյظῥ̭å©γݼֶضԴں⿥̱ūῥɮǪ޼׶յ˭ںɭɭǫ¨Ϯȩ޻åƨũéݻԳӲ׶ڹ޽ܼɯʯճཤ¨⿧߾ۺǮīݻ߽ٷѰƭ۸Ա۸㿦㿦۷⾦ѱ޼ѱ~||vsy{z}yͯݽʱѸƮ˩ӱĩ޵߹ǭǮѶԸӹ߹ڵϭ徥Ȯ伢۶Ѱna[NG?85;64=86>976210+*,(&)%#(%#-*(/+).*(*'%'$"%" -)&PE=yfWmsgZ]VMSMDQKC\TLaYP^XPje\e_Vc]Toh^wl`cZPcXNWOGF>7ɫ̮||ʪִԲԳڸܻ̬̬Ħɪxnczmvjwy}~~r{orƥٸѯ۸ٶὠ¦æĨĪԵѲ̮̮ǫèѴѴѴƪç¦~ugVME62/)***++*++*++***,,,+,+(((())  4.)iZNm~ѯŪܻڹ̰HD$E&, ..0125#  )(137 9"5 /$ ( 168 B%M) A$0--+$ ! """#$#  2E$E$9/ , C#S-!N) J'@!D#[2!f;*|N;[EYDpE6?<99<:P+!i;*R- ;A ?=> J'T+P)I%H%@!> B$?$;#:"5 02I(g;-uD4qB2\5'E%3I&X.Z/T+E!83/* ' $%?'Q5)Q4)M1&C* 5, H&G%< > 66874-%    9/(VKA|rfв㽟ЭЭݸǪѴæ̮ȫĨ㿤¦ᾣྡྷܺȬȬ¦éд۽ʮ̯ѴۿԺͱ۽ܿˮ޻ֶ޽˰Ǭں࿥ʮγδȯδѵ۸༠̯ΰͱɮǭɮɭƪƩ̬{j~vktslb`ZRCA=,,+%&&$%%$%%   #"$ &!&!+& ($*% 2,&1+$0*#b[RvvndKGB221,,,)**())+,,&&&(('D@;yqfymzm|n~p}p~pr|nxkyl|o|ozn{n~qw{~{v~swkvj|ot{}xx{}{|}}xutx~||¶|vxus|pzo}qvkxl|owz~zkdZD@;0/-,,+))(()('((&''#$$%&&%&&$%%###851[TMwndr|xwluj|ow}}{orka`YQMHBA=8B>9GC>@=931/+*)%$#""! !! !! -*'1.* #(#+%,& /("/)"2+$2,$3,%5.&2+#ULBsi]rh\pf[mcYjaWh`Vxod}|xt|q~sxŽļļżļļļļüüļļļ  %!$!""""!  !#%!&"% &!% !"#### $ # $!%!&#'#&"%!$   60+C<6\SJ{n{nykxkykxkxkxkzm|ory~t'$   $ #  @;4.+'  2.*UNFqi_{otg\ɪճέϰྣīྣ߿ϰҳήæͮϰϰܼĪèèڹӴٸ˪ձʪǩֵյԴ޽ظӴϰܹݺ΍ˬɫȪӲٷմܺƫݺڸյῤ¨޾ظݻȮʹܸȨ޽ŬݼӳұٷɮϵͲ۷ྤᾥ׵ضٶճٶѯɨӳҲ~wu|s~oy{v|wvƨٸ㿧ƭԻ˲ܸӮЪȣֲ໣޺ѭ̪˩Ǧɧױ张ҬpbSHA<638318304/-0,*-)'*&%+'%*&%,('/+)+'&%" &#!0+)MC#3I&M)011?!5" )*3=; 7!6 +# +47 8!H'M) L)a6&g<,|O;[EYDpE6F#<;:<<U.#o>,Z2#4A @ ??C"=843<> 77;#:"6!27[4(rB3vE5g<-Q-!G#Q(Y._2 Z/K%;56=F&B$$/N2&Y:-Y:,X9+T6)B*9"@!E$=";!1/3-)-* # )-0/-**% (2{fXŤỞ˭Ũϭ㽡̯¥⾢¥޻׵ڸ޺ǫũܺ⿣ϳͱũ㿣ͱǫĨαѶ༢ήᾣῥԲѰطܻж޽̯ٶȭԹͳūͲɫὠ̯Ӷϴ˰ɭǪͲɮ¦ήyh}ujtpi_]WPB@<,,+%&&#$$$%$    ""% &!&"+& (#*%1+%1+%1+%aZQuskaGD?00/+,,*++'((*+,'''+*)EA;786320./.--,+&&&%%%%&&&''%%$851]VN~uiu|{usuwyv~uikcZ^WN`YPkdZg`W[VNNIC;84/-+'&%&&%''%'&%$$###########$#   &%#&$"     G@8OF=C;2% ("3,%+$+#'*!&2)@6-UJ@`VL`WMg^Si_Upg\wnc~svxzvzp{pzoƾŽŽŽĽļļüüüĻĻû "# # # # #""!"%!&"&!&"% !"% &!&"$ #"$!&"($)% ($ ($ (#'#$!{n|yzyvvvtr}o{nzmzmzmylwkxm|p{oLE>   # &# %"!EA;`TK£ڷʪ£ѰնٹյѱͯɪˬֵɭҶֵ̱ܻ˫ظĩ¨ɫƥ׶ȪϯԴΰͯϰΰˮӳѱյƨб̭ʫֵͮīཤྤྤŬ޾Ҳб޾۸ɩϰ۹ªݽīȯ̳ܺ⿦ٸ˫̬ԳҲͬå~xv|w~oryx|v{l~ǧϭ༤͵̴ӯճƭ«ҰǦϭճϭ̪Ƥѭ㽣׳˩xjYMFA;9@;9=853/,0+),(&-)',(&+'%*&$-)'(%#%" (%#2.+KA9zgXvvj^`YOWPGSMDVOG^VN_YPjd[gaWa[Sle[zqeof[_VMLE>ZNDħåȪåä¤ǧƨ¥ǩϰϯήбвήЯɬ{rfqwjty|yur̬˪⾤ɮҶеĪ߾ۼ׹ªֶϯ㿢ʭũ̲ӶƪũȫҵǮɯնʬӳԵscYQ;74'('***+,,+,,+,,+++)))&''$$$$"!&$"'$"4.+cUKsۻʬä̯Ȭܺ}j<: 8S,!h<,G(/0<> % ))( -37!4(#-56 ;"I(I'7---)" " ""#%#   (A#? 7. / D#N* L(G%B"S. e9)f;+{M:[EZDwJ:N) <;:<=[2%r@-b6'" 2A @ >;8779;;= A";;#;#8"8 C$c9,wE5qB2]5'J%N&Z._2 _1 S*A69F$U/!Z3#V0!D#A&U7*[;.[:-[:,Z9,I."+"'8;#5"1+(()'8#=&8!54552/-+(' 'V?5n]zճѰ׵§αèͱдβȭƪвֹҵΰɫ¥ħǪ̯§۸ƧԳ۹۹ֶݽ޽ūջΰŨæط࿥׷ܻٸũȬᾣĩƪϴʯǫ¨ۺ׵ʫ~m zrgupi_[VN@>:,,+%&&#$$$$$ !!   !#$ %!'"+& (#+& 0*$1+%3-'^WOtph^DA<--,***)**&'')**&''.-+JE@wodzoumbzrewj~p{m{m}ot|s|pt{}~}zvuvv~|·µ¶{yxvts{otj``XPUOHRMFOJDKGAKGAGC>;950/-++****..,D@;mf\{v}p}shyoduiuh{revmbg_V\UMPJCJD>C>9:73/-+'&%'&%('&''%$$$!!!!! *)'30-31.!   %"zmryncVHB;}rfsi^xncxncof\g^TaXN^TK{ny{pwz|uzzut{pȿƾžŽĽļļûüûûûû #!$!$ $!$!$ $ #%!&"&"% #$'!)#)#&!$ ##'#($ )% ($ )% *%!)% ($ #  \VMtuwyz}~}~f_V   #(%"'%"$! m[Nʯ˯èçۻȮ׷˭ͮб¤ǧطè۹ήڹں˭ܻǮƬɪå߾ݺմȫ˭ͬطֶͮѰȩǨĦ̯ۻѱäŪéīظūŬִ˫ŦƦظ߾ۻȯǮ˳ǯ޼޼⾥ճԲƦ¤Ƨ}zvuuwwq{msw}{xɩӱ˫ͬ㾥ཥ˫£ѯɨɨڹéཥڸѯ̪ģɩʨqn`XLE<64;64:542.-40./+*/+*.*(-*(.*(.*)'$"&"!%"!-)(50.MC<:<<Z1%r@-l<+8*@ ?<99?E!H#P+ K)> C#V0"B&;#:#8G'm?0xF6k>/R+ J#V+_1 a3![/J$97@V0!a7&Z2"L&E"P1%Z;-[;.[:-\;-\:,E*' ( & !16 8#1)*2.,1;$?( -$ ' ,,+*,-()-/$, ygǬͱᾢཡݺ¨ĩɯǭʮոټڼڼϱ¥ɭƪִԲͬͮϰèѷֻڿɰвɫ¥Ȫմêܼܺç˰ɮƫ۹׷ݼֶЯۺֶ£n vodvpi_YSL><9,,+%&&%&%$%%!!!    $ $ %!'#*% '"+&!0*%1+%4-'[TKuri_EA=,,+(()'(($%%'()%&&0.,MHByqf{oPJC<70IB:TMDYRI]VMbZQf^Tqh^ypd|sgzqeuizm}p}p{oznrx|xv}~xxvvx~{~ztsx{{xw|t~sgxnctlbrj`ng]og]kcY\VMNJCGC>EA::@ M'P(O(\2%c8*F&= V/#O-"9":": Q-"qB2wF5c8*M'O&[/a3!`2 T+@6:P+_6%a7&S+BD!T4([;.[;-[:-[:-^;,K- ) - 3! $ .6 10#21)+,.,%# ! $ (+/.+$! % ( [F;sĦ˫ضǫ̰ڸͭصӲݺǭƫṴ̄ũæ޼ͯŨũ߼ƨ׷ŭ̳Ȱīٺַвϱ޽ܼ׷Ī˰ɯնҳ࿤޽ϯͭԴѳäw#pi_tng^TOH;97+,+%&%%&&$%%!""    %!$%!'#*% '",&!1+%2,&5.(ZSJvpg\D@<---())'(($%%())'''31/RMF~uj|p_XKD>3E@4ID6IC6GB3GB3D>1F?4G@6E>4E>4B:2C;3G@7KDPH@TMD\TK`YOc\RjbXoh]umbwocvnbypdzqdxoc|rf|oyz{~~{~~|}zy}~w~rz}zq}sfvl`si^of[ri]xjzzwux{}}}zvts|n|sgulatk`nf\VQJ862$$#####$$ !!! &%#@<7MHAQLF740zpe{re?:5tx~tju}sgwjvusz{z{{v|}uƾƾƾŽĽļļĻĻĻûúû  $!'#'#%!#%!#"#&!)$*%+& *%)$(#(#'#'#($)% )&!)%!($ '$%"wk]UM    %!&")&"'#! tk`~}}}|z}ǷͽпĮíտӽëռ©׾ǰëҶٻݽɱʰۺˬŨ¥аڹڹճƧɪɫյ¥|ĦĦϯݻ޼ҲǨճ׶̭ĥҲ̮ٹūῤ޼ֵѲĦsy|ywuyl|nvЭݺ˫رʧˬڵֲ¢ЯѱԳٷִ˫svdWKA:2.+0,*0,*.*(,)'*'%+'%,(')&$+'%+'%&#!&#!($#/+(4/,OD;m]rkd[icYXRIOIBLF>LF>VPHc]Tf_VaZQ_YPf^Uh\RfYNGA9fXMҲͮħƧȩȪʬŧƧӳҲήĦȨڹϯq{sg{rsu|wzƩ̬ĥյӳۺΰɫʫϰѱ׶߽éڼ޽߾ܽܽ˳Ůɱݿίϰ׸޾Ҵٺvk^V>96%&&)**+--)**+,,,,,()('('"#""QE;veάέy<$4I Z0$c9*f2$l=(?%/W7(Q4%% ( 1357!3( ' 27 7 E&O*!C$0...(!" "#$$    " <:/ 0 A!K'L(C"H'c8)g<,g;+uG5YC[EQ?nB5I&AT)C!<D$j;*s@.Y1#4=:A O(X-!T+N(\2%m<.S-"<I'W1%:"N.$S0$V0%uD4tC3^4'L$T)^1 b3!^1 L&97D"Z2#c8'^3#]1!S*L* X8+[;.[;-[:,[:,_;,S1"- & 5)  -35382( ) +.+/112/-+'# ' &, }fWԲʮ§¨߽۹Ӳڷմݻ§߼ͯٷ׶аͱ̰ƫ§ұɫͯƬǭȮݽбϯŧΰ޽޾ʫյٹԴϰͯϰŨȨ~o$le\}rle\PKE764+,+%&%%&&$%$!""    %!#%!'#)$&",'!2,&4.'70)WPGyof\B?;-.-)**())&&&*+++,+863WQJymrvl[\TE\VG`[I_ZI\XDYVAPM=OL=VRDTQDUQEQLANK>HD8@=2?6KE=OH@SLCZRIaYNd\Rh`Vh`UkaWsj_zqevjwkznrsx~~}~~~~|}|z||zz{zz{~|y}~|~~}z{yu|qzo}qw|}}yxwy´~z|xv~{wuvx~}yutsruic\S@<8%%%###$$$#$$ !!'&$1.+73/LHAZTLYTL@=8!  h_VstwjIB"9"7!3' ) 37 8!F&O*!@#/...)"# ##$#   ! <</ 0 A!K(K(C#K)d9*g<,h<,tE3WA\FS@xJ;W2'AZ,!L&<=^4%s@.g9)* ,<<H$X-!\/"T+P)a5'n=/a5(?!> B!6KC;OG?RKBWPGZSK^WNe]Spg\vmbypezrf{sg~uiwkzm}prqrvus~qs}qxlvj~uixl|ptutxx|yz~~||{}~~}~}z{~}|xxyyz|~}}|~}z{|{}~xrkaIE@**)&&&&&%%&%###""""""41-OICVPHd]TibX^XPGC=%#!'%!]VMxlp}nD>7zm|ntg[|{wywvvwz|xwmuƾŽŽŽļüûûû»»º      "$ $ % &!'"(#)#+% -' -(!.("/)#-'!*%'#&!%!##"!;82~D?9  ""$ $" qh\|{z{{zyxy{~ŷǹɺƶìεԹϵҸӷìбͮ޾ܻɪťήͮή˫zymvwz~qrwjylsrxƨħ¤ȩǧĤyŧ̮˫ұұ̫̫ճӲygZND><74:5240-/+(*'%+'&($#($"'$"'#!$ %" '$"/+)50.93/QEQLD]WOa[R\VMVPHUME`TJeXMA;4i[Pίǩŧĥʫ׷©߾ִطϰuyqf}|p{ou~{yyyzίӲ׷ӲĩεѸεεūƮʲӻͶ̶DZͶηٽαٺͰӴعϴydYQ942*++,--*++'('****+*'((&'' !(# LA7ziX{|]G:4F V*a5'd/!p@*nD-: 04,)< B$9"6!3' ( 47 8!G'O*!@#//..)!# ##$#  <<0 2C"L(K'? N+e:*g<,k>-qB1S?\EXCR?d<.>[,!T*!<;R-!p?-o>,B$" 9?N&[/"\0"U,O)P*[2&R-"?!>?>R/#k?/qB2wE5j=.P(O%[.b3!`2!U+>7AW0!b7&\2"[0!]0!]2#[8*Z;.Z;-[:-[:,\:,a;+Y4$6% * 6, * 88(.,%*G*"N/&L.%;"F'!@=441.,+),40)'3_D7tڹྣڸèǬٷطŪǫ׶ٷұʫЯطŪͲƪչҸۼԶڻշѳҵ߿Ե޽ֶ޿޿ʮӳϯŪԴ}ro^kdZ~rhbYIE@00/*+*%%%$%%$%$#$$  !% "&!($)$&".("3-'4.':3,QJB}vme[B?;000,--+,,,--*++...>;7^XO}pv|{zyxyywlhfd{cxt\nmTedN`]L[YHVTDPN@HG;<=213(./$+- +. -0$01(..',.&,.%+-&*-$)+")+#$&%&$%! " %"+%/(2*6,!9.#:/$;1&?5*@6,A7-E;1G=3H>4H?5KB8LD;ME=PH@SKCVNFVOGVOGWQI_YPe^UgaXhaYg`XjcZph_vmcwl|pssts~rvws|p~qswz}~~}{|yz~{zz~}zzqfSNG86253053053043021.31.0.+'%#C?9qi_ulawk}thc]UMIC('%+)&[SKwkwtWOFrg\w}{zj^R~or|p~stuu{p{pxzuvlbyod{||½ǿƾžĽļûû»»ºº    $ &"(#(#'"'"(")#*$,% +%("% $ % $#""rj`ur}qrtxxxwy|~|]WN  ! !$ #  E@:|zywwxz{{zz{{}|{|}|{}~|{zzzwvy|Ƶȷ˺̻о­ԿнҾԾӼθϷؼдvxw{s|ouiwjxl}z{{ʫˬ̫˫ťʪͭ˪rygZPF?;529413.,2.,,)',(&'$"%" $! '#!# $!&#!1,*51/;63YLDxh~aYPb[RQLDC?8E@:MH@PJBXRJ^XO[ULUPHYSKbYO`VL=82iYNɨϮаɩ£¤åֶ߾ٸڹ̭˫ƨЯ׶ǧuxpeyymxlv}}wyxvæɪƩŦۺ˳иǯ̭Ӳŭ͵ԽͷԸĮĮ¬«ӵίбͯĪzk`X<85())*,,+,,())*+*+,+***)**"##  '#I?5}jX}q_.<O$_3%c/"p?*vH0S0!-10(;D%9"6!3' ( 47 :!I(O*!@#//..*"# #"$"   ;>1 2D#L(I&;O, f;+h<,m?/qB1~O<[EZDZEvJ9@W*\-#>=E$k;*r@-Q- $ 06AI#Y-!]0"W- O)M)O+!L(G"@@?T.#g<-o@0vE5f9+N&P&]0 b3!^1 M'=7C ]4$`5%W.[/ ^1!\4&[9,Z;.Z:-[:,[:,]:,b;*X3#5%+ /3 / /  1 9 8"(,( ! *9 L-#I.&hMD^A8A8$ ,.,+*(+10)" 2A$l\ӳྡྷݺ⾡§׵ƨƨӳ˫߼çĨۺ׶ǭ˲¨ʬȪʬв޾êܼԵ׷ݽ࿥նƪ࿦޾ָèַұظٺ׷Ӵ׸̮¥Ĩzg icYrf`WEB>-..*+*&&%$$$#$$#$$      !% !%!)$*% (#/)#4.'5/(;4,QJA|tjbX@=9///+++*+++,,())/00>;8_XPrx|Ķó|ojf|byt\tpYqkWgcP\ZGQP,?$/( (*/vE5`6)L$S(^1 b3!\0J%:9K'`6%\2"V,]0!^1"\6(Z:-Z;.Z:-[:,[:,];,`9(L+.#" * * !) :2 3;$9$&/$$ (2:H5.lRHR3,D"252.,*).1--( ' %lUHаæֵѱŦåҲᾢǫ޽ݼ⿤ĩȯͲֵǩظݽԵ׸ŬʹҷյҳǭǬǪĨĦϰŧæˮ~nibY~rd]UC@<,.-***&&&$%$"###$$      $!%!*% *% )$0*$4.'5/(<5-LE;7_YQsy~ĵyο˥ơÜɝ~|xqmic~z^zwZxuWqnQlkMkjMheMdaLdaL\YEUSAOO;PQ;KK9A@2::-89-66+44*65,0/',-#*+"*,#()!%&%'&('( ()",.&,/&'*""$#%%'!&(!&&!'&!%$ &%'%# #$ (".&0'4)4)2'6*:-!@2%=0$A5)E8,F:-F:.H=1I>3K@5LB7OF;QI?QJASLCXQHYRJXRIYRJ]VNaZRd^UibXng\tmbumctmcvodwoezrg}uj}vkxmxmwl~vj~ujym~rvvwz}|yyutwz|xz}~~~|}{x~z~r}pstw{}|xx||z|}}zuruw}|zyzyxx{{wvjsj`qi_qi_me[ibYg`WkdZkdZd]S>:4wxjbYQLF/-+0.*[TLti}ouodXWOG|peyod}rg~shxma\RGxk^paTpnxiryyt|mt{y~psxq|o{mǿžŽļûûú¹ %!)$)$(#("'!% $$$#"""""96041,       !   [UM~}}||~|{}~{{|}~|{|zyws|ozmzl|ortvxy{}~~~}{{}~}}~}~ôȹȹȹ˻ɹƵñĭǰëʮĨȩұ߻ݹ}xdUB71($#,((2..1-,*&%(%#'$")%$*&%,(&&#!%" %" +'%0,*1,*OD8E@:OIAKE>SMF_YP\UMSNFYSK`VMXMD62-veW~¥wȪںåĤɪwumc}qxlwjxwu{vqٸé¨Īۻظ׸ѱϱˮȩЯĬȰʲǯ˵̷͸˵íū̲ӸêۻԶƫ|i]U40-%&&'((())&'&%%%''')*))*)!""K@7jXK/6M$`.!e/!oB+k@-fA03.77-46!4)' 37 :!J(P+!@#///.-$ # #"# "   7@52D#L(I&9P-!g;+h<,o@/pA0pC4WB[E`J[F\5(K#e2%O';G$Y0#p>,m=+D$7>E!??!Z/!\0"O,!H*!E&C CCF!F$E$P,!b8*xF6tC3X1#V,`2 b4!X.E"9:R,a7&W/ W,^1!^2"\7)Z;.Y:-X8+Z:,[:,^;+[5%B#  19' ' :$<%0! '(! ))#-I5.J70mOEB7.# %-,)*35.&  hPD۹ڹ׶ٸܻݻǪèֶɫѱݻŬʱٸĩ¨ڻںŬݽ̱ŪٹɫԵˮæҴѳίָԵŨzsygc\T|pa[SA>:,-,*+*''&$%%"""#$#     #!% *% *% *% 1+%4.'5/'<4,F?7~qync\T;96/0/''''((())$%%-..?<9b[Ssy³ŴÝʤײѪˣʛ×|ywqnmkb_aaz^ca~z^poRonOkhM`\E]ZD]ZEXU@TP>ZTCOL6JB:OG?XQH`YPb[Re_VhaXibYicZpi`vpeztiyn~ruw{}{~|}~}~}yzy|~xz{{z~{vyyz}{{zwsvv|rwlwl|psznD?8wynf\SOH32/""!1/,XRJzmwqncWKD=pdYsh]vk_l`VvorseXoq{isere{mo{j~nqvvv{yurȿŽļûûúº¹   #% % #"$% %##""" ~~MHA      !#"t}|}{wtq~pqrtsrrqrstvwwwwy}|{|{|~ȷϽнѼ{s~uiqi_jbY`YQSMFD?9>:495151-%!  % PC;m^scLHCOKEGC=B>8E@:LG@HC1R?[E^H^InD3G"b0$Z-"<A O)j;*q?-W/"9>D!@8S+\/"U."I*!D"DB?>?!=!9 5J*!e9*Y1"Y/a3!b3!W-@9;S- a6%T+W,_1!^3#\8*Z;.Z:-W7+Y9+\:,]:*M-7 # ## 75 7"=&3 % -(&*%& *(A/(}_SD$;22, ),*((48-    S:0ۺԳᾢ߼ٸȩŪԴŨǩȮƬéضۺ׸׸ܼݽвֶܼںظʭвն̭ͯ˭ʭĨǩm#a[Ryn_YR?<8*+*)**''&%%%"###$$  !#!$ *% )% *% 1+%3-'5/(;4,C<4~ujyrh[UN653000'((()))**$%%.//C@2%@3&F9,F:-F:-B7,E;0E<1C:1JB9SKBVOFYRIaZQhbXke[pi_vpe{uj}px|{{{|||||z|~~~~y}|D?9ym{qi_TOI32/#$# /.+SNG{rfqxiwj]%"A92,'#?81_SHdWLl^Qug[]SIm^P{jZ}k[zj[{k\pb}lsuxi{muzxxt|lǾżļûú¹¹ÿÿ !!"#$$#####b\Ryb[S        !ibX~~}|{{z{}}}~~}|z{{{{{{}pui|qdzk}mmf\ibX[ULQLEKG@KF?@;5GB;TOGXSJPKDKF@HCG?8@:472,-*&/+''%!$!1*$=4,OC9ND;YNEeZPqeZui]{ma~oc~m^ǿļûúù¹¿¿¾ "$$$### <94u        1.){nuxyxxx{}}||~|{|~|{{{~~~}{|~}|zyyxxzywxy{}~ztxkxocc\Rxiæz̬̬ȧ|~zson^Qqi^}p~rxlvz|p}pyvsݾ׸ʬŦعŰîݿ߿عů¬ʵŰîгϱвշݾĭɳܾҵȬˮܽŮݿ~pj^V831$%%&''&&&&''$%$&&%'''$%%*'%+(&$" %! "*Ca+c- j;'h?-qJ7=(-@#/)5 7!/ .7 6 E&P+"G&1.(&.," % #"# ( (1@;/ ? K(J':N, f;+i<,pA0rC1h;/rE7ZD[E`JVB[5'T(f3&N'9K&e6(o>,l<+L(<;E&K+!I+"K,#f9*b5'M&G$U2+R2+D*#6!+ .J(V/V/Z0 a3!b3!U,B9@Z2"Z1"J#Y-_2"^3$[9+Z;.V7+S4(Z9,\;,R2%3# - $ 8943)<%9#"## # 2" )*5E%C#) N1(jC7Q3+O) A"39;4('(2B$I'E$5*   UA7߼߼۸մǩɪήʬٹ͵ǭ޽Ѳ޽ƭ©ۻӴʰջ©ڻݾѳ̯ٻݾܽɬæ̮ǩѳɪڹæ{?5.TOHundSNH531((()**'('%&%#$$#$$         !$ !#+&!+'!)% 0+%4.'81*;4,C<4}tj|ukWRK210./.)))()*--.'((444OKFund{Ƶ̺ĞǹķȽ{—ÚĘ|~}yy~||xwwy}xpptononnspkgff_epplikkdfcz^ypWngQc\Jg_NkcQc\KXRCUOANI=FC8DA7C@7C@7C@7?<486/54-32+33,10*./(..(--(+,&*+%**%*)%*)%)($))%((#)*%()$**%)*$''"#$%&&'"!!   !#%)!,#/%.$0%6*;. <0#;/">3(@6*B7,C9/F=3IA7LD;PI?TMDWPG\TK`YPe^TjcYme[slazshznuy~yy}zy{}`ZRog]xodWRK863$$$ ('&JF@vmczmreyl`@<6wk^x||{yu{m~pc}n`wh[i]Q\RIWOFC=6ƾļúú¹¿¿¾¾  !##"#{TPH      !jaW~|{yvtuutrrr~pstutsttwz|{}|}~~~}~}{{}}|z~İθ˳Į¦¦uqbTvnb~q{owkux~rwluu}pظ޼ں̭ҲݼĮܽۼůîԶ̮ɬ̯ݽŭ˴ɳɳȲҵ¦ΰìƯв~pl_V:62&'')))())())&'&'('(('%%% !! *'&)'%"! % *6[(c+j8&mB-sK7M3&+ B$2$ 37!2! ,7 6?#O*!K(4..* --$ $ $"" 21, ?<0 <K'J'<O, f;+i<,pA0sC2i;/i=2VB[E_I\Gk@1M%e2%Z,"=>h6(r?-q?-Y0#<:B$L,"H*"T1'l?/e8*N)!X4,\90I-&6!2((A"T-W/T/ [3"b3!b3!V,C 9@Y2"U.I"Y-_2"^4%[:,Z;.S5)T5([:,\:,N/"' . # # % 8;73.):$<%4" $2)')0;H&@! C"c4']0$H!Q%O(L(>:;0% "  $ 4I&L(= ,"   YF;ͭڸѱƨˮ߿ܻӴյֶҲӴֶںȫˬʭѴ̲޿Է©вѳݾڻɫˬҲ{@6/TOHtlbPLF430((()**(('%%%#$$#$$          !$"#,'",(")% 1+%4.'92+<4,D<5~vl}vlVRK331.//)**())-..())665VRL}uk˿œƺĻsƾƿz~|zxuy{wmmqorutqvxuqoqmr|vrpjfih{cxa|s]tlWrjVqhVkbRc\M]VHQL?JF:FC7DA6B@6@>3?=3:9043+00*00*10+/.)-,',,'++&++&))$*+&+,&)*$''!'(!''"$$$#####$$"#  #"$#!$( () -#-#-#1&7+9-!;0%>3'=2'=3)A8.D<3JB8OG>TLCWPGZSJ_XOd^TicYnh^tmb{ti|ptw{~~}y{~~og\haX~~uhYTM:85$$#!""('&ID>ph^thxksfOIByl`z~spz}trdvhrc,'!TSPºżûº¹¿½   `ZPyqe       ! VOG²λλλǵ­­űɶ̹Ƶzrsqtqsst~qsuvwxvwz}~}}~}}~{wvvvyyxxy{}~~}{}±z{zuʬήή̬ط߽ʳʲī׶ܼҵѳڻĬªϸսӼԽҼʵưƮƭ©ĬԼ˳Ǭzn`V830'((*++())'((%%%&&&''&### -+)(" " - /,O#c+f3#nB,nE3[<-$ A#6! /7!3$ )7 69 L) M) 8..- --(#% ""! 6>! ( >>2 9J'J'9K)f;+i<,pA0sC2j=0d9/P>[E]G`JzL:T."_."b1%C!9U+!s>-q?-d7'A :6H*!I+#`8+sC1e:,[6-c=4S4,<%4 2-7M)W/W0 U4&V5'a4#b3!X-C 9@X1"P*FY._2"^3$[:,Z;.P3'R4'\;,W7*D( + %" & % 8@;54.7"<%; 3%,.%). 8>!I&;"Z/#h7)V+ P#P$@U+V,G&>!4 )E$M(E$2!  mYLˬ¥ῤѳŨϲҴˮǫαũũǫίǨͯոغ߾Է׸ëȯ߿ʬ¥Ѳ̯ͯնxC91PKDrjaOKE420((()**(('%%%#$$#$$                $"$ ,'"-("*% 2,&6/):3,=5-C<4xn|ukRMG331//.)**())-..*+,666YUOynȽɾǼƾtļ|}~|w{sstsx}yooy{tsvuwõɻ˽ƸĶ̾п̼Ƿŵñ}|{vvzyo|dxb{p[sjVsjVphTjcQf_Ma[JYSEMH4I@6KC9QJ@TMCVOF[TJ_XOibXqj`slbxqfznry~s~quxytruww{~~|z{|~zxqh^UOGyl]WO>;7&%$#$$"""))(ID?og]ujtgvhNHAodYxyyx~t|nqj`Ve\SvºĻû¹¹¿¾¾  A<6zpcvwx{{n"       }zuuvysssuvxxwwxz~~~~~~}|~|{|}}}~ijƵIJǴ͹ӽԺҷӹϳ̱նĬйìұڹĮ̶ʵǰ޿«߿«ǰζ۽m_U840*++,--)**'(($%%%&%&&%""" !! ,('$. 0( :_*c- n?*nD0dA1':="$ ,6!4(( 66 7J(O*!3 4H%L(? E&d:*h<,oA0tC2k>0c7.xJ:ZD[E`JS@^7)U)f3&N':C!l:*q?-k<+J';0?%K-$h=.zG5e;/d=5_;2F+$5 4 1/:Q,X0W1"T7)T5'_3!c3![/G"9AY2#Q+EW,_2"^3$\9+Y:-Q4(R4(\;-U6)3% &  &# 1G$N)9418"<%<"9(,2# )+69C#F$/ G%g6)d4'P%;3 / ?T+\2#S1#C&- ?=1" " 9I&H%8   |hYū̲ȯéçںгͰϲĩçٹα̯вѴ¥ֶٹ©޿ŬŬ޾ȯϵǭܼбѲΰɫٺƪw?5-KF?mg]LIC21/'(')**(('$%%$%%#$$                ! $ #$ -(#,'"*%!2-&71*;4,>6-B;4yp}vlPLF443110*+*)**/01-..776[WQ}qûǿž~z}}|}~ùǼ}yx}sqz|vx}{z̾Ø×Ʒ´ƹʟ΢͡ʠŝҽɶñòŴǴ}ytooqlgxaxnZsjVofSbZI^WGZRDUOAJE8C@4@>3A?4=<1;9/86-97.32+.-'*)$('"''!(("))#'("&&!&%!'&#""! #"$#!## ! ! "!"!  !!""$# "" !!!!!!  ## #"!!!    !    !!"$&') +"* -#0%6*9- TMDYRI]VM_YOb\Se`Vmf\uncxqf~wk{o}qsv{|}|p|sh}thwkxlxlylzmqvx}{vty}|}z{~{zznMH@~qaZR>;7%%$#$$"##''&HD?slbr}ptRKDcZQww{p}r~sv|q{p}ruwvxz|w|nvhwjvi~rftgr¹ÿ¾   A=7|c\S     SMF~~{wwy|}|{wwvusssx~~}|z}}{zyyyzzzz~±ijðʵӽïŰů¬ɳڼֶָrfZQ+(&"$!$ ! &. 2)( W'c,d4$d;)iC2<'4@#(*5 6 -' 47 4C$P+!A#./, / .-'& % !(=F$+ ;?42E$L(B"G'c9*h<,n@/tC1n@0c7.l@3XCZE^ITAlA1N'e1%Y,"=:^1%r?-o>,W/"<26Q0&pA1~J8rE8iA8]:1=&4 305C%S-X0X3$R6)M/"^1c3![/G":>U. M(DU+_2"^3$\9+Y:-K0%R4(\;-U6)2* -  &$C#V-!K(4-3<%<#<. (6$ ! ()39> G%?4_2%h6)Z-"6!* 4* C [/ Z2$W4%E%E!M&M&G#6 .C#G%8!  }mªݾԴǫǭҵ¦¦ΰūܾˮѲۻǮܾìˮںĪëªë©߾߿ʰȮϴǬῥعʬŨzC91KF@kd[HE@//.&'&)**(('$$$$%%"##               " $ #% -(#-("+&!1,%71*;4,>6.A:2~wmyriMJD443000)*)()).//,--998^ZTu|z{|yø¸~Ĺz{wt~ʼɞȜɺ´ķͣӧթժΤɶǵƴó̺ѿоӿιȲɴİ}zumm{`w_v`{pZnfPh`LogSogThbMd^KZTDSO?LH;C?5A=2A=3=:0<9/:8/21)-,%,+&,+',+'*)%-,(.,).-)+*&**'..+/.+,*'+*'+*&+*'--)--(**%,,'++&))$))$))$''#&&"&&"&&"&&"&%!&%"%$!#"##$# ## ""!!   !#% &'!&'"%&!#%$%""#$$$!%&#&'$&&$'(%&'#%&!#$ #$('),!2'3'6+9/$;1&=3)>5+B9/C<3F>5HA9MF>SLCXQH_XOd]TgaXkd[mf\oh^skarkaqj`rkbuncvndzrf~ujxls{yxz{xrxkyl}puy}{|~{z|}@<5~wg_V>;7&&$"#"#$$%%$HD?tmc|osud[RWOHr{mvjz|yu{puk|rh{qgvmcyoeyoe~siwlymtguhwk~qsvruÿ¾   D?9zqfuvuxyyng]      -*&´öõŷŸŷõƷŷŷµ~~~y||yvvy{}|{zxwvuuwxz{{{}uznxl{rfle[a[RTOH<72)4- Db,[)Z-"f=.Q5'+ D%1( 46!1& 27 3; O*!H'1/,&)-*$ & "$? E!- 8@7/ B"L(F$= _7(h<,n?/tC1sC1g;/e9/Q>ZD]GVBsF5U0#[,!c1%E"9H%n<+q?-b6'@ 5,R0&tD3|J9pD9jB9V5-:#5 45;$ H*!V/ X0 X6'S8*F(Y.c4!Y/H#:=O+G$AS)_2"^3#\9+Z;.I/$Q4'\;-U6)2 - 0  %%D$X.!V- A",0<%:$3) & 8*'(08;E$F$6L(g6)c3&B & $ @(-# >N'W*W2$V3$B =A!D$=7$ # 9D$7!  6޾ܻ׵޼Ƭ˳̴ëг۽ٻѳַѴԶĬɭ˭Եغë̯ƨӳīϵѷŬع̯~l7.'EA;e_WC@<,,+&&&)**((($$$$%%"##                 $#%!-)$.)$,'"1+%81*93+>6-B;3{tjvofKHC443000+++())-..,--9:8`\Vz~}|zyutx~·ǼƼ~ƹ{zzsuöŸͿǛǚÙ̾˜͠ҥ֫իʣԿλƴÙěǞǠٿһһ˶İԻվŴ²ƶ}xzwwvzxongw_{s\skVmdQjcQhaOa[JZTEMI:FD6JG;KF7FA:IE>NIAUPH\VNc\Sme[sk`vnc}uiym{nrwzxv~rylxl}p|p|o~rwyxzxy}}|~~z{{{y{v:60{~xiaX=:6&&%###$%%$$#GD?tmcrzysh]KF@te{ntwvuvs~s~r}r~sisj`ulbujrt{n{nyod~rvuymzm¿¾    -+(HC>RMFUOIWRKSOHQMFUPJVPI!         |sg~~}}~zy{||}}}~~}|{xwwxz|}}XNE1. ,Z(W(W+!a6)`>.*?"8( 26 4( .7 54J(M) 7.*! & --% ' $ !1D 7# ;@9. >K'H%?!\5&g<,l?.sC1sC1k=0b7.wJ9ZD\FWCsE5d;-N%e2%N';<g6(r?-k;*H%9 L,"xF5yH9nD9jB9V5-8"7";$<$ 9"H(W/Y1 X6'N4'D%Y.d4"Z/F#<;T0#N- @P'^1"_2"\8*Z;.C+!?'\;-U6)2 - 2$ %% D$Y/!U- C$1,;$<%.#! ! 5/&(+ 79A"G&A9`2&g5(Q),!4@(! - ;N'U%V+Y6'R0"< > V/X3"M+;" 7A"6  &I,#}࿥ῥܻ׹۽ǰĭڼѴαũũۼ߿غҵĦ߿޾Ȭ~عé׷ŨĦ{A7/>;6_ZS?=9***%&%)**()(%%$%%%#$$             $$ %!/*%0*%-(#0+%71*81*?6.E<4zsiyriLID444111,-,*++.//-//;;:d_X~{}|{{xyz}Źĺùz{y}²͠͠ėͿŷŸʛΠթ֬ΨƢȡǶ˸ѿššϯͮäپ¤Ťǝ윪ҽͷîð˹ȷ|yzwooiw_zpYskTvmYyn\ujWpdSuiZshZd\MXQDVPDXRG]VJ[SHUNDSLBRKAKF<4@>5=:1<91;9187/32,32-/.)-,',+&-,',+'+*%+*%))$''"%& %&!()$))$%& %' &(!)*$+,&+,%()#()#'(#&'#((%((%))&**&*+')*%""!!        $!'$!,)%40+=93GB;MH@WQI_YPc]Tf_UjbXkcXog\xpe~wkxlzn~q|pzqgyqf|shxk}puxy||{{{xzzz}~yxtuz|||}zz{z{}xxt}q}q~svxz|yt~qth4/*~sug`W>;6&&%#$$$%%$$#C@;ke[vvyxl`FB=~nzo{qg|rhxm|qvt}rzouj|rh~sixmzowkxlu|qxm{pznugÿ    -,+=<:<;8986874653542774><9-+(        @<6|xtrssr~quz{{z{zr~qtvxyy|~}~~{|wk_$1" & T)U'U+!T+!a<-<'5A#-/55 ,+ 66/B$O*!?".+ $,-)& & "&?< &= @:. 8J&J'>V1$g;,k>-rC1sC1k=0b7.k?2WB[EWCqC3lA1L(_."Z,"<9U+!v?.o>,S, <& C&xF5wH9mC:kB9U4,7":#=&!:"4D%W/Y1!W7)J0$8U+c4!_2!N);:P, T2%CM$]1!_2"]7)[;.D+!" M1%3, 2* " &.D$Y/"U- B#528"<%/#" ! 55# )(39=F%Q1!;Q* g6)]0%7$ &?&* # 7Q- Z3#U&W(X3$X6&J)6; N)^6$`8%O-& (6>!2% ;^E:ħ߾޽ڻعĭݿϱϱغڼٻĬŬۼٺԵնܽŮܿ¨ƧŦ|LA841.VRL:96(((%%%*++()(%%%%%%$$$             $% &"0+%1+%.)#/*$60)81*A80D<4{tixnQMG765232.//*++./0.//;;9d`Y|~}|ƹȽ´Ʊйк˼ʝŘ˽ö~¶͝ר٬ԪϩϪҫϨȶнонȨѳгͯ˫Ƥƨ̬ѩЧƟƠҽϻλμ̻ĴĴŶƷǵ̻˻ʺʸ~~~|vvuk{cxczf|h|hwd{p^xl[rgVmcQjbPibQb\Jg`NhaP`YJWQCRM@NH>KE=D?7A<4C>5C?5A=4@<3;8/42*-,%))#**$,,&,,%++$,,$./'11*01+./)*+%)*$**%))&++'--)--)+,(*+')*%#$ "#!!      %")%!/,'62-=:4D@:IE>QKDUOGUOGYSJ`YPf^TnfZuma{qe~uhzm{n{n|oq~qt~q{n~pw{{yz{vs}p~qttx{}~}z~~yxxttuwvtx{|~SJBvofvh`W?<7&&&#$$"##$$$>;7e^Ut}}~oEA14tD3xH:lC9hA6R3*6!4<#51E%W0 Y0 P/!D*4 P(c3!_2!V1#C!:I&M)CJ"\0 _2"]6([;-H-# @'3+ 2.  ! !F.!M6(A"Y/"U- B"6 2 7!<%4 $49!$ " )'08:B!cA,U5"F$`1%_0$E$' !7 8!! * B"f<)f;(Y*W'Y/!X4%T2$20: B N)a7%Z4": ,6< . 79u\Pںŭŭŭɱ«շոʮ޿ʱɱڻӴֵնۼɭ̯z~ˮɫ~l@7/,+(PLF753%&&$$$)+*))(&&%%%%$%%             $&!'"0+%2,&/*$/)$70*82*@7/C;3~uj|pXSLB@<><9;9711/654332A@=gc[xuz}{zɺɺŵʼÛɼùƻƷ˽ǹϷؾԼʴǵ™οöʚקݱٰԮЭѫѫ˦ơͣϥ͢ʡ˨ͮӵԷԷշѰǩȨӬ׮ʡƞоӾоÚѽĢǢȢǤҾåԼʵɶò̹κʵ˴Ʊzstsuppl{du_~s_}p_|n_xl\odTkaPlcRlcSf^NXRCOJ4;:188077.55,76.86/<93;9364/00+0/+-.(,,''&"%%!%%!%$ ##!! !!!" !!"#$##"#"##$#%#%!#   !  ! ""##"#"##%#$""   !%!+(#2.)84/>93C>8KE>PJCTNFXRJZTL`YQg`VjbXmeZri^xoc}sg~thwk}p}q}p|ozn}prwyz{}|~b[Qnh_vng]D@;'''$%%"##%%%:74aZR{nuyu?;7sf[qylxl}qymsi_ndZlcYynctj`nd[qg^ujzoxnuj~sh{odwkwlyn{psv "##!"""###$$#$$$%%$%%$%%%&%        =:4|puvwy{|~}vw|{wz~|z||zyyv~rsuwwy|{yy}|z|~|ywu~pzn~vjwl}puy|~ĵǸŶȶͺӾ¬ůɼ}zx{|}|~|}~~}{{}~}{xwxzz|f\Q*,+P&N$6J%a<-0>!= .05 5 *07 4,7I'A$*$ & ' +-)& & !'?11N+L(>3. B"K(C#L*e:+h<,pA0sC1n@0d8.c7.}N/G"a0$N':=b2&v@.i:)F$7 b9+vG:iB7eB4O3(3+/33J'Y0 V/I(83B a2 c4"\4%F%9D"F'8GZ._2"^5&[:-F-" >&4, 20 % 8"eG3P1#W.!W.!<3 4 1<%;#)#0<#* ((* 79? W6&tO3B"X-"Y*G"+ />%$% 4E$e;(j>*Z+W'Y-U0!W5&H* 26. @[3"]6#B% 659$" ;7u̴ӼͷíȲưָ̰ͰնȱìȰȮշβȫƨˬ̯sF<3'&$LIC431$$$$%%)**()(%%%%%%%&&          !$ &"(#0+%3-&0+%1+%81*92+?7/C;3xmuhaY^XQYTMVQKGD?LJEDB>QOJrlcxux}}{ĸ̼Ǹ~ķНȽŹŵʺȺį¬ƮּڿзĮŰ˷Ƿ~ɸǚҤ۰޴ٴѭΨͧЩȣЧѩӪΦͪٹնαвٺۺή̪ԯܴ۳ծˢʥơƢʦȤÝǠȡĜɡŢģɦɣǥǥɨгѲȨȦĠģƤãǧ˩˥ãȩɫϸʵɴ˵ɵò{}|xolnlw`umWogRphRtkVxoZyq\xq\rkXe`N]YH^ZI^ZI^ZI`\Jb]L`ZK_YL\WLVQGOLBPMCLJ?JF7ID=NHASMEWPH\VMc\RhaWme[og]tlaxodzqexodwnd|sh}shwk|psx|}~}z~~}}~~{xy{z}sj_\WOyskaEA<)(($%%"""###641\VO{o}{pB=7l`Utss}nzm}oqzl{nrznxmbxmc}rhujujujvj{o}uu}x!!!$%%$%%$$%$&&&'('((&''%&&&''       NIB^XP`ZRb\Sf`Wkd[le[jdZlf\mg]mg]pj`smctmcslbslbvnd{sh|ui~vjzo~rut|q}qsxywy{}}zx}|vr{nvj}th|sgylt{}wvwz}|}{||zy}}}}zyyz~}|{xvutr}q|p}qrtwyxyzz{}{{|t-1 % I$L&>J"a8*M2%3?!0.35 /,66.% '@"=  "& " ,,& ' #!7;0M*S, ?6, ;J'F$D%b8)g;,n@/sC1pA1e9/b6-wH8ZDZDvG6a3&oC2Q-"V)Z,";A!Z.#u>-o>,R, 978b;.fC5cD4M5(*+294>!T.M*B$74 3 6T. e:*N+!970$ - R*Z/ ^4%[:-H.# 42+ 21" # U:*lL7jF3Y/"X.!@ 09 9;$;$-#! );#3'((49?!J) vQ4T4!I#[,!L"0!-P7-.! - ?AJ&[3#Y)W(Y.U,S1"R1#" $ 72 / ?D#43:10" *@T7.ϰһͷڽ¬Ѳвշůɲݿܾ§ũвˮɬ}åǨԵֶͮæXKAGE@210$$$%&&)*)'('%%$$%%%&&         "%!&"*% 1+&3-&1+%3-'92+;4,@80C;2~ruj}tixpeumbc]Ukf]`[Tojb~t~~uu~~vzɻǢȺóιӿͻȳƮëƭҸŪǫպëǰ˹ǻ¸ƹȵřФگ۱ԯӯΧѪر֯جѧӪҬճճԱزӬܵ۴֮ѬΪѭͩĠѿҿĞɢЪѮɧͬͩʨ̬Ӵ۾ۼԴά˧ƣȥ־ãѯߺ޻׷ѲаϯĤ ǤȥǣʤÞнѾм˷ԽƩڿȱ|{qnsy}{swq~c}cknlj~gkn|jxeygwculYulZul[ogVhaQ\WGVRBMK;JI8IH6FD4EA5CA4?=1;:.66*22'22'11&32'10'0/&+*"++#+,$)*")*"**#,,%./(//(--'--'++%((#&'!'("#$%$ ""          "'$/+&51+;60A<5HB;MG@OIBSLEYSJ^WNf_Umf\pi^umb|thwkxkzm|osuwzyzyx~synymxlvjvkxl~qx}{qi]NJBzzqfJF@+*)$$$!""!!!31/XRKwkSKCLD=}m`wg|kyhzjqz|yy|vzmzmb~qfzn~q{n~qxuyy   "##%&&$&&&''())())(((&''&''&''$%%        %#!>;7?<8=:6<:5=;6=:5962861:73<95A>9EA;FBLG@OJCPKDPKDQLESNGRNFSNGXRK^XOf_VjdZke[jcZibXibXle[qj_slaslbskaqj_slbvndzrf|sgyqexpd|sh}ti}ui}th}th|sf~tgvjylyl{m}ptyóų}{yyzy|~}}}}|{|}{{ywutsutrrrtvyzwQH@)' BO'H%Q'^3&Z:+)>!2-05 3) 36 0& 0A"* "  ! ,+' % !*;6+:A ?= 8H%I&B#\5&g;,m?.sC1qA1g:/a6-pC5ZEZDT@d5(k>.b:,H"_/#C!:P* r;+t?._4&=6K)V5(cD4bD3I2$% -6>95H'B$:63 4 9M/%b?0U1%:8*# (> F%="Y7*K0%" *4( 22' J1#rQ;mI5[2$X.!B!-8 9;$;%.! # %:!9!# $)&18<B!fD.nJ/<X+ V'E#  bI@T<3(8JAF#H'V&Z+]3"W-P,O/!% 47/% 6=?B#7/+! 8:l_íͷDzįŭƮ©Ҵշܾȱٻӵ׸˯ոշϲƩҳʬѲ׷ȫ{vxYLC@>;00/%&&&'')))'''$%$$%%&''              $!&!'"+&!1,&3-&2,&60)<5-<5-B91C:2~qz{vw{si~rwl~}|x{{wwomuzvrx~·~ěΪģϼȳս£âӾӻϴ˰չèγɭҹ϶˱ϻÖʛˠνı˻͠دٳЭϫΨҭܷڴ߲ث޳ٳٹ޻ԲٶΨҬزڳЫͩүЭʦœÛʣΩϫӱѰ׶ղͭͮбڽع̫àѼǥ˨ʨ̫׵޾׷ܻаʨϫʧğ̥˥˦ʥʥ̧ЯҴƩͶ²|~~}tj{`ztXtpRplNgbHe^Jd]H_YE[UCXTAVR>UQ=TQ=SO2@=2@>2@=0A>2FC6GE8FC8A>3:7/20)-,%**"'(!41+SLC~qxv}q|p}ujoh]_YPVPHKF?B>7:7174.0.(&&    ")$.' 4-%82*=6.A:2F?7KC;OH?UMDZSJ`YPg`Vle[tmb{sixmxmznzozo|ortsrtx{xncA<5z|shOJD,+)"##!"" /-+WRJzrg|sg[(#&!($3-'5/(=4-H>6RH?\QH]RH_SJaULj^Si^SeZPpdY|nbzlxjvvvz{   "#"###$$$$%$$%%&'''(('''%&&%&&%&%    *)'//---+++***((('&&%&&%(('-,*31.31.20-42.85185274074164041.1/-31.53/863>;7FB=KHBNJEMICMJDLHBEB=@<8?<7@=8B?:HD?MHBQLERMFUPIWRJWQJWRJZSL[UM\VN]WN^XOc\ShaWhaXhbXjcYmf\ng]qj`rk`rj`pi^rj`wpe|uiwkwlymszųǴǵʷʸô~~z{||z~~|}r--2L%K&T)[1%_<-@*26-,15 ,-6 3' 1* "  $+* ""/3( " :@ H(R3"M,!J'B"V1$f;+j=-rB1rB1h;.b7.i=1[F\FXCoA1d6)mB2H%V)O'8J&h6(w?.i:*E#>P/$`@1gG6Z>.7## /9B!80=">":535 <S5)c@1X4';9-,981,)9#2 + " 13, >'nN9oL8\4%Y.!E#)F$N)=#<%2 $ 6<#+" )'-8:B!U4%vQ4F'K$W'P#3W@8oTI*$ 2EP BK(U1#V%\-c8%X-R+A#$1 86+ 4 :<B"?"5''CP0'æʵʵ˵íŬȯ͵˳ʲηɲعҳԵݾĨũ׹ܼطʬ¥ĨʭʬŧɬqudLA8;96./.'(('(()**'''%%%%%%&'' !                   "% "'")$+&!1,&3-&3-&:3+>6.<5-C:1H>4sw~w{wy{wuqqvxttuw{ķʻŶ~ŜѮȩҹٿ£Ϲ϶Ըӷçγеոոɭǫ¥Ģ̠ѣΣ˶̻̤ҰѱάЬֳ۶ٴعֱֲ̦֮ɦάЭɦÞɢˤѬ̪ήٺ߿ܺմвΰػڼ̫ʨϭұ׷طصڷ޽߿ЮƣžҽĝĝğơşĠ˪ϱç̵ȸ̻ʹǷ²ŵ̽ʼͿ˾·Ÿɽۚǻµ̼¢£ƦǩƥнͽǷynhcd~b}_x^}uZxqTrlNxqUunRqiPmdNi`Kf^JiaMriSskSphRphRqiSogSg_N^WHTN@OJ:@=9=;8>;8?<9@>:GD@PLFRNHSOIUQKZVO[VO[VOZUNXSLSNGNICNJDSNHWSLXSLZUNe_Vxpex~|{{ytttsstuuvwz~}z{{}}of[%! $ L$P)S)[1$\8+O0%)7.,+43+56-"' + "    .70!%+ % 5@F'U6%[;+J'F%Q-!e:+h<,qA0rC1j<.b7.c8.O=^GYDP=a2%nA1Z4'I"W+!;E$l9)w>.g8(M)<T5(eE5iI7P7'' (3;> :4>">":43 6> S4(]:-T0%<819 A$: 4-' ' ;$&" $ % -30 4iJ6rP:_8)Y.!L'(;Y0"O-"<%8"" $0=$3! ((+ 78A"F%pL2[;%>V(S%: -nSHC/)- =N!MAN+[4&V%`2"i=)U-V,@!)+ :65&  4 ::B"C$;+> @ |mʵʳȳíѲаʭůů׸ů޾ѳ¦ѲçбշӵڹٹвħlOD: 763-.-())(((*+*(('&&&%%%&&&!!!                   "&!")#+&!,'"2,&3-&3-'<5->6.=5-C;2K?5r|z|{yy{y~Ķ˼ν³ǶɣմƨεɰδպӼӼֻټ۾ǫѶӷۿؼʮȭçɠ˝˜μվǠ–ÜƧɬͮѯұϫְ߿ضӯϦȡƤĤɨáмŠȡΪϮѲ۽βͰ׻غЯ̫ǤάԲұֵٸϬàŝǠÝĞмϱ̯Ѻȶȷ±²ǶͼͽôŵɸȸϿȤɥʤ̣ͤɟϦөʡǫ̨̛ȦϮѲѭΪ˨šϾ̺Ͼ˽÷|zzxskqpfddckw}vnnvtn~gzbphQSL;A3&NA3|p{sxqehbW_ZPRMDMIAEB9:8//.$(()) "!#$''++"--$//&21(1/'//&/.%,,#(*!&'#$$%)*!-.$./&-.$-.%-.$.0%,.$)+#'(!%'&&'' --%10'0/&40&83(94):5*?9-?9.>8/@:0C<3IA9MF=QJBVOG]UMc\RkaWodZtj_vmbpg\5.&v{ypeRMF+*( !! -,)UPItmbnf\?70[PEq`sbugtgseyma{petj`pf\xl`ym`rfZk`TdZOeZOdXMcVKdVJ*%!tg{~wwts      ((''(''''%&%$$$###!"! !  ""!####$##$$#$$%%%&&&&&&'((()))*)***()(((((((((('('''''('((((((((())(**),+*--,.-,.-,--,.-,//.000/11011011011221431431531541763:85<;8:96875975653542975@>;GD@KHC[VPtmcw~yx{~}|yxvx|~|zzz{}Ǻʽƹķƺź~|{}{>4-&CS* T+ X, ^9+a<.?&-/-' 05 -06 0! %  "    69'!% ! .>F&P2 bC0O.#L) _8)c9*g;+o@/sC1l=.c8.b7-sE6_I[EXCm?/h:+h>/B W* E"9b4&{@/o<+I&<Q5(fG6hH5I1"% /5:739?#>":3. 5A"S2(T2(M+!;-1?#A$874' & 52 ((*+13( [@.tQ;b<,Y.!P*, 1S,W0$>&:$)#" )<#:!% &((58?!E$`?+kI/5N$U&@!# :"N7.'9DS!IBR0"Z0#V%e8&j?*R,V,I%*( :8 63' " 8;8=D$?":G ]?5ϲ«ĮԷˮĨܽ¬̯ܽǰª¦ϱˮΰӵбΰƩ~ͯƩ{YMC 542-..'((&'')**((('&&%%%&&&!"!                      "& "+% -("/)$5/(5/(4.'>6.>7/>6.E<3K>4|p}|~zƻŹʻȸĴμΪֶǩγγڽħپåŨæѵܿ׼ͲеʯϼřǛġƨ˦̡ơƧ¥ɩťŸͨ۵ֵֶݾڸԲϨȢǦĤֿϸȨϫ˧ͭԶշٻѵ¥ɬֹٹٷȤţϭѯֵڹݼݻͫʦ˥̧ɣȢΩ̧¡ίغʪѾνƴƶ̼ȸ³ʺͽǣÞǞΤӧժөϧΨϫѬѮԲбϬʤÞͻƛ̿ƻ”˼ɹĵ~yvqvðɶðƴƳlh`IB7+B8/;3*4.'>81B=6IC-?=.>=.@?/@>/A?/GE4LJ9IH7IH6FE4FE4FF4BB1>=/<;.:9+99*<;.ED5LJ=+B@.A>,FB1KF6OI:OI:MF8NG8IC61'r}{qfUOH+*',*'SMFskarka($cWKxeorvzxu~s~stxr|nxkviwhvf|jMD;g]Syxuyv~o #""! "!#"#""! ! ! !  !     *+**+*++++++***)**)*)(((((((((()(((()))****++*++*++*++*++)*****+++*+**+**+**+*)*))))))())(,,+,-,---......--------,,,+,,+----.-,--,--,-.,--,...///00-//,--+,,)**'''&'&'''&&&%&%&'&&'&&&&(''+*)/.,541LHBoh^x{{{z{}ø.0Q'T+ V+\5(d=/\9,% 0.) (42,51&  !   2;4""  $ <D$N/W:)M.#H$[5'i>-e:+l?.rC1o@/a4(a7-m@3[F_IYC~P-w?.Y0#H) X;-hI7cD2;&$ 16:64=!@#>"=!7+ 2?!P.%M-%>"3)3D%B$8880& $ " (+*.35-  J2$rQ;e@/Y.!T,3)H%]2%H):%4! %! 8 =#+$((388E$E$P1"<#DV'E$ # . ='*# 3CDS!FBF&V(X(i<(j>*Y2#V-Q*.& <96 57 0" A>7 <E%B$G$EɲȲ¬éѳĭ۽ͱֹǯƯӵʭħίնΰǪͯϱ˭ŧϰܼ׷æ{YMC 431///'''%&&()((('''&%&%&'&""!                  $("$.(!/)#0*$70)6/(6/)=6.=6.>7/E<3J>4zn}ux|z}~~|Ǽ÷ǻɽŹ·ĶôôͼǣϭбƩոڽʭ˭ƨ̭ԶڼӵھϵĪçҽǜȥǩɥˣǢȪħĥãǥѭܳظͬϨЩά˭ŦȩæβյϬ̬ѴҵӶ׺ͯͰշն׵ӰԱճѯӲݼ޾ط׵հհֱҭͧϪϮӴԶɩѾȷòĵôô̽ǣȤȤŠ̿ͣҦ׫ѧӫѫ̨ӯܹڸ̭Ǧœ͹ʸͼѿǢ̢ț̿•ĘͺîϾȸĵ³ĵտȢšÞĞʶޞӾ}tY=8,4+">:511/++*''&(('''&&&%   " +(%)&"73.;71?:4GBQO9OM7QO9QP:SQurssr{m#!"  $" '&$&%#$#!#" "!%$!%%"$#!$#!&%#&$"%$"&%##"        )********)**)**+++-..-.-+,,*+++,,+,+*++*+++,,,,,+,,+,,*++*++*++*++*+**++*++++++++++++,++,,+,++,,,---.--.-..../../.,--,,,,-,---,--+,,*++*+++,,++++,,,-,,--,--*++())&''%&&''''((())))))))))())()*).-,HD?me\x͵}si! J#S* U*Z3&c;-iA2A(" .,$ -4.14)!   0:;+! ! 7B!K,G,H+ H%L)b9)e:+i=-qB1qB0d7*`5,b6,sD4bK[EXBm?/k=.e<.=<:B"n:*z?/j:+Q1%]@0kK8aC16"(36856>"@#>"=!6+ 2?!M,#I*#7!,%9!G'C$996-& #!$ +-7?6.( 1mM8jF3Y/"U- 6# ;Y/"O-!:%A%?&1>$ 4# ((186?!G&B"45S%M")"- 1& - AD JQ CAC!V&Z+k?*i>)Z4$V/ Q*-& =9742M*T3& A%E @6 :C$C$>rdͷDZĮغ׺շǰɲغڼعٹظϱŨϱڻ̮̮ںѲ¥ŧȩw^PE 220-..'''%&&'('(('''&%&%&&&""!          IA:kcYog^oh^e^UYSKRKCGA:@;584.    "%("&!/)"/)#1+%70)70)81*<4,<5-?8/F=4J?5uj|su}~}Ƚƺµ˾ƺøǺȹɹʺͼпҰ߽عŨ׺ʬͯʬʫնٺϲдۿɰڿʯŷǸӽƢƞȣͮϱʭέɪŨѲֵܵ׵ܺյҲְҪѯָΰշִֻܾӴѳҵݿ̯αݿ߾ٸέɨͫԳ޼ں߻ܸ׳ڵӭ˦Я׹α׾˷Ĵ²óƷĴǷϿŸàƢʤǞʠΤ֬ױҭЬҰݻٸѰˬƧßӾҿœǢΤ͡ś—мŭưнξǸǸʻ;ɸòҼЪΪʥÝԽʵƠȣŠeMG8<0$NHBGD@?=9=:6>;7A=9B?;><897486375297375242010.21/43021.0/-**(%&%***)('&&&"""#$$$%$$$"0.+740@<7B>8KF@_YPg`Wog]zrfxkswy~~pifejj``ghiosvokkc``}yY|[{wXtpQuqStrRzwY{vYxsXvsTurTyuW}xZz]slSK?.maTxk_YQ530!"" """+*'OICrj_svi}n`JA9yiZx{|yxy}~~|oaHA;trvjvg{,+(+*'*)%+)&-+)/.,/.,.,*-,)*)&('$)(%+*'+*(-+)+*(,+)-,*+*(        ()((((((((((()()***++****+*++++,,*++)))))))***+**+**+****)**)))))))))())'((((()))****++*++)**())))))))()))*))*))**)***+*+++,,,+,,+,+*++*++*++***+,,,--,--,--,--+,,)**)*****((((((())())())()))))-,+FB=jbYtusuwwy{zz|}{|ND=>R)T+ W-!a9+i@1d>/+,-& % 23-4,"   ,:;8#! ! 7@I*B'6G%H%T-!d:*g;+pA0rB0i;-a7-b7-^1&T@`IXC~O"=!4) 2>!K(!G)!7!*%:!H'B$:92% $'$ !  *4@!C!;05&\@.mJ6[1$X.!> 2P*Z1$?&<%H$6 ! (<#9!& '(/853F%F%;2K"S%5B"@"* ! '7J#U0#R"LB?K#W&[.l?*c9&R- V1#R*.9W.#K'C%E'B%:kA0^9+zL9S0$G!D78B#A"`E;׹Ʊî¬ݽìϸиظѳĨַī࿦ԵͮӴնnPD; 11/---'('&'&&&&(('('&&&&&&&""!         -)$ULD_UKocXz}MG@   $%(#("1*$0*$2,%70)81*;3,;4,<4,?8/G>4H?6{rfyyru~|wzɼ̿ʼ˾·ʽϿƟȣƠßϯ׸ַ˭̯Ҵб̮ΰظۻӵαêȯеĥǸɹһּğȠʥήҴΰϮɩǩԷ۹۹ԵԵٵկԲָظӴӵոݿҴҴӴؾ̫׵ݻۻܹ۷ԯֱزӮЯϱɫһ˹ȷ²ȹƢϾппÞƢȢɡśƝˤѬϭɧɨͯԴЮϭͭίұΩˤˤͨЪͥ͡ˢ̣̻Ϲ˭ήƤĞ̼̽ʻѿҿųűġǤտҺ̶Ȣ̧ɣǵpWP@=1%]UMe^V]WP[UNZTM_YQd^V_ZRZUMWRKVQJVQJQLFNJDLHBLICPLFKHBIFAEB=?<8DA=FC>GC>DAHFBJHCNKELIDKHCJGBGEACA=?>;?>:<;7;95;96?=9;95;94851@<6E@:TNFb[Rph^{rgxkx}xtwz|~{vsuoojcecfoqkhkljz]XK8dXKyla[S852 !!!""*(&KF?ph^sw{lbVK|l]x|{yxzvvx|pu~}n2.*|pdxlvj{ovi~n{$" *(%,*(-+)-+(-,)/-+.-+*)'*)&-,)-,)-,*.-*-,)-+).-*0.,0.,0/,0.,       !!!"""""""###$$$%%%%%%%%&&&'(''(('('''''(('(('((()('(('''&&&%&&%&&&&&%&&%%%$%%$%%%%%%&&%&&%&&%&&%&&%&&&&&&''%&&%&&&&&&&&&'&'''&''&''&&&%&&%%%%&&%&&%&&&&&%&&$%%$$$#$$$%%%&%$$$####$##$$#$#$$$&&&++*C@;f_V{n~}~~|wwyvr}p|o|oqtz|}(& M%R* U*]5'g?0oE5g>-6-2& 630,." '9:9-    8?G'E(- C#I&N)c9)f;+m?.rB1l>.b7-b7.\0&m?0cKZEWBm@0l?/[5(;<:M(v>-s>/a=.aD4kK8jI5G-!745647 @#A#>"=!4( 1>"K)!F)!7!+$/G&A#:8/"$* ' # (:A"@ ;7?#4H1$pN9^6'X.!E#! .A![1$J* :$D%@% 7 =$+%(- 77+ = G&@!2DV&C( `5#<# $ 2AZ4'_5'S!FB@S%U%[1!m@*_6$T/!W2#L&,<]2%Y/$F'B'D(<#=#N/%`;/nD4E&L$D 78B#:{j^ŵ±°ĮƱǯ«ƪ¦ַۻͭʬӴ˭ǩ{zhTH=..-,,,'((&'&$%$''&'&%''&&&&""!      62-MF?XOGKC;A81VMD|vv{xvuWPH    !% &!*%("2+%1+%3-&81*;4,>6.<4,=6.@90F=4G>5wnc|}yuv{y|~²˽ƹȺͿŹɽǼøɽοͽʺϾÝßϯյع׸αոݾܽڼٺԵյ˭ɬپӹͳ˲ͳȪƟÜáɪհװױںٻвЯӳ׸޿׸ҭӬ״۽ټյͮշټٽոѳշ׺ټۿܻܻۺٹճٶسְԮԯӲʬɬвӱЫşȷƶͩɥϾǷŶ;ƠǠÚ̿ÜʦέӴҲ̬ͮұү׵ַ۽ڵҬӭڵӭʠˤѫȤ˫ٻշʬտ̻̽ȹƸʺͻʷʶлȤǣӺк׿ȣΨӮͨ˹s[UDC7*kaV{owl}ti|tixm~r}rxmyrgvndtmcoh^ph^pi_oh^qj`qkaqj`nh^hbYhaXicZjd[g`WibYf`Wc]Uc^UicZke\ke[jd[c]Uc]Uc^Vb]UgaYhc[ic[f`Xc^Uc^V`[SXTMUPJPLFIFA@=9:746410/-%%$#" %#!,*&30+>:4HC<\VMhaWrj_xlymw}~vqt{Õɿƽ{vsnllqw}rnvwm|\\P;ZL=|ylb[S962  !!'%$FA;ph]r~g[Pn`Sorzlzmyns|qx}yvzt;50pf[vjwkympe[tes'&$/-+*)&(&$)'%)'$(&#*(&-+)*)&)'$+*'*)&*)&/.+20.31/31/43032/10-0/,$#!       !!!!""!"""#"#$$$$$$$$$%$$%%%%%%&&&&&%&&%&&%%%$%%$%%$%%$%%$%%%&&&''&'''''&''&''&'''''&''&&'&''&&'$%%#$$#$$#$$#$$#$$"##"##"##""#""#!""%%$751UOHsk`|pwz}~~u?R)S*X."d<.lC3sF4\3$-6K'D#>"2+! #   7:76  5>>!G*. 3J'E"Y2$f;+j=-qB0o@/Z2$\3)^3)^1%WB^HyL9}O;g9+mB2E#;;=i8(s?/b?0bF5kJ8tP;jH5<#34546>"A$?";7B&>& *iI5d?-Y.!M(%(7 Q*V/#<%?%F!, 0>$3$(+ 68-7G&E$6:T%T%5!F&m<'* " , =M* `9*X*OB@E!V&Q#[3"m@*]4#X2#Z4$I&$ 5T,"^2%O)F'K-#U7,B) ! /K.&A'5M%@6 8A!=hXOv}}zvwȶϻ͸ȳɳĭììªvi\Q50,;85310"$%"#    C>8ZTKQKC@:3<4.7/(:1)PG>wu~qyl{nxlxl|pSNF    $'!(#+&(#3,%2,%4-'92+<5-?8/;4,?7/A:1F=3E<3sj_}zrov~}~±ǶͿƸöƹʽɽʽȻ̾п›ĠϯںܼԵѳշ۽ۼնϰΰػջδǩΩҫԲ׸޾ڼڻ۹ٹڻܽ׺ڼ׶յۼڼݿҵ׻ܼۺۺ߼޼ݼֲձѬزԮЫұвҵ۾߿߻ٳΧşɤѬ˦Ơ̼ʺϿ̧ʣɠĝǣʨŦָ̯ӳϯұٶ۹ڼӯЫֱٵѭŝȡ̨ɩϰո۽дçϼǸ³ƶǵɶƳιǤվĞǣ̨ҬڵϫͺuaZHJ=.xm`||~ztvt}q~r~qsuwwxt}q|pym{o|oxlvkxl|pt~rymznznym|p|p|oxl|ti{tiyqfog^slaskakd[f`We_Vd]T\VNSNGNIDMICFC>A>:;9610-)(' '!qiQqvot~ȿú~zwmppvomttk~\bYAUE5ypf^U:72 !  !!%$"C?9og]znyzqdXi]P|j|lwiqg]yoe~stx{zyv~sv|pxkvqE>7kaWtiwlynznsqb*)'/.+.-*-+),+(-+)-+)*(&*(%.-*.-*/.+/.+-,)-+)1/,43054143042/430430531.,*       '%$.,*+)'(%#$"$"%" '$"'%#&$"%$""!   !!!"""##"###$$#$$$%%&'''(('))()))**)**())'()'((())'((()))**)**(**())'((*+*<:7\WP{tj{|}lcYL$R* U*`6)iA2rF5d8(8+M'^1#M(%& # "!    3:97+ 1;/?%4 /D"=B$Z4%pA0qB1b7(R+\2'Z.#rC3eMzJ8]."b5(k?0Z4':<9T,!p?.fC3dF6jJ8tP;mK7H.$14446>"A$?#=!3(/;# K)"H)"4 ($4F&@#981) &'$!% 79;1 3A%G+& S:*hC1Y.!T,1! 3C"\1$G);%F$6 #$ ;":!& ')191.E%G%<0N#T&;!1c6$^3!'8F!`:+f:,T"IAC O$W&K a7$l?*W/V0"[5%N+ -?!^2%[0$F%Z7,dB6V7,&, ?'!=$  >I$;6 7A"?YI@xkvvus}pzm{m}o{n{nswz|{zyz{|~}utwksh~rfncY[QHSI@KB:B:31,'$!QKCSMFHC=>823.(/)#5.';2*>5-LD4D;1og\|vnjp{ǶŜƙʻͿǼĘȻʼȺ̼ÝÞƣ̭ٹյ˭ˮع׸ֻܾͰԱڵ߾ڻںִҲԵ߿׸ָֺڼԶԲаӴ۽ܽ۽ܾٹط۸ܸԱݺݸٴְӭְسطٻػ۽۸۶ٲԭԮԯѬϩƠŠɤɣŞͽȦήԾѺǪгնط޿ϮǤǢҮӰ̫ßΧٳή̮̯ڻٻдʧĵõƷȷʷǴлáʨǣˤӮЫɥϩ޹ֱϼwjbNPB2wk^|{{yzz}~|}{y~}z{}yzzs{nxk|ovjuncph^le\c\T\WOXTMOKEGD>=:654142/1/-D?8q}zwvztpnplgookbh_GP?.qvme[=:6""! !!%$#A=8ldZxlvrqc\QFvgY{kynwnd}r{p{qyovl{p~tt|rgynctg{kE>7e[R~rgymzn~qtu -,*43121/10.10.10-/-+/-+0.,.,*-,*-,*-,*+*'+*'/-*0/,20.43031.30-42/753864&%#       " 85396474152/52.52/741742863964:7575330.2/,2/-0-+2/,/,*0-+,*(,*(,*(+)',)'(&$&$"$"  !! ! !! !! !! !!!""!"""###$$$%%%&&%&&&''*+*=;8]XQyrhw~]VM8Q)S)[/#g>0qF6k>-Z0#K&U,[0"P(3 ! #    -:=E$4 2( 07 ( = @= ; a8)rB1h<,S, U)Y,!D#S?`Ic5(\."^5'f=.@;;B"e;,gC3dG6jJ7tP:oL8H.$15646>"A$@#=!5)+8"H)"J*"6!(%6 G'A#: 82- ('%!+, 3;,#>$I-42!gE2[2$W.!;/9 R+T.#;%@%>(&" 4=$-%)$#-( @"G&A",DV&I # 'E%g9%2 2AN,!h=.a4'PDDR+V&S%H!h=(i=)R*P)T+C$# 34Z0#\0$=W5*gD8[:/- - G.$A(#(AG#A!5 8B#>VD;t{{{zwxxvvt~p}o~psstvs~prrrqtwyz{|}~}vRJB96040+.)$,'"/)#6/(;3+;3+<4,SKB|oqtqqymuivjvC>8   !& )#,&.(*$6.'3-&5/(81*=6.@80@8/?7/C:2H>5C:1iaW{{uustx~ǵ˜Ǜ”ƘɚɝȜʞȝ̿̽ǷϾƠœ̮޾ڻԷؼپԹټַٷճѮϮҳܽۿ׺ݼۼٻ׺ۼ޼ܺٸۼݿ߿޽۷ٷ޸ڳӬر۶޾ټڼѳѰٴٴӭѬӮϩɣÜп›Ü̼ĥҺѹռپåϭڷ߼޾ںѱղӯٵ׵ʪʦְЯʬɭַַѳťҿ̼ŕ̟ɠӿš̫ѰձٳٵʧɤѭҮҽ|wnXRF5pcV|~~|w|{vymvk~vj|ujvndibYd]T^XP]WOVPIWPIy}}z{~ûĻüztsnnkpqnfnfLRA.vhyqi^D@;&&%!"""##(''B>9jbXxl~~zlpbTud~pa{oc{o{o{rh~tjvlwmxn|rixm}suvuw~oJB:k`Utfylsfwjnt ,+*97543143143165364243142032020./-,0/-20.21.20.20-.-*+)&/-*20,641873:86431             &$"?<:=:8?;8=:7=:7<96;86<97<:7964741853964;85<97>;8>;8<9685320-20.52042063152030-0.+.+)*'%'$"&$#(&$'$")&$-*),)('%#'%##!"   "#"&&%652RNHlf]{tizn~rvz|~{xx|}{wvz|{|~}{~}vsvy}~LC !    4##; @= ; S0"m?.n?/Y0#T)U(B!T4'dM~M;\."X.!h?/Q-!:<:Q0%fC3dG6eH6rN:pL8N3'05647>"A$@#>"7* ) 5 E)#L+#8"(%6 H'B$: 83. ('$ * 8" + :- &=$J-<#V;+a:*Y.!J& )7 B!Y0#B';%?!-'#4=$6$('   7G&F%3:T%R$2 A"d7%N)* =N(`5'b6(T$KAI!W*V&IN(k?*e:&O'J%P%7" A'D&> [0$V-"<Y8-iE9X7,.* ;"C($1 # F"U. H'4 8B#< [J@~}yuvz}}{yvwxwvur}o~op|nykvhugugxl`4/*$ (#-'!2,%:3+<5-;3+;3+PG?wk{m{nwjui}sg}thxlLF?   !&)#,&/(,%6.'4-'6/(81*>7/B:1A90?7/D<3I@6E<3d\Suzw}|uuxǸɜʝ˞ѥҧӨҧˠʡʡˢʢȠɢƣѳٻպ׼ھ޻׳ұҳ˭ײѳݼ׷׷Զնۼٹݻݿ۽۾Զ˩ѬزӮΨկԮʤƞȟȠȢɥʨˬβͱӸеζԿͩصݽܸұϰѯ԰ҰȪŨ˭̮ȬڿҾǗΡ̥͢ȤƤԳۺصײڶضԱϪŢǤmZO>qbS|}~u{nwkzqfype|rg~ƼȿŽĺǿ}}|}yuw}wssultmPR@-yl^zqi^HE?)('$%%#$%***EA<9><9@=:A>;@>;A?;8?=;A><@=;75341/52074230-41/41/41/30.20-)'$%" " " $" '$#)'%*'%(%#)'%%#!$"!$"!#! " " ""!""%!&"'#,'#0,'62,95/@;4D?9KF>PKCVQI]WNb\Sf`Wkd[pi_tncyrg|vjym~rw{}{~~}}{{{zwuvy}5O'U+ ^3'mC4pC2a4%^1#^1#T+BD3 "# # 6* > ?A!C$)    *&!7A!=< D&d9*X0#Y1#T+V)F#*~Q=`Ic4'\."^6(e<.=<;B#`?0eG6eG6kI8pJ9P4(05755="A$@#=!9+ )2A'#O-%<$)$5H'D%: 94. ('% ) <5 6. (=$J-A'"  5#b>-Y.!V.!2! 4 5 O)O,!:%A$7(#)<#;"( &)"  -E%G&= /O$V&A ) g9&p=(($ 8Fe5$j9*[-!T&GAK"V&S%A^5#l@*^4"N&G&H$)'G+ K,!E$P*>!?#dA5fC7P1&/* 8@&!2'% J%W0!E$3 8B#:\JAz|yy{zyustuvx{~yvus~ovivhzlwkri_1-)!'".("5.';3+<4,>6.A90SKBxl|q}qxlwksuymLG?    $("-&1*/( 7/'5.'70)92+>7/E<3C;2@80E=4JA7H>4c[Qszw~ut{ɺɜ̟˝˝ʝ̡ЦѦǜǝˢʢƟŞɢ˩ԵӴعۿؼھԶ۶ۼܼܾ׷ݽݿٺԵбЮԳظݾԵٹض׳ڴܽغո̫ͨկԮ˦ͧЫԭزΦ̤ШҪհشЮˬֹ̯Ħ¢ǣҭܹ߿ڻطȪҴֳֵܹ̫׺ݾͮҳȬŨֿ“ɚϢΤϩġťӴٹ׶ձ԰޺ȥßʷg[IhYI~xuĺ¹ǽØÕº~|z{{y~yv~uuzq{uVYH3wi[sj`HD?(('$%%"#$)*)FC=me[~rsykufXu|qwkyoeuj|pwl|rg{rg{qg~tjv|r{pdugKB:% 4-(81*?5,G;1UI> 863<:8=;9>=:?><<:8863641<:7?=:?=;@><@><8=;6:73;84>;7=;7=;7/.+       641@>;C@>DA>C@=C@>B@>A><@=:>;9A>;B?B?<@<9@<:?<:@=:B?<>;8=:8<96=:7<96<97>;8?<9?<:@=;86430-.+(,(%,)'/,*1.,1.+.+(0-+30-631742521+('&$"&#!&$"#!#! #!!!!!%#"+)(*('(%$&$#$"!$" $" $" %"!#!" "#!$" "   &"($!)%"+&#,(#/*%2-(50*61*<70<60<71>92A;4E@9IC;LF>OIAQLDUOGYSJ`ZPe^Tg`Vnf\umazqe}uhwjzmrwyy|~u=P)[/#f<.rG5b5&]0"^1#S*>F I%% #"* ;: ;S.!K)F%5!    ' .= >=!>"_6'\3%P*U,X*M$)N1$cLN<\-!Y.!h?/Q-!:<:U6*fG6eG6kJ8mF9R1+258 56;"A$A#=!; .(2>&"O-&B' *$1G'F&; 950)'' ( :E#+11 &<#J-D)/O3%\2$Y.!C$ /6 =Y0$A'<%;)($5=$0%)%  $ @#G&G%;EV&M") # :k;'E$0BS)tA-l<,W(R(ACQ$V&FAe;'j>)W.N&G&>"(+A(M-!D#3& M0&gC7O0%C%+ + 39 /+ -+N(W1!C"3 9B$:WF=s~}~{yxz}~yvuuvs{oym~rwyyyxt~q|o|nwkrj_1-)")$0*$5.'92*<5-@80C:1VNE|p}q{owodvmczn~q~rLG@  !%*#/(4,!1)!8/'5.'71)92+?7/F>4G>5B:1F>4KA7I@6_WN~s~|xyzϼͻҦѤΠӥϢʞ̡΢ǛřƝšÛɢұ޿նϱۿֺ˰ӷؼݿ۽ڵݶػܼٺˬھƧбۼۺ޾߻ͭâΩ޶ݶ۴ٲܶ޼ַѴʮĥǢΨӬѪʤşΨѫ̥̦Χ֯صصشίֹǪæɩΩѬ߼عۼ߿նӵֵԳʪťή޽ݼҴҴѮѤ֧٬Χͩ˩ħͰ׹ڹ׳ڵֱͫʧğshR^M=}|~{~|ǼȾƽúȝÔĽ|{vrty|~w~xpvpzY[L6l]O~umbIF@'''%&&$$%()(DA;=;8963964:85<:8><:=;9=;9=;9?=;?=;@?;A?<@>;A?><9        %#"!DA>GDAIECLIFLIGLIFKHEKGDJFCHECHECFCAECAC@=A=:C?DO)6 "# /=?**Q-M* F%=  !     ) 9= 0L+`6(P+S,X+S'6vL:cLg9+[-!^6(c;,=<:C' aC3eG6jJ7pI:T3,258549!@#A$; ; 2(1;$!K+%H)".$-E&I'>"9620(+ $ & 9H$D"09':"J-F+6  3!\6'Y.!S- ) %7 3 M(O,!;%<#. (&.=#8 %((   7G&F%F%F"S%N$9! @"U.(?I!c4!t@-_0#j=.Y0 P)O$V&O#4 L'j>)d:&M&O'E#5>!5=&O-"@ ) /_=2b?3E'@#'+ )9 13\6.' 3R+W2!@!3 :B$9`PG|{{zxu~rrsr~q|ozmvj|rfzpexnbqi^c\S+($% ,&!2+%6/(:3+=5-?6.A8/OG>sk`woeymvk|thwk~ui|oNHA   #(!.&3,!5."1*!8/'5.'71):2+B:1H?6I@6D<3F=4LB8I@6`XOy~}|òṣ̌ԩѤ͠ѥ֩΢̠̠̠ƚÙĜŝș̂ںعܼͮϲٽֹ׺ܿݻܽ޿ڲݿָܽήƤ¡äбֶݽʫӱ޷ԭ߷ڳزԳַغڽոϮĞǠȡǠÜȡЩԬҫΦӫұִܸطݿʬɬԴҮѬٶ޾ܼݽܻմʪѱ߾ֶնֵѧԦثͥɥ˫ƪָܼղҮٵܸܶԯٵ׳ϩ{oXRA0xkx{{wtvu~rvx{z|~~y~}ĹƼƼøĚƗĔ}|{z|{~~~{|xmmk]aU>bRC~{sj_IE?&&%%&&$%%(((C@;kdZu|rgwk_h\Oygxyzyzzy|||}tf674fd^~10.FDBFEBCA?><:<:7><:?=;@>;>;8<96?<:?=:@=;A?<@>DB@B@=A?;C?IECIFDKHEJFCOKIOKGC?;C?B?92C=6HB:LE=QJBWPH]VM`ZPf_Vnf\slaxpdzrf|thxltx|ZEBN(<" ! ##4>?5 G(O, F%C#)$%    -6=; /O,!::B%]@1eH6hI7pK:]91648547!>#A$; 97(, 9!F)$M,$3%)A$J(A#: 821, *( #7F#M'.$ ;*5I,H,9!,M0#Z1#Y/"B$ 2 7 :V."@';$2('&7=#+&)#  /F%F%E$H$P$L#3% # >!47G Y.k9$yF2wK=pD4^5 ]4V(V&B/Z2!l@*Z3"H#O'4-G':">&O-#<( B)hD8W6+D&9&- ' :!0$b>5jC;;V/ V1 ;3 <A#8cTJtwyz{~}|~~}|~}zws|ouitk`^WN'$ &!-("2,&70):3+<4,>6-B9/G?7d]Toh]xodzqfwncwncrj^ulayID=  ")"/(5-"4,!2*"8/'6/(70):3+C;2JA7I?5D<2F=4MC8JA6bYP~~õʶƜʝУУҥթϣʞřǚʗϿěšǢظڼ߿۽ڹڻյ״ڻٻ޼ݽ޵ڱ۳Ԯά̭շټҲΨě™ͼŝΧծѪխݵ۳ذҰѰϮֹ̭ԶҴݼ׳ɦΪնطήں߾ն׸ٷԪѢݮݴӰƧԺȭ۾ְܸԯ԰ֱܵ߻۸ҭɷ}dG=05.&81*>70@:3?92@;4\ULyqfrj`e^U^WOf_Vog]qj`rk`xpevk|sh|rgymwk{oznttuvz||~}~}ù·ƼȾȾ¸ɺÞĔĻŹ¶|~}}zvqbcZA[J;{}wncKGA'&%%&&%&&'((A>:ibYuyordW}l[pwf~mqy~~~('&A?=CA?FDBFDBCB?>=:<:7<96;85><9@=:A>;B?CA>GEBGEAA?;B@JGDNJGMIGKGEIEBGC?LIFQMJMIEKGCKFBJFCJEBGC@HEBJGDLIGNJHIFDFCADA?@=:@<9@=9A=:B?:6853974964:86=;9>;:?<;B?=>;8:75;85:74852853964853842964964853964;86<96=:8>;:=:95211.,1.,63295462030.520631642864:76975:76<97><:A?>@=<=:9;87;86<98=:8;86:86:7684230./,*/,*/-*.+)/-+0.,1/-30.30.1.,'%#%#!%" $" #!# #!%" $" !!"!!""# %!$ % &!&!,'!0+$3-'5/(;5.;5.82,;6/<70B<5FA9JE=MH@SMEYSK\VM`ZQg`Wnh^tmbwpf{tixm|qvy{~M)!W-"b7*pD4_3$]0"T+>@L&>* ! " $ 4?<4! 1O, F%F%5#+    .?!>6* T0"X0#P*R*V(C!%3xL:bKl>/[-!_6(`8*;;<Y<.eH6fH6qM:a>3829756 <#A$>"6:, ) 8@'#O-%<$&'5I(D%: 931- *, !3D"N(G$$ <- / G+J->%3" )V0#Y.!S.!) )9 4 J%N,!;%6 )(%.=#6%)&  ?G&F%G$O%S%<,# " "*  2B[/i8#s?+xF3UEd9(\4[1T%V+6Q5%h>*g<(L(7L&, " D%<#@'I)1' Q4*eA5H* E'1'+ -8!, '7kA7R0(D!Y2"N,43 = A#8ZKBzn~qymxmwkym{nrsr~qsstuttwywutvxxxy|{xwwvtrzmvma[TL'$!&!-'!2+%6/'91);3*<4+=4+>5,@8.C:1D<2KB9MD;QH?PH>RKBUOF#     #)"0(2* 5-"4,#90(81*92*;4,C;2I@6G>4C:1F=4LC8I@6`WNy~˴ιϿĖ̟ѤϡТѤУ̟̟×ͽȸϾÚğɪ߿޽شܹڽ׵ѲӲ۸߽߿ݿ۷޹ڷݽݼݵ߶۸ӴвػټӴծЧˢǞԬׯڲӪӫ֯ԭխճӳǨƨͰغعܼڷϬӰҴ޿޾۽ݽֵЩ̞֩زԳɬĪѵܸܶصнs\WI:9465231.0.,#"ri^}wod!!! ,)$0,(?;5A=7OJCUPHaZQc\RhaWg`VkdZph^og]sk`}sgwmbuk`vncwkwkvjyl}psy{~~~δ̸ǼúȾŻ̺ã̧̪ȝǖǽɛɝ;¹ºy{yuqajbGZG5uxodMIC))($%%%&&())><8f`Vsvxgmz~~{{|}~yw><:DB@@>A?:B@;JHEFDA@=:;85=:7%#!              752C@KGCMIFJFCFA>EA>LHENJGQMJOKHNJGLHDKGCLHEKHDLHDJFBKFBHC@C?;?:7>:6C@:7?;8<7383073/73051/41/742;86=:9>:9@=;C@?B><>:8;85;86>;9?<:<8785384273041.0-+0-+0-*.+)-*(.,*2/-41/742520+(&'%#'%#(%#(%#(%#&#!%" &$#(%$&$"&#!&#!%# &#!&#!$!!!%!&"'"(#(#/)#2,%5/(5/(<6/<6/;6/=81>92@:3C>6HC;NH@RLDVPH[TL`ZQg`Vng\vnczsg{tixm}rux|N#\1%lA2f:+\/!Y.!D=J%?=*  ! #% 4>;(   I)H'E%=  , (;!D!7"?#Z2$P+P*U)K$),]7)^H|N;Z,!^4'mC2N+ 9:R6*dG6dE5lI6kF7C'"0E&: 46!;#A$@#591(4?$ M-&G)!*&/C$I'=!941/)- $ .B!M'O(994, D)K.B'4/ @#Y/!Y0"B$ 5 9 3P+A':$- (&' 9 ;")'(!  /F$F%B"L%T&E 1' # ! * 9K&H f6"j9$P:|L:iWZ2!\4W,X)i=,<%bB/W2#Q,>2I$&B$;#@':-,\<1X7,C%E(-(& 2-)* .E&[3&= ' L&Z3"G'3 4?!@":}q}xtx{x~r}q{oxlznym~ti|rgvjxl{o{o}prsrr~q}p|o{n~uhri^WQI'$!$*%1*#3,%5.&6.'81):2*;3+;3+:2*:3*;3+;3+70(.'     #+#0'3* 80#4-"90(:2+<4,>6.D;2H?5F=4B:1E<3LC9F>4^VMu~}ɻпȶѸҹʳʸôȸʞΠΠ˟˟ʝ˞țŚĚŜ™ÞԷ۸ۺٹ޾ڽҵͫΩ߾״۹׸߿ٸбҲܼܽײܶ޸ذ۳߶۲֯ЭѲвԶ޸دϦɡծ۴دѩӫլӪӫճַշͰĦɬֵֵطۻ޿ԴΨУ׫ҭήͱѷ߽˧mgUEC<@>:?<9>;841.#rh\UPI%"*'#51+=93HC>;8=:7:74974<:6?<8@>:A?<96740:74CA>EC@FD@C@<2/,           )&$E@FA=E@;FB=KGDNKINKIKHFIEBFB?EB>C@;=:7<96;75;85;74:64953620:74<96:74<97?=;@=<>;9:75:64=:8?<:=97964<97B=:JC>OGAWMF[QHYNFWMC\RH_TJXNESIARH@IA:D=8?96;74?:7B=9B=9D>:D?:KE@PJENGBKD?KEAMHDFB??<9<85=95>:6;74852:64:6373061.40-62/40-2/,2/,,)&)&$(%#(%#)&$(&#(%#(&#(&#)'$.*(.*',)&'%#'%#'%#)'&,*)+)()'&(&$)'%*(&+)'*('(&$'%#(&$*'%+)&+)')'%&$"&$"%#""! !#! %#"&$#&$"%#"%#!&$"&$"(%"+(%,)&*'$*'%*'$,)%.*&.)%.)%1,&3-'5/(71+?81=70>81?92A;4C=6GA:JE=NH@RLDXRI]WNaZQb[Rf_Vng]xqfxm|qsuwy~ncR!a7*h=.\/!Z/!H";H#D"D$O/$:#"" $&2>;&   4K)E%A"( +" (.7;( $ U0#S, P+S)P&1%S0$yI8VAX/#[-!f<.e=.<:K/%cF5dG6jH6oJ8M/(-O-$U1&458">#B$727(.>"H)#N-$2%); J(B$:720), ' * ?L&O(D#8:(@&K.E*54($T.!Y/!T."++9 5 :I);%3'*$0=$4%($ " ?;7D"R&N#5-# " &* W/T."Y.!h8"q=)T>vK;\LU-[3b4%uD2yL7iI4gF2L)I%7*, ( =!8#5 .,7!U5+H*D&G+#;'( ) -$ +* )4K)X1&63S,Y3!@!2 6A#;C+"z}u|p{nymwkypewncrj_f^TOIB# "(#-& .'!0*#2+$2,$2,$2,$1+$0*#1*#0(!+#"   %-$3*!6.";3$4-"80(;3+<5-?7/E<3H?6G>4A90E<3MC9D;2_VMv|{x¶Ÿɹǵϵ¥׽̵řǛŘȚɜ˞ʝɛǚɞȞ̢ΥҮӴݿڼںٹۼ׻ڽ̫ɨٺֺӶܼܺ޻ݽܼݾظֵͬ׶ݽڻ۴ݵܶذܴЩŧϱڻ޾߻ٱ̢ͤׯذΤȟϦد߷ܶٸٻдӸ׹غ۾ͰĦϰٹعںָгڻۻֳ׮خԯӳٽپۻ̩zq\YRHWPH[SLYQKLE@-$i^Srka1.* ,)$2/*:61NHA]VNgaWjcYxpd|shzrfwkwk}ptϴвɤę·ĺȼʼŴвǩԾɥի̛ɼѿ;̽ɺŴ}u}|qrulxpTXE0teypeUPI10.$%%&''())985d^V}q~wk}rfykzxuuporvstuss} -,*EC@DB?EB?B?;B?=DB@ECAECAC@>A?<>;8741741:74?<8=:7A?<9B@=GECKIFEC?           GB>NIEKGCMIEMIENJGQMJPLHLGDKGDOLHUQNVRORNKTPMUROOKHKGCHC?GB?FA=B=9A<8A=8GB>HD@ID@ID?JGCLIGKHFHEDJGEGDAFC@FB?C@=B?<:=:8<86:64852852741852?;9=97:75:75976<:8>;8><:@>=?<;>;9;87FA=bYQsgtw{}xuqwh}m`|m`pbW`UL[PH_ULj_Usf\vh]tf[qcXyk`~oeqcXeYOaVNYQJIC>D?;F@;JC=PHBNGAPICWOI[SLYPIVMFNG@HA:695284184173/51.73/73/73/951;6295195173030-.+)/-+/-+0.,75386474252030.30.30.20.0-+.+)/,*0-+30-41031/-+)+(&.+(-+(-*'.+(2/-20./-+,*(-+).,*/-*0-+1.,2/-31.41031020/0.-20.31/31/1.-1.,42/41/75286396385273141/2.,3/-2/,0,(/+'/+&0+&/*%5/(71*93,93,?92>81>91?:2?92D>7HB:NH?PJBXQH_XOd]SjcYqj_xqf|ujym}qv{~cG=[."_6(\0"\0"M&;CF#?Z6*O1&F,#! % '3>;*   B$F%C#/)'  $10:- E&W/"P*Q*S'9# G)i=.{L:^9*W+\/#i?/O,!8B$_B3dG6iH6qM8W8,/E'b9+>$5;$<#A$>".8- ) :D%R.%?%%(0F&F&: 821+ +* ( ;J&I%C"8=)7J-H,9 2B"& 9X.!Y0"D% 4 9 3 B#@&:$, +6( :!:!)'+/$ :G#' 2M%T%?2( # 1 *(V.!a7(q>)h8"yC0N9pH;\8+Z1a7#S=V?mG3rP9cA/L(E$,).@($ 9 6"*0* 4A$C&G) K0'E0#59% #- +"29U1(]7.' ?Y2"R.;2 8B$8Q>5y~rhaX851 /*%6/(.%,$*"' "    &-%4+!90#=4&4-#90)<4,<4,?7/D<3I@6F=3@8/G>5LC9B:1^VLyz±ǯεҹԻǞ̛˜ȚŗțϢΡУ̠ƛǝɠΥ԰ݽбӵټڽۺѰԵ׸Դӵ۽ӴҴԵҳںںڹܶԯѲϱܾܽܺٱϣҨݵ۲Ц̢ѦѨׯݹ̰αغֶܻͯٺݽݾ߿޻ڱͥկֵҵչ׶˨pudrdykwkqeZ<3*[PDvWQI   OHAjbXjbX4.(:3,B;2RI=e[N{Ȯ̯ȤŚȽȺ̸̻׾ϲշŧǡ˽λпĘŝɺy|sqqiyqU[I4~qb{rfXSK430$%%%&&'((986d_Ws}}|~~xu '%$FC@HEBCA>C@=DA>DB>A?DB@IGEIGEEC@C@>=:6962962>;7A?;CA>FCAIGDIGDJHEMLINLJ320           852LGCKGBKGBMIELHELHELHDLHDIEAIEAROLYUSTPMQMJSOLTPMSNKRNKSOKQLIHC?A=8@<7E@<;75:64963<96<96;7585263052/;85>;9?<:>;9964:75>;9@=:7B>;E@=E@;9<:8;86;97>;9<97<96;85;85;85<96=:8=:8>;9>:8;85:74;86>;9=:874274275352020.41/52030/1.,,)'*(&*'%*(%)'$)&#)&#(%"% % &!)$(#1+$5.(81*71*?81?:2A;4A;4B<5F@8HC;QE=W+ ]3&]2$\0"S*=>F";T1'Z7+7!06, 2==. )E%E$8&,  " 1.32 3W0#Q+Q*U)C!$ 7 f;-c9+d>.K&\/#]2%c;,;>Z<.eG6eF5lI6T6)47f;-I+!1=#>'?#A$414'3@#M+#K+#*&*=!J(< 441. (. # 5G$J&* * 9- / G+K.>$1B#I%L(X.!V.".*9 7 3@$<%5'952=#/&(7?'  F#<" C T&J"3/$ # !2 24K* P,g7#i9#J6yG4`:/Q*[3m@,XAU?pM7qO9W5'L(B!,'A)H-"' 9"1*0,;!C&D'J,%K2(B+ 58 '%!% 23@"P,$D$" J&Y2!L):3 = B$6eVLywx{|{{{ynaZS<95 62.YQItk`qh]@7/,#*"' !      &.&5,"91$>5'6.%:1)<5-;4,?7/C;2H?6G>4C:1I@7MC9C;2XPFzyµóɶθѹ׽ħʫͣ̚ēƙ̞Ϣ̟ҥУƚƛśն߿ݾٺغ۾ݿݼ߸߿ӳаۼڼٻ׷غݿշӶعٷܻնǩӳۺۺܽ޿޶ݲ޴޴׭ϦӪܸۼݲԲӴۿִԿı{_PCWI:wod " .,)!g_Us~q53-'(#21)YSBiսչͱƣǝÖĺƻÜŤǨΰ׹ַҮǝѼžʡΨĜɹǹvmjkiz\]L7ufW}shYSL641%%%$&&&'&875b]Uuyuuvutsurrrqw~}ywzt{kEB@MJHMKHJHDHFALHDMJGGDAGDAIGDMKILJHKHFIGDC@=EA>C?FA=KGCPLHRNJRNJSNKPLINKIMJHNJGNKGMJGMJGMJHKIGKHFIECFB?FC@HDBIFCHDBB?=<96:63;74>:7C@=FCBD@??<:B@>FCAGDBGDCHEDFCBGA=dXOr©ζԼսѺ̶˴¬չͲϴշǫêĪϵϵ̲̱ƫĪê©t|mpqo~n}mvfo`{k]xi[tfZuh\l`Vi^Uj_Vk`VnbYsg]sg]qeZl`Vi^TdYPZQIOGAE?:;63851741=96A<8@;6>94>84B<7B<7>95<85=:7>;9=:8=:8<97:74:74:74963741852:85<97=:9?<:?<:=:8<97=:7=97;85<96>;8?<9?<9>;9>;9@=;?<:>;8>:7>;8?<:<97;85:75;86;8686474375364231/,*)*(&)'%*'&+)'+)',*(+)'! ! !   !# " "!A%\0$[0#[/"X- C;G#<J) b=0N1&7A!. 12-&    >!F%> #  -  1//2$  E&T- P*U)K$+*\6(i=.Q+ E&U+V+ [5'U1$8S6)dG6cE4mJ7bA152U3(W2&19B%>$A$=!,5) , =!G'!Q.%7!%+0H'C$4220)- ' .C!M'54/ (B'K.D)44X-": 2W- Y/"N*" 4 9 63;$;$-.E.:"5%'/ ?81H$. 3M%Q$:3( # &2 =A"S/"<e6!r?*N:k=,DW0\3sG3R=}Q +!U7)F,!.>$)0,-?#D'E(H,%K3(8%(3 '!"& 117@!K'7 2T- U/J(74 @"@";uh||}~~ywxxl]WO852$" D?9kaW}rfyocB:2,$*"&       &-%4+"91$;2%6.%:1*<5-;4,?7/B:1I?6H?5C;1I@6LC8C;2XPG}y|Ⱥ˺Ƶɳռŧʬ̬ѧѠŔŗ˞΢˞ʜ͟ըѥɝ—оɤع߿ܼ޿۽ܿغָغִԬլٶۻӲӲմٻٺܾܿѳ޿۾ڻ߾ݼۼ׸Դ޿Ե׷ڹέݽ޴̣֫ѩ޼ڻܿײӰʮֻԹֻȰ~l\N=+t   -)%QKD!bZPB?8/0)99/`ZHmԼ׺̰̿ęʟ׌ֶָ̧׺ۼܺӭ–õǥžɠϩɸětqqokifWAo]Nxl]WO973&&%$%%$%%764_ZSu~yusvxwuuuvx~z~{wt}mxhs:86QNKROLRPLOMJOMIPMIOLIIFBFB?GDAHFDLJHMKIOMJNLINKIMKHLJGKIFFC?B>:FB>KGCKHCC@;'%"                      @=:MIEMIEOKHPLIQNJYUQ]YVZUQWRNTNIMHCOKGVSPTOKPKGOJGKFCJFCHDAKGCQLITOLRNJOKFOKGRNJSPMUQNUPMPLINJHKGDJFCNJHPLJOKHMIGJGEIFEJGEKHFMIGNKINKIJGEEB@C@=A>;C?:B>;D?GA;@=:?;8@=:?;8?;7@<9B?<@=:?;9@=;A><97<97<97:85:75975975:75864/-+-+),*(,*(,*(-+).+)/,*.+)$" " !!" $"!" !" !!(&$(&$'&$'$"P,"\0$Z/![/!K$:C@ ?"^9,b>2;$* N'57"  $ $ 2E%C#,, %  01.3) & H&P+R*R'4&G)g<.Z2&D#E$Z."H%]7*AG*bE4dF5jH5pL8I.$/J.'R2(55A!D&@#A$200(7@$O-%F(!'')= I(:221+ *-& <K&A!16&<#J-H,9 2M(X-"J'X.!X0#9%8 8 47<%5&?D56' '):@,@C!*D"O&D 99# $ &6> K* J(7 e6!l<)q@/Y.!K$[3b8$rH6sK8uP;rO9V:)E$M(9+/fC28 6;"& 1* 4C&D&;3J4'3!+ /$ 4!"+:"5 B#=A!I&$ D"V0 P+G'3 9D%;L8/}p{}~|yxt{qfVPI20-%$"FA:i`U|qdwmb@80,$)"%      ' .&5,";2&<3&80&91)<5-<4-?7/B:1LB8I?5C:1H?5KB8E<3SKB~{÷Ϳͽ̼ƴ«Թȩΰ̡̫џОϠҤةӥϡ˜Т͠樨ǝԮ߿޿޿غ׹ܽ߿ݺԫԩسܹӱܼ۽նӵڽ߿ض׶ַݾֵ۰Ҩزظټ޺ڼҶǬéֻrP<(w""!    2-)ri^50,PJBYTJDB6OL>ohRpȰΰͰƩɷǻ—×ƚɤԵӶֹݾܻܹҪϽɨƣͦΨ›ҿʤѽͷŰw{{urqq`JmUB{~rf_WD@;0/-**))))<;9`[Tu~z}{wurswuvyt|nttsyzx{+)'DB>IGDMJGNLHJGCKHDLHDOKGPMJMKGLIFMJGNKIKHFKHFLIHLIHPNKSQNQNLKHDFC>JFBLIEPMH><8                     PLI[WT\XU\XU_[Wd`]hebhdada^c_\d_\ZUQPKGSOKWSOYTPVQMPJFHB>E@QLIVQNWSPWSPUQMQLINJGRNKVROWSP[WTYUSVSPVQOVQNTOLQLHNJGOKINJHPMKSPOQNLOLJLHFFC@IFCJFDIFCGC@B>;?;8=96?<9B>;C?=C@>C?=GDBMIFdYRzj§ѵԸԷαгȭèβα̱еոдȭʮɮڿڿе׺Ѵϲչβƫ۽۽ӵ˭ĨȬѴϳèéɮȮƬtwvqunyhyizjzjteyj\pbVnaVl`VqeZvh]xk`}pdshzncncYcXO]RISKEE@;<84=85B=:HC?KFAGAC?;?;8A=:DA>GC@HDBGDAFB@@=:?<9>:7<96<97;86;86:76:861/-0.,1.,1/-1.+1.+1.,1.,2/-1.,41/741631/-*/-+.,*,)'+)',*(-+(-+(.,).,*++)<+'[0$Z/"[/!R)<=D!5W4(c>1Y:.' L&Q*/ .   3  A#E%8(+  ,4,6, ! < Q+Q*T)A $ 8 ="A#K'>"O)O'F(X2&> ]@0dG6gG6rN9Y;,0?$ S3+7!4;E$B%A$:!)3) .="G)#Q.%3%*/H'A#322. (0-7C"J&* ) 9). H+J->$34S* F#+W1$Y2$R,!%/: 2 2:#:$, .M#>:"-%(, ?= ' H$1/L'K$8=<# E"A"* <?![3%P)I&g7"X1"B"K R+[3kA-tK8wN;uQ;oM7:&6I&2(J0$kE4,:"1-0+ ; D'B$4/I4'+. ) 4<% % 3E) 8!M*C#D#G$A"-Q*P+Q-!>!4 ?!C%9fXO}}zz}~||}|zzzxtstqxocSMF/,* -+)MHBldZ}thulb?80+#(!"      ' /'5,#;1&?5(;3':2*>7.=6.=6-C;2PF;H>4B90I@6MD9G>5QI@~y{ŸĶó±зپǩӵЯǝŕ̜ΟС٨ݭ٩ҡѢҤ̡ƝȟϦֲۻܼݾݽ޾޴ܽӵͰٷֶٺѰ޿޹ܽۿؼ̰պwXA,~n)(&  -)&ymUOGJD=ohYpjS{t]i|ȰֺֺԹһĚɝ΢ϫַѴֹڻٵǣ¡ťǦծװΧЪ۶ţ׿иy}vvxqXpT?{zwncYRJGC><:7><8LJFid]x||ywv{xy{{xtzmuvwywo¾¾¿" EC@NKGLIEJGDIGDFDAHEBLHDOKHNKHPMJROMRPMQOMPNKNKINLIPMKNKHROLUROQNIIEAEA=FB=DA<                    .,*WSP]ZWb_]heblhelhejgdgda`\Z\XUb^[]YVYUR[WTa\Ya]Y_[X[VRTNJOIDKFAOJFQMIPKHQLIPKGPLHQLIPLHPLIRNKXUR[XVZVTYUSWSPUQMTOKOKHQMKPMJQNKROMOKILIFOKILHEGCAA>=CA?EB?E@=A<9>95<84<84=:7@<:A=;D@>LGDuh^ƬֹҶӵԷ˯غۼݿٺϯбַݾ׹ǩŨѴӷѵ˰§ܻۼӵçǬç~zuvhqdWh[PbWL`TJeXNqdYvi^obVi[PeYNaVLXOGNF@FAFB?EB?B?;D@==:7?:7A=9C>:D?;B>:@<9=96;85:74852;85<9752/31.530:6474152.630631520530530O1*[/#Z/!X. C:D ;6O-#b?3L1'<X-"? * )7 /8E%> ! "- # 4 -7>#"3M*P+T)J#)+O-!3E#C$@#S*7T2%G%S7*dG6dF5pL8dD275U4,?%29A!J)!A$@#/-.(7@&"Q.&E(!%)1@"H'8221*- 01>@ 7 8/ '@&K.E*530K%*C$[4&[4'F% 0 6 - 7:$G)A EQ%="7 %(&2@329!?L'=8>5, Y."=4= I(d7&S+4J'>"BL#X0\4nE2sJ8yQ)'% ! .,*KGAhaXwodrj_B;4)!%       ' 0'5+":0%@6(;3';3+A90?7/:3+D<3QG4B:1LB8ND:I@6ME=}|~ζŦ̭ӵͮɞǗӣרק֦ңӤԤ٪ݯԨ͢Ѩٰ۷ݼܽںعݽ޿ԷۺٸԴ׺ػٽضήҳݼۯݾ۾պūѶ^I6zk[B>9  uiph]>:4qmw}εܿڿƩέɢɝϤӰٺӶгϲۼʨťäɪڵ޷ֱܷѯ̴ֽî|w]hK4t{ouj_ldZ_ZRa\Tlg_zqwwwx{~~{~xu|{¾¿¿¿  DB@NKIMKHMJHEC@@>;?<:?<9D?;8]XT]YV`\Zeb`hdbhdbgcad`][VRNIEPLIVROUQNTOLZUR[VS[WTZVTZVSXTPUPLUQNXTPTOKRNJQMJRNJWSPZURUQMOJFTOLZVT]XVZVTXSPVQMTOKRNKUROZWTZVUXTSVRPNJGLHEIEBHDAB>;C?=GD@JFCKFCKFBID@HC?GC@GC@GC@HEATNJvjͲԸۿػڽ۽۽۾ںڹڻӴͮ׹غغۼ߿ںԴҴƪĨƪçèĪ׻ͯعɮϵʰ¨ѵȭ©Ʈɱxvz}xr{jrbpbUi[Oj]RobVqdXug[yk_qewjwkqexk`sg]k`W]UMYRL_WP_VOcZRg]U_VNcXOj^UkaXj`Xc[SUNHKFAE@ID?MHCNHBJD?JD?LF@GB2.Y0$Z/!Z/!L%:?A!4;V5+a@4C(R*Q*0 * -?% 'D$C#0 , % 1/0I+"1 ( G'P+R*R'5$H)X2%A!H&=!J+E%4\6(L/#cF5aD4_?/nK7D+"/P0)Q1*16<K)!L,"A#:!'/(/=#J+%Q.%3%-; J(A#222- )1,9?<#47%7J-I,:!237H$$ T/"Z5'Y2%6 ,:$<%T."R&R%G$:"+&(#8@+9"' J%D"4<=) E"T, 2=?!Z3%\0 8,@!O&>M&Z3a9%rI6vM:yS=qO8K2# B";"+'fC3A(16 *4* 3< :7$ 3 F2%$&  F-&,$0D(<$I+Z6$W4$f<)J'F$C# .O(Q+S.!F'3 ?!E&8rdY|}~}~~}yu~rrvyy~rqj`LGB*)'!! 1/,OKDkdZvncph^A;4%!       &/&5+";1&B6*=4(;3+B:1@8092*D<3OE;F>4C:1MC9NE:KA7KC;IJİů͵ؽƧԶϱΤРҢܬګק߲۫߰ڭٮݳذܸڼ޿ܽظݼӲƨȫӵԶٺۺϯҲ޴۰׭ܽгĨڻ׻_M;j[LWRJ  !! !! og\xlA=7~zȻμĥΰͯʮԸҳ̨ʠʟʦ׸ټոۺϮѱҲΰڷٵ׵ݻ׶Ѷ̴ijƵ¯|v]fJ4{lyts|ti}qw~|rhuk|pv{~x{|xs{}¿ÿÿ <:9USRJHF@=:A>;DA>CA=A>:EA=JFBLIENKHLIFGCAGDAKHFLJGNKHNKHKHEIFBLIEQMJSPLSPLQNKEB?              0.,%$"KHEd_\_[XZVSZUS^YV]XUa\Yd`^b]YWRNOKFTPMUQNOJFPKGWROZURVQNYUR[WTWROOJGSOKYUQYURYURXTQXTR[XUZVSWROYURZVT[WUXTRWSPXSPSOKUQNTPNTPMVRPUQOSOMMIGJFCHDAKHDJFCKGDOKIQMJPLIQMJQMJRNLQMKKHEHDAFB?TNHylƬԺܿǭɯ׽پǪʭڽոںӴշ׸ٹ߿ֶܼӴָڼݾݿݾ׹ָټոָڻΰũǫӸٽոˮ̯Ӷؼٽʯ΍ؽеʯȭéƫ¨ut{}~wzx~n}mor~pyluh]tg\sfZpcXxj_wi^pcXrf[qdZi^Tg]Se[RXQJLFAC>9HA;B 57I*!a?3^=1Q,!V,!<*' <#1= E%8 ',  .4,@%<# $ >"O*P*T)B $ 6Z3&E&H$?"B%L. , K,"V3']A1dF5X:,_>-Q4(.F)$Y6.6 9!G'=U2'F(A$1' , (8@&"R.&E(!&)2D%H'8220(0/3>A /* =), F*J-B'331>8>!Y3%Z5'Q,!#  4:$I*X/#P$Q$?#3$(%' >= ( 79K&97>7, W-!G$;> F&b6&E"*+Z-!\, 8 R+[3h@-rJ7{R=rP9jJ53 )D#3+&S5(/6 .11* 7< 94 3!D0$##,F-%% ( 4J,"=$M,\8$V6%a<(U2%B"T-!( I$T,R,V2'89F'@!Q=5~}~zywx{|zttmbOJD,+* !! !!#$$&'&974YTMtnd~vkrkaD>8"      %-$3)!;0&B6*?5);3+A90C;1;4,D;2OE:F>4D;2NE:NE:MC9KD;|}ŶνĠλϻѻ̴ͳؼѳвҩ֥٧٩۬٫߰߰ܮܰݳۼܽٶڱ߽ݽ޿аͭݿݿݿٺݾٹҲط߽ۺطۼܯݳػܾػʭũèīªcSDdTDpi_%''### !! !! &$"haWwKF@}οǡͮշͮˮֺϱĝΥֲܽټԷݼյַعնֵ߾߿ݼۿԸͳű˸̸ϺűffN8wht~v{t{p{o~rxlzovx}v¾ÿ¸ +*(MKIONKJGDD@@=9B>:D@=HEBMJGNLIJGDEB?FC@FC?FC?GD@FB>HD@MIFRPLQNKPMJMJF+*'                      753b]Z`[XWRNVQN_[W^YVa\Zd`^_[XWROOJFRNIVQMQKGKFARNJ]XUZVSXTQWSPWSPTOLVQM[VR]YV^ZX]YWXTQRNLUQOWSQZVT\XV\YW\XWZVTYURVRPWSRSOMSOMWTRURPPMKKGEKGDNJGQMKNJHJFDJFDKHENJHQMKRNLSOMRMKMIFHDAGC?\TMuӹڿɯ߿ϳۿؼػ׺ݿ޿ۻݽ׸ԵԴۻܾҴַܽڻٻعܽݾ׸عܽ߿ݿڽдè˯ǫ˯ʮçٹæ˭۽ҵг˱˰ֹؼӷë׼̳ҷؼͲūƬvnq}mzkyj}obreYrdWwhZ{j\]9.Y.!Z/!J$9B? 5>Z:/a@4V4)W,!J%. +!  *L,!$-E$@"$  . !$4 ,7B'$ 8K)P*R*O&.)R."R."C"F%@$T4%;"2[8,\>/dG6[=/`?.`@/26X6.D)"/Z4'V/$>T2'A$>#)) (.>#J+%R.%4 %.8I'A#222, *3.<@ >#<1 $<#J-G*7320 B##&N+Z4&Z4&D#   9#<%V/#V,!Q$N$9!&&( /@82,C G$5;>- E"[/"M%C"=S/#U.. +>k5'E 6 V/]6"oG4tK8zS>qO8W<+5C$*) $ ' 8!)5,,:;84 6#@,! $C*#K0($*<#Q/%?%Q.^9%W6%V6%P4&G-"Q+ >!8T+Q+W1$D&5 B#F'7sg~wqsuqvijcYIE?,+)!"!### !""!""$$#851XRJtlaypeme\B<6       $,$3)!;/%A5)?5*;3+B:1F=3?7.E<3PF;JA7F=4OE;OE;OE;LDyiYyws}q}qv{zo}qsx~~~¾ÿ¹¹ù   @=;EB?C@JFBC@:DB>EB>EB>GC@HEBJGEOMJPMKMJGIFBHEALHDNKGPMIOLIPMJRPNQNKROKA?<               WTQb^[XSOPLHSPMUQNTPMXTQZURXSOUPKRMIXTOXSOUPKXSOZVRVROMIFLIFTPMVQNVQMXTPYVSXURYURYTQPKGMHEOKGRNLWTR\YW]ZXZUSWSQVSPWTRSOMPLJSPNQMKLHFIECHDAHEBMIGLHFIFCGB?FB>GC@LHFROMSPNPLJNKHPNLUQOof_Ϸֺ̰ΰڼؼ׹նعں׶׷߿޾޿غ׹ܾݿڻٻټѴӶڼغܾݿݾ̮ϲոԵԳۺݽȫĦɬ§ȫڻָټոֹո̱γͲǫͰʮ¦ħ¥ˮӷ˰ۿѵҶƬygY- Y/!R*<;E#68P1'a@4^<1W.#Q)8+)"@&H)!!>!E$1+ ( 5#00G*!- .F'N*P*S(<# @$Z3&D#J&>!P1"L.!'J/&]=0bE5`C3R4&hF4E,"0T3,Q1*.I* sC2J'?H) @#8 % ) (7A&!R.&G)"&(4@"H'8210(0/6>B!11A 3 6H,I->$2312>" %9 V0#Y4&X1%5 -:$H)^2%T*R$J$,# (! ,>@05" & I$@ 4=;0Y."Z.!J#O+ Y3%[3%;+*U*e1$' ' Q,e=*qI7yP4?7/E<3QF5OE;OE;PF;9MJGIGCIFCJGCMJGLIEGD@EC@IGDLIFPMIQNKOLIOLJMJHKIFPMJQMJPMJOKHQOLSPNROMSPMSPMNKG"!                %#!'$#" 642SOLSOKPKGLGCKFBLGCPLGVQMWSOYTPVQLUPLVQMUPLVRNUQMTPMSNKRNJVRNWROVQNWROXTQVRORMJQMIWSO[VSZURZUQXSQWSQYUSXSQRNKPMJPLJNJHNJHLHFJGDIFDHDBIECIEBKGDMJGJFCHD@KHDJEBJECLIFNJHMIGHDBIFDNKHqg_ԽҶغػԷԸڿۿɭè̯ٽϳίήӳյյ׷ڼػӶӵ׹ָֹֹݿڽܼ׷նںѰ޾޿ҳܽ׸շշ޾ٸطۼݿټҵ˭˭ոfUU'X. E 9C >5A"]<1`?3[5*V+ B . +%  *N-"51E%;$.  ,5!+?$<# ( @$K*O*S)K$(/W2%M*F#B#E(U4%.;$\;/bD3cF5P4'bA/V9+.G*$Y7/66m?/rA1>?A#@$/& ( -="J+$S/&7!$16G&B$322, *3.<@ >' A!=<E(J-D)56A 1.& 9!I(Y2%Y3&P+!#   8";$U."^3%T)R$@! (& I) @>&  20J%;7>2D"a2%U*G#]1!d8'K),-2h3&R'!4 Y2lD1rJ7yP;qO9cD1% :4+! !  0631* 6< 93- 6#9& #F,$F-%"1H+!S1'F&Y3"_9&Y8&U6%?'N4&L1$S,!+H#Z/"R,[5)@"9G'E%J2)}|xuuvs~r}q{p|p|p{o{osxy{}}zy{xznicYEB=)(' !"!('%A=8d\R}sfuhqh]C=6       #,$5+#=2'F:-B8,81)C;2G>5A90E<3QGNJGZVS[VS[VSYUQYTQUQNROLUQNTPLTPLVRNVSPYUR[VRXSPWRO[VS[VSXSPSOLSNLRNKRNKMIFJFCOKHTPMVRPWSPRNKNJGFA=?:6B>:MIETPMTPNUQOVRPQLJMIFQKGxk`εڽ۾ܾҳԶٻܾظڹݼطյظܽӶͰͰҴոӵԶշ׶ұۺٹܻٷظѲظմݽܼ^6*X- Q);<D#58P1'a?3\9.W-!K%7+*  #=$M,".A"C$&- %# 7#-4D( $ $ ;H)N*P*S(:# F(X2%A!H%>"S2#@%+S5*aB3dG5Y<-S4%dC255W5.C("/R0%|H6e:+;@!A$<"& ( (6B%!R.&M,$*'6;I'9220)1/6>B!05B :A#I-H,;"0E$F"0 & " B%P+Y3%Y1%F#  /;%;"Y/#]2%S'Q$1$(B$\4*<< & * 8K&S)>=4X.!b2$Q'R)f5#b4#9.*G$k5'7!C#`9&pI6sJ7tN9pN8P6'-:2,$  ! ! 5M* :,,:;92( 0/ 0O3+D+##1@&V2(L&\6$^9&Y9'S5$6J1$M3%M)?!D#c4&T-T. @ 7 C$H(> |ob}}~|xvvwvs}q}q{oznynymynzoxlsj`[TL:73##"##"962WQIldZne[`XN94.        $-%5+"=2'G;.D8-91)C;2H?6D<3D<3QGOIBkcYпݷ۸ʤʥ׶ܾٻ޾մӾϦװҬɣ˴~gYH6}puwwvxxvv~y~s|r~ty|z¿¹¹ûļżƼƽƽƾǾǾ(&%NLISPMSPNSPNOMJMJGJGCHEBFC?HEAIEAGD@DA=C@:FB?FC@FC@JGDNKIPNLOMJFC@;84                    &$#HDARLHMHCOKFSNIVQLUPKYUPZVRYTPYUQYUQVQMRLHOJEQKFOIEPKGVQN\XU`\X^YVZTQUOKRMHUPLXSOZUQRMIMHEOJGQLHWRNWROYUQ\WT\WTZUSWSPVROSOKPKGOKFTPLZWU\YW[WTXSPSNJNIDIC>FA2Y2'R)?2*'% $2P.#A$6E$: ',   3!3,C'1 4E'K)O*S)H"&2W1%F%F$?"I+P/!) K/%bB3cF5aC3L."dC1H.$/H*#P1)13g<-|H6X1%;A#A$5$ (+ =!H)#T/'=$$.7B#E%322- , 4.<@ >) A!<=G*I-C'44U,!;1$ 3K- _;+X3%W/$>  8":$= \1$\1$S&C! (#1c9.Y1'=>) & ?Q)Z-!>7E"`2%b2#P'_1!h6#X/ >8+_/#d1$)& P-!hA0qI7xN9eE1N5&377 4-& $ ! $ >$O*!3* 0; :93( ! # ) $9#R5,A)!$2E) V2'M(_9%]9&Y9'K0#8"M2%N4&D"G&5d5&[0"T-E#7 @ J* BZH?tus|pznynzn|o}p}p|o|p~rtvvyz|}|{{|}}zxmb\T=:6$$# ! *)(EB=faX|vj~vjldY?93        $-%4*"<1&F:-E9.:2*C<3JA7E<3D;2PF;ND:H?5JB7LC9ND:LC:|p}||~˻пɷűζ§æӵغѮϥʚȕΛդצک߯تޱگߴڼԵۼίݾּչoUB/nbSttxpejcYWQJFA;52.'%# $" *'$2/+:50C=6F@9KD=HB;D>7@;5*'# &$!NHAzc]S[TL³޸۴ٲ۷ݿڻճǢȟլԬѪ־uTA.}sfvtzyy}vu}rwnezpwzx}ºĻĻżƾǿȿȿ;87PMKQOMNLJRPNRPNQOLPMKNKHMKGLIEJGCHEADA=B?:A=9DA=D@:EA>JGDLIFMJGOLIOLIPMJGDA'%#                        ROL^ZVZUQUPKQLGQLGUPKUPLXSOYTP[VR\WTZUQXSOUPLRMHTOKUPLUPLRMIWSO]YVc^[a\X[VQYTO\WR]WS\WTXSPRMIPKFOIDNHDNIESOKWROUPMTOLTPLUQMTOLSOLXTQWSPSOMUQOXUR]YV[VSXSOSMJLGBNIEVSP]YW]YW[VSXSP_YUvkd|δػѵؽ۽۽׹ڻ޽ܼۼ޽ٸ߾޾ҳӳԲ޼ݽع߾ֹص޻ƨuOQ):<F$48P1'`?3]:.W,!E"9-*) *,G* R/$9A"C#*' . #'6",7>$ , C$H)N*Q*R'4$ L+ N+ C!F%@$S1"66_>0cF5cF5Q2&V7(X;,06E( 9!1;"sC2xF4J'9A#?#*.46A$L+$K*".%59H'< 120.515>B!09?:C%I-G+:!0E$\1%22 ="U6'b?.W2%X.$T+"1*;%7!=]2%[0#N#+ %(#_6,p@4F$<S+ ) $ " # Q0 ]3$M&;<X.!b3%\. W,f5"f6$E%>25j5'T)"- Y4&nF4sJ7tK7G0"- 74 7-)( *E'G&.* 6< 9;3.! $3% =&Q4,;%' 3H+"V1(P+_:&[9&Y9'B+ 6!L.!L1$@D# $ _3%`2$U.L(8<J)G&C*!YSJ^XOc\Sf_VibXle[pi^tlawoc{sg~vjxlynyn{oznxlzn|p~qtvyz|{}qxod]WO<95$$$  **(EA5G>5KA8LC8NE<~rz~~˻ǶϺçĨŨҵغЮҩةբϛԠ֤ܫԵַ׸Ѳڻۿؽеؼx[I6fXJw~s|pymvmbc]TOJDD?:=:530-/-*.,),+(('%#"!!! %%$&&%##"###"##"""!!"$$#'%$*(&-+)31.962B>9PKD\ULf^TbYOYQHXPHTMDQKC=93 LF?ttlbQLDٱ޷۸ݷ߿ۼ׷ܺѭӫΦҪڱխƣTB0yna~w~stz}w}ru{x~s~s}r}r}r}s|ä¸úĻżƾǿ531D@=IGDJHFGECNKIPNLTSPUSQTQNQOLOMIMJGNKGNKGKHDD@2Z2'O'<7**'&6 Q0$J*!= D$: , +  6$1.6 '!;G(K)O*S)E!$6T/#;H%>"D&G&* T5)dE4cF5\<.H)\=-9"29625T4)wF4uC2?!9 A$: % 8>"?"E'"E$5%+8> G&522/36.;? ? ) @ :? H,I,B'43\1%Z2&. /& E'b@/]9*X3%W.$V,#,+>#3B!^2%Z/"=! ($/l>3l>2@ <c5'J'&'.\9$_3$C ;J&_2%b3$U*a2!f5#a5%:2)K&n7(F$#6a;+pI6vL8\8(7) 49 -)$ .K);+,9;9;59! '8% C*#Q4,5!9!;$F) W1(T/_:&Y9&X8&?&9"G">#?A) Y0$c4&V. R,<:I(J)B"2*&-*&/*&1,'4/*4/*51+50+50*83-:5/=82B=6D?8IC4LB8E=4F=4LC9OE:G>4G>5LC9LC8QH>sz~μÝпǷ¯иֺæѳٻִ֪֮ե֣աΛԣ۰ݴݿܾۻܽ߿ݼ߯ڷ޲۾ڼͲϳwaN:cSC|ptuyqfjcYb\SXSLSNGLG@LHBIE?B>9>:5A>8A>9;9475286364131/973=:6=95B>9JE?SNG^YQke[{re|n}tekbVe]S`YO]ULHC;A=7zn~ujOIBˡЧذٴۼݸ߷ڸڻѱظظݾֳܵӫˣԬرѭSB0rfY}~z~vwlxm}siulbvlb{qgwlxn{q|qukxofzp~xx{~ĻżƾǾȿ1/-MKHLIFJGDLIFJGDJHEFDAGEBKIGOMINKHHEBGC@LIEPMJPMJMJFMIFQNKQNKMKHOMKROMQNLNLIKHECA>           ,*(VQNTOKRMITOJUPJVQLZUP^YU^YTXRMPJFRNJ[VS^YU[VR[VR_ZVYTPXTO_[W`[W[VRYTPXSPZUQYURYURWRN]YUd`\e`\_ZV^ZV_[W`[X_ZV\VRWRMZUP`[Xa]Y_[W[VRXSOYTPVROVRO[WT_[Y^[Y]YX^YW\XUZURXSPRMJOJFWSO\YV`][d`^gb`umhxʱպۿ̱ͳϵӷܾܿܿαȪӵ߿߿ܺH R*<:E$57O0'_>3\9-V,!B :4). (,C(U2%@"A"D$+$ . +7#,3- 1F&H)M*Q*Q'2%J*D$D"C$>"G$2H,!cB3cF5aB2G'U6'E,"0782:"H-%b=0yF4o@03>"A$5, ; >!?#J*#? .$29F&@"1210703>B!19>;E(I-F*:!0C#k;.O,". ( 2K+hF3Y4&U0$V,#T+"& 2A/ E#^3%U, ' &' B$qA5e:/;;k:*W/"" &8 _;%Y.!=<U, _2%_0"V+f5"f6$Y2$54+Y, j5&;"C$hA0qJ7tJ6B&) 4 58 -( "8 N* 3) 0; :9<"9!9!+ 9 % F-%O3+,<#9#H*!V0'X3!^:&Y9'T5$>"=#G><?-Q,"c4&Z0!V.A8F&K*D#4($,*)+)')'%'&#(&#('$('$'&#&%"$##"&%!('"&&!('"+*%,*$+(".+%1-'30*1-(2.)1-(2.)1.)/,'.+'63.RLDb[QaZQTMF61,            $)!3) =2'D9+C9,:3*F>4LC9E=4G>5MD:PG4JA7ND:KA7RH>~rxǡŝϾͺҽ־۾ѳٺصدФѢܫ֢ݫ۰خ۸ݽݾټ۽׹qY}ƹʽͿ˾íȲ̳ҹԺֻݾۻظ׸ѭ߾ַַݿ޿ͱӶjVC_M:wrvjvncldYnfZog\kbWbYO`YNc\S`ZR^YQ_ZRZTMUPIZTM]WO\UMb[Rkd[yrf~ru}n|m}sfxpdumbtncoh]\VN;72zrgxmRLDŜϩطݽܼڹָٻղҬɢШٱ޹ηeTAvi[}|syksh]pf\{oxtxodri`rj`ypf|rhwlyx}r}s~s~qyy¾ƽǾȿɿǿƾ$"!HEBRPMTRORPMOMIMJGKHEHEBDA=EA>JGCLJFLIFOLHSPLROLMJGMKHROLTRNQNKLIFPNKURPURPSQONKH1/-                863]XT]XTYUQVQMVQLTOJRMHTOJXSNYTOYTPYTQZVR\XTYTOUPLWRNWQLQLGPKFRMIVQMZVR\WTZURUPLUPLTOKUPMYUR_ZWd_\c_[c^[a]Y_ZV_ZV]XT_ZWea^gc`ea^`\X]YU[WTXTQWSPYUR]ZX]YWZVSZUSYTQ^YW^YV[VSVQNZVSYTQTOLTOLYURumgպ׻׺عббַۻֵҳϱۼĪv ;8AA"4<Z:/^=2Y2&M&;<2 +-&5 N.#Q/#<C#A## , +6#//3" % @"G)J)O*S)E!$ 9 N, <H%="F%?<#`?0cF5cE5S3'J,O3&12845R2*Z:/g>/zG4Y4'-@#>#03=!>"B% H' 7('7 = H'811/26-:?=) ? :?!H,H,A&33Y/$o?1@!.  >#Y7(fD2W2%M+U,"Q*  .C". F$^3%C" ($ T/&rB6[3*;Y/#t?.G%# # E$a7%N&<?[/"`2$Y,]0f5#d7&N,41)N%c2$8"N-!nF4qI6a<,-3 *  55-& $ B%G&.* 7; 9:14C("?&19)K0(N2*)67"L-#V0&\6#\9&Y9'Q2"> E(F C:;0G&b4(]1#W/ F#>E%L* E$C61C?9A<7@;6@;5>94=93:710.)+)$('#('#+*&/.*..)00*/.(00)0/).-(((#$$#$## 30,TNH863''&$$$%$">:4MF>]VMJE=:50#             %-$6,#?3(A6*B8+:2*G>5ND:F=4I?6PFb^Z_[X[WSXSOXSOWRNTNINIDRLGXSN^YT`[W_ZV^YU[WS]XS^YT]XSYSNVPKXSN[VR\WS]YU[VRUPLTPKWSOVQMUPLVRN[WT]YU]YU_ZW`\Xb^[e`]fb_idbhdbfa_d`]c_\_[XZUSZVSXSQZVT]YW^YW[VSXTQYUSXSPWSPSNKRNKVQNVQMUPLSMIjaYۿڿֹгʭΰݽ۽ӷ׺ٹҳ۽ܽݽۼu]N)89G%75H*"^>2\9.T+ @:<+/ )+=$V3%H(?!D$: . ".5!4<#* 7G(G)M*Q)Q'2'H(?!G$@#A#K&; Z9,cE4bF5Z:,C#O1$71461I,%hB7a@4l?0l?/04A$: - 7=!>"H)"C#1$.?%D$D%221/630=A 16<;E)I,G* :!0C#i:-k>09.# G(b@/`>-W2%D%U,#O) @!I(- K'W."( %' & ^5+rA5R.%A s?.u?.2&$ R(a0$A<E#^1$_1$V*c4"f5#a7'A#5.(F \/"; & W4&qI6jD3D(" 6  63-% *G':* ,:;99" +H,%K.'586O3+I/'#26!R0'V0%_9%[9&Y9'M/>!J- G D<3) ;a4)a3%W/ Q*W)O+ L+!F#[JBpe[qf\ncXh]Se[PdZO]TJZRHVOELE5D?6C>6ID;HC8B>2C@5B?4=;097.53+0/'1/'0.&)(!3/+PKE42/$$$#$# !!"""530\UMof\u{rfb[R>:5          %/&7-#>3(E9,G<.91)G>5ND:G>5I@6RH=RG531                       KHE`\X^YU^YU]XT_[W_[W^YTWQLTOJYTO_YTc^Zb^Z_[X^YU]XS`[Vc^Zc^Y^YU]XTa\X]XTYTPZVR\XSZUPZVQYUPTOJRMHOIENHDQKGWRN^YVb^[d`]c^\`\Ya]Z`[Xa\Za][_[Y]YW^ZW]XV`\Yc_]b^\_ZWZVRXSPWROUQMPLISOLYURYTQZUR\WRti`ĭڽܿͱ̮ίӳԷæ⿡ϰݽָ׸Ӵ7 49>F%48U6+^=2Y2'K%9=4*;!64E) X2%B"C#@"1),    8$2?%7!) D$G(G'O*S)E!$7D%B!F%>"K&D"T4(dC3cF5Y=.<A$?$0372<#`;2hC7P3)]7*I+!&;!A$6- :=!@#I)";+%;%N1%H&= 11027.8>? ) ;9@"H,J-D' 33Y/#rA3d9->-2M,hF3[7(U1$=V-#M(S.$H'- M(D# ($ ,c8.qA5N+#L'xA0m;+! ('Z-!^/#@;L'^1$`2$[.f5#d6$]5'85-( W*T,7& `;,rJ7c?.8+ 3 60-# 3J'3) 3; ::4 ( 52.7A&Q4,C+# 48"T1(U/"_9&[9&Y9'H*B&O/"I"C@6 )[1'a2%Y0!T,X*R+!M+!E"r^R|{sqnyhverb{n]sgWk`QpeUpfUpfUmdRd\I^XE[UC\UDYSBUO@QK=SM>NH:>:-73,HD?/.,%%$%%% !!!"" !!$$#852aZQph^w|tib[S=94       #-$7,#A5)J=/L@191)D;2MD:H?6I@6TI>SH4A#]<1\:/T,!B :;)1A%A%;#M-"O*? C$6( - $08#>B#(9H)@#H&Q*Q&2'B%? J&>"F%N'Q1%cA2bE5aD4F*<A$32952S3+hA7X9/D)!>'(.?"@#2/"D& I' 5&)F,"K,"F%511/54.=@ 61:<F*H,J,!:!0B#h9,rB4P+#: <"O2#iH4W3%O-!:W-$I%0_7*@"/L'.%' -8h;0o?4C$T,!yB0h8)(* ].#W+ <9R*_1$b4%`2!f5#b7&X2$43,3g3%L)1( e@0qI7Y8(.#+ 3/,! #@#C$0) 8; 9; ." (' +4E*"Q4,>' /=%X3)X2"_:&Z9&X8&C%G+V0$Q(CDH%'P+"]1%Z0!V.X)U+!M+!G#jUHªªŭztmstqohx_~tY}sZzqYzpYvmVwmXofQXQ@>8/B>:**)$$##$$ !!  $$$962bZQrj_s{sh^WO851         #.%9.$D7+NA2PC4:2)C:1MD:I@6H?6UK@UJ>KB7J@6PF;PE;NE;rv~y{|ʺÜ̥ծװЮԵ޼ҬʡӦץѠܬ޿ٺڼٻӳˣuɺϿƮɯδδǭ˹bSAu~{z|ո޾ջϵn_bN9ziWwuxwzwwxxwv}p|sg}th}sh}th~ui~ui{p{qzosw|xpd2/+-+'WQH|OJBwodȷ֬޿ٸүѫͦǢֿĮydR@/w|~vj0+&2.*/+(+(%*'$)&$&#!&#!%" &# # 72.um|}|v}pxjvgyjpu #! HFCPMJLJGOLJLIFJGELIGPNKURPSPMLIFGC@GDANKHUSPUSPUROTQNQNKOLINKHGDAB?$=$R."D"A"A"/)-   ! 8$9 D#9* E%C%=N)T)F"$ 6D%F#B#A#P(R."a>/bD4bF5O4'6E'8169 2C("d>5b>48#@',+8A#=!.3=!>"H("C#/$1Q4'I) @"1/& - 605>> ( 99A#H,K- E(!31U-!p@2c8,>5  B%U9)dB0W2%E'9X-$F$E$a8+:08" (#T0%F'j=1n?3@"\1$zB0\1$&6a0$O&<;X.!`2%b5$d4"e5#a7(N,1 0*Ci4&C%+ 2kE3oH5N/!% #' 1.* * J'< 5.:;:9)$ *( ! +4H-$P4+6! .B( Z4*\7$_:&Y9'T5$?"K/"V."T+ DAL'=F%_3'[1"V. U)W+!M,!J(M3*īӷʯγּ׾϶ë|ywqlffefx_kbME?3?;7((($$$###  &&&<95aZQwnbxlwodXRK41-        $0';0'F9-QB5SE6:2)B90MC9I@6H?6YNCXMALC8I@6PF~qyx{{~ǡʣΨάϱոϱٷܰݰ٬ݮެ޾ݿڻݾննгǨhS;UK>r{{~w{xuv}ѵݹ׷ڼͰésd`L7q_Mv~swszm~sgzodyodzpe{nx{wuuxy|zqe<82%$!RMD{\UM`YP֫޴ٹ߾޼ѮΨȡœϹlQ@.u{vTJAQIAJD>GA"L&W.!`<.cC3bF5[?0;<?"139 40N/(g?6O1)&7#&I+!C$A$8, 8=!?#I(!9)%>'W8+G&81)  06-;>3, :;F)H,M-"<"0?!e6*o@2L( :+(D']@.\9*V1$69W-$F#X1&W3(20$ %': h;/E&n?4i<17e6(yB0T-!)D!a0$H"<=\0#a4&d6$e4"d5$_7(C$3.*Z,i4&A$' 9 oH5jD2D'.+ /-) 5I&:31; ::4(')( ! )5K0(N2**!3H+#Z3)X4!]9&Y9'K. ?#G-!J&V,!H"?F#L)/6a4(]2#X0 X+W,!M,!K)0wǬչҵֺè¦ͳȮ©ì}~{qknpogriSLE8>:6))($%%$$$ !""++*B>:c[R~ui|shrj`RMF.,)        %.%:/%F8-QB5TF7<3*B90MD:I@6I@7\QE[PCMD9JA7PF;RHdZNl`T~pazm~rrtvtsw}x{s 20/NKHPLIOLINKHOLJQNLSPNUSPTROROLMJGOLIMJGKHFROLOLILIEIFBIFCIGDMKHROLTQNQOLKHE641                     /,+VROWSO[WU^[Xb^[a]Za]Yc_\fb_e`]c_[b]Ya]Yb]Ya]Y]YUYTNTOJTPKWRNUQLNIDID?ID?JE@LFANIDTOJPKFSMHWRMVPLTOJUPKVQMUPLVQMXSPVROXTQ[WT[WS]YV_ZXa]Z_ZWZURYTQYTQ`\Zc_]_ZXYTRUPMSNJUQM[WT_ZWZVS^ZXd`^ea_ukeз۽ܾ޾ҳ޼޾ں68B A!4B$\<0[9.I%791 3A%>$9"G(K&A"C#5&- !  :%?%B)!<%,AD#9:N)S)G"%4Y2%P*?"E$T,_:,cA1bE4aD4G+ 6 @"427627 ^:1e?5:#!);$c9*B$@#3/< >"D%N+#7$)O3'Q1&C#20#"422==' 68@#H,K-I*"41R, o?1b8,=6"3E)bC1W3&R/"& :W-$E#/_6*E(!1, " '$'h>1m?1G(o?4g;0;k:+xB0R+ / P'^.#A;?]0#a4%c5#e5"b6%]6'93,3i3%e2%?"& 9 oH5d?/>#@* - 2-( A#B$9.3;9; - )), - ( 8 N2)K0(% % H* W3*T-#J(Y8&X8'H,"C,"E+ ;T,!L%?BL+ G%" V-#a4%X0 W+X+!N,!L*:wdV§غҶٽ׻ھؼѵɮȮʹɲzsqswwmxnXOH;:73***''('((%%%!""-,+DA'N+ F%B#A"**+   ,B'D A$6 =E :0G%P*S'8# J*X/$D$@#P)]7)c?1bC3bF5T8*5 8714732E(!d>4a<3+)*b9+f:+>"?"13=!>"I)!T/&7!$5!W8+I( = 1+ ( 6.8>5%::F)H,M.">#00G(o@4e9/M,"{E3v@/H%- S)[,">9G$^1$a4%c4"e5#`6'Y3%2 4*C!n6(`1#43$) ?$?$9!G+ M(B$B#:#- '  9"C&E!;A#F@29N)S)K$'2V/$L'>"L&Z3%c>0bB2bE5]A1>"<?"736426P/%e>5[80')=&k>.O+!?"< . 6=!?"O,$N,$)%F,"V7*E%40%  04.<<& 1:?"G,J-K+"5/M)l<.e:-?9+ A%U9)^<,U1$; :W-#F#P,"H*"0.$'%[3)zH:l?1M+"p@4`7-C%wB0u@.A!! 4Y,!V* <8P)^1$\1"d4"c4#_7(U1#2 3)P'p7(_0#7">$oH5V5&8!I2'! # 1-" 0E)"9/- ; 46@& 2(* :1 & >&Q4,E,%!' @&Z4,Q)Z7%[:'_8)\6(P5'=#1<J$@@N,!I)I&/! Y/#Z1!Z.!Z,!O,"M+ C#xͱƫͱԹչдɯ˲Ϸ̴ĭ{}}wwl{qZPI;840)))%&%'('%&%-,*HC=d]TznulbhbYFC>)('        $.%<1'J<0TF8WI:A8.F=3OE;KB8KB8YOCYNBPF;KA7MD9VK?TJ?pf[}qtv{w}˼ĞƠɤ̩Ѳѳϱɪܿз̭Ԭبͮΰڹյݼ߽ѱϯٻycT?o}vsxkdX_WK}|}~vrvyusuwzywzֿݻٸҴƪغètXE4gQ;wvi~pzwy|wsrvw|{wz{t{nxlzpenf\vmb{rgzqfsh]odXtj^ulbtlbg_UMG@=94qj_{^WNݽٷشϫɤǣԿl]Jl[Kt|nbxl~sh|rh}sh}sh~tititj}rhxndyoevkwkk_U}l]{k[zj[naT52-XRJkd[ph^qg]xk_vi\laV{m`scyh|l{yyn:75KHDNKHQMKNKINKGLIEMJFOLHMKGLHENJGUROQNKOLHIEBFC@FC@EA>GC@LIFQNKPNKRPMTRPDB@                     )('YVTfb`d`]^ZW[WS[WS[VSSNKOJEUQL\XT`\Xda^gdbea_a\ZZVS]YVb^[a\X^YU]XT\XT\VR\VQ\VQYTOYTO\WR[UPYTNXSMXTOUPMVQMUPLVQM]XS]WS[VR]YVb]Z^YV_ZXb]Z`[WYSOYTPVQLUPLZUQXSO[VSa][^YV]XU`[XWRPXTRYTRXTQTOLRMI_WQ}p˳ջټ׷ܼ޽@.&58>F%5?"Z;/Z9.N(840 1@%<"?(O.!I&A#C#1&- ! *@&A( ?%:"F!C7/G%P*S'9# H)U-"A"E$V.!a<.c@1bD4_C3H-!5 G+>!8:7317X5+f?6M/(.0S2'\3&= @#5) 9=!A$R.&D' "*Q5(O/$@!1. "405>7"7:E(H,M.!B&09^2&o@2P+"<6)'D'\?.Z7(T0#-<W-#L'X3':!0- $' 1 h:.wF8sD5e;.o?4_6,=p<,s>.9$ >a1%O';6T,]1$[0!e5"a4#^7(M+/ /*S)p7(^0"7!C(mG4N/!4+K3( *1-! C)!B&8( 5:0;!>$+ ), =1 % @&G,#+ % E*"Z3*Q(g>)j@+b8)X6(M3&726B?>Y4&O.!I'I'" 6Y0![/!Z,!O,"M+ C#s`ϲβӷؽèŪũպ˰©ɰʹȱu||}ozpYPJ<950)**#$#'''%%%,+)JE>iaXxlsjad]UB>:''&      #-%:/&J<0UF8XI;A8/G>4QG5E*$M1'H-$Z5)I&?"@#-* ; =!H(!T/&7!#6!W9+I(81+ ( 5.:<) * ;>G+J,M-#7/I'i:-f;.?<1#2H,aA0V2%M, ! =V,#T,#Z3'.1) &&!Dh:.vE7|I9{I:m>3P>ZDwA0p=,1$ @`0$H#;8X.![/#Z/e5"a5$^7(F&/ -,V*l5'V,8!H+ hC1A%4 0;& *.+.K/&94+ :72>$; )(+ ?2" ' >%R2# "$ N/'Y1(T,lA+lA+`8)U6(J0#622A><S.!^9)H(J'@$ O+[0!Z,!O,"N+!C#!lZLܿ۾ոҶŪȬپѷչӸе̳ĭwzrxnXMH;;61*++#$$'((%&&-,)LG@me[wlqi__YQ?<8''&      #.%;0'I;0TE7ZJDA?EB@FC@EB?GC@JGDHEBHEBNLIOLIJGDGC@GD@IFBKHDJHELIELIEPMIOLHID@:62                            $"!LHE[WT`\Yb_\a][b^\c`^ea^^ZWXTPYUR]YV_[X[VSYTQ`\Ya^\_\Z]YW_[X`\Z`\Ya]Zb^[b^[a\Y`\Wgc_ieaea]d_[a\Y^YU\VR]WRa[Ve_[_YTUPJUPKXSNYUQYTQZVTa^\fb`e`]a\Y^YW]WUVQMYTQb]Zc^\`\Yb^\`ZXUOKRMIPKHPLIRNKVQNRMJOIFkaY©ٻغջؽۿ߿̮յҳۻĪ78C!<4P2([<0V4)?44* $<"0b@1bE4X<.89E+19< 531! /_:2a<3U7-U6+L/%L+!=@#>"( 1< 0R,$<6. :!P3$^<,U1$A%:U,#Z1&J)* 2&'!2M!e7,sC5{I9zI9k=2TAhOxB0o<,, $ E"_1$C#;:\0#X.!Z/e4"_5%^6(@"/ ,,X, a1#A%7 H, d@/2 , !), 16+C)!H+#8,2:/8?$4)'( @3+.7 f>/'#( N,#G$O-oB,j?+^6)R6'B'820B#?<B \7(S1$D"G'3;[0!Z,!O,"N+!D$*G6-ھǬػոĪɮĩٽۿ׼ʰĪȰ~}~lvmXMG;<72,--&&&+++())!"!""".-+MHBog]~wloh^ZUM:73&'&          ".&=2)H;0SE7\M>G=2H?5RH4zwwq~prvz{ðۼ߫ޫ۾ؼؼδ˲o^P^I5p^zrfxl}rvk{sivmcyncwjrtxvruus|pru}urr|~x|n{mtw~z~qtlbXRJ$"*(%TOGMHA~vk޳ٺɩӼĠ˨ȥѺw`P?-{l{t~obwk`wlayncpf\i_Uj`Vvk`pf\jaXynd|rh~si{pfmcYu|YQGKE>vlb~shwkqrxksf{m`~m_qaqcqdth:85GDAGDAFCAHFCDB@@>GD@KHDMJHMJGKHEKHEKIFKIFNKGNKHKIGJHEHEAEA$7C+P.!G&?#B#3(   5B$C 8B E;. ;N)P)S'E"1L(D$D#V.!a=/b?0aD3`D3F*3 J- 8#&98 22*<"d=4c>4[;0L/%K.$?!7@#; % 6< =#Q.&D' "+S6)N.$> 0/!"4/8=/!8<G+H,M-"9 /D%f7*i4QF;MD9KA7WM@XMASH<9C@=HDAMJGSPNSQOMKHJHEMKHNKINKHOLITQOXUSRPMFB>EB=C@<                      1/.WSP_[W`[X_[W[WS\WT^[X[XVZVSZVR[WT\YV\YU[XU]ZX_\Z_\Z`]Za][`\Yb^[b^\`\Y`\Y^YV[VRZVR[VQWQLWQLZUQYTP[VR_\Xb^Z_ZV[UR]WS_ZV`ZWZTQXTQ[VR[WS]XTYTPZTPYTO]XS`[W^ZV_[X^YV[UQXRMXTP_ZXa][a]Z`[Y_YVZVS[WU]YV]XV\XU\VR{nd̳ٻٻԵݾԷӶԵܽвҴعɑ|j$7:@ 4<X9.Y9.I'637! .>#2L2$M'C&?"A#0'  $ ?%A'?!? EA2/G%O*Q'S'T*? J&@"O(^9+b>0aA2aE4P5(4 A$L1$  633/ G+$e>5e@6O3(J.$J,#97@#7& 9; A&S/&7!#9#Z<-H(81, ' 4/<;#* ;A$G,L- G) 13R,l=/Y2(<8.)# E(\=,W3%M, !  8V,#K',3/&$& R+O#Z.#pA3~K;zH9k=2TAdLv@/m;++ $ L%[1"=:0 V-!W- c3!b4"]6'X3%0 +,,Y, ]/"A%6!C(\8).$"#( ! 5@%I-$L,$800:68="4()!% f<*H*( /<"xI:C( . D2g=)mA+b9)V5(;$9:304S/"E"D"B"D&> 6<: K'[-"O-"N,!G&6ɭɭǫֺҶչټٽӸӸԸ̱Ȯȯ̵ǰxxrsjWHC895/,-.(((*+*())$%%'''642VQJzrgymqi`TOI31.#$#          "/';0'I=1SE7YK:F<1H>4QGMC8QG|kcZ]VN ۽Ǩؿθ­ïoeYK<-ym_~~witdtdo`n_xizlvh|n|nrfsg\wk`vi|obtixd[QD?9tj`{p}puvrp~k{hzhyixj}o+)(KIGPNKRPNQOMNKHIFCHDAIEBLIENKGOLJMJHQNLRPNSQNTROUSPSQOQNLSPOUSRWUTNKH<96                         520YURfb_fc`ea_a][`[X]XU]YV]YW[WTZURYURYVSZWT]ZXa^\c`_eb`gdbhdbd`^c_]a^\_[Y^ZW`\Y`[X]YU^YU[UQXRMYTOZUQYTPZUQYTPVQMUOKWRN]XT\WSZUQXTPYTPYUQ]YUYTPVQMYTP^YV`[X_ZW`\Y[VS[UR]XT_[Xb^[b^\b][_ZW\WS[UQYUR[WT]YV]XU`YTrgؼ˰ַַ׸б׷ڼӵۻٺݽپںlYK/ 6;<3?#Y9.X9-F&545 1; 6 S6&J%?$A"@"."  5B%?&;CD;- :N)O)R'T(F"C!C#H%X1#a=/a?0aE4[?0;6R4&21621&Q2*e>5];1@'M/%F) 1: @#1* ; : G)"N,$(&G-"Z:-B"11'  .03=<,/ ;F*H,M."<"/="W0$j=0E#<3.$ 0L-]<,U1$C& 8V-#G$.4-& 6W."O#W+!o@3~K;yH9k<2TA`It>-k:*) $O&W0!<9, W-!W- d4"a4#]6'V1#. +,,W+ \/"@$5!="T2$.#"$ 6B'V5+@#8-798A!?";8D%> Z-!P-"N+!H&9uȮֺӷ׺Ӷػٽӷ׻ؼؼҷʹ͵ϸ®|ih`OA>394/-./())***())$%%&'&963[VOvkvkpi_RMG31.!!!          "/':0'F:/PB5UG8F<2F=3SI>QG)R2$H%<"A"<*   ! @D = =DB3.G%N*O'S'J#<H%A"R*_:,b>/aB2`D3H-!2L/!O4&# 732-8!^:1J.%C(J,#>"/>">"+/; ;!M,$D' "*R6)S3(=01#!3.:=;33 > G+J,J+!31G'b7+]5*;9.)  9 Q3$Z9*T1$8  8V-#G$13) & B!X."O#U)o@2}K;yH9j<2TA^Gs>-f7(! $O'R-;84[/#X. d4"_4#]6'P- )++*S)_0#A$7"9P/!.""$6L/%R2)831:89:!0)+ >#, < A%( 8H+#tH9B(", (Z5#oC,g=*R2%/, 1 970+8E!E"@;@!=!J&B"8N&Q-"N+!H&>vcUڽĪպβг˯˯ɭȬèۿֻԺӺ͵DZʶw_]WF:7-94..//())+,+*++&&&&&&:74^XQznzqfkdZPKE420!!!         !.&;0(C7,N@3UG7I?3G>4WL@SI>MC9YNB\QDWL?ND8NE:VK@[PCaXNyyv{yvyǷƟѫ׳ݼ޿۽޿ӵϰϯɫڹܼ¥wbaL2vu~|zvvrroyjzkqyij޼ݻٷ޿ԸʮβϴévfH8'XF5xswkxkqs{}}{yw||u}p~qu|pwkvk}sizpexod{qe|sgzrezrfxk{rgleZLF?+(%63.sk`sRLEַǨҷͶ50'-%e[Oxu|{wy|qezuswmb2.*ZRKtj`rh^uj_wj^tfYnbWoaUwfX{iYxgXnbUj_U642FC@KIFLIGLIGKHFHFCGEBIFDJGDPMJROMNKHJGDJHEKIFOMJTRPPNLMJHIFCFC@EA><97                             FDBc`]fcaeb``[YWSOSOKSOLSOLTOLSNJ\XUa^[a^[b_\`][`\Z^ZXYURSOKXTP^ZW\XUXSPTPMVSP\YW`][b^\c`^b_\a\Y_[W`\Xa\Ya[X`[Xa]Ya\X`[W^YU^YU\XUa]Zb^[^ZWXTPUPLVQM\WS\WS[VQZTP\WTb]Ze`^gc_e`]`[Y\XU`\Yc^[d_\fb_fa^e`]c^[_[X^ZWc_]hb^}riyȰԼܽԶۼ޿ݾ׶ۺںݽ߿ݽϱA/&56974K.%Y:/O0&H&+7. 9 - G0"M+C$:!B#9'  3DB!9@D<- 9N)K(O&R'>D"A#I%Y3%a=/a@0aE4U:+5> [<,@(" 3520% J-&^:15J-#= /2?#< ' 3; <"P-%7!"5 \=/L,"80/ & 2/<>:67B&G,M-!@%/8 O, i-h8)$$O'J(;49Z/#[/ d4"^3$]6'L*),*) R)`0#@$8"8N- .#"#8 U5+C&7.697;!3'(4B%15< 67E)"I,"' !%7k@*lA+V6'4'.. 771-,E"D"B :<;F%E#B$1O,"N+!G&A &\J>ʭӵշܾʮеȭ̰ͱ˯ȭ秨ջĬư˶hf^M=;183--..())*++*+*&''''&=;7a[S|q|shh`XLHC420"#"          !.&;0'C7,OA4WI9MB6I?5XL@SI>ND:XMA[PCWK?ND9ND:UK?[PC[SIw}{xzyxͼȤղ߾ٺշݾŨk_K1w|rxqdpi^faWe`W}ui~{}{~yvx|~zr|nrzܻ׹ϲɬͲδȮʮ{kD5%YE3|s~pylxkzqevnbvma|sf~thulaph^me\qi_vncwncxperi_qi^sj`of\lcYldZhaWiaWldZrj_xpdwocsk`xpdtl`g`VMIA.+'3/+le[xUOGٰ׷̬ͮؾһf &OG=}|v|~xvvxl.*&WOHrh^qg]ti^zl`zk]reYmaUoaUxhZyjZqdWk`T%$#HFDLJHKIGGECHECJGEGDAEB>HEAEB?FC@LIGOLJSPMTRORPMMJHLIGMKHPMKMKIIGD;86                          CA?_\Y`\Y`]Zda^ea__[WYTPXTPXTQ\XU]XU_[X`\Y\XV]YW\XV[XUZVTXTQSOKQMIUQMYUR[VSYTQXSPXTQ\YV]YW]YV^ZX_[W_ZWWSPTPLVQMZUQb]Zea]d_\d_\b]Z_[Yc_]`]Z[WUYUSYURYTQ\WT`\Yd_\d`\a\Z`[X]XUZUR[VSXTPRMJUPNXTQ^YV`\Y`\Zb^[b][`[X\WU\XVd_\mfaske|sm~uozrlvmhule~sk~uxǰӶбϰ׸ۻݾ߿ۼ޾ʬ7#4576<P2)X9.L-#A&( 7( !9 ,Q7&H$=": B#7#   ?D >;CB3.F$N*G$Q&N$<F$B#R+^:,a>/aC3]A1>"3 W9)S6(0, 82/8"  0`;3U4,6 G)!2+6@#9+ 8: @$P-%-%F,"_?0E%41)  , .5=<B#E"<F*H,L,"60B%]4(e9->;.2( # E(W7(S/#K+ ?!P* 33- %! ?V-!O$R&m>1}K:zH9k=2P?\Fr=,j9*%%N'H(;3D"\0#^1!d4"^4%]6'D%',)) R)`0#@$8"7M-/%"#B( V5*:95988:!) &. ;#B$50A$= .;"@&  T1!oC,c=*9%"* ., 472/( B D"C!;:<:D#D$(C%O,!G&D"+M;2г¦дǫũƪݿĩǬ̰ӷϳȭĩĪзǰíj`XH;9084..//())*+****'((''&?<8c\T}qwkhaXGC>.-,!""            ".&<1)F9.QC5ZK;NC6J@5VK?UJ?QG:A?;NJCpi_{mtuv||z{{vz߾ѳβֺԺԺ}O?/\G3|}zw|o|sgumbrkalf\\VNOIAA<695/:60)&"'#! 1.*f_VzVPHի۳ߺ޽̬ͮà71(#>80zz~}pyk]tgZsfY}oayl_sf{mtgznbsgwizmvz{w|oC>8ZRKqg]pf\ti^zma{m_rfZlaVh]RnaUwi[xk\vj\A?>JHFJGEGDBEA?EB@JGDKHFMKHOLJKHEHEBMJGPMKOMKPNKQOMPNKQOLURPVTQTRPIGE!                          C@>ZVS^ZW]YV_[Xc`]fc`fc_c`\c_\b^[b^[c_\b_\_[YZWT\XUYUQXSPXTQVRNUQLSMIRNIWRO[WT[WT]YV^YW]YV[VT[WTb^\^ZWZURWROWRN[WS`\Yc`]ea_a]Za]Ze`^ea_gdbc_]YURWSPWSPWROVQMWSP\XU`[X[URVPLUOKTOJUPLWRNTOKTOKRLISNJUPMYURYUSWROWRNXTQWRPZUS]XV`ZXd^[e_\^XU]WTd^Zkd`rkfzpi߿Ӹۿѳ̭Ѱ߽߾ݽۻ߾׸ѳѴڼۻٻټںt_Q/544>R4*W8-K+"8( 9&$85#V9(D!9!; A"2  /CB 9@D;- 6M(J'F!R&D?@#K&X2%a=/`@1`D4M2%2J- bB0>&% 5324b9-2S2+f?6J-%?&@#,.; ?#80::E'J*"%(S7)[;-?!01$  0-:=9H&=?"G,J-C'04J)f:.P+#;5-A 60J-bB0];+f@2#  B#D#0@6 & & =U-!P%P$k=0}K:|J:l>2}K;[Dr=,i9*%%Q+N.;2L']0#a2!b3![3$]6'A#( ,(( Q)`0#@$7#5L,)$"#K/&C'88797: :* 'C#?%A"3 +J- 4* 'K-##  B%l@+lA,K/! %& ., 0750+;E"D"<9<:?!G$2-M* G%E#- 7$ͲܿϲѴָҵ̰ͱ̰ͱ׻չǬջèиDzqd\L><3;70//.)))****++))*(('B?:f_W}qynf_WB?;**) !!         #0(!<1(H;/RD5YK;OC6J@5TJ>UJ?QG;YMAYNAUJ>PF;QG<854200/110541NJDjdY}uhqsu{k||}չڽھڿֽìQB2`L6vrz{|n~prykwjwjvnaum`{rgtlaog\ri]kcXibWmf[pi_mf\]VMTNFMHA@<6*($ +)%PKDxTOGڰۻǨj!+%sz{~zqvgaTH{i}|{zy~|wyy{oB=7C=8ZRJ`WOd[Rk`UpcWmaVg\RbWMdXMl`Tth[{oa 0.-PNMOMKJHFMJGJGDEB?EB@GEBJHFOMKPNLQNLTQOTRPPNLMKHOMKSQPUSQVTQUROLIF+)'                                  A>;RNKTPMVROZVS]ZW_[Yda^gc`fc`hdahdagc`c_]`][\XUXTQZVSZVSYURZVR]XU`[X_ZW[WSZVS^ZW_[Xc_]ea_c`^^ZWYUR]YW_[X[VRWROXTP]YVb^\ea_b^[^YV]YV`\Ya][da_fcab_]_[Y[WTTOLSNJWSO^YVb\Y`ZV\VRWQNVQNWRO[WS]YU]WTZTPWQMTOKUQMUQNTOL[WS]XUZUQXSP^YVa\Y^YVa[W^XT\VR_ZWb]Zc^[ogaíܿ۾ܽعٹܼؼ̱ȮۼظܾӶݿ߿޾в޾ܼۼ׹αʬٺۼݽ۫|(514>S5*V8-H* 4+ 7! & 5?+T6&A 5=!@"-   <C> :CB2, A!N)D#L#Q&@C#C#R*]9+a=/X6+L-#87`@/S6(--62-N-$^7+ 5a;2b<47 =#6+2=!?"41: 9G)!;#"/Y;-T5(;00 % 12<>9F$8C'G,K, :!/=#V0$f;.?;/4F!) 8P3$iJ6yS>tL< ?":1878( , 9S, P%O$j3{I:ZDq=,j:*&%P*H':. O(\0#a3!b3"\4&[5&8) ,' ' O'_0"@$7 2L,%$"#'D*"78-58376(6R*!@#?C!5B(4* 7 =#b:&oC,\8&'! 2-- - - 660.7B @<:;<:N) ? D%H&G$0 &̲ɭʭɬͱ׻ӶαʯͲ׻۾ϳǬŪūͲʹӼθziaS?=5=80..,)****)+++-----,GD?icZ}q}qe^U>;7((' !!        #.& 9/&F9-OA4WI9PD7J@5RH?=NMGPNHidWwmbthpϲвz\I3k]LQNH@>::96542110-.--.-00/:95OKDhbW~virtndVncT{iso~mn{j~vf~vh{mqux޹޿ԹĭYJ;]I5{k}z|{n\VN)'$OJCzQKCzӫڷִݼѲټǰC<0!& ymy||{wjtfbUIyg~q~qzn]TJ;4-&"%!)%!+&"0*%3-(/*%4.)60*:3-C<4KD;ECAOMKMKIGECMJHNLJMKIKIFEB@C@=MJIQPNRPNURPTRPUSQUSQTRPRPNMKJLIGGDA*'%                            ?;7VRMZVR^ZV_[W_\Xb_]c_]b^[^YW`\Zea^fa^d_\`\Y_[XXROSNITPLWTPYUQZVS^ZWa]Zb_\a^[`\Z`\Z]YV`\Zea^d_^\WUUPMWSP^[Xa]Z_[X_\YZWTYUT`][c_]`\Y_[X`]Z`\Z^ZX_\Za^\`\ZZVSVQNVROZVT]YW^YVZTPWQNTOKUQMWSP\YWa]Z^YV_ZW]YUWRNTOJTOKTOL\WT[VSVQNVQMVRNVQNQLHYTO_ZVa\X_ZWZUR\WTnf`Į޿׹ַ׸ٺ׸׸ۼݽܼܾպӷ˯ָ̰ͯӴۼбԳ޿ˮںྡˬַ޿մаݾǣu#5/3? S5*T6,B$, 00  ( 1E0!O0";/=!@"*  ( BB :>D=- 0J&L(<P%K#A @"K&V0#`<.];.L)#;2 Q3%bB1;##5321j>1H) # K*"d=4[8/' 6.-7>">"13; 9I*"0$5Y<.L-#51+ + /7<?= @;G+H,C&11E'a7+Y1';7,@ C  ?$Z<+hI5XCxO>4' 638<?A 4. :U-"Q'N"g9-|J:|J:l>2{I:ZDq<,l;+* %M&C ;2V- ]0"b3!_2!Z3%[4&5*,% ( K&^/"@$61L,%$"#;$;!82#36' +- &L)R+!>$;G%@*5) % \9+yK;uH6nB,c;'/%3++ - + 461.8A!;;;:=9E$H% 3H&H$3ϳдβ˯Ըٽֹе˱̲׻ֺȮȭʰδּk]VJ76/<7/.-+)))**)+++-../.-JF@mf\}qsc\T<95'''!!! !      ",$8-$D7,N@3WH9QE8I?4RG1G>3H@6D;0I?3YN@^SD]SEe]O~m۾ֲڸ׸ɮϴ׺ֻܿƮeSC`L7}o_tf_W%# (&#PJC{PKC|pԬ߼ض۸˭ϴj  $&vmb}|~{vjxkl`Tzj\{~qzn}pwl`f[POH@JD=OH@WOEaWLVNFIBLIGOMJOLJRPMSQOUSRVUSSQPQOMPNLIGE*(&                         31.[VQ\XT^ZV`[W]YVXTQZWT_\Yc_]^ZW\XU`\Yc_\a]Z_[Xb_\]XUTOJQLHVQMYUQ]ZW_[Y]YW_[Ya^\_[Y`\Z`\Z`\Z_ZX^ZXYURUQNUQOWSP[WUZWU[XU]YVYTRXTQ^YW`\Zc_]b^\]YWYTRXTQ\YW_[YWRORLIRMJWROZVS\WTYSPTOKUQMWRNPKGTPL\WTWQNVQNZVRXSOVQLXSOZUQZURYTQUOLRLIQLGTNJTOKYTP`\Xd`\b]ZZTQWRNf^XtжۻڻѴո׼ҷжҸպھٽնҳټܾԷն۹ڹֵӲٸۻշвˬƧ£̬ۼնäu%523? S5+T6,;!%1(  + .M6%J)4->!@!$  6C? 9BC6, 9M(E$AR&F!A"B#Q)[7*`=/V4)@4 ?"gF3P4&* ,5215X3(" ;U1)e>5Q1*% 8,09>"/E&11%  ./;>A A"9?"G+H+9 /7 N,g;.F$<21F"0&F)cE2iJ6_J}RA9 %/0C"G#@F%=!. 8T,!R(M!d7+zI9}K:m?3tD7VAq=,m;+- $M&B:6Y."[/!b3!`3"\5&X2$/ *,$ ' H$^/"?$61L,%$"#$<$7;"A0(.62#, (* X0%J*<#6 F$L'8 S2&{L!J'$ % F%H%4Ū۾ѵũӵػѵʮ̰Ͳƪĩʯʰպzr`TMB21*84,.,+)))++*,,,-.-/.,KFApi^|ptaZR;84)))!"" !!      !+#6,#@4)M>2YI;TG:I?4SI=SH62C=8FA9ULDwg۾ܸ߽ݼͯȫͱԷܿβīƬp]LcO9zkZzutwle_W1/+#!QKC|SNF|thŠۯضұܻͮջIJq"&)"ph]~~|ymzmocXnaU|{{z|{symrtgsfuj_ndZpfZ|pcseti]mdYtjwlukvks%#"JHGNLKOMLPNMIGEFDBJGEKIGJHEHFCHEBFC@HEBJFDJHENLKPOMOMKNLKPNLKIG*('                                "!20.VROa]Y_ZW`[W]XS[VRXSOUQLSNKTPMXTQVQNVROYUR[WTVROZWUfb_d_\\WT_ZVa]Ya^[a^[_[Y^[Xb_]b^\`][\YWXTQWRNYUQYURXTRWTQVROQMJPLJMIFSNKWROWROZVT\XVZVSZVTWSQSOLTOLWSP[VTYTQTOKOJFOJGUPMXSPXSPXSOVQMUOKQLGPKFSNJUOKSNIQLHTOK[VR[VR[VRYTP[UQ\WRZTPVQLUPLWRO[VR]XT_[X`[X_ZV\WSe^Y~rɰݾڽھҶѵδݽظ߿ݼܻͮίͮͮѲֵѳӶ׸Ѳ߾Ǫ{693? R4*T6,6& 2!  -/S:(E$1->!?!$  % ?C;<C@0- D#M)@!L$Q&C >!I%T- ^;-^;.K)!75 [;+cC19!"431/  1F%\7/d>5B'!/2,59>"; /7: : P-%F( 9!C*_@1A#0/"!/2<>?@ 8C'H,C(2/?%\4(^5*;9-9C   3M0"gI5lL8bMb?1) , * 13N(E":Q-%9- 4Q* R(L!`4(yH8}K;o@4pA4S?q=,m;+- ! J%@:;Z/#\0!b3!]1![4&W1$, ++"% F#]/"?$61L,%$"#*+3C/'K7-55.( , '.[1&C'>#6 P,R-!\2'Y3$@#)+4'1& - + + 55//=!=<=<<=8J(( ?!I%5ѶھԷܾ׺гƪ˯˰˰ڿϴ˰wzm\RLA77085.-+)((),++--,...0.-NIDslb|pt`ZS:74)))""#!""       !+#7,$>2(N?3[KVJ>RGWMAg[MUKA{ptyy|vz~ξϽƞ˦ϵxgB<62.+<6194.+&!-'!80);85777554432432321322444233../-..,,,***+,+ ׻]N>]L8985/0/.0//0/010-/.,-,+,+,-++,+,-+763KHBb]Tylwob|QF?QICRKETMGYRK]VOc[U_WQ`YRqf]޽ܻαҵܿͱȮѷo]eP:wgV~}}y}}z~ru~|s|pzoxqha[U53/ OJB|e^UibYƷڱسݼݻַؼɴ±q$(!-&bZO~{uhvi]bXMXOE}wv}|~~{~sgkbYqh]ncXqyq|m|mwhvh|pczovvux@> R4*T6+2$- ,3U;)F%1/> > -" 3CA 9@C8, 3J'K(>M$DB!@"O'X4&_<.W5)?3 L/"lJ6O3%) ,521,%D%H'`;2b<345-/87?"8.9:;;F*H,: -9!\8&l?0N*";4.A!? >#W7(kI6wQ=aMB) &,1A"U,"I$J( \4+C$. 2N(T*L![/$wG7~L;qB5m?3P=q=,o=,L&F"N'?:D"[/#[/ b3![1![4&U0#* ) . $ D"^/"@$81M- &$"#" E'L9/=&47;#* '" +Z0&B'@"<Y2"[2&d6*l>-tD0e;*@#F(7# 588R6*E-"/( + , ) 272./1;==;?6?!. 5I&6ʹھݾˮ˯ͱȭֹǫɮwreUMH>88275/-+)'((+++,-,./.31/RMGxpfyn|q`ZS:85)))###"##       +#7,$A4*RB6_N?[M?K@6VK?WK?SH<]QE]RFYNBOE:SI>WL@fYKSJ?ym~t{y~twξğmRKC-02(+-+++(((&''%$$*% :2+:636544330/.21010//.----+,++,,+,,,--.//122 '+tҶZL=ZI6><9132010/00010/0/./.-/.,-,*++()(++*541GD>jdZumax}|xwz~~m`pdthsf{krvqr}ǰڿٷֶαؼβǬжtb]I4l\Jswk~ryusuz~}y|xvx|uwruvv{osw{owk~qru}qwk|siqja]WP:73MHAvsla]WNتٸo' )"/'ULBy{}tgrdVfYNXOFy{t{yszsptquvssrg]i`Wri_tka|rh 422RPORPNRPOOMKQNMPNLPNKPMKOLJOLJNKHKHDHDAHEBIFDLIGNLJMKIPNLQOM310                  *)'TQNWTQWTPYUQZUPWRMWSNXTPTPMOKHPKGOJEOJESNJYTP\XU`\Y_\ZXTQROLURNVRNRNJPLGQLGOJEJD?PKGXTR\XV^ZW`\Y`[Xa\Yea_fc`d`]d_\c_\]YUWRNTOKWSOZVS]ZW]YW\XUXTPWSOUPLUPMVQOXTQ\XU]XVYURVROOKGKGCLHDMHDMHDPLHUPMSNKNIFMIGQMKWSPYUQWRNTOKSMIYTP\WSXSOZUQ]XTYSO[WS\WS^ZVea^hdafb`fb_d^[d^Zc]Yb\Ya\Y`[X]XTWROTOK^WQsϴݽڻ޼ݽڿͰٻ߿ܿӷԵ߿ֶӴίƨŦå̯ӵܼջغٺغ۽߿׷عں̮ 6? 2=R4*T6+2( %  + 3 U:(D$.--+( % ;B> 9B@1, =L(G&A:4@"F$R*\9,^;.K) 57bB0cC17#531/$ @%G&M,$c=4W5-$ )+277?"6/99>"Q-%@%9 M4'Z;-70)  * 1;<>? 9?"G,E)6-X5&{J7f:.=;/4I%7% D'n=1P@`LZG$ " 03R-#U,#T,#Z3*[4+@#. 0K(U+ L!\0&xG8|J:rC5k=2O=q=,q>-]/#_/#V+">:M'[0#\0!b3!\1"\5'P- & )9!$ D"\/!?#61M- &$!# . Q7,@/&25;!6&. 0;Z1&=%A F$[3#a5)c5)P,!j>+uE1qC/m@-L, 5936M2&J1&) +( , ) .64.04;<?;>;3- ) I%9{ֹۿͱػڽҴαƪؼŪ׻ʹvhYGB944.53-0-*()*,,,---...530TOI}ukzo{q`[T:96***$%$#$$     !*#6+#B5*SC6bQAaQBNC8VK?UJ>RG;\QD^RF\PDPE;TI>VL@dXJVLAyn~|tws}~rq|{fUKARH?ME<653//.+**(''%%%!!!*% 80)73/0/////,,,------...121343343232222343565244&+.PJCLF@kaWwj_~pdzlq}ԹҸëǭūǭūдzXJ=VF3A>:344243121010010121132/0/,-,)+**+*+,*22/MJCa[Q{n{}xuyê͵˴ȲǰƯ˲ֵܹέӭھֻ{i\H3fUDmf[($!ICJ&(7h;.|E9UDdO~SC*= ?!/>"Y1%T,"U,#[3+I) + .. E#U,!M"_3)SC}K:sC6j<1N=s?.r>-^0$^/#T*!>:O)[/#^1!b3!Y0!\5'N,$ 0 ? # C"\.!?#61O.!'$""  ?&K9/246=#,'?=C#Z1&C%@O+_4&c6)U/$2?"U1#Z4'I)$/6836F+!N4($* % , -.570/29<?=:=22-* E#:u̯׻ֹɬԸۿھԷеʰ˯ͯʭ۾ؼдѶƬ׽|m^D?611+20)1.+)***++-.-..-751VQJyn}r}rb]V<;8---&&&$%%       $.& 9.%C6,RC6_N>`PAOD8UJ>UJ>RG;[PC]RE\QDOE:TJ>WLAgZLYNCwl|xtt~q~zys{|wmXTJ?QF=SH=SH=OE;2/-'&&%$#""!""!&"6/)840---...00034345433234356633300/..-./.././00011--,..-...+,,(**(++&)+ &( % %!*'/%,((,/12A>rk`84/YSKibX~vi||pz}~zzogaWIE>;72~vj~vjRLEް۱ܺŤѻ|b!,$-%0(A91~qv}v{obti^LE?su{|p|rhujxnd~tjx~ytx|x}psxrssww|p?="hF3dD28!18 2/  -I+ F&E$[7/[8/$  +0829>"21:8B$M+#<#6W;-Q2'00"!.6<=B!B#3E*E*6<"<"rE2qC3C";18D!B" L)zD8H:[IcOsL=( V0^4#F&Q.$[2&X0'U,#O+", '-. @!U,!N#V+!QA}K:vF7i<1{I9s?.r>-_1$].#N'>;V-!Z/"]0 a3!X0"\5'J)!7D!!# C"\.!?#50P/"'$!" , J6,?.&/ 592%6I"* K(Y1%;!4 X0!d6)_3'5-0-44)<4637A&R6*-,$ + + +573.,3<>?240313E#9Ѵˮα̯ٽټٻָչīʮϲ˭ܿҶèжǮȯzwi[ID;66/21*0.,)**)*)---..-:74XSLzottfaZDB>121)))&''      ".&:/&F9.SC6^L>_O@OC7SHTI>[PC\PD[PDQGQF;UI>UK@30,"!! # 1+%95134344365476565432222143221010//.....-..***)**'(',,,..-------..-00/00////000233677677344///..-/.-210f[RKA8L=,A>9355133021/10-/.,-,+,++,+,-+()(%&%%&%))(120<;6`\S}xlv{|~Ҷѵܾ߾Ѹ_J3cPQNKSPMUQMYUQYURXUQYVSYVSZWS_[X_[W[WTWSOVSOROKPLINKHMIFOJFVRNVROXTQXUQZWU]ZX]YW]YWYURTQNVSQVSP\XU[WT^ZW`[Xb]Zd`\d`\b][c_\gc`fc`eb_b^\\XUWSPTPMSOLVQN[WT\XU^ZWZVSXSOXTP\XU^ZXWSORMIRNJWSOZWTZWTWSPXUR\XU\WTVQMRMIUQMSNKSNJQLIXSO[VR[UQWRNYTP[VSXSPZUR[VS^YVa\Ya]Yb\Yb]Za[Xa[Wa\Xd`]fb`d`]`[Wa\Xe`[~unϹԶָܽܿҳط޼ݼۻٺټֻ׸ʫɫӵͯҴݾۼۼгѳַݽ߿޿غˮȪǨƧʫ׹D( 3:16O1(U7,;"$  & =*S7%;+* & ((=B> :B?., =J&H&C 42=!G$O)\9+Z7+<2 X9*mK7N2%+ "; ?#5& D(J,!F%G&a;3O0(#,370; >"12; 7E&I)!;"9!]?0K-#0. %/9<>E#;:!H,A'3A%!G*zJ6g=-:6) A D!0@!c4)~G:J<_KaM_>32\3!f8&a8+a8+W0%Z3+X/&E#/ 0. :S,!O$Q'QA~L;yH8j=2n?2m;+s?.e4'\."G#>;V-!Z/"_1!a2 X1#\5&N/#-A#B #"C!\.!>#50Q/"($!!"@)!I8./365'- F EN*!Y0%:;Z1$\1&J'% 5.28@% 7C#443A$@$Q5*:"/*) , +366/,,:=C /" 231A!9ȮҵԶӵ׹۽ػػ۽ԸԶ̰¦׺ͱêʱ}|oaNJB88221+2/,)++)))---//.<95XTMxmsuojaSPJ@?;753642     ",$;0'H;0TE8`N?_N@OC7QF:UJ>XL@[PC\PD[PDUJ>XM@XMAh\NXMBvk~|y~rxl|p~x}pxode[PZPDSH>VK?VK?WK?RF;VJ?VK@841###!0*$84/21121042141030/20/31020/+*)(('(('()),-,-..-..'('))(,,+..-//...-./../.......////00/00-.-)*)))(**)---UOIE>8E7'D@:588344132021.0/,-,*,++-,./.,.-)+*&('()(+,,22/<82ZULkdY|ugtyٻڼӶ۾δeP:cP;xlpf\lcXiaWd]T^WNRKCE?850+&# # :6/QLDe`Wvpft~wlFB= ,)&a[SxPKDبޯ۬Ϯϼ}tiS!$/&1(1(1)!vjz|z}p~tiUOHqazvtwvy~{w{p}sht}ps|pw}{ECAWTRURPSPOTRQSQPTRPPMLIFDGCAKGELHFGDAEB?LIGTQPWTRWUTSPO421                        0.,UROWTRZWT_\X`\Y[XUWTQWTRUQNSNKUQNUQNPLIMIFSPMQNKNJGMIEQMITQMVSPVSPXUR[WU]ZYa_^a_]`][^ZWZWTYVS[XU]YWXTQUQNZVR\WT\WT^ZWa]Zea_gcafb_c_\b^[_ZXYTQUPMTPMTOKYUQ^YV^ZW]XU[VRYUR]YW_\Z]YVZVRTPLTPMVROXTQWTQWTQZWT]XVVPMOJFUQNXTQWSOSNKVQN]XTc^Zb]Z^YV\WT[VSYTP^YVb^Zd`\d_\_ZV`[Wa[Xa[V`[Vb]Zb][b]Za\X`[Wb]Y~tlǰۼѳָݿ׹ӵѳŨʬҳΰαгɭ̱ܻٻ۾ٸ޿ˮӵܿں׷ۻӵgPD0 ;18N0'U7,6"   & <)Q3#6*) & (+@A: =B:, .C"J'H%F!, 7?"M&S.!];-N.#3 >"iG4dD28 #.?#=!-:"K-"F(D$J*"Y6.<#)-752? 5D(G,<"9@% S2$|K7Q-":,, C!C!, S+l:/G:O?bN]JL1) -D(c7&a8+`8*G%F$W.$K& :5. 6Q+ Q'K {J<~L;zI9k=2h;/j8)s?.f5'\-"C!><W-!Y.!_1 `2 X1#\5&R3&: _7%C &  B!\.!>#52R0#($! 1L9.A0'156,&<L#@U.$Y/$9148,  6/49=#3G&64<N1$F)B'7/-+, +)071.*7=D 9 )6053ͲԶ׺ټػ˯Ͱǫݿ׺ڼūɰ}qdPLF<<621+30,*+,(((+,+//.A=9[VOzouz~wmkf^^YRRNHPLF20,    % .&=2)K>2WH:bPA`O@PC7PE9WL?ZNB\PD]RE]REUK?XL@YNBh[MUKA|sh~~zvwjwk{{~thbYNVLAVK@TJ>RG:52%&&#$$""" !  0+%82-**)-,+.-,/.--,,,+*++*++++,+/00232121343455343)))'''))(+++,,,,-,-.-././0/....//,-,,-,..-...//.//.00/JFCC>:=1"E?7:<<677132021/10,.-+,+*,+,--,.--.-+-,*+*,-,2211-)2-)1+'=5.k]PҷfQ29H+G+8>#?$]8'qD2>8# 5D!C!.5[/#s?3~G:TCcNTD8"" ,K+e8)a8,_7)<<T,"R*!1 =:. 3N)R(JwG9N={I9m?3i<1h7)s?.h7(\-"A ><W-!V,^1_1 V0#\5'N."8c9'@' B!Y- >#24R/#'$ !$;!=.&244-&3EK#> V/%Y/$:/. *%814;20J( 84A D(K.#720-++,(,440*2=@>-  % *20ʮո̯βؼոȫҵָܾǪʯϵ׾ncWA=722,..'30,+,,&''***..-FC>`[S}ru{txmrkake\LG@    %/' A5,OB6ZJ=fTDeSDQE8PE9WL?[OB]QD]RE\QDTI>TI>WMAfYLVLAypf~|~}wxzmzqewoci_T]SGXNBVK?QG;PE:QF:VI=RG;RH82+++-../00122000----...//232898899343121333443)))&'&&&&'''&'&''')*)***,-,---..-+++,,+-.-//.1100//00/HECHDA4*5,"*(%*)&('$('%'&$'%#&%#&&$&&%&'%()'++*))(+,*442@<8A>;EA?ZRLzβʯfQ>aM8rym}sf|n~o~o}oyltg}rfyodqh]kcYiaW^WNRMEFA;?:4;7273/2/++)&'%"%#!%$!%$"%$"&%$ $"+(% #!PKCOIBuФը۰ߴϮϼƴð{oX $&1'8-"8-#.$ul`yt|pjbYobVxvxup~nt}xp|}svvtpsq{m~p}xvu"JGEROMSPNURPXUTUSRRPOOLJNKINLJLIFHEBIGCMJGQNLVSQVSRUSQ<:9                     $"!=;8IGDROLTQNSPMLIFLIFOKHPMJPLHLHDSOMXUR[XU_[X\YURMIJEAPLGRNKUQMVROVQNWSPZVT[XVZVTWROTOLXTQ]ZX_[X^ZW_[X`\Y\XUYUR\XU[VSWRNSOKVRO]YW]ZWb_]d`^_ZWUPMXUR]YV\XV_[W_[X\XU[WT]YV\WT[WTYUSZVSYVSXTPUPMVROXTQ\XV\YW]ZX^[XYURWSP]ZW`[X]XUZUQVQNXSPYUR\XU^YW`\Za][^YWXROVQM\XTYSOTNJWRM`ZW]WTVPLRLGQJETMHZTPd_]gb`ea^gc`leb|sعݾ۽׸عڽػַϰбҴڽػҶֺչԶعܽ޿еܾ׸޿ɬ̮ƨ̮ڼֹ̰¦ѳܽշع޾ҳͮϰغ߿ݸ626K-$U7,6   * <(N1!.*' ')8A> 8A?.+ ;G%I'L&71= J%P*\9+Q1%3 <hF3fF3<#& ,?#="& % F(J-!I+ E%D$M-&. %,4825>5D'H,E*6?$ @%g?,[4'9- <C!A $B"_1&zD7~F9YGbNrK=').X1 d8*a9,X2%1;P* V-#??;.0H&S*Jm?3P?|J:o@4j<1i8+s>-j8)\."=;<W-!V,_1 ]0 U0#\5&G(;c9'?' A S+>#.8R0#'" 53/51&, AG!K#=& Y1&X.#:.. ))%=;8<, 0M,!=5C#5F)931-+)+ +)+//-,=<4<,   *.3§غͱݿǫɬΰܿոֹոβʯзӻj_T=:3/0(//'41,-..((())),,+KF@d^V}qv}|p|ti[UM    $0' B7-OA6ZJ=iVGiVGQE9PE9UI=\OC]QD]QE[PDSI>SI=VK?cWJXNBvnc{{xxrquj]dYMaUI^REZOBVJ>RG;QF:RG;UJ=VK>VL@QGXMB@<7$%%&&&#$#  82+B<5122122011/11/00/00...***,-,454566.//***+,,/0/%%%$$$%&%&&&&'&&&&)))***--,/.-/........./.111232./.-..FDBOKH?<87401/*/,(0-)+(#(% (% '$&#""#"#*& :61B=:B>;FB?ZQKsǭ߿ظܿǭƫo[HbM8yhuxl|n}p~p~q~pylvj{nyl{qeui|sgwpeibX]UMYQISMFJE?B=8<7273.63.62.40,41-.,))(&('%'%#"!!  NIBLG@}ujƠѰмòǵznX"&( 3);0$:/$0'e]S|xlpf\i`VOG>yjrdrd}pcxl_~pbte{lzj{luf{lz}puoyjopxitf}nqq=;9VTRVSRURQSPNUSQXVUVTSTRPMJHHFCHDBIFCLIFOLIQNKXUSXUT;98                  '"FDASPMWTPQMJNKHQNKSOLOLILIFIEAJEAMIEHD?JFBRNJVRO[WT\YUYURSOLWSOYVR[WSZVSXURZVT]YW[XVZWTYURWSPYUR]ZX_ZX[VS]YVb^\`[Y[WT]YV\YUYURWSPWROZVS[WU\XV]YV]WSUOKXSP_[X`\Y^ZW^ZW_[Y\XVXURZVTWSQTPMSOLPLHRNJWSPWTQWSPZVTWSQUQOZVSZVS]XU_[X]YVZURZVS[VSZURZVS]YV\WUZVS\XU`]Z`\Y_ZW_[Y\WTVQMYTPa]Zb\Y^XT[TOVOJVPJXRN\WU`[Ya]Zfb`skgռַո׻ܾϱбϱгֹټعֶӵѴд̰ϳβ׺ۿ׻ֹǪܽȫƩŧƧħ̮ۼ۾ӵݾ߿ۻʱ70+D(!U7,4 # + =)M1!.*& (+=A;;A:+ .@H%E#H", 7A"N'T0$];-D&0Q3%nK7X:+/!8@$2K*Q0#J,!F)E$B#: ' )-6632:=!% ,< 4G( ?$:!I.#fF5D+ /& 0:=>=9K+ G+B': @% I+ k@/C":%%@E#E$ O)b4)}F9~H:]I_K`>3 -4 ]3#b7)a9,P-!1 < E$N(AA=.. B#T+ K!a5*O?|J:qB5j<1i9,r>-l:*].";:;V-!V-`2 ]0 X2$[5&@!A#a8'<& C!Q*>#+;R0#&!' = "  44+ '=C G"K#=*[1'X.#;--( %?;:>* 4K+<5E$/;:64*))) -0./-/% 9?+ 4@. ! 3"غոͯĦƪնڼټ˯ŪʮũƬؿodY@=622+/0)51--..())))),+*OJDhbY}qwx|ob[R $2)"A6,N@5YIEC?BA;8<:697497420.0-+953D@=GC?LGCTMIf[Rvū̱ͱq^M\I4n^w|puiuithzpd}rfzocynbzoc{pdrh\ynb}rf{nxodlcXjbWf^UaXOWPHRLDQMEPMFLHAFA;HCA!@C* 9H%O(Y6)V5)67bB0kI6E+( ,?# G(]5%:& L(Q*>#*=!R0#$  + . *51&6AA!F"K"=.[1'X."=,+%&?7;>) 4C%75H%07:84' % *-,/ /-*0(1?4# >;" % ,"z۽ٺغݾۻڻڽ̰ƪȮؿj`V?<722,01*62--..)))))).,+PKDkd\}ryy~qhaW    $2*#>3*J=2VG9dRCmYIWK>PF:RG<[OC^QD_SF]RESI>ZNBXMAdXJ]RGldYvvuwjseobUaTGVK?RHWL?VK>[OB[OA]QC^RDaTF\PCND9J@6QGND:=95%''%%%#$# $ 60)A92***'''&'&))))**'((%&&())+,,011111232233233121$%% ! "#"#$$#$$###%%%''')*)---...010010010000/0////...><;MJGLIFNLHJIDHFAHFBJGCIHBGE@CA=C@8B>9>;620-KF?|mf\MHBղЯϮӲݻЯҽðWN= %)!.%.%6+ E8*D7)<1&LD;}~}xtfwjri_iaXd\Te]Ue\Te]TcZRg]Td[Qe\Rpf[~qym{n{nwi{n~q~pyksfsfrcxhyB@?XUTWUTYWUYWVWUTVTSTRPTRPURPXUSYVTZWUZXVWTRURPURP=:9                              #" 864)"4$F;5LHDOLGWSORMIQMIXTOXUQZWS[WTZWSYUPXSOUPLSOKSOJXSOWSOWTPZWTXTRVRPXUR\YU^ZW^ZWZVTTPLRMJVROZVSZVSXTRVRPUQOSOLWSPXTQWSPYURYUR[WT\XUZVRUOKWSO_[X]YV[VSVQNUQNYURXSQSOLXSPZURZVSVROSNKSOMZVS]YW_[X^YU[VRXTQXTR[WT^ZW]YVZVS[VS\XUXSPSNIRMHSNJWSP[WU[WTYTQTPMUROZWT]YW`\Z`[Y`\Zd`^gbae`]_ZWZURXROSMIUOJSLGRLG[VR_ZW^ZW`[Y^YWe\Vzmʯ߿ݽ޿غвѲѲȩȩϯҲѲܽݽںٽ׻ݿعغַвչܾ׹ܿYE<41& 2P3)-   6@*G,,)% '1@?9@@2;>94B=, > M&Q+\:-J+ 0H,lJ6aA04$9@#- C%X2$J-!H+ B#D$< ,!$,4724'9=!# ,9#% ,K+]2%b8+a8+V0"@#7,<B5, . =V-!N$O%M>|K:xG8j=2i;/p=,o<,_0$>7;T, X-a2!X-W1$[4&> K)^5%;& U/ O)>#( @#Q/"(* / $ +2* 0 @;@!E!J"?7\2'X-"?2:*!")=.==+ 6I- 7 6I&0699,!" &34. 0-+0-1@;" 1G#P*!< 0I3*ƫڻڻ۽ո˯۽ͱۿԸĩԹëpf\FC>44-12+51,-..+,,+++10.TNHoi_zozx{nldZ     %0(!9/'H;0TD7`N@jWGZNAQF:SH<]QD_RE^RF_TGTJ>[OCXL@bVI_THiaW|qyodi`Ui\PcVIXL@TI=TI=VJ>XL@^QCZNA\OB[NA^QCaTF_SESI=J@6RH=SH=MC8SH=C?:&''$%$"## ! '#81*C;2%%$"""$$$()),---..,--,--+,,-..,--***)**-.../.&&&$%$&&&&&&%%%%&%))),,,-.-/00.//000111121011000010122B@?ROLNKGNKFKICHE@HFAKICHF@HFAEC>C@;EC>><8<:5:85;86@<9UMHxj_{ҵϲҶԸq_YF1l\L}wj{re}tfuh{qdtk_qh]neZh`Ud\Qe\Rf]Sh_Uuk_vx~||zotmboh]haWe`VicYb\S\VM\VN^YPYTLFB=('$D?9~rxpeNHAӱã˪ӱ޿ˬԿXO=( +"2'4)8-!J;-J<-@4(D;2y{nzmug~p|rgxoevkzou{ptjyncthvjt{wwyvv~r~rvu}p|lsdy-*)LIGOKJPMKRONUSQTQPVTSWUTVTSTRPWTRSQOROMURQWTRTPN;97                                 /-+MJHOLI$*#7&IA;NKFKHDGD@KGBNJFQMJRNKTQNYVS\XUYUQVROWRNTPLSOLYUQZVR[WTYVSXURWSQTPMXTQ\XU]ZX^ZXZURTOKNJGSPM\YV\YVYUSUROTPMSOKUPLUPMYUR]YV^[X_[Y_[XYTPTOKXTQ[WTZVSYTQYURWSPSOLPKHSNLVQNUPNRMJQMJTPMXTRZVS\YV_[X]YVXTQWTQYVS^[Ya][^YVUPLSNKUPLQLHMHDOKGUQNXTQUQNRMJMHDKGCUQOXSQVROSNKVQN[WTa\Zd`^fa_b^[[URNHDJD?MGBQLH[WSa\Ya\Z]YW\VTk`XuҶ۾ܼڻдϱҳնַٹݾٺյӳϰԴܿ׻۾ܿѵֺݽ޾ټxbV*1'+M1'- 6@)E*,)# %6@= :A<3D"?44E 2- D#O'U1%Z9,<2 \=,mK7N2$) ,@#63L+V1$J,!F)C#C$9*" (-6632# 9>"' +"N-"G+G+5 C$m@1xI5i?.* :C!W3'0?!Z.#U)!p>2yF7WDgC8+*2S._3'a8+`7*P,=!00?A2 , .6V-"P'J wG9}K;yH8j=2j<1p=-q=,a1%=3;T+ X.a2!U+V1$Z4&= E$O+;% " X1"H&="! C%L, &/ * !& (( + >?#?@!E!J"D=\2'W,!?A2)E7- . ;+ >B 8>%X<*9;K'38; <9$ !! .;#// .*-1) ;>* $ E$Y/%G%.ܿڼ׹ݿȫϱڽշۿڽ§׼ƮldZHE@55.02*20+,--*++,,,541XRJrj`~vkyy|pnf[       & -%7-%H;0SD7_M>hUE[OARG:UJ>\PC]QD]QD`THTJ?YNAXL@aUHbVJe\Rqh^WLBXMA^QD]PC\PC^QCYNASH6-D;1$$# !"#$%&&'('&&&%%%######$$$$$$$$#$$$%&&)**'''%%%&&&%&%%&%&''***,--,---..+,,.//010010010121000/00BA?ZVSXUPROJNKEKHBNLFRPILJCJHBJHCIFBJGBB@;?=8C@ά̬ڹ۹ʮǫӸïİȴ^SB!+"-#6+8, :."L=.M>/B6)90&uyvi{peuhztvlxn}rxx{~rxyyxwssv~}wlzpe{qf}pc{kzA>;LIFMIFNJHPMKVSQWUSWUTWVUXVUXUTXVTVTQURPVSQWUSA?=                                  1/-IDAJFC;85",#;*!MGBPMIPMIHDAFB>JFBSOLSOLQMJQMJ[WT\XUXTQYURYURWSPWTQXTPZVS[WTZWTXUSTPNQMJQMJTPN[XVYURSNKOKHRNKVROXTQZWUYVSWTRWTQ[WT[WTYURZVS\XU^ZX^[Y]YVYTQXTQ\XU]YV]ZW]ZWWSORMIPLHSOLVROWSPWSOVRNRNKNJGSOLVRPXSPXTRTOMRNKTQNXUSYVT[WTVQNPKHTPMVROQMJPKGRMJTOLOJGNJFOKGOJFSOKSNKSOLTPLVQNZUQ^YV^ZXZVTVRORMJPJFOIEQLGQLIUPMWRO[VT[WU`[Wsjּ޿۽޿ˮ˭вԵطӳ޾ٹ׷պƫͲھ۴3()K.%-  :='D*,)$ (:@; <A88D":46E- 0 L&P(Z7)Q0%2 @$iG4dD27' : ="! .<R."R0#J,!D'D#B#4&  +/755."8>"+*D"M+!( F$X,#X,#wB6yH8VEW90  ,<$U/a5)a8+]5(F$< *$ 2 A@/-.1T+ S*Im?3M=zI9l>3j<1p=-r>-d3&=3;S+[/a3!N(V1$Y4%E&85;$ $ X2#D$@!E!J"E=\2'W,!=G9/?3*! 250 :=7H,\=+<>K&="E,!B&C!B&+!!8 D) 6- . +(/)- ?/ $ ;W/$Q+" $ 3 oZMݾۼۼ۽ԶħũȪǩ˭αչԻĭ}d[SC@<55/12+74.,,+)++,,,974]VMska{rgw}tqi^   & ,$5+#F:/TE8_N?fTE\PBSH;WL@[OB\OB]QD_TGSI>XMAZNB`TGeYLcZPjbYYMA]OB]PCYL@YL?\OBWL@TI=VK>^QCcUG`TF^QDZNAXM@PF;VL@ZOBXK?VJ>XL@YMAG?7 !! ;3*A8/?6.2,&2-'.*%&#!  ! "#"#$$#$##$#$%$(((()))))*++)**+,,,--./////...---,--;:9WSP[XUVSNROIMKDOLGTQKQOHOMGPMHQNIURMOLGKHCLIEOKHUPM`ZUtjʱԷūuVC.dTDwq~p{n}uhsl`vobty}pzsg|o}|yxrkdZ@<7/+(qj_tSMEغгçȲѼԿ_TC',#/%8, ;/"<0#M>.QA0G9+8.$|oywmazper|wuzov{~x~s~rsuw~rtz}~uzn}o}lz{mq 753OLJQMKROMTQOURPWUSYWUXVTVTRYWU\YX]ZY\ZX^[YXVU<;9                                    ;96OLHRNKMJG3/,%-#>0(JFAKHDLIEEA>@<9DA=LHEPMIUQMQMJQNKTPNTOKTPMZVR\YV\YVYURXUR[XUZVSXTQVRNWSPXURXURYVTZVSUQMPLHOKGRNKOJGSPMXTRWSQVROZWT]YW[WT[XU]YW^ZX]ZW^ZW]ZW\XV[WU\XV^ZX_\YZVRTPLVRNTPMQMIOKHPLIRMJPKHJFBMIFMHELHETPMWRPXTQVROTPMPLIUQOXTRWSQWSQUQOSOLUQNXTQ[WTYURWRNUPLUPMYURZVSXTRVROVQNZVS_ZW_ZW[VSVPMTOLUQN[WT[VSPKHMHEPKGVQN[WTf_\|r«ؾ׹ӵֹܿػԸ׺ԷѴػۿ˯ū޿ȰؿعдѴն˭߾ȪҴն޽߿ܾڻ׹ϱӵػټػؼؼۿӷչۻи4*% D*!-  <<&D+-(% +=?9>@5>D";46N+b?0H'O'P*Z8,C$0R4&nK7X:*+ /@$4'<>"V1#M-"J,!=!B#@"0# " ,2745)# 7>"-) < ;$ )4 A=,10- O(V, J a5*N>{J:oA4i<1o=.r>-e5'=2:Q*[/a2!E#V2$X3%>!2 7;"* Z4%@#:  H)4" #% ' %'+ .9!=#=@!E!I"D@!\2'V,!= L>35*#%#3. 7. :6R2"[<*?B I$6:$B'H#D#/& +A'>%1- , )(/6A. # -U.$W.$)93ȭֹܾ˯̱ȫʬ̲־ȳw]UN?<844/01*95.,+)())*+*;85`YOtkayper{}uwnc&$    % .& 8.&H;0VF9aOAhVF]PBSH;ZNA]QD]QD\PC^SFRH=[OC[OC_SFfZLaXM_XPTF;YK?TH=QF:VJ>XL@XM@YNA\PC_RD`SE]QC]QD_SEXMAOE:VK?YM@ZM@VK?PF;G>4;4,3-'4.'3-'0*$*& 3,%<4+91)6/(6/(6/(-)%)'$)'$+(%+)&*(&)'%*(&+*)**($#" !""#$$#$$%&&%&&&''&&&((()**)**)*****987VRNURNWTOYVQXVPURMPNGOMDPNGSPKVSN]ZUWTOSPKTPLUQMUPLVQMc[U{oϴ޿ѶYE/hVE~|vw{|unbIE?)&#e^UySMEظʵ¯B9-,#/%2(:.!>1$>2%M>.SC1I;,8-"umb~~p{pd~o{xvk~rt{y~r}q}quzx}ysynssy{~mrzz "! PMKWUSVTRVSQVSQTQOURPXUSZWTYVTVSRXUT[XW^[YWUR310                                /,*IFASPLQNKNKHHEB(# ' 0#D80LIEIFBHD@GC?EA>KHDPMJVSPWTQUQMNJFLHDMHEJEANJFXTQ[WTYVSZWT^\Y[XUXTQXTPYVRXUR[XU[XUXTQRNJRNKOKGOJGNJFUQNZWTYVTVSPROMWSQZVS\XV]ZXZVTUQNSOLXTQ]YW[WUZVSYURXSPXSOWRNVROPLINJFMHEJFCMIEPKGOKGOKHQMJOKHWSP\YW_\Z]YWUQNOKHPLIOKILGEIEBKGDNJGQLIQLHUPLUOLRLGUOKUPLUPMZVSXTRSOLRNLXTR]XU^XT]XUZURXTQSOMUQOWSQQMJRMJUPLVQMTOK_WR{nϵԷαֺ۾ոʮ˰ѵʯƫ࿤ɭڼȬгҳŧήڹغ۽Ӷնܻܽܿ׹շѴӶͱƩ̮߾ݾٺعݽG1+3,% 3*  :8#C*/( % ->?8??5B!E">74 X6)tL:V/"P'Q0&P3+66bB0kI5D*& 4@#:N-#H)=B%V1$J,!H+ 4A"= .# &-5744% &6>".& ; ?"L+#<#9 Y;-`A25. -<<<>!O."K, E*C'" A#Z2(e<,|K7R1#1B E$=, W,!T)!f6,xE7Q@pJ 7]:'a<)D H$K%/1@&J%G#2, 8 A'8 1+ * &*2@3 ) Q-#[1&D"35&ۼո̯չշոѶͲ˱zmWQK><844/-/(73,,+)())***>;8c[Rvmb{rg}q{{x|sh0-(  $,$8.%H;0UF9bQBkXH]PASG:[OB_RE]QCYMA`THSI>]QE\PC]QEgZL]TJVPIOD9QD9LA7TI>\QD\PCYNA\PC[OB\PCaUG]QD]QDbVHZOBRHYM@OD9B:192*:3+;4,;4,:3+92*:3*;3+:2*5.'4-&70)92*92*81)71)70(70(70(60(6/(6/(6/(60(5.'3-'1+%1+%/*$-("($(#&"%"%"$!#!" #!"!! "! "! 542SOJPMHURMYVPXUOVRMQMGQNFTQJURMXTO]YT[XRTQKTPKYTP]XT[UQZTPja[~s^I1jYG|pYTM # YSKzKE>y׸ʵ?6*1'2'5*=0#@2%A3&L=-TC1I;,:/#ri^x|m~ntexjvjujznsvjxncyoevlbrh^si_ulayod~rgwkznvk{qfyoezn|}{m{ B@>XTRXUSXVTYVUVSQTQOROMTQPWTR\YW[XVXUSWTRKHF&%$                                     0.,EB>KFBLHDQNJPMJLIFFC@")"3$J@:PMHKGCIEBHEAHEBNKIROM[XU[XVZWTXUQRMJLGCFA=FA=OJFRNJQMITPM\XVZXUVRORNKUQMPLIOKHPLIRNKSPMUQNRMJNIEMIETPM]ZW^ZXYVSUROUQNVROXSQ]YV]YVWSPOKHOKGPLIPLITPMUQNTPLWSOWSPXTQTPLPKHNJFNJFPLHSOLVSPURORNLTQOZWU^ZY]ZXZVTVQOSOLPLIMJGJFCIEBIEBHDAKFCJEAPKGTOJOIDTNJXSOWRO[WTYUSRNKNJGOKIXSO]VRYRNSMJOJHMHFLGDPKITOLVROZUQ]WTZTPh^VuƬ˯۾ټܾշԷշԶӶھڿۿгʮͰҶɬǩȪǪβӷҵдӸ׾پ׸ӵ׸ع޾طյӵѲԴܼ}j_,.&((  82A)/( % 0>=7?<6C!E#;:?iB2lE4Q)P(U6,E)"2 F)lJ6aA/1 "0J+"e<-W3%;E(U1#J,!D(4C$9-" ).7651# '/>"4#; @#M,#<#;"]?0eE5L2'0 0=<;C%P.#I,F+?% T0%L( k@/zJ6H*4A D#87X-"T)!o<1xE7RAfC8V8/3 3J)\1&a7*a8+M+!:/ .<B4,97( C!\0#M$I]3'|K:uE6i<1l%<$6- ) ' '& >;" $ F&]2'L'D#25yh߿ݿӷǬ¥ڽܿؽδz{naQLF<:633.+-&30).,+)**+++B?;e^T|rgwl~ry}|yy}ti3/+      $-%8.&H;0UF9dRClYH]PATH;\PC_SFZOBTJ>aUHUJ?^RE\PC]QDi\N\SIRLEMC9RG]QE`TG_RE[OB]QD]PC]QDdWJ_SF_SFbVH]RDYNAUJ>JA7B90@8/@7/@8/;4,81)92*;4+:3+81)60(6/(81)92*92*92*92*92*:2*92*92*70(3,%2+%4.&5.&5.'6/'5/'5.'4.&3-&3,%2,%2+$1+$2,$2,%3,%2,%2+$1+$/)",&-'!2-)B?;TQN]YUUQNURMURLWTLZVPXTMXVM^[S]ZT^ZU\XRZVPSOISOI\WS`[W^XTUOK\UQkb\uḬ̆bM6m[Hvd^V('$'$!ZRI{JCEA>HEBLIFWTP\XV\XU[XUXTQSNKMHDID@LHCQNINJFIEAOJHSPNWTQRNKNJHLHEIEAGB>LIEQMKPLIOKGQLISOLWSPYURYURWSQSOMQLJMIFMIFSOLWSPURNSOKRNKPLINJFOKHUROSPMUQOZVS]YV\YVXUQUROUROUROVROWSPWSPUQNRNLTPMXTR[WT\XUZVSXTQQMJQMJPLIPLHPLHNIENIEOIERMHTOJPKGQLHRLHUPLXTQZUTYURVQOSOLRMISMISLHRMIQLHRMJQMISOKSNKNIGPKHWQNZTQti`չϲշոɮҶ׻ٻƫϲܿټӶ̮ʭг۽ػ׺ڽھۿٺҴٺݽݼб׷ڻܾܾ񯙉1'(' %=1@'.( % 4?<9@<9C!G$9:F"nG6]6'P'N+ S6-:2 <"L0#F+ ' $:b;/d;,V2$9L, S0#J,!?$8C$4, +1765*$ %*>"9$ 9A$M,#<#;"^?0eE5L3(/ 3=<:I*P.#H+F+: ) Y2(B"rE2vH48 :B L) 3B"W,"W+#uA5tD5g?1\<3T7-,;#L*a4(`7*_7*C%:& % 0?@/ .;F(.7\0#P'K T+!zI9xG8j=1f9.Z, ].#K%-9O(`2!^1 B"X3%Y3%>, G#P*"3b5'].!909# #%&&! ! #*/95A!D!DH&[1&S)K9/PA53- ( ="B 9 C!:nG0d:'N)X0!V*0-6 L'M'=/+  6<$8 .* ( +)==7.?"]2'M(F$ & ?fM@ʭغӶβĩŭ}ui[MHB<;6650.0(42+974---,,+EB>g_V~ui{oux{{xwzrg2.*     #-%7.%G;0UF9aPAiUE^PBUI<]QDaTGYMARG<`THUJ?]REZOB[PCj^P[RHSMFSI>]QD^REaTG[OB^RE^SF_SF^SF]QEcVIbUH`UG`TG\PC[OB\PCYNAXM@UJ>SH71<6/82+82+71*5/'5/(2,%2,%1+#0)"/(!0)"/)!/)!.(!5/*=95OKHWSO[WS]YV^ZWVSOURMWTMYVN\XR\XPZXO^[S`\U`\V]YSYUOSPJTPKZUQ[VS`ZW\VR]WS^XTja[{pʹmWAr_J}y{}yymb[S/,($" WPH~F@:oh]նٹؽƱ8/$3)4)=0"C5&D5'E7(N=.ZH5[I6E7)aXM~~xhwj]yj{kxhpascxi[i]PcYNe[Pykxv|ypxj|mvs}nykuhwi{naodYzod|pdC@>OLJPMKPLJRNLWSQURPTQOQNMTPNSOLTQNPMJ864                            <;9RPNTRNOLHMIEMJFTQMVROWTQUQOQNL?<:",#;+"TOLTQNNKGFC@GDAKHEMJHNKGQNJUPMTPMSPLWTPXTQWRNUPLRNJRNJNJFLGCOKGSPMUROTPMOLHIEBGC?GC>JEANJGSOKVRNUQNRMJSOMSOLTPNVRPUROVROSOLOKHMIFMIETPLXTQYVRVROSOLQMJWTQYVSWSQXURZWT[XUWSQQMJROLXUSWSQUQNWTQ]YWZVTRNLQLJOKHSNLRMJQLILGDNKGTPMTOLQKGPJFLFBKFARLGTMIQKGPJGKFBLGDRNLTPOVSQUQPUQPPKILFCKFCROLWTQZVTYURUPMPKHID@E@1b;+N, :R/"P/"J,!9= A#1# ",3754& ' # ="; # 8C%N,#<#;"^?0bC3G0%+ 5=<>N-"N-"F*F*5=H&vH4rE2-$?A D"+ L'U*!]0'xC7qB3^:.]=4I0'(C&P+c5)X,"P(; 9 )3 A>,1= R0#0/[/#S*L!L#tE6zI9k>2h;0[-"]."P(/9O)`2!\0@!X3%Z3%9- J%O*6g5'g3%4/0 #$'' "#)-1- ? F!CK(Z1&T+ O>3UA5T2$1/:$B 6 C B'pH0_3#V/!\3#V*- -1K&M'A .0))8!:"-, ' ) *9=2H(Y3'^4(O(D" ?V:0ˮ޿պζ{m_QJD@>;::513,31*D@<875431PLFnf\ymsuw~zy{vyqf;72       +$5,#F:/TE8`N@gUD^PBUI=]QDaUH\PCSH=_SGUJ?\QDXMAYNBi]OZQGRMFYNBZNA^QDbVH]QD_SF^RE_SF`TG_TGbVHbVHcWI`TF]RD^QD[OBWL?UI>OE9J@6@8/:3+92*91)92*82*81)82*81*71)60(4-&skU֦˝ruhkb[[UPXRMVPLYUPWSOPLHQMIOJFTPLVQMVRNQLHNJEHC>C>9JFAZURWSPVRO\XT^ZWZVS[XTSPKSOJ[XR]ZS\XRZVNZWMZWO`\T_[U`\V]YRVRKUQLWRNWRO`[Xa\Ya[X]XTZTPja[yp˴̲p[EuaLyǼżƻŻz~ujaZR51- #!OIA{GB;jbYɭǨȳ2*5*7+A3$F7'G8(F8(O?.\I6\I6G9+RI>|~v~ni_V{n|nzmsvt}qdMF>H@8n~x{976URQTQOSPMQNKNJHRNKTPNRNKLHFKGEIEBA>;&$"                         <97\ZX][YUROROKOKGIFBMJFTQNYVSUROMJG1-+%.#B5.XURXUSURPPMJNKHQNKOLIMIEMIEOKGSNJUQMYUR[XU[XT[WSWSPSOKNJFNJGSPMVROWSPXTQTPMKGCHC?KGDOKHVROZVTZWTYVSRMJQMJTPMTPNXTRYVTWTQWTQVROQMJNIEPLHYVT[XUXUSSOMNJGRNKWSPRMKWSPYUSVSQROMMJGNJGUQOUQOSOMRNLTPNUQNMHENJGPKGRMJRMISNJPLHNJGQMJVQNTNJPJFKEAGAKEAOJGQLIKFBHC@MHFNJHNJHMJHQMKQLJOJHNJHPLJRNLQMJQLIQLJQLIPKGKFBHC>SLGthӹַ׸ݿ۾ܿ۽۾Էβշ۽ٻ߿ع׸ٺعܽ׻۾۽ݿָ۽ѵ߿95+(' ) 3/<#1&  3;%9"=?8?C"D"9:Z7*^7(O&R, X7,= 3 >$85* " H) e>2^6*I+<= U0#L-!I,!6A"@". &-5752# (# =!=!*5D%N,#<#=#`A2aB2F/%) 8<;E$P/#K+ E*E*.$ 7O,"xI5j@. +AC"I'* R*S)!c5*xD7m@1\:0\<3>( +F(U."b4)T&F :5,5 A<+4C%U2#%*V, W-!L"Hk>0|J:m?3i<1^1&\."T),8L&`2![/E%Y3%\7(=$2L'L(>!h4&c1$% 3- ##%$ "!%,( ! <J#CL) Z0%T+ O>3aE6e<+56!;#B+ # AM0 pF/Z/ Y1#[2#V*--/K%M'D"//1 .9"21) ' *0>% Q-"_7*^5)R*!J%:  =T8.ַܾɰìoZRJ?=9::634.10)VPIUPJKGBaZRwmbsvtx|}w|uyqgB>8     +$5+#C7,RC6]L>dRB]OAVJ=]QCcVI`TGUJ>^RFVK@YNBWL@WL@g[MYPEMHA\QD]QD`TFbVH^SF^SE^RE`UGcWJaUG`TFaUGaUG_SE^RD]QDXL?QG;I@5@8/=5,;4+;4+;4+;4+:3+:2*92*81)81)3,&"E>3pΦ֥nhrn^icZb\VYSNYTOWRMXTOXTPWRN\WS]XT^ZV`[Wc_[`[W]XT[VQZTO[VQ[WSXSPYUR\XUYURSNJVRNZVRURMXUOZWQ[XQZVNZWNXVL\YQ]YR[WQ]YRZVPVRLTPKVQM_ZWa\X_YVWRNUOJ]VQh_ZtkêӷêaN;q]HɼǺŹĸ}}ppf\UNG2.* " IC8A C"?9<a=/lE4X2$W4'S2&4 9A(- -" 9d<1b;05" ;?!T0#J,!H+ 8C#= )).763-$ & $; @#22E&O-$>$=$aB2]@1E.$) 9<;I)P/#E(D)D)( .9W2%yJ6\7(4@P.#lE6>#U+!R( g8-wD6i>0[;1Y:14"2F'[1%a4(R%@ :. .8B8+7I* g=,E(& O(\0#M#I `5)|K:pA4i<1^2'[-!U**8J%a2!X.F&Y3%X2$I$J( M(I&F&i5'_/"+( , )# ( 2 #" ,% ?!J#CM) Y0%T+ O>3dD4W1#:6!;#:) >@'f<)X.[2$Z1#X+1 .,G#L&G#2.9# '7 550' * .=# H(_7*_5)R*!M'h;+A%7BٻݿĮe]U@>:88323-..'kcYvndg`Xxocwkvxsyxuz~rxpeD?:     ,$6-$B6,QB5]M>aP@\OAVJ=]QCeXJeXJXMA^SFWLAYNBYNBVK@fZMXODID>]QE^RE_SFcVI^RE]RE]RE_TF^SE_TF`TFaUG^RE^RDYMAPE:H>4A8/?7.?7.>6-<4,:3*:3+:3*92*81)70(*%'"[QBrǢ׫ʽ{hpo\lk]jh]b^W]XRWQLXSNYSNYTOZVQYTP_ZU]XSWSNYTO\WS\XU\XTZUP[UP[VRZUQWSO\XT\XUYUQZUQZVR[XUXUQVSMVTL[WP]YR^[S\ZQZVN\WP\WP\XQ[WQUQKVQLYTPb]Yd_[b\YXSOVPLYRM\UQbZUukds¨ϵq_NlYDķvxzwwxtvjldYPJB0,(?:4|pe^USMFŮ̮Ӽw7+ 8, >1#B4%D5&H9)M=,]J6ZH5K=.F;/v||zkUMEzpeh`Wumcwl|q|rfvk_UMDqcUp~}xTRQVSRWTRTQPQNLLIGHDAGC?KGDLHD953                              +)(C@=HEBIFBIFBNJGPNKPMJLIENJFOKGMJGMJGFDADA?"*"3$J@;PMJMJGKHEOLIURPZWUZWT[XU_\Z`\ZWSPOLIQMJSPMUQNZVSXTRTPNOKHOLISOLWRPSMJQLIUQNYURZWSa]Z`\Y]YW]YXZVTXTQTPMMJGOKIMIFNKHURNTQMSOKNJELGDLGDLHDOKHMJGSPMVSPWTQSOKKGCFA>PMJQMKPLIQMJQNJSOLVSQTPNSOLTQNSPNROLQMKNJFKFCMIETOLRMJPKHMHDJEBMIENIFNHDKEAMGBNIDNJFPLIUQNUPNRNKRMISNKSOLQLJOKIMJGNJHQNLQNLQNLRMKSOLUQNRMJMIFMIFPKHcZS~oӸۼӶغԸϳݾݾ۽ڼڽӶαȬ̯ѳعݾٽũܻŧӴֹԸ׺ܿҴвӴ׹ܿԸܿӷ񴞌2)'  G#4,84'  3;$8>=8B D">9?hC3oI7`<-[9+B#3 ?%9 + * %U2([6,Q0'F)B%@D%T1#J,!E):C$8#  +1740'& "  #8?#7.E&P-%?$>%aB3Z>/D-$)! :<=M,!O.#B&E*A&7@!9_8)xI5K,8?X5)jE6B#V+"S)!n=1uD5d<.[<2S6-,4A$V.#]1%O"C :&$ /<A4,9N-"tD2h=,3G#`2%T, N(O)zI9sD6i<1^4*X,!X,!18G$`2 S+< Y4%X2$M'O,#M(G%J%i3&]."A7*'# -7 $ #+) B$J#CM) Y/$S-"Q?4a?/H$97";#7& 28C(`3#K'_5'Y0"W*0 0+D!K&I%5.; '# 49"@'9( + 2=' ?#`7*_6*V-#H$l>,H)71ݿɳne]HEA;:545-,-$ul`vyn{nrxzryv~txznvncC?8  $-&7-%A6+OB4ZJ;^N=[N?UH<]PCdXJh[L\PCaVIWL@XMA\QDWL@eYKWMCEA4@8/>7.=5-=5,<4,;4+;3+:3*92*81)4-& ;3+tgXšѩƠ¯ykyv`nmZihXji\lkaea[`[U^YS\WQZUO[VQ\WRZUPXSNVQLUPKXSOXSOZUQ\WSZTPYTO\XS^YU]YU_[X^[W`\Xa]Z\XUXUQWTNWTMYVN]YRa]Vb_Vc`Wa]U_ZS`[T\XQ[WP[VP^YT`[Vd^Zd_[e`]^YU]WR_YT_YU\VRa[Vpf^wʱԸƬubQhT?uykf^SA<5 =83umcog]MGAڻ¡}5*8, >0#E6'G8(J:*J:*\I5]J6P@0E8+~q|xykNF?thsri`xznsi_xm`kaU pcVn~~z}~}OLJPMKTQPURQTRPSPNQNLROLLIF1.,                             864GDAEB?EB?GD@HEAIEBGDBKIFMJFPLHROKLIELIFKHEC@=#+#6%LE@PMJKHEGC@HD@PLJTQNXUSVSQXUR[WTUQNLHDNKGLHEHDALIFQNLVRPRNKTQMSNKPKHKFBLHEWSQ\XV[WTZVSWSQWSQYUSVRPRMJRNKRNKSPMOKHHC@PLHTPLUQMSOKSNKTPMTPMTPMRNKTQNVSQVSPUPNRMJEA>GCAIEBMHDQMISOKPKHNKHPLJQMJQMKROMSOLTPMTOLOJGKGCSOLXTRWSPTPLQLHMIENJGPLHQLHSNJUQNXTQXTQXTRYUR[VS\WT[VTXTQTPNPLJPMKSPNRNMRNLPLKQNLQMKRNLTOLQMJQMIYTPvkbͲͱֹڼ׺вϱ׸׸ѳָԶ޾ܼݿغв̯ˮ˰ɭũʭҴ۽ϱ¤ŧƩͰոܾ۾շͭӴڼ׹ݾ׹Ȭӵгд׺к4,' ! H$2 *:5& 0:$8><8A C"=9F$iC3X4'X5(T3'68?'&+ - - 9`;092^:)S1#?I(S0#J,!C'<B#3 " ,472/$ ' $7?#9*E&P-%@%=$aB2Y=/E.$+#8;@O.#L,!@%F+=$C$@ =k?.tG38 :>`;.a>1I%T*!W,#tA5qA3^9.\<3K0(*(( 4T+!O!J!8 )0>@/ / :\6(uE2b:)A$9`2%W."S,!D uE6wG8i<1b7-X,!Z-"37B!_1 P)5Z4%X2$M(M+#F"<R*i4&X+ A1)%" , *"$  % +,! A#J#CN*!Y/$S.$U@4Z8)L(58#<"CB73M-_1!E$f9*Z/ U). 3*?K&J'7/9/ 2;#@'>", + 2;C#O-"_7*`6*X.$I&m?.K*99ջټ׼ӹɳyndYRKIE=@?434*vma}|uwy{sytzrvvkvncJD>      & -&5-$=3(J>1WI9`P?[N?UI<\PBbVHfYK\PCbVITJ?WLA\PCWL?cWJWNCD@:XNB]QE`TG_SF^SE\PCZNAZOBZOA]QDWL@KB7A8/:3+5/(3-&1+$/*#0+$1+%1,%2,%2,%2,$H@6׼ȦƱmuctm_lhZddTcdTeeVih[hf\`]V_ZU`[V]XS[UP^YT^YT]XSYSNVQLWRM[VQZTPZVR^ZUa]X`[V`\X`[X^ZV^ZW^ZW^ZW^ZWXTPVQMXTNXTM[XP_\Ta^Xa^U`]Ta^V`[Td_WfaYd_Xfa[fa\ga]ic_f_[ga^ic`b]Y`YU^XT]WT^YU`ZUne]xǫдxcQlU@xuvsqsqxjzobbYP@;6<72ld[~ujNHA~ή4)6+=0#G8(N=,N=,J:*\I5bN9UD3F9+|n~qyj^ULxkvxy~rvvth\obUo}~}{|qyozpyn}s{}|{wxvNKHLIFOLJSPNTQOSPNUROHEC&%#                              +)'LIEGDAGDAIEAJFCKGDNKFNKGPMJQNKOLHOKHPMIPMJOLI<96"-$9) KFBPMJKHEIFCJGDQNKTQNXURXURUQNQLISOKVROXUROKHNJGROLQNKTPMXTQ^ZWZVSRNJNIELHDROLXURWROMIEMIETPMXTRWSPRNKNJFLHDPLIQLILGCPKGXTPZVRWSOUPMSNKMIFLHEPLITPMWTQXTQXURWSPNJFJFCOKGTPLUPMVQNTOLRMJUQNWSQUQNSOMTQNUQOPLIMIELHEROLTPNUQOVROYTPVQMRNKVROUQNTPMVRPUQORNLOJHOJFPJGUPLZUR[WUXUSQMKPLISPMSPNSONQNLPMKQMKMIGOKHRNKVROb\Xynոݿݾӵϯ׷ۿٻַɭϳͱαָԷշ׹ڻܾϱȪƩӵ׻ռؿԹٽշаظټڽؼ׺αع׸ٻܾK5/4/& $ I%2 % ;#B+!& 09$9>:;A B"=9M+!iC3S0$N-!95 3/'1 3/ D*!d=165c=+G(>L*P/"J,!A%?!A#0 &-661-# (!* 7?";(D&Q-%B&;"\>/U:,D.$+ +:C#P/#G(=$F+=#E%;D"qD1pD1+$ >>hA3Y8,P(R) ]0'uA5`3(Y8/[;2>(*' * >"T* O!G!4,3 @>,3>!f<,rD1X6&X5'3_1$Z/#V."D k>0zI9j=1f:0Z.#\.";7A _1 Q)8Z4%X2$N)M+";/2X+g2%M%@. )/ 5% #!  (+' . G!CO*!Y/$T.#Y?2P.!Q,28#=!@=78X2#X.F$h;+Y-S(. 6*9J%I'5070 -45?$214<I%O-"^6*`7*X.$J'pA0J*;=ƬܾԺȱxzociaT[WGDC3qh\|~{{z|vx~rw~ruxmyqfOJC     #,%3+"=3)J>0VH8`Q>[N?UI<[OB_SFcWI[OCcWJTJ?WLA\PCUJ>bVIZPEB>8VL@^RE^RE]QD]QD]QDZNATI,J:*YF3cO:YG5F8*uk_}|oxiaWMxnc{vwx}ofZNwhzy~y~{|zwuwSPNRNLROMSPNTQOSPNDB@                                   /-*OLHKHDMJFOLHMJGKHDMIEOLHPMIROLSPLPMIPMIMJGOLI41.%.$>0)LIFNKHJHDIFBJGDPMJVSQ[XU\XUZVSUQMUQNUQNWSQNJHIEBOLJPLIOJGRMJUQMUQMQMIPLIRNJQMIRMJOJGJEAKGCRNK\YV^ZWYVRWSPVQNVROXTRUPMRNJVRNWSPTPNOJGJFBIDAFB>FB>IEALHDNJFPLIPKHKFBNJFTPMXTQWSPWSPWROSOLTQNPMKNJHQMJTQNXTQWSPTQNQMIQLIQLIMHFKGDPJGTNJTOLWSPZVSYTQYTQUQOSNLOJGJEAFA=IEBPKHUQOXTRVRPTPNRNLNJGNJHPLJOKIOKILHEIEBJFBMHE`YT~r«̲۾ָϲѴܽݿٻݾܽٺݿغֹܽݿٻ̯ѵݿٺ׺˰γٽֹϲбвˮӷҷĩèΰܻ۾ָֹ~k_1' $ ' B!. 8!H1%' 19#9>:>A @!:8R1%d@0R/#G'5 3 ' %. 32)R2(c<13= a<*3<P-!M."J-!@$A#@", (-750*$ & #-7?">"*A$Q-%D':!Z<.T9,E.$. +:E$P/#A%@'E*="@ :I&sE2h?. * ?B"nF7[9,S*Q( d6+tA5W.$Z:1X904!+) ) J(Q'O!D!1-6A;+5E'oB0mA.\;)oE2a5(e5']0$W/"K%_5){J:k>2g;0Z/$\."?5?]0O(8Z4%Y2%O+ J+!;3I!c4&g6'I#@+ )76# # -+( - H!C P*!X.#V/$U:-H%J)08#> @>:;L*E#N)j<+Y,N%- 8!*8J%I'5061), />%9149H$S0#_7*`7*X.$H%oA0J*>A§ٻݿѺ˶xyhvp[[XBsi]z|~~z{ut~rvstxlyqgOJC   !)#1) >4(K?1UG7]M:5OF<^RE\PC[OBZOBUJ=KA6>6-6/(6/'81):3+92*60(5/'3,%1+$.)".("+%&!81*rb̵׽ӽ~vfqh\icYgbZ^ZQ^[Sb`VbbUccSddUdcUa`U`\Ud_Zc^Yd_[hc_gb^e_[_YT[VQYSN[VQ[VQ\VQ[UQ_ZU`[V^XT[VQ^YU`\X_ZW`\XYUQWSO]XUVRMVQLZVPXUMYUMZVPZWO^\R_[R`\Tgb[gc[faYgc[ga[f_Zjd`kebe_[d^[]WTZUQ\VS_ZV^YV_YVa\Xf`[xnfѷɗo\C.~|{}|xxv~q~q|pzoszyxsxkibXLG@/+'h`W}qOIByַ5*8, -J;*VD1cO:_K8L=-odY~x~nmaVndZ|y}zs61,bVKqcx}qz{~w{{wtwURPVSQURPVSQSPN<98                              -+)MIELIEQNJROKNKHNJGOKGLHELIENKGQMJPMJROLMJFJGD)$!( 0$@3,IFCLHFNKHQNLUROVSQYVTZUSZVTWSPVRPXTRSOMSOMPMJNJGNJGNJGRNKVROTOKSNJKFCE@8=?@!:9Z8*b>/M+ :5 - &/ 325)]9.c<03B$Y7'' <P-!K-!J,!@#B#>!'  */740&&"  %0@!B$?#-=!Q.%H) :!Z<.R8+F/%2 ,;I(P/#="C(E*>!=8Q-!vH4[6'0?I)sJ:mD5U+!R( k;0r?3W0'[<2S6--,+ - R-"N$O"@!+.9A7+6N-"sD1e;*b@.rH5m=.g7)`1$W/"Q*L(zI9n@3h<1]1'\."G#4;Z/O(9X3%Y3%O-!F(:0K$hA0iC2H'@+ )=$+ $ !!  B".)#- H!C" P+!X.#V2&O5*M*@#38#=>;9K-;":V/"c8(Y,H"0< )G>4<4,6/(4.'91*92*70(5.&2,%2+#("  F@4xgɳеֻ«įrynbe^T_ZSb^WeaZa]V^[R_]S_^RccUggXfeXfdYfb[je`kfaid_hc_hd_fa\a[UZTO[UQ]XS[VQ[UQ[VR`[W`[V_ZV\WS_ZVb^[b^Za\YXSNWRN]YUZUQXSNYUNYUMYUMYUN[XP`^Tc_V`\Ta]VfbZid\je]id]ic^keaoifjd`hb^^XU[UR]WSZUQ\VR`ZVc]Yf`[mfb~tmռşuWA+v|ttw~yrgSNG! ,)%`ZQ~qOIB~r˭3* 3)7, :.!E7'N>,Q@.K<+TB0dO:cN9RA0i]Qytxl_th]v~y}wsNG?I@8naU{m~th|qv|ut{pwlvkTQOURQVSQNKI20/                               0.,LIFMJFUROSPLNKGQMIROKSPLTPLUQNUROPMKOMKJHEDB@#*"3$E;5GC?C@=MIFMIFUQNVSPTPNNJGKGDJGENKIWTRWTQUQOPMJPLIPLHLHEKGCQLIUPMUPMJFC?;7HD@NIFLGDIEBLHEOKHQMJSNKSOLQMJOLIKGDGC@LGCOJFMHEMIFMIENJGSNKVROUQNQMJQNJPLINIFNIGKGEKGEOKHSNKUQNTPMWROWSPVROROKPLIRNKVROWTQXURWTRURPURQTQORNLRNLOKIPLINIFOKGRMITNJUOLNHENJFQLIPLJRNLQNLQMKOKHNJGOKIQLJPLJPLJPKIOKHHDBFB?LIFOKHSPMVQOTOLTNIk`VwͱǬӷܿ׺Ӵӳں߿۽ˮħΰټݿܿҵɭǫĨʮҵոػӶҴɭɭӶֹڽֺֺ' $ .21 5I2&,18":>7>?@!;:^;-^:,@!6 1 &. 349=!0c=1b;03B$P1") >S/"J,!J,!?"C$;"  +182/$ ' ( 2I' F&?#27Q-%I)!:!Y<-O6*F/%4 .<L+!O.#;!D)D);<3T/"vH4N.!2>O.#sJ:h?1R(T*"q?3h9.V2)[<3J0'*-* ; Y1&N#N"; %$ /<A2 - 9\6(uE2]7'kF2d>-h9+i9+b2%X/"T-!;uF6rC5h<1b5+\-"K%2:Y.N':X3%Y3%N- D&9, N&jB1gB1D">)+J-!3!  # # J#.*%- H!C O*!X-"V3'I.$L)06!8!:?<;P1!67b7(^3$Y+=4:)D*"H#Y<29#3::( *2, 7<"& 25C U0$^6*a7+U,#D k<+I(C!U5+ϱ޿ۼ˴ɲѻnokRjaUu{sy{znv}wyym~ujYSL   #+%5-$@6+L?3VG9ZK;XL=UI=aTE_SF`TGUK?`UHWMAYNBZOBVK>aUH_TH:72H?6QF;=5-+& (#&!#!#$ %!% % +%+% JF7iɵʳqxnbd]T[UMZVO\XR`\V`]V[WPWTKXVL^]RgfYkj]ih[hg\jf`jeahb^d_[a]X_[Ve`[hb]a[Va\Xa\W`[Wb]Xa\X_ZU]XSZUPXSN]YU`[Xa]Za\Y_ZV`\X`[X`[Vb]Xb^Xb_W_[TZVO\YQ`^U`]T`\Tb^Xhd^ie]id\je^id_keaic_f`\hc`c][^XU_YVZUQ[UQ_YUb[We^Zga]ic^zqiԽֹxbM6w{~~ĻugaX0.*-)&LF@ymLF>}tiܼܽȩH?23(6+:-!G8(R@.SB/M=+Q@.`M8dO:XF4cWJut{lXOGxwuw}wqg]S61+_UJykvynsy|w|qtzovlOLIROMGDB%#"                              531QNKQNKYUSVSPPMIRNJSPKURNTQMURNTQNMJGDA?B@=<:7#+#6&KC?HD@>:6C?;B=9MHDRNJOKHJFCE@=C?;C?:HD@KGDLGDNJFPLHNJGMHEJFCJFCLHELHEJFBFA=JEAOKGMIFLHDMIENJFPLISOMVROVSPUQOQMJHC@EA>EA?GC?LHETPMXTRZUSZUSZVTZVTZVS[VTZVS[XU[XUXUSVSQQNLLIHOLKTPNQMJMHENJFNIESNKWROSNKPKHNIFPLHRNJNJGLHEMIFRMJROLRNLSOMUQPTPNQMKQMKROLPLJKHENJHPLIPLIOKHRMJ]WR~rhǮ۽ܼۼ޿ع۽ѳʬʭ۽ٻշշֹϳؽۿոԶѴˮϲֹҵɬĨῤ̯׺۽޿ܽҶϴî& $ 240! 4M4(L/"! 06!8=7?=69<eA1R1$5 5 * . 43<D%>#B(g?3a:/2@"A',@S/"J,!I,!@#C$7 " ,471-# (", 8N*#J(!?#9/P-$L+";"X;-N5)F/%7 .=M,!M-"8 E*D(<<1^6'vH4E(7=Z7+tK;a9+Q'Z/%tA5U-$S0'Z90@) *,(H'Y1&M!L!8 )1?@/0< f<,tD1U4$qJ5Z8(^3&l<-c3&_1$X/";h>/vF7h;1b6+Z-!Q(58T+M&<X3%Y3%O/!B$8+ N(jD2fB1D">*4S3&:!  &  * N%3*&- H!C O*!W-"U3'M-"I(-7#9:E@A!B'/ 9h;+Y.W*3 =8)A"J%`F;6 4>!:( *8 , 2>$/13@R."O* _4(X/$Cl<,K)F"_A6޾йîDzouqXh_Swzqu}~rw~wy{owk_YQ  "*#5,$A6,L?3UF8WI9UI:TIcVIbWK;73(('*$ @=.fvpthvkbaYQVPITOHVRKXUN]ZS_[T^ZTXTM\YPZWN^\QedWhgZedWcaVc`Zd_[fa]d_Zb\X_YTc]Xd_Z]WR^YT`[W_YU_ZUa]X_ZV]XSZUP^YTc^[b][d`]d`]b^[fb_fb^e`\ea\eb]daZ_[T[WQ^[Ta_V`]U`]Vb_Ygd]eaZd`Xhc[id^lfamgcjdad_\d_\d^[b\X]XT\VR`ZUd^Yg`\ic^ga\jd^{rjů}cM7zme\og]{nyƻu¶wke\740*(%NIBymID=rj`{ѳڹɪϹ]RC2&7, :.!I9)RA/SB/N>,Q@.^K6fQ;\J6[N@{oyj>83[RI[TKtj`vznutgd[Q.)$cXNv~{o~rw{{uy}~}yMIG@=;                        531QMJOKHUROTQOMJHOLITQNYVSWTPUROROLOLIHFBGDA852#-$9) KEAGB??;7@<8?;7JFCQMJQNJMJFKGCIFBKHDPLIXUS\YWXVSUROPLIMIFLHELHEMIFNJGPMJLIFOKGRNKSOKTPMTPLOKGKGCGC?GC?HEAKHDJFCFA=KGCQNKROLOKHMHDMHELHEMJGQMKTQOVSPSOLKFCFA=HC?LHDRNKWSPXTQZVS[WT[WUYUSZVT]YW\WU[VTWSPSPMQNLROMOKIOLJTPNPLIPLIRNKTOMTPMVQORNKQMIQLIUQMVROSOLPLHPLITPMVRPWTRXTRWSQVRPRNKRNKRNLPMJOKHNJGHCAHC@FA>JEB\VP{oεپ׻Ѵغٻݿ޿ۼܼܽعۼ׸ַݾѱåƩͱӷݾټӷˮħǫոֹгӶ׺غݿԷּ̱˵% #  2> 0 ! 1N5)U6'"06!7=6><, 8?iD3U3&@ 1 0 444A#D%T1#d")M+#M+#;!R6)N5)G/%#?"87@R."H$[3'`8)Bl<,L*Dk[ѻDZq|w_f]Qvy}~qr|sv~xx~rwka[R  )"5,$B7,L?2QC4VI6UI8SHdXJeYL=93'('  "#c^Hqmd}t`rh[bZQWRLWRMOKGKFANJCTQJVRKWSLXTNYVOXTM^\T`^Ua`UddWhgZgf[fdZd`Zb]Yc^Yc^Y^YT`ZUb]X_YT\WR_ZU`[Ve`\d_[`[W_YU^YT_ZVd_[e`]c_\b^[b_\_[Wa]Yd`\ea]b^Yc`Za^W]YRZVP\YR^\S_\Sa]Vc`Zea[a]Va]Ue`Yhb]ic^ic_ic`gb_e`\a\X`ZVa[W`ZU]WS`YTga\lfajd_ic^ohc|skӼپ±\G1vMHA%$"53.QOG`]Tuqesv{ymhaX951%#!MG@wkB=7jbY~yָ׵Ƥs^+8, ;."I9*P@.SA/N=+O?-]I5hS=`M9ZL=~~pwiG@9uj_ync|rg{ovj~qduh[cYO+&"g\Qwjytxuwxzzv~s}r41/                         1/-KHDFB>IEAIFCFC@LIFOKHSOLTPMUQNQNKQNJJGDFD@1,*%.$=0)LIFKHDGD@FC@A=:IEBPLIRNKQMJNKGOKHQMJSOMWTSXUSWTRUROQMIOKGOKGMIFLIFLHENKGRNKTPMUROVROVRORNKKFCGC@HDAKGDJFCJFCJEBHDALHEPMJRNKMIEKFBLGCMIENJGNJGOLITPMTPNSOLQMISOKUQNXTQXUSYUS[VT[VSWROTOMUPMWROTOLSNKRMJOKHNJGQLJRNKQMKSOMRNKTPNUQNVROVROVSPXTQVQNQLISOKUQNVRPVRPXTQVRPTQOVRQVSQTPOTQOTPNTPNTPNTQNOKHJFCGB?GC?JEBOKGaZTs϶ϳдո۾ֺȭԸݿ׹۽޿ܽ۾۾׹׹ڼغշѳ׸ݾڽӶ׹ݿݽ߿ٹӴϱԶӶֹ۽ֹշӵѳֹھٽҷؽܾ˵%  1A"0 ! /M4(U6(& 04 7=7>=' 81h@4_7,22*7E"Q/"I,!I+!A#B#-'-740&% "  '1G%P+$O+#D%@#-K*"N,$>#N3'N5)F/%=" 2@O.#H)<#F+@$<56j>-mB0& $=<d?2nF6U,!P'e6,n=2A Q$N(.++ /Z2&R/$O G!1,7A9*4O-"sD1e<*2F,3;l<-f6(c2%Z/#W/"m>-zI8j=1g:/\/$Z-"E"6J%M&;W2$Y4%Q3#B$3( M*jE3a>. ' - 3>"-# " 8P%7*&- H!C+S-#X.#M/$8-4 ;"A<C8I*76W1#f9(X+G"2 G#+2H#X9.T=4083) 851D)!6+ : @%;:AQ-!I%Y2&`8)Bl<,J(>pԾʴθrxs[e^Pwz~}p}qzruywsvib[S    )"4+#@5*J=0PC2TH4UJ8RG;cUFaTFeXJWL@ZOCYOB[PD\QDUJ?bVHeYL>94%&&!!! !!"!"!/-$gbLniR`]IWSDNJAGD?FD@LIELIEJGBLHAOLFTQJVSLWSLYUNYVN][Sa`WbaVbaTbbUbaUcbXc_Yd_[d_[b]Y[VP^XS\VQZTNYSN^YU_ZUe`[e`[b]Xb]Yb]Yb]Y`[W]YUb^[a]Z]YV]YU`[Wa\Wc^Za]Xa^X]ZS]ZS\XQ\YQdaVmh\icYgc[fc]c`YeaZgc\ic^e_[d^Ze`\e`\c]Yc]Yc]Ye`\ga]e_Za[Ue_Zjd_hb]f`[ic^lf`wogɲԺܿ^I3}mxph_WQISNF_XOTNFE@9A<6FA:41,740EA;C?9B?8]WNaZPYRIhaVum`vi}psttvurzwtzmxncaZR<83"!MHAzn?;5^XOyԷԱo 6+:."H9)N>-Q@-K;*K;+[H4iT=bN:VG7z|{lxiF@8ncY|qftixlwkk`Urc[QG ZOEvhZut}q|pzoyn|pzo{pwx}rsi_zoew                        0.,KHDGC@HD@EA>DA?KHEQMJTPMTPNTQOROLSPMMJGC@='!(!0$?3,IFCIEAJFBJGCA=:?:7A=9GC@LHDNJGQNJUROXTRTPNOKHPLIQMJOKHPLHPLINKGMJFNJFMIFKHEJFDMIGQMJPLINJGKGCKFCLHDMIFNJFMIENJFMIEMIFOLIRNKTOLTPLRNKRMJPLIOKHPLIRNKRNKSOLRNLSPMTPNTPMRNLSNLWSQZVSXTPQMJNJGPLIRNKSNKNJGMIENIFOKHTPNUQOVROVQNUROVRPUROUQOSOMRNKPKHNIEOKGSOLWSQVRPTPMSOMPLJOKIOLJOLJOKJOLJTQOVSQVSQURPQNLOKHMIEOKHQMJaZS|o˳ܿӷҶȭ̰պڽѴϱ׹ڽԷ̯ʬշܾػԸβ˯γڼٺշαħŨոԷ׹Ե˭˭ΰշҴع۽ػغַܽҴͯͰٻ۾ոܾҵдֹؼֹػټڼؼؼ׺βؾ׾ 4A"0 " ,K2&Y;,+ .47<8>;# ; >%mG6R0$844.+ >D%F'_8*f>1h@4\4)11)1H$P/"I,!J,"B$@"( )/83/# '  + 4L)"O+$Q,#D%A$5H( : 5O3'N5)E.$<# 3B"P.#D'<#F*>!<1? m@/g?- ( =@!kE6jA2S)R) m<1i;0C"Q$J&,+) :]6)P,"O!F!+.;A6+7\6(uE2Z5% ! .2f9+i9+c2%_2$p@.}H3{I7n@3g;0]0%Z-"H$6C!K&;V1#Z4&P2#C%/.Q-!kE3_=- ( 166   &  % :N$@ )' - H!B<[2'W.#I* ,-5"@"A;;<G++ 2 d:)Z/ W+:@C!(;H"cG;M7/39/! / :9E*!=#+ 4@%<9>O+ H$Y2&_7(E k<,A"8Ǭϸį­{}cgcK`YKw}qrx~quytt}sgb[R!  )#5-$@6*G<.MA1SF5VI9RF:bTEaTFdWJWLAYNAZOB[OD[PCVK?aUGg[M@;5$%%""" !  ! !"" +'#! b]G_ZC94("IG:FF:??6;;4?>9DB?JGDMIFLHCLHBOLFXUO[XP]YR]ZRYVN][S`^Ub`V__R``S_^R^\R`]Wgb^d_[^YTYTO\VR]XS`[V_YTa\Wc^Yfa]e_[`[Vb]Xc^Ya[W^YUYTPa\Y^ZWYTQ[WS]YT_[V_ZV_ZUb^X^ZR]YQ]YR[WNkeWxgwgulagb[c`Yeb[je_mhckeajd`ic_hc_fa]f`]fa]hb_jeaf_[c\Wf_Zic_ga]f`Zjc_lfaoicyqkxǰ̰hQ<{jyvmb}ui{ytlbldYvlasj`tmbtndtndvqgqkcke\hcZe^Ue^Uh`Wi`Vf^UjbWmdZh_UbZPcZQaYPTMF:51! QKD}qGC,K;*H9)UD1dP:eP;XG6s{{lyjUMDd[Qzncvjvjvjsu|n`TI@tdVp{lreylzvykrezmvvt|o~q|o                           :85JFBHDAFB?EA>B?KGDURNVROROLKHEHECIFDA?=#*"2$D;6LHEHD@HEAHEAD@=B>:D@;HD@LHDQMJRNKQNKRNLSOLRNKTQNUQNRNJNIFMHELIEMIFJFCGC@C?:!' A(lG5P.":31! , ?D%I)b:,g?2h?3^4(31(1I&O."J,!I*!B#?"%  +071-# ( ".:O+$O+#F&2A#6@#: : H."M4(E/%>&#7C#P.#D'@'D)<;-I'rD1`9*->E&oH8e=/Q(T*!X0'L+#H%Q$A!)+(H&Y5(K$O"A!$" 0>@2 - ;f<,tD2K,& +2+R."k;-c3%_1$p?.}H3xF5pA4g;0_2'Z-!M&7>K%;U0#Z4%J+D'.?^4&kF4Z:+&. 86$ ! *1=G!? )' - H!B<[2'U,"?") 06"F!=;8G'B(,D#k>,V+S)3 I"8)A!M*nSG@*#56*$ 7:F) S3'/.?$>!9<M*g=-|L8a9*E k<+= 3ѴֽϷӼ|}bkhMaZJs}~vux}pvy~rv|sgc\T'$!   ("7.%@5*G_SFg[MA<6$%%###!"! !"""## !!*'#)$XS@SO;EB2*$,+$68/8:3<=7BA=EB?JGDOLIUQLWTNYUPZVP[XQ\YQ]ZR_]U`^Vc`XdcX__R__Sa_T\ZP]ZSb^Yb]Y_ZU_ZVa\Wfa\c^Y\WR`[Wfa]id`fa]d^Ygb]f`[`ZV_ZV\WR^YV_[X]XU\XT\WS\WSZUQ]XRa]W`\U_[SZVOYTKwo]zyvnceaZeaZjf_nidnhdjd`ic_id`jebkfcjeaf`\gb^f`[c]Xd]Xf`[g`\f_Zke`ojeke`lfaslfvmؿӷkS>tc{ym|px{}y|ov~}y~rzmvt}sgi`V=83OJCwWRJOJC}ɱ״! 9- 8- E7(H9)Q@.O?-I:)Q@/`M8gRFB?B?IFCPMJQMKOMJKGDA>;@=:853#+#5%IA>NKHHD@HEAHEBFC@GD@IEBJGCJGCMIFPLIRNKPLIRNKUQNWTQWTQSPLPLHMIEIEAGB?B=:>:7>:7@<9EA=JGCPLIQNKSOMSOLRNLPKIOKHOJGLHDLGDIEAHDAJFCMIFNJGMIFMIFMHENJGRNKWTRXUSWSRUQPSOMTPMRMKQLIQLIRNKQMJOKHPLINJGOKHNJGOJHOJGOJFNIFNJGOKHPLJNJGMHEMIEMIFMIFMIFOKHTPMTPMSOLSOLRMJQMKQMKOLIPMJURPWSPTPNQNKRNLQNLOKILHFKGEKGELHFMIGOLJRNLXTQkaZwk|ŭȰéǬպȭ˯Էѵ׺ܿԸɭȬӶɬྡྷǨӴۻݽغٻֹܿ˰ҶܽӶ˭ɬʮβгӶ׺ۿ޿ѴˮɬƩβڿWH? 57/ #, H/$U8+) ,25;7=9"  M1%nH6Q/#J*9 - 1A!D&I*c;-g?3g>2_4(31(1J'N."J,!H*!B#< ! +271*# '+ 1A"P,$M*"9* ?"8=!B$( $7E$P.#B&B(C'<8-O)rE2W4%1=I*!pH9`8*P'V-$=!2O*"P$8*+* U-"Q0%K!O"=  %2??./ B%mA/oB/8 ).1) ;k<-c3&a2%h:*}H4yF3sD5m@3b6*Z-!Q(8<K&<U1#Y3%I)E'( M%e9*lF4W7)&2- 2+( - I!BA"[2'R+!4* 3<"I ;:7P0!9!. Z3$g:)W*G!4 H#+1G"\>3nUI562&  / 9@!b=/A%* ;!?$::I'wJ6V?^6(G"j<+> A ɰٿ׽Һս־׿ɳ®{{asnUc[K{o{~|xz}qt}x|pwzqfd]T)&#   '!6.%@5*I=/WI9^P<]O=SG;aSD_RDbVIVK?VK?`TF\QE[PCTJ>\PCfZMC=7$%%$$$"#" !!!"##$%%!"#5/('"=;.76+23)-( #$24+56/;;5DC?IGEOMJQNJUQLXTNXTOYUO\YR]ZR^[ScaYeb\ge]gf\ddXbbWdcYecZc`Zb^Yd`[a[W]XS`[Wb]Y^YTXSN_ZUgc_jebid_f`[f`\b\X]XS\WS]XT\WT^ZX]YV[VSZVR\WR^YT_ZUb^Xb^W_[TZUO`\RnIJƦϹ{rgfaYc_Xhc^mgcjd`f`[ga]id`kfbfa]`ZVa[Wf`[e_Zd^Yhb]jd_lfbnidmhchc]ke`pjeqjdunиֺŪbK7n\~~{xv~quu}ps|}|}xz~rznzm}qtvxlulaGB<HC=uYSKKF?޺̨2)8- 5*@3%G8(SA/RA.M<+P?-\I5gS=XG4ynazvpXOFB;4JA9E=6MC;ZNCZODh[NZPF% >6.XLA\OC]QEZNDaUJh[PteWm^}l]wh[{natgzl|nvh                           ><8OKGJFBJFAJFADA=D@>DA>@=:EB?LHEJFCHEBLIFHEAC?<2/,#,$8) LGDOLIIEBFB?GD@HD@KHDKGDLHELIFMIFOLHQNJQMJRNKRMJSNKRNKPLHRNJOKHJFBJFBHC?D?;B>;B>:B>:HDAQNKTPNRNKQLJOKINJGMIFNJGMIELHDIEBJFCKGCMIFOKHNJGKGDHD@HC@KGDTQNWTRUQOQMLPMKUQPWSQWSQUPMSNKRMKRNKUQNTPMRNKPLIOKHPLIQLHQLIQMJTPMUQOSOLPKHOKGPLISOLRMJRNLTQNVRPUQOUQNTPNSOLPLJMIFIEBIECNKIRNLSOMSOMQMLNJHKGDJEBIEAJFDLIGPMJPMKTOL^WQmbYqeuxzxrtvv}ɰ׻ǭǬĩټ۾ͯåɫڻټھܿ۽ܾԶǩŨӵݾۼַػػغҴ׺ٻڽݿ׸ַַֹؽؽRD; 485&+ D* X:,-*24;885! S5(nH6Q/#N-!I)6"6B"E&?"V3(h?3g=1_5(31(:D!K,!J,!G) B#; ! ,450'" $ 12G&P+$J( 1* ?":7F'=!@'K2'F/%?)!( 8H'O.#@%D)A$;5.T-!uG3I+6<R2'qH9Z2%P'X/%7;$S-$M#1+* 1Y0%E&M!N"8)4 @=,1N-"sD1e<+(+01( , g:+i:+q@0a6(yE2yF2rD4{J:d8,Y, S* 9:J%=U0#Z3%J)B%& Y,h:+lF4Z8*(6 =$# +  ( ><! (+( - I!CI'\2'L(* +5!H$E::<P1!52 j>,^2#V*9A?(;J%nSG`I>16/! !) 88X5)R2&( 6@%:9I(}M9U>S/"K%g:*;O*!ٽԹһʴʵixrYc[Kuivz|~r}qxv{owxodc]T,)&   & 3+"<2'G;.VH7`P=]O=RG:`QC^QDdXJYNBVK?`TF\QE]QDTI=\PCh[NG@:%&&&&&### ! !!!!!"%&&"#$2-(.&,,%-.'--&(%#$/1)46-:;5DD@JHEPNKQNKUQMXTOWSMXUNZWP[XQ[XP]ZS`^WdcZff[baV__TbaWb`W_\U_[Vb]Xb]X_ZUa]Xa\X[UPZTO\VRb]Xgb^gb]d^Ya[V`ZUb]X]XT_ZW_[Y]YVZURZUQ\XT\XT_[Va\Xb^Xb^W^ZSZVPe`XxĢܻθwjkf]hc^je`keaic_ic^jd`jd`d^Zb\Xa[Ve_[e_Za[Vf`[hc_ic_hc^fa[hc]lfanieojeqkf~unֽ̰hTCvfVzxxtwus~rznylzk~orss}qrvxz{xy~~|r{shmf]und|rx{|sQLE >:5ym^XPHC<׳ϷRG94*4)@2%F8(SB/Q@-L<+O>-YF3fRIFCFDAGD@HD@JFBKHDLIFLIFLIEGDA-)&%-#;.&NJGMJGLJFIFBGD@IEAIFBHEBLHENJGKGCLGDOKGSOLVRPUQNRNKPKHMIEKFBID@FB>KGDLHEJEAGC?HC@GC?JFBOKHRNKTOLUQNTPMQLJPLIQMJLHEIEAGC?GB?IEAOKHRNKQMJRMKPKHNIFLHDLIFPMJSOMQMKOLJSPNROMPLJNJHSOLVRPWSQYUSXTRVROQLIPKHUPMUQNVROUQOVROTOMQMKSOLQMJPLJSPMRNLPLIRNKQNKQMKPLIOKIPLJQNKQMKJFCHDAIFCMIFMIFMIFNJHNJGLHENJGLHEKGDJGEKHFLIFMHERLHWPK_WQj`XodZpe[th]vi^xj^|m`}oasdx̲ؽũ¦ҵۿ׼ؽͱͲؼٽַɫȫٻܽٻ޿ڼͯϱټ۾۾ڽշвӶػڼԷɭͯҷؼдٻK=44=:$' A(\=.5' 02:9<9"  ]<-nH6P/#M,!J*7$ 7B#E&;S1'h@4f;/a6)41(<@I+ J,!F'B#7 #,43/$ # " #25M)"O+#H', .E%>!0I( =!?%L3'F/%E-$.9H'O.#@%D*>!;;!,T. sF3:  :;V5*mE6V,!P'U.$1E,%T-$J",+) =!W.$=N"L"3,7A8*4\6(uE2Z5%$,10$ Y2%m=.vE3k=-sA/{F2h=.|J:k>0X+ W+!<8I%=R.!Z4&L*?#.a/"h:+lF4]:+& *9"7!  "* 5?6*,). I"BI'\2'I&* /<$S&?:8H)L/7K(o@-V*P'0 G"0,D!V7,x^PN8/34) !!' 37F&\9+.0?%<8H'P;T>N+Q)f:*9oSGվîʵ{{be^Muit}}|p{pvu{nuwndd]T1.*  $/';1&G<.SE5_P<^P>RG:^PA`SEgZL]QDVK?^RE[PD_SFUJ>\PCi\NJC<%'')**$$$   !!!"!!""%''$%%('%5,$&&!**$++&#!()"/2)7919:4??:EC@JGDNKGTQLWSNURLXUNWUNYWO]ZS]ZS]ZSa`VccX``T]]R_^T_]T_\Ua\Wc^Ze`[_ZUb]Xa\WZTPUPKVPK]XSa\W`[Vb\Xa\Wb]Xe`\c^Zc^[b^\^ZXYTQYTO_[W^YU\XT^ZV`\V`]V^[S\XRgaYyǥݼѻ{nskcjc^gb^gb^ga]ga]jdafa]ic_ga]d^Y`ZV]VQ`YTd^Zd_Zc^Xa[Uhc]kfalgcnidnieohd|smŮβеlZJseV~qumb}tj~tjsu~rwltyz||z{p~vmzo|o}pwzyzqhe_VWSL`ZSvk|yVPH2/+rj`mf\@;6yܹϷ_SB/%3(?2$F7(TC0P?-J:)N=,XF3cO:]K7i]O{twhncWNIB}mw|~rfWNF?834/,.*'-)%,($+'#($!# # !(%"E?9                   =96RNJQNJKGBJGCJFCFC?EB>MIFMJFNKGMIENJFLHEMIFHEBFC@DA>(# ' .#?2,QNKPMJPMJMJGEA>B>;D@=EB?IFCMIFJFBLGCNJFOKHQMJSOLRNKQLIPKGMHCLGCJFBLHEPLIRNKPLHNJGMIFIEBHDAKGDROLXUSYVTVRPQNKOKIMIFMIFOKGOJFNIEOKGQNKOKHNIGLHFOJHPLIMIFLHENJHOKIPMKSOMROMPLJOKIRNLVRPXUS[XVZVTWSQSNKPLISOLUPNVROUQOVRPTPNOKIMIGNJHOLIRNKRNKRNKSOMRNKQMKQMJPMJPLJOKINJILHFMHFNJGOJGLHDKGDMIFOKHOKHPLJOKILHEGC@FA>FB?D@HDAMHDVOJ^VP_XQaYRd\U`XQYQJZQJl`Vpҷ騧ٺӵٽѶҵ˯ͱ©ªɰͱ۾߿ݾھټոԷٽӶί̯Էҵ̰ٻݿԶȫȬˮٺ[KA5?E"$% =#[=/<#$ -* -085" $ b@0mG6N-!L+J*; *:B$D'; [7,g?3e8,c8*41(4A I,!J-!F( B#5!(-62." $ " ) 2;P,$M*"D$( 1I'?"*G( =!>#I0%F/%J/%6:H(N."D(E)=@ ]6*4[2$sF35' =:^0,-)1 J"AH&[2'D$( 1I'O#;:7T3">#/ c9)f8'V*D7 ?(9J#iOBmVI9"52$ "!6A%97Z7*<"+ $%&*++$$$!"! !!!""""""&((%&&!##(%"(#"! && -/'13+7919;4==8?=:B@:4znzֳѺ|mY,!4)?2%E7(SB/N>,K;*M<+VD1`L8_M9aTF{y{lwk_WPH|lyssi_aXPQJCKD>NF?QHALD>H@9>8282.93.!$#"B=8                  1.+OJFSNJQMIKGCMIFKHEFC?HEBPMKSOLSOKVRNXTQTQMTQMNKGHD@=:7"(!/"=3-GC@IEBJGDKHEGC@FB?GD@FB?FB?KGELGDMIEMIFOKHNJFLHEKGCJFCMHEMIFPLISPMQNLSPMVRPRNKOKHMIFJFCEA>HD@LHEKGEJFDKGDLHEKGCLHEOLIRNLSOLUPMUQNSOMMIFHDAHDALHFPLJMIGIDAGC@IECIFCKHFNKIRNLTPNUQOUPNWSQ[WUZVTVQPPLJPLJPMJPLJPLJLHFLHFMIFLHEKGDLHEKGEKGDLGDLHFNJHQMJSOMUQOVRPUQOPKIMIFMIEMHENJGSNLRNKPLINJHLHEKGDMIGNKHMHFKFCJEBJFCHD@FB?FC?GC@KGDPKHRNJLIGKHFIEB@=:?<9RLFyodŴŮϵͳɯڼʯԹھظϰˮѴ˰ټݿݿֺֻܿʮӶܿӷȭèèũʭԷպڽۼԷٻveW6@R*+ $ ; V9+H, *' ) /4' !(Q3'U6)I*F(I*3d7*c8+41(3A I, J-"F(B#1"*-51+!$  - 2B"Q,$M*!A"':I%=!-F'"E,"G0%P3'< 9J)A%<#D(;J'd:-3^5&nB0% + >;d?2g?0Q(T+"U0&8!U7.R) ?)** U."O*!CO"G!% 0>?/ +>#qC0oA/7 ( /1+ " %. f9+l=.xF4k=-|G3i;+qC4zI9`3'Y,!D"6B!>N+Z4&O+6C"e1$h;,lF4[7):>%=%6 ! )   = <=, ( +)4K">G&\2'F%) 4 S)H99? \9&. A!sC0Y-T)3 ?1+C!U5*t\OG5,25, !!,H+#I,$; 0G)I+!(9:>C!P;O:>U-!\4%(¦׽εζйŰϺlf_Ouizz}wym~stzvuzqgjd[850   #.&;1%I>/UG7`O?dTCUI<\N@cVHk^PdWI\PC_SF[PDaUHSH>9=<8A>;IGCMJFOLGLHCNKDSOHVSL]ZSdaZcaY`_T^]S__T_^T_]SZXO[XQ\WR^YT_ZUa\Wb]Xb]X_YTa[W_ZU\VR\WR[UPZTO]WRa[Wa\Xd`]a]Z`\Xea^gcafb_b^[^ZV]YU^ZV]XS[WQ[VP[VQc]Wrŧ˭ȳ|vj`^VP[UPa\Xe`]e`]hc`fa]ga^fa]gb^d_Zd^Zc]Xb\Wd^Yhb]ke`lfbje`id_keamgckd`tlfyǮԹsaPn^N~vned]Th`Vslas}~rxlx~}z|ymyocwnatl_og\kcYsi]~tgzodbZQE@;-+($#!,*'D>8cXNzmayodne\ID=&$!TOGwoe<82umc}׳׿|f4*>1$E7(Q@.M=+M=,N=,YF2aM8dP;]O@~~}~swjOIBvhwwuvzyynxmdti`oe\lbZkaXnd[od[j`VcYOWNESKB72-#"!950                    DA=RNJSNIQLHKGCJFBGD@B?61?;8EB?MJGKHFLHEIFCGDAIECHEAGDALHDNJFNKGNJGJFBIE@IDAIEBKGDHDAGC@IFCIECMJHTQORMJLGDJGDNJHOKHNJGNJHOKHLHELHENKHOKHNJGNJGPLIQMJOKIMIFKGEIEBFB>IEBMIGNKILGEFA>D@=D@=FB?EA?EB?JFDOKIQMLOKIQMJTPNVQOSNLOKHOKHPLJRNLRNLMIFJEBKFCKFCKGCNJGPKHOJGNIFKGCJECOKIRNLROLSPMUQOQMJPLISOLPLIJFCIEBMHENJHNJHOKIOKINJHNJHKGDHD@GB?IEBKGDKGDJFDFB?D@=B><;:9998<<;98711/431GD?nh_DZԼ̴̳ʱ©©γӸչγȫڻ§ŪèƩƪɭͱ̱ѵ޿۽в̯Ҷؼؼڽݿոؼܾݿھα׹qb6>S+, %8I."L.!' ' ( /8& !,X8*Q3'I*F(K)?"2>A&B(C&e>2f>2d7*d9+41(2A K-"L.#E&A#6 ).50)!%  02I' P+$L)!;( B#H%:!3A#; >!C)G0&R4(D&:K+ 9<#B&9S.$a8,0 b8)kA/"1>= jD5a8+P'V,#K*!<%X90Q) L#1* 3[0%H&EO"B  $ 3 @<# ' @%rD1e<+('01( #% W1$m=.tC2rB1wD1q@.`8+|J:f8+Y,!J$6A @N+Z4&O+0P(f1$h=-lF4W4&?E) =%/$' >#S,$<E#. %*.)6K#=? T-">+?$V(=97M-Y3#-]5&n?,V*M%3 <)7J$iOBeRE*54& ! 7K-$G+#;25M/#/39?@N:}M9=U- Y2$2ϵռѹη¬лǴribPwk}ywy{outzyu}ting]?<6   #/(:1&G;.UF8bQAeUCTH<[M?dVGl_PeXJ^QD_SF\QE`TGSH8]ULh_Vg_VGB; >:5vnd=93gaX}zٻݹ˨5*>1$G8)P?-L<+M=,J:)XE2dO:gS=[K;t~uqTNF{nawsxm|pzo}q|rhukbrh_tjaukbtjawmcynevkauj_sh]laVME>! *(',*(,*(<72                            NKHMIEGB>B=9A<9@=9?<9?<:D@=A>;FB@JFCJFCLIFIEBIEBEA=B>:82.-#8/+@72C94A72?94EB?FC@GC@FC@@<9A=:GC@FB?KGCLHDKGDMIGIDAHC?KFCMIFNJGLGCJEBGC@C?EA=EA=HDAJFCJFBMHEMIFMHFLHEHDBJFCNJHOKHKFCMIFSOMTPNQMKNJGLHDNJFOKGOKHQMKUQNUQNTOMSNKRMKSOMSOMRNLRNLSNLRNKQMJRNJOKHKGCID@KGCNJGOKIPMJPLIOKIOKINJGJFCGC@HEAKGEJGDIEBGC@C@>9983449::??><;:331;96NJDqj`зֻպƭеֻܾҴдβɬȫʮβ׺ֹˮҴܽԶָټֹܾܿԶغϲӶyj6?U,, &7>'K- & ( ' .9( 3mG6kF5J+F(L'A 3>A&A'D'f>2e<0c5)d9+41(1B!L.$M/%D&A"8+,/40'"%# 25M*#O+#M*!11L)F#8!59="= B(G0&O4(E&;G(5A'@$:Y2(]6*3 g<,a;*6>C&nF7\3&P'Y/%G) B)!X90Q(N$1) 5K#b9*Q(O"=)5 A: ( V3$tE2W3#"(10'$%= k<-l=.wF4tB0yE2T/#zI9m>0Y, O'7>@H'Z4&Q, /Z- d0#f=-lF4U3%@?!1& (  Y3*V/&>N*!, "*.)7K#=1D!, -T, W'A:8^:'H'=tC0_3#V*;61+C!W8-pZL8,&,60!! "# B'K-$B' 840<"0, 5?8tG4tG47M(A#C Իʳìθ¯zba[H}sg~xt{rwty|w~uinf\C>9    $.&:/&F9-VF8aP@cSARG:YL?cTFm_QcWIZNAaUG^RE`TGSHGEBOLJOMIOKFOKEOLEURLXUN\YQ`]Vb`Xa`V__T__U`_U^\T^[S]ZSZVP[VQXRLXRM\WS]XT^XT^XT^XS^YTb]Xc^Ye_[d_Zgb^fa^b]Zb]Z_[W\WT\XTa\Yc_\b^ZZUQTOKUPKWRMZUPZUPc^YsҼwvnif`]^YUa\Ya\Y]XU`[Xa[X]XT[UQ`ZVd_\d`\_ZUga\keajd`fa\d^Yd]Yc]Xb\Vd^Ymf`ynٺͳŬ¬ufh]Ru}q~qsriaYkd[g`XjcZf_Vg`WiaXaZQe]SlbXd[RaXOf]Ri`Usj]xk}o|nsgymayoc~uj|tjwlynria_XPPKCC?9973+*)#$$!""'&$;84TNGd\TibYKG@30,mf\83/[UMyzֻӱů*!5*;/#F8)N>-N=,O?-I9)XE2fQ:iT>\K9{m~ssWPHui\wvitiyytzoukypevlbsj`pg^sj`ri_tj`}rg~rgreh]SD?:@<7B>9<84NHA                               #! NKGLHDHD@C?;EA=EB>B?:A>:FC@JFCHEBJHEKHEHEBJFB?;7% 3+'@735,';/*A3+C;6C@=C?FB?IEBHD@KGCKGCIFBKHEMIEMJGPLIOKHNJGKGDGC@EB?FB?C?=;::9343888>?>?>=<;9LHCYTMumcxsѵɮѵֺڽϳֹ۽ݿ޾ܾҶѴ۽ڽٻ׺ڽ۾ڼ6=T-, %5=$Z8(7' ( & -9* 8"jE4`>.F(F(L(B!5>A&@&L-#g?3e;/g9+g<-:2*4C"L.$M/%D%?!7-,13/$ " %' 2<P,$M*"K)* 9N*A"7"9 1A$9B'G0&K2&:"( 2* B(>!:F(C&7k?.\7(:<F) nF7Y0$Q( O)8J/&Y90Q'N#/?"@Bj?.Q&N"6,8A4"/h>,sD1G)#, 1.%$%3!fD!yK7oC19A , qVKٿ̴Ʈվp{sY^ZD{qeyv~syvy~zvkng]C?9   & 1)"=2(H;/XH9`O>aQ@RG:XK>aREk^ObVHZNAbVH`TG`TGRG;YMAeXKULB$%%***%&%$%$!!!#$#$$$$%%*+,)**%&&"## %&!,,'/0)12+56/791681;<6>=8B@751-,*### !! !! .,)C?9ZTLe_VLGA'$!TOH+($84/umb|tjٹ߽Ȩį1)4):."E7(K<+N=,R@.I:)SA/cN8iT>]K9}rd}uubYP_VLzj|owwu~s~s{p|q{pzo}sivlbwmc}sh{pznwkxl`_WOQKDb\T]WOaYP                      *(&MIFNJFKGBEA;@=:A>:B?;B?;D@=DA>FDADA=C>7C=6=8262-)%!3+'B947)" , <,$E<8EA?FC@JGDLIFKHEKGDKGDKGDLIEPLIQNKPMJNKHIEBIECIEAHDAD@=EA=D@NKHOKHOKHOKIJFDIECNKHPMJTQOVSRURPSONNKHPLISOMQNKSOMTQOURPXUSYVSXTRVRPRNLOLIOLJOLILHFHDBD@>B>;:75331<:9:98111676@@@A@?DA>\VNf_V{rgq~o{txԸҶ׼պպֻҶڼֺ۾ٻعٺܽԶгո۾ټ׺Ҷ̯׺ܾܽӵڼ35J(- $32Q1#B") * % + 6* /H+!/ ?"F(L(@ 7>A&?&S1'g?3]7,g;-j=/>2-7C#L.$L.$C$> 6,+12.# # %+ 2B"Q,%M*!F%&= N*A!7#:#*>"3A%G0%L3';# .- D)=<G*=#:l@/O/" =;P1'mE5V,!Q( C 4P4+X8/P&L#-X/\2"nB0rE2O$L"/-<A, # @$qC0nA/7 &/1, $$+ D4,]=2l<-j<-vE3zF2b7&]6*vE6Z-"U* ;9C F%Y4%T/"@!K+{E4g>-lF4H, ', #& 8m>4]3*X2$^8'6*7)B!K#93=) <"`."I!D6V4#Z4#=o@.f8&V*D - /+C!X9.kVI& /4% ! " 8K.$E)"96;=215C"N+]7(U?c:*9/ %yؾȱӹŮr{_faKzpc{|swuy}wlqi_D?9   ("0(!:0&F9-VF7^M<_O>QF:WK>^PDj]NeYK\PCcVHbUH^REQF:WL@bVJVMD%&&*++&''%%% !!!!!#$$$$$*++)**%&&"## $& +,'01+23-35.57046/560>=8DB>LIEPMIRNISOIUQKURKWTMZXQZXQYVN\[Q]\Q^]R_^T][R^[S^[S]YR[WQ^XSb\Wc]Yc]Xb\X^XT`[Va\Wc]Xc^Yd_Zd_[idaiebfb^hc`fb_e`]c_\d`]gcagc`c^\\XTZUQ_[W_[W]XT^YTvlcܻ׸ҵƭ{sjde_[a\Yb][a][`[XYTQ^YV\WS[VS^YV[VQ\VPd^Ze`[e_Zf`\id`mgcmhdkeaic_jeangbyphxƬټq_aSE|o}uj`ZSGE@997444122222565454344454233011.//*++-..-.....320;95C?;963&$"%# 63.UMḚɩ˴RG92';/"D6'H9)M=+P?-J:*Q@.`L7hS=_L9zna|xvi_UYQI}m}{vkyoe~siwmzpu}rzowm}rh{qgtjzoznuj|pdpf\jaXqh_ri`vk                   741LHDJFBGD@HD@JFBIFBC?;EB>B?;B@=CA=C@:?:563.,(#%!%")"8/*:+#/% +# 2%;.'HDALIGOLINJGMJGQNKOLIMJGOLIROLOKILHEKGCHC@HD@LHEMIFHD@C@=B>;B>:KGDRNLTPNUQOPLJNKHRNLTPNTPNURPTQPQNLJFDJGDMIFLIGQNLURPVSRXUTXUSVRPVRPTQOSPNSPOQNMNKHLHFHDBEB>HD@NJGQLHMHDKFCLIFLGEFB>GB>LGCRNJVRPWSPWSPWRNTOKQLIQLIPKHKGDQNLWSQVRPVRPXSQWSPVROXSQWSPWROVQNSOKPKHNIFJEBJFDKGEJFCKGDLHELHFMIGLHFLIFJGDEA?GC@@><542431=;9<98110566?@????FC?h`Wwncyl~xi{m|ḭֹ̃ӸɯūҶֺۼѴβԸݿֺټۿӷֻ׽عڽع׹ۿ38L*1 $;G(M/"D$-+% * 5)/B(,=!G(L(? 9=@&@&Z6+g?3U3)f;-k>/A!1-2C#M/$L.$C$=3,,21-" $ $ -2H&P,$L*!?!& ?'K+ ? 8#:%+pC1J,&>:X7,kB3S* Q( @G)U7.X7.P%K#3^2f:)R?% # R0"tE2e<+((01) $%2+M<3K2)j;,h:,pB1uC1q@.I(wG7]0$X,!@7@A!X3%V0#C"J*zE3g=-lF4I-!8# (  7O)!F#T/"a:)O0#2' 4(@K"53?( J'\+ G ?:c>*F%T.!wE1X-T)3 -*8L(fNAH;2'! !"A&J-$?$68991/.E$S0#^8)T>Z3%:+вջ϶ֻ~knhRvm`}{tuu{~ymtlaGB<     & -%7-#D8,VG7\L:\M;RF:VJ>[NBi\Nh[M]QDdWIcWI]RERG;XM@bVIXOE(('*++(((%&& !!!!!!!!$%$$$$)**)**&''#$# %& *+%-.)12,02+23,34-34-=<8CB>JHDLIDPKFQMGROIRNGSPIYVO[XQXUNZYP[[P[[P_^T^\S^[S]ZRYUNXSM[VQ`ZU`[Vfa\jd`e_[d_[d_[fa\e_[c^Yfa]kgcjebfa^hd`hdagb_b]Z_[Wc_\ea^b]Z\WT[VRa]Zfb^c^Z`ZVne]}ʪܽ۽иĭvvlef`\a\Z^YVYTQWRNa\Zb][`[Xb]Z_ZV^YSc^Yd^Zgb^id`mhdoifnjfjealfbniekealeaxohujؽոucaSC{owyqg]XQEB>764232122122122233132011011122011/00/00011010///000-..*++*++-...//-.....111DA>d^Wv³²صţi]L-"?1$D6(I9*N=,M=+J:*O>,YG3eQ905/(40,?<9A=:  +"3%.#4+'8*$/!D>:LIFMJGQMJQMJRNKRNLOLIPMJSPNSOMQMJQMJRNLSPMUQOROLKGDEA>D@=FB>HDAOLITPNOJHGCALIGSPNURPWSQXUTYVTSNMFA>@<9A>;DA>LIGNKINJHLIGNJHQMKTPNSOMOKILHFLIGNJHNKINJHKGELHEOKHPLIMIFIEBJFDNIGKFCJEBLGCRNKTPNTPMTOMRNKPLIMIFNIFOJGJEBJFCOKHRNLUQOWSQUQOTPMUQNVQNWSPZVSYTQSNJOJGNJGOKIOKHNJGMIFLHEJFCHC@FB?GC@GDA\VP`[SUPKFC>A=:GC@D?<432776>?>??>HEBng]uss{l~׻ƫʯ˯ȬҶټ۾ֹ׹ܽϱغٽ̱۾ǭӷݿݾ߿߿յ3;Q-1 %8I)A'C$6.% ( 3- &=&. =!G(I)F';;@%A'_9.g?3V4)g<.l>/D"1-+D$M/$L.$B#=2,,31*!% $ 06M*"O+#I(5( F.#J)<9$<%;9/ H,9AqD1?$.?<a=0g>0R)Q( >K-#X:0X7.P%J"A"c4!l?.R S0#^7)R=9IFBMIETOJRMHOKEOKDQNFUSKZXPZWPXWNZZO\\Q__Ta`W_]T[XPXUN\WQ^YT`[Va[Vga]lgcgb_fa]fa]f`\c^Ya\Wd_Zfa^e`\d_[hc`hdafb_b]Y[WR[VS[VS^ZV^YV^ZVa]Zd`]d`\d_[nf_|ȩҹwtjce_[_ZWYTPUPL\WS[VRYTP`[Xb^Zd_[d_[fa\kfbnielgckfbmheid`jdahc_ga\e`[ic_me_{pg|ȲҶmcRAtj_|}|ukc^VFD?543010122122132233133011/00011122122011011///.//-..---+,,)*))))+,,...-..-.--.-753TOIvmc|ԼЮ¡t_%=0#C5'J;+P?-J:)J:*R@.TB/dO:cO;pcTz}{viFA<|lrxlynxmxndoe[h_VkaXyncpg]mcZpg]tjxnynuk|qfuj_xl{~rsv                 ?<8IFBKHEFC?FB?IEBGD@KGDLJFCA=GB<@9161)950B>:MJFPMJJFC,)'  ,#+! -(#972A>8EA:B>:D@=HDAJFCIEBFA>GC@KHEQMKSOMQMKQMLRNLOKJNLKSPNOKIKGDHDAHDALHDKGCIDAJFCJEBNJFPKGPLJQMKQMKSOLRMIPKHKFCIEBNJGQLIQLITPMVSPWTQXTRVQOTPMVROXSPVROWSPYURWSORMJNJGOLIPLINJGNJGMIFKGCJEBIEAKGCSOJznxltlac\SZSK]VOZSLFB>CA>HFDHGEPLHrj`xsy~Ѷѵ׻ֹ׹۾ؼչٽٻ۽ܿ۽ѴϳѵϳۿԸγ׻ۿַܿӴ0<V/!1 * 641:9.% ' 12  8!/ 2T2'i=.o@1M(1+" C#M/$L.$B#=2,,30(!&% 1:Q,$K(!@#/-L2'H(:9$=%G$775F-#I2'K.$.0<"C';?!H,9C!pC18 4?@ _9,\1%R) P'6 G,#W90R2*P%N%X/d5!tF2RU1#W2$G$W-!v@0e=,lF4L.!B #)%: >^4+O*!a9)O/%.& <")@K"22C, W*CE6X7%\8%M(wE2]2!V*<' *7K&B*")  # +E)!K.$A%689 %m]]B5"8S/#`9*P;D"D ]1#iL@Ժ׼̴xloiTpfY|~yvrsy}x{ntlbNHB    '"0)!8.$F:-VG7^L/rA1S,"0.* C#M/$L.$B$>0,-30'"&' 3<I( F&>!* 0M3(H':9$>%P)7>"+E,"H1&G+"10?%A%;@#H,5A#]7)' * =>Y2'Z/#Q( N'9P2)L1)3O#S)b5"c4!wH4Q;_4&N =*9A3 ="qC0h=,+(.1+ '#5!J3+M<4<( +7f9+i;,k>.L9a6&F'l>0Y,!O'7:=S/"W2$E&V, p=-f=,lF4R1#K&,07 E#i;1N)!]6'I,"7"1 B&)BJ":8D3T'@B6`=)J)`5'yG2V,V*G!/+E#B!" (   +7J-$H,#96;-t`Sý;1C%W2%vG4?K'Z*rջδªɲ{orlUkbU||y{o}qy~uxlqj`MHA    $2*#;1'I<0YH:^L:GD@MIDOJEQMGPMFOLESPIVSL[XQ]ZS_^TbaWcbXdbYdbYcaXb_W`\Ud_Zd_[e`[ga]fa]d_[c^Ze`\e_Zd_Ze_[d_[fa^gb_jfcgc``[Wa\X]XT[VR`[W^YUZUQ\WS`[Xa\Ya\Yb]Yc^Zjd_xѸҸ۬vlec]Y]XU]XT]WTXSOWRMZTP\XT`[Whc`mhemhdlfbkfckfchc_e`[e`[a[W]VR_YT`ZVc]Xwnf{γɮsbQ?j`U~||z{}~xxlwoea[SKGB975///-.-----.--..,--*+++,+././0//0/...-.--..-..//////,--././//...,-,+++***)**)*)***+++210KHCng^tʩ׾{9-!=0#G8)TB0H9(G7(TB/P?-aM8iT?hXHx~ppE?9yj]sts|k{k~owzvz|twjylaznbxl~q}otytux                   :61FAB>9@<8@=9A>;A>;=<9B?9=81OJFPMIMJFJFBIFBC?;;85A>:?<8'$!    +,+>;8ICFCAHEBIEBFA=C>:?;6>:6?;7B>;D@=GC@HDAKGDLHELHEKGEJGEOLJRNMPLJMIFIEBIFCMJHRNMQNMRPNQNLOLJLHGNJHKGDIDAMIFPKHMIENJGPMKQMKNIFKGCNJFQMJOKHMIGMIFNJGOKHSNKQMJOKHQNKSPMTQNVRPUQOSOLRNKOJGOKHUPMWSPTPMQMJUQOUPMPKGKFBLGCNJFMIFKGDIEBFC?DA>FB?OKF}qzx}sgxlxntlbzshtxnyqgym{vj|n˰غæĨɮֻܿն׸շϱç޾ç׺ػ׺ػۿ׹ҵڽڽӲٺںں>4.+ :a5&7.B 8L4(8!@!0' % ,/! 6"<(/sA2T-#047D$M/$L.$B#=-+,3/% " ')45#6C$) 7 N3)G'99$>%S,:G'%A(H1&P4(90A'@#;B%H+. =#O."& >=S,!Z/#R( N&?T5,F-%3P$W+f7$f7$}L8O:W+ N"7,3 4& " P."tE2^8($* 10* &#@* M80L:23-- T/#l=.b7)M:tD21 H&W+ T* 98<O, X3%L*P(h;*d>,lF4Q0#7 0  6 7!9a6-T-%Y3$K,"9%6%G(-CJ"<9F 6FB<@#fA,E#rA0l>*U)U)H#+3K&,   )  +/=#K.%B&688ʰ߽{J-% 1U(\-!<G#Bϲ϶ĭҺpqjRg^Qy~~rznwwympi_NIC    "0(!=3*J=1ZJ;aN>jWDUIeXKfYK[PCdXJdXKaTGUJ=XM@`TG`UI/.,++++,,'''"""###!"!"""%&%###&((+--'((#$$!" $%)+$*+%-.(/0).0)-.&/0(66/;94?<7FC?JGBKGBOKFSOIUQKXUO[YR`]W`]Wb`WdcYddZdcYcaY`^Vb_X`\V`[Vd_Zd_Zd^Yc]Ya[W`ZV_ZU_YT`ZUc^Ye`\ea]fa^fa^e`]`[Wb]Ya\X]WS`\Xa\X\WS\WS\WS]XT_[Wa\Xc^Zic^vϷӼϷ~tjb\VQXRNd_\c^[_ZV_ZV\XS\WSd_\gc`kgclgcjeaic`gb^d_Z_YTa[Vd^Zb]Xb]X`[Vb\Vof^zmêݾ޿ɮreTAg]Qry{{{{||{{{}}ywwuxlng]ZUNEB=431,,+*+**++*+****+++*++*+++,,,--+,,++++,,+,,,--,--,---..+,,,-,,--+,,)**())'(('(('(('((())...B@>c^Wzo}ܺͬ¡0'8, >1$F8)UC0H9(F7'R@.P?-]J6jU?iWFrvD>792-UJAZMC\OC[NCcUIl]QugZuh[pcWn`UpbWqeYj_Th\Qj^Sxk^sf~ob}p{|u|p                 )'%@;7ID?MIDMIDIE@FB=FA:6@<7:73  ()( '((;95IA7KE?JFCJFBEA>GC@IEBKFCKGCKGCJEAIEAIEBHDBHDBGC@IECLHFLHFKGDHDAC?=B?=HECKHFKGEHDAIECLHGOLJPLKNKJOKJMIGLGEKGEJFCLHEPLJPMJNJGNKIOKIRNKPLIPKHQNKSPNROLPKINJGOKHPLHSOLSOLRNKSPMVSPWTQYUSWSQUQNSOKOJFLGCMIFQMKPLIMIFUROYVSWSPSNJRMITPMRNKNJFJFBEA>@<9@<9D@$L.#f>2_:/P/$j>/l>0L)"048B"M/$K-$B#<,+.3.$ " &,61 9D$' ='N2(G'99$?%R+:L) *8"H1&P5)B$2C(?!;D'F*1 @%S1#( >>S+!Y."Q( N&CX8/=& 7P$X,g7#i9&O:}M8Q&N"0/0$ & _8(tD2O/"#, 1/)&%I1'P=4C1),.-E%k<-f9+mA1|K9?,T*W+ A E#?L*X3%U.!L%h;*c>,lF4T2$E"$ * 6 7"3S-&[2*S-!R-"6$4#>#.BJ"<:F ?>D8E)b?*R, }I4a4#V*R'9)A!E# ! # )   10C' J-$;6:-q嶐vL-1% 6>;C Hֹ׽Ȱëĭ̶uunVf^Pw}~w{nvysqi_OJD   "0(!?4+N@5YI;dQ@mYFUIYMA^RE`UI0/-*+*+++&&&!!!"#"!!!!"!%&%#$$&''+--'((#$$!" #%(*#*+%+,%+-&-/(-.&-/'44-760;95FC?FC>GC=JE@OKEURLZXR]ZT\YS]ZT_]UaaWccXddZdbY`^Ub_Xc^Yb]Ye`\fa]b]X`[V`[V^YT^XT_YTb\Wc]Xhb^fa]a\Ya]Yfa^gb_c^[b^Z`[W_ZV`[W^YV\WSZUQ\WS[VR\XS]XT`ZUynưطƱ~skc\Xe`^gb_b]Zb]ZZUQUPLZURZUQ_ZWfb^id`hc_e`\b\W\VQ[UO_YTa\Xgb^e`[a\Wb\Wjb[}qeʹ§mUF8QI?QKC]VMe]SldZog\ri_sk`umc{sg}ui}th{rf{rfzqevjxlui~ui|sgtmbe_VPLE=;7.-,$$$"###$$$%%%&&&'''(('(()**+,,+,,,--,--+-,,-,,,,+,,*+++,,())'(()++*++)**(*)()('('%&&%&&&''())443PMHoh_{pz|t׶ʩռ6-#8, =0#D5'SB0I9)F7'P>-Q@-YG3gS=hUC{m|tgZOE;>:7?;8C?=GCAHEBJFCGC@?:8>;8DA>KGEJFCKHELIGIFDIECIECKGFIECHDAJEBIDAJFDJFCHDAHDAOKHQMJQMJNJGKGCMJGROLROMQMKRNLTPNUQOVSPVSPTQNUROWTQVSPUROTQNUQNWSPUQMSNKRNKRNKPLHNIFUQNYVSZVSWROTOLSOMQNLSOMPMJIEBD@=C?;KGBXSLqjayqgumbyqepi_~vlyyvwj|nٽβӶӷѵԷ۾ۼ׸޿ݾڼݿJ>6+ =c7';) D#A<&='46* & )-!.B.#D, G(H)A#::<"P1%f>3[7,N."j>/k>0K)#1447M/$K-$B#<,*/3-" # '/6, "A#@!( B+ L0'G&89$B&Q*7L(8)H0&M4)I,"4D)= ;E(D(2 @%S1#+ ?>M(X-"Q( N&C P0(7!8P$Y,g7#m=)P;zJ6O#M#)! /-  1k?.qC1@&&.1-(%,N7-N<48$,/ .N,e9*l=.U0#hA3W1#"N&Y,!M&P)!G$F%X3%V.!?h;*c>,lF4g;*R)+" 28!5 @!Y1(O+R0#6$4#?#5@J">65E%AB3T5#kA-h:+}J4Y-V*K$-.J&3   $ ( 22G+"E)!679Ѹ޲sQ. H"& /<9DqVIּëѷվ˵npiQe\N~r}}z}pv{xrkaPKE     "0(!?4+N@5XG9cP@lXFVIYM@]QDbWK31.*++,,,&&&######!!!""!$%%#$$$&&*,,'((#$$!"!#$%& (*#)+#*,$-/(./'.0(12*65/<94C@;FB=MIEQMINKDOLFVSMYVPZWQ\YS^\T`_UbbWccYcaXcaXb_W`\V`[Ve`\fa\c^Y^XT]WR^YT]WR`ZVe_[e_[hc_id`c_[`[W`[Wc_[d_\b]Z^YUXSOVQMVQMUPMXTQ]XT]XT\XS[VR[VQ|qg®ֶɳzqkeae`]`[X_ZW[VRUPLXSO[VS\WT^YUd_[hc_fa^_YT\VP^WR_ZU`[Vd`\a\Xa[Wa[Wb\Vh`Yujڻع|im\Kp`Ppg\|sumb[UMD@;640-,)&%$""! !!"###$$$%%$%%%&&"## ! !!!###!"" ! !!!"##"""!"""#"!!!!""!""$%%***<:7WRKqi`|qyxkԳĤҹLB46*?2$C4&Q@.I:)E6&M=,Q@.UD1bN:dQ?yk}~{lxhYteXvi\wj]yl_ti]qg]pf\kaWrf[qfZlaUg\QeZPg[PfZNeXLgYM2,&e[Qwwrv               <:6NKGLHDIEAJGCQMHWRMSMHJF@JFAKFBD@<42.973B>9PMIOLHKHDJFBLHDMJFKGCJFBGC?FC>IFB-*'%2+'%110F?6QF;UPJSPKROKPLILHEJFDMJGNKHPLJPLIMJGJFCGD@HDAHDAKGEKHEJFCGB@@;9<85A=:FB?IDAJGDOLJMIGLHFKHFJFDKGEMIGOLIOKINIFMHDLGDOKHRNLTPMRNKSNKPKHQMJQMKNJHNJHPMKROMSPNROMROLQNKSOMWTQWSQUQOTPMQMJRNKVROWSPUQNSOLQLIMHDMIFOKIROLSOLOKHMJHKGFJGDKGEHDAHDAIFCHEB653;97QNI]XR]XPa[S]WOjd[{qqvsrzl|oǫֹĨϳֺ׺ӶҶչؼk[O* >c7'8 ? E8"A+!)3+& ' -" ,A,"D,!G(H)A":9: S2'f>3Y5+N."j>/m@1K+"1412M/$K-$B#=/*03-" $ '06' %F&8,E-"L0'F%79$C&N)4G%E'"E.$L4(S6)5D)=<G*A&2 B&Y5&/@>@ S* R( L%A@$ :P$Z.g7#p@,R,lF4j=,M&/ ' *66!5T-&L(N.!2"5$5439753B"I!@1`>)k?-m=-sC/V*U)C!(9F$   .4' -17J-$@#69-zԬoEU)AG$C!.A u׼׼ƭ̳«oslScZK{o}}z|p|q|wpj`OKE   #/&;0'K=2WF8aN>lXFXK=TI=SG]VOmf\oeZۺʩз\P?.#A3%C5&N>-H8(C4%J:*O>,Q@/_M9aO:QLHSNIOJEKFAID?KGBTPLUPKJD?FB=IE@=95741862JEAPLHHD@B?:?;7>:6?;7DA=IEBFC@C@=EB?-*'%3,)& !!;96KA6OG>NJEQMHVQMVRMRNJOKHNJHOKHLHFIEBIFDNKINKINJHPLJQMKNJHGB@C>:D@=EA>GDBNKIOLJLHFJGELIFNJHOKHOKIOKHMHFNIFNIFNJGNIGOKISOMTPNSOLSOLRNKMIFKGDLHELHELIFMIGNJHPLJROLTPMUQOTPMRNKPLIPLHTPMVRORMJOJGOJGNIEMHDLHDMIFMIEJFBIEBIEBJFCLIFKHEIECGDBHEC10/00/>=c7'9;J"3F/$92.( ' -# # =* D-"G(G)@!:98 V4(f>2V3)O.#j>/j>/B'140.L.#J,#B"<0*22+!% )29$' G&0/E-#L0(F%79$C&O)6A!L*"(?*!J2'S7*;!D)<=H+?%4 @%[6'+6??:O(R) G!A@" @P$^0 g7#tD0R5@-%,, .@#^6'-^5(l=.L+ g@26>X,!Q)J&I&;V2$Q.!" `6&d>,lF4i<+?F.#D.#*+' /40C"H&N. 0 4# ')4:34 B!H!>3iC-i<,|I4h;)V)Q'6*F$7'53$00>#I,#9791% ڿŧQ/%U)H#K&<8:αؼԹǮ˱uxpWcZJ~rz{}u}q~{uqj`SNH$"    #/'!;1(J=1UE7cP@q\I]O@TI=RGWK?[OCeYL641)**,,,%%%### !!!"!""!"#"$%%$%%(**&&&"##!"!!"#$ '(#()#,.'-/(./(12+45.;:5>;6A>9IFBHEBJGCKHBMICOLESPJWTNYVP[XQ][RaaWbbX^]T^[S`]Va]W_ZU^YU[WRYTOYTOYTN]XS_ZU`[V_[V_[Wa]Zb^[ea^b^[]YU\XT_[Wa\Y\WSXSOYUQVRMUPKXTPYUR[VSZURYTOZUQjaYɭ߼ٹǯvllc\^XT]WS^ZV]YUZVRXSOXSOXSOa\Xd_[c^Za\Xc]Xc]Ye`\fa]b]Yd_[ga]ic_id`fa]jd_umƯ̲èzgUB/ZJ:NF>VOF_WNZSJXQI_XOlcYvnb{sgwkymwk|th|shvncgaXSNG=:6,,*'''&''()(()))**+,,,--,--,--,--,,,,---...//...-..-../00010010000000000/00/0/./......../.-..,,,+,,+,,+++***))))))((()***+++,+864?=9zlyػطģѹr\%A4&C5'K;+I:)C5%K;*P?-N>-_L9aO5-dWKkp~p|{wx~}{yz}tgYJC<}y|pzn                EA=VQLYUPZVRWSNSOJPKFKGBKGCPMHNJEJFAID@741973862NIEMIEFA=B>8@;6?:5<73?<8EA=C?ND;HC=D@2P/%M-"j>/i>/>%1357L.#K-#B";.*32+% % *38!&I'- 5J/%L0(E%7 9$D&N(:<I)!;!<&I1'S8+B(D):= H+<#3 A&S1$/9=?:M&R) ?B> BP$_1 g7#yH3RF 77 mE/k<,M7^2#V*J$+4H$  .)%$! !$!$!&"*'#+($-)%+(#&#  !""###$%%%&%$%%%&&&'''(''''()(())())()('(('(('(''(''''(((+,,,--,---.-><9^XQke\βٷģηn @3%C5&L<,N=,C5%J:*N>,L<+]J7_M:ugXwmb@81bVJ}ktyvvzz~}~}~rd0-)xmaujvkzn                 *(%GC?MIEPLHOLGMIEPLHMIDGB=B>8A=7@<8B?;C?;42/874640MHDIE@GC>GC=FA:C?;FB?FB>><:$%$ $3,))"  --,EB>OG=TNGTPKMIDEA=FB=KFBOKFTPKVRMTOKJFCD@;EA>GB@GDAHECD@=E@=GC@NKIRNLPLJPMKNKJLIGOKIPLJLHEIEBJFCLHEOKHRNKOKHOKIOJHQMKQNLPLJOJGPKHOJHPLJLHDLHDNIFQMJQMJLGDHD@JEBLGDHD@KFBQLITOLTOLRNKQNKTPNTPMUQMTPMPLIOKGQMJRNJQMJPLIOKHNJGMIFJFCFB?EA?C?=C@>221./.7779::333221221110111666@@>AA?986763:85CA"9/* ' * ' $ %1D."G(F(::62Y6+f>2M-#L,!j=/g<.;#835:L.#K-$A":.*4103),68 , D$' =&J.$I.&D$8 8$E'M(<:C%L+#?'I1&N5)H- E*5A&H,63 F(R1#086>=J$H#<B< DP$_1 g7#yI4R(:60,/106L*0* 2&,..1 :>D,<$mD/rA/|J4W,U)?)> >   ?#5-324G+"=6:! !X4+S(G#K&6G#^@4Դ۹ǭƭϷ|rzrZ`YHtxur|~r}{{zrhZTM,*'    ",$8.%J=2VF9fRBwaMeUEOE:OE:_SFl_PbVHWL?dWIgZLZNB\PD`SFi\O840&''+,,$$$#$$$$$ ! !"!$%%%&&(**&''""" !"$'(!(*#*,%,-&/0*640752973=:6A>:GD@GC?DA9=9395062../-775850PKFNIDKFBHD@ID?KFAJE@HC?GB>D@=--, "2+(*# <;9LFDA>GDALIFNIGNJGOKHOLJPMKRNLRNMOKILHFOKIRNLQMKNJGIEBHDAJFCNJGJGDMJGNJHPLJPLJQLIMHELGCMIEOJGNIEOKGQMJRNLSPMPLIKFCJEALHDLGCMHDOKHSOLTPLSOKTPNXTQYURWTQWSPTPLRNJQMJQMJPLIPLIOLIOKHNKGJFCEB?C?<>:7>:7110..-66578711000/554565/0/1228989::232,,+,,+331776tk_pwiʰչδھ۾۾Ӷۼۼݿ˱# Ae8'H(1M$9J/$<$A 02& ( * . +.D.#F)F(::41Y6*e>2M-#L,!i=.e;-7 ;257K-"K-$B"9.+610.).95 4? & B*J.%H-%E$8!8$H'K&9;@$R/&@&H0&J2'F,E*5C(G+44 O.!O/"078>@C!- 7C8EP$a2!i9%~M8O:X,!N"6/, Q."sD1d;+/*06/(%3#O=5<( ,- .@"a8(P- K)l=.^4'^=1I(L%W+ D!L' ;G(X3%>"M*f@.lF4F-"@#W5'Q7*6>8128#102E&;"+">0(A) 1,2 84B& :!h<+yG3uE1V*Q'2,E$.,>"6-41=#G*!784{kQ) S(H$J%9GeUڷ̱ŪɰԻu|s\aZH~qv~w~rv~}}wl]VO.+( #-%9/&K>2WG9dP@r]IbRBLC8OD:]QDk^ObVIVK?cVHj\N\PC_SFcUHi]O951%&&*+*$$#"##$%$!! !"!$%%#$$)**&''""" "##$ $%!%&!'(#'(#+,'0/+20-530852:74@=:@=9=:5=:5@=8DA;LHDPMHQNHRPHONEPOGRPIROJQNIRNJTPLRMIOKFNJFOKGLHDNJEPLHPLHRNJRNJOLHOKHQMIOJFLHDQMJVROWTQYUSUPMKFBJEANIFRNKTPMQLINIENIDWPJreƧϰϰҲҳعٻ׻˲ջylaaYRWQLXRNZUR\WT[VSXSOWSOXSO]XT]YU]XTZVRXTO[VR^YU[VRSOJZUP[VR]XT`[W`[Vb]Xib[{odw͵ܸӵl_TB=941//,*/,*2/-2/-520853975965743-+*,*)$#""      "!!#! %#!&$"'%#3.)bVJ|ĩۼ׵ۿ͵/&;/"A3%E7(Q@.B3$E6'M=,K;+XF3]K8l]Myk][PFn_vwwutu|qw~v}qw}v?93odZuj~shym                 *(%JEALHCLHCMIEOKGMIEJFAID?LGBJEAHD?HD?@<852.01/652:60HE@EA=B>;A=9D?;D@EA=320  !1+',%! 553IE=QJ>YTM^ZUYUPWSNYTOTPJUPKUQKTQLVSNYUOYUOTPKIEAFC?IFCLHEMJGMIFMIGMIGMHFKGDJECGB@IECPLJSOMSNLOJHKGDHC@IEBIEBOKHQMKSOMVQOVROTOLRNJRNKQMKQMJRNKQMJMJGMIFMJGMIFKGCLGDOJGPLIOKHQNKTPNTPNUQOYUSZWTZVTXTRVROUQNTPMRNKRNKROLRNLRNLQMKKGDGC@D@=B>;D@=776//.4433432213317867870111227779:9010+,+++*/0/,./mdZsxkŬͱѵĪҷؼˮα׺ٻټػܾܻۻۻ߾ظԴ־ Ad7'J)- N%=E':$E"09% ( (- - *C.#F)E'::3.Z6+e>2M-#K,!i=.e;-6> 351I,"K-$B"6,+62/+*1:. ;7* A*F,$D*"D#8!9$I(K&9<="Q-%D&F.$O5)P4&D)6?%?$)4 N- D(169<=<. 9C6 I!Q%c4"h9%~N9~M9R&N#0# 0) ' `8)tE2V3$-, 0;#,(#<,$L:22,. .M+c9)K*/d8*k<-O.$H,"I#X,!I#H$C#@$U1#F'T0 f@.lF4E-"L(^:+A-!, :3-/52!01:D(2 $=/'E*!0,3 =7@$ :f8*e:*_5%V*I#+6> 2: 8.32E)!A$6:% ˲ER'I$H$8AtӹҸԹϵʹŬƮy~fhaN{ou}{}qv}~zyn^XP41.    '!/' :/&J<1ZI;eRAr\IbRBLB8QF;\PCk^ObVIXM@dWIk]O]QDbUHeXJi]O<83%&&***%%$"##%%$""!!"!%%%#$$*++'(("#"  """%&&(((**)--,,,+,,+,,+..-121211211775775986:97<;9><:A@=EDAFEAFE@DC>DC?ED@HGCHFBFC@FC@EB>EA=IEAFC?C?;D@;GC@IEBLHELHELHDIFBIEAFA>B>:KHEPLINKHRNLRNLMHEKGCLHDNJGQNKRNKOKGMHESMHuj^պ忤ĦΰԷϱܿӷĪպ}qqf^`YT\WT\XUYURWRNXSOVQMYUQ]YU[WSXTPTOKUPLWSOWSORNIVQMZVS\XT[VRYUP[VR`[Wf_YzodwëֹشϲrdXGA=<86;75742853631520741742742853.,*,*)*(&$"!"   !!! "     %$")'&('%'&$&%#,+)20/420631LD>pɭ̫ٿů;2'9-!B4%C5&P?-B3$D5&M<+J:*RA0ZI6gWG~}}mVKAzk[qp|pdzpe}si|q{pvy}}zwz}qzmvsJB:i_Ushtiti           B?;RNIQMIPLHQLHQMHPLGOJEPLGQMHLGBDAA>;1.*.,'41+40*950=84D@;IEAIEAEA=@<8A=9763 1*',%"  .-,FB;PJ?LF>QMI\XS^ZU[XSXSNXSMZTN[VP\XR^ZTa]W_ZTZVPWSMPLGMIENJFOJGQMITPMTOLOJFNJGPLIQLJSNLTPNUQOTPNQLJLGDKGCLHERNLTPNVROVRPVROVROUPNTPNTPMPLINJGMHEKGDLGDLHEMHFIDAJFBPLIRNKNJGLHELIFNJGNJGPLJSOMVSQXURWSQVROUQNUPMSNKQMJRNKROLQNLMIGGDAB?;9:9///0101214434433324440111229:9<==455./.-.-232-/0ldZwwj{§§ȬͰոèܽũҵԷָۼܾٻڻ߿ҺAd6'K*, N&8A$?)D!0:$ ) &% % %A-"F)D&9:0+Z6+e=2M-#J* i=.f;-8 C$45( G+ L.$B"4(,72.*+1@!- B#3/B,!G-%>'>!8!8$J(K&9;67C"K1&jI8gF5F*:@% =#& 3 P- >#15;>>;- 9C0 K"Q%d5"k;(P;zJ6O#L#((0& 2j?-qC0E(1.2C+$)($E4,C0),-/1X2$b8)A$ .J)m=.a7)O2'L'X,!O&B L(.1)K)f@.lF4E-"X. Z8*3"" 0B'A'1./2"13L+C)$=.&N-#0.3 ?4>D$f8*S/!V-V)<*> ,&58.28H+"975eTJټGR(I%F#;:ɫؼ׻ӹ׼ϵȮrzbf_Mxlux{|pu|xxm^XP53/    ' 1)"9.%I<0ZI:fSBv_LbRBKA7SG<\PDl_PbWI[OBdXJj]N^REdWIgYKi]O>:4&'(***%%%"##$$$""!!"!%&%#$$)**((("## !   $$$%&%))),,+,,+,,+++++++------,,,010111343354454454566787898787677788898999898566333333332454676787887:99===AA@CCABBABA?BA@BA?@?=BB@DCACB@ECBFCBHFCIFCIFCHECHECHEBFC@FB?JFBcZQoдԷ׻׻æֺػʮβֻ˰Ǭȭپսɱ~xme_XTYURUQNPLHNIENJFTPLYTQXSPVQNVRNTPLQLHRMIRMITPLVROXTQXTPYTPXSO\WSZVR`[Uqg]q̰ܼۻݽֶtfZLFA@=:A=;>;9<97:64852964964;86;86420-+),)($"!$" $"!#! #!#!" %#!%#"%#"&$"&$"$#!%#"%$"%#"%$"$#!#" " " "! $"!#" "!$" '%#'%#'%$'%#(&%+)(+)'(&$'%#,*(0.,420742HA;yiӹմѹ^RC2'B4&E6'O>-A3$A3%K;*J:*N>-XF5aQ@w~tg[OteWwgyk|nuk`ukb{pwvv{qwlzo}r~s}rg{odtg{kKC:laV~rfsg~rg                   ,*(OKHUQMXTPYURWSPVRNRNJNJEJGBLIDJFB>:6;84=:6.,)31,4/)71,:50>94EA:NHALF?GD@LGCPKEXSMYTOVRMTOJWRLWSMVQK\WQc^We`YfaZ`\UWSMUPKVRMWTQWSQTOMQLIOKHPLISOMUQNUROXTRWTQURORNKQMJRNKUQOSOMQMKRNKSOLPKINJGOKHPLINJGJEBJEBLGDJEBIEBNKHPLIPKHPLIRNKNIFKFBID@HD@HD@KGCMIFQMKWSQYUSXTRWSQWSQVSPUQOQMKMIGJFDHEBFC@C@==:7<96676-..,,,.//443665221443333111899<==999111...332.01me[xj{uĩŪȬʮʭͰغ׸Ʃֹݿܼںݽ޽ܻŭ@b5&T/!) N'?6G/$J':?!& ) &$  $ ?+!F*D&99-*Y6+e=2M-#G)h<.g<-:!F&63! F* L.$B#3$-82.+,2B#& :, 6 C,!H-&;%;8!8$I(L'::99V5(M1&fF5cD4F)? A% ;"% 1 P, ;"04B#F#>B >=C0" L"Q%d4"k=)Q;uF3LN%% +/$ C$qC0g=,& , 08 G/'''*J807",- /7]5'`7(8 /&[3&J)26S)T)>N( 0% %L)hB0kE4A* _2#R3&9"). C*!K/$B'-.21 .88#(:)!T.#6 -4 F 6;R,!d7(S/!X,P'2*( ,66.2A&D'69*˰е?R(J%D"@ ;æежӸʰ˲~m~u\e_K~thyxzzntzxyn]XP63/     $0(!8.$H;/[J;iUDxaNfTDJ@6SH<[PCl_PaUH[OBdWIj]N_SEaTGeXIg[M?;5')))**$%%"#"#$#!!! ! %%%#$$'(('((""" !!  ! ###'&&'''((''''&&&&&&''''''++++,,----.--..-.-----...//./....-..-.-..../.././00122455455566343111222333455455455455444233122/01223344233344566677788899:::;<<:::::9<=D@=A>;9=:8=97<97<97:75741.,*.+*&$"#! " " $! %#"$"!" !"!$#!%#!%$"&%#(&%'%#'%#'&$'%#'%#'%#'%#,*(-+)-+)*(&(&$*(&,*(,*(+)',*(+(%+)&+)'+)'+)'/-+1/-1/-/-+2/-52/741852863HB=ufɰ޿մŦٿ{lY)A4%D6'N>,A3$>0"I9)K;+L<,VE3]MlaVvhxjtg                 D@=TPMVROXTRYURYUQTPLOKFOKFLHCIE@D@<>95=94A<7-,)42-50*C>9IC>KE@NIDMIDJFADANHASOJUPKNHCMF?TLDXRKVQKSOIQMGSNISOJTPJSNH`ZSf`Ye`Yb\U_YR\WQRMILHDSOLTOLOJGSOLWSQWSQWSQUQOTPNTPNTQNUQOURQSOMMIFJFCLHELHEJEBHD@IDAKGCJEBHD@IEBKGDKGDOLJROMRNLQMJRNLOKHMIEMIEMHDLGCKGCMHENJGQMJSOLROLQMKRNLPLJOLJLIGKGEIFCFB@EB?DA>?<9<96322+,+,,,01055555400/443222...555;;;;<;122./.232.00f^U}o{sͱֹæƩ˭ȫȫӷڽ۽ٻ߿طݼܻܺٸָܿؽܿ/$ :a4%e:)-#K%D ) U9,`@0? B"*' '(% # 9'F+C%9:-'W4)e=2M-#F'g<-h<.<"E&74" A'L.$B"3#-72.;24C$$"2( =&?)?' 6!;8"8$J(M';:;!?cA0V6(G+"E* ?#?!A%!; & 1 K(603F%I%=G#O) CC. ( O$Q%d5"pA-R.%b3'[,"24 <29X0$^4&R/!X,E"+& . 27714G+"= 680#ϳAR(J%C!C"H ޾׻ѷӹ׽Ʈδsw^d^Jzpc|z{ymvyy|q`ZR862    0(!7-$F9.XG9hTDv`LhVEKA7RG?=POJgc[}vjvIJ˹̹{|v|qzo|qyowm{sjwphqkcoiad^X]XRTOKPLHNJGOLIQNKRNJQMIQMJRNKQMISNJ`YR{peu׼ܺ߾߾ظϮܼвв׷ָݿٺĦϱݿбɫ˭ϱ̭ͯˮͯũǭure\^TLNGAGB>IC?MFBLFBID@B=:=:7:74731,)',*('%$" !#!$" '%#'%#&$#(&$'%#)'%,*(0.,-*),*(,*(-*(-+)+)'-+)-+)-+).+).,*.,*,)'*(%0-+31/31.1.,1.+1.+2/-41/42052053130.42020.2/,30-74174152/B>9~pcϷܽٸŦzf @3%C5&L<+A3$;.!E6(I9*G8)RB1YH7{l~||}oayiZxgqb~rfznvksjaulczpf}tj}si{rh~tj{pxx}p}qsULC\RHsfYrdXpbU                   (&$OKGQMIPMINJFMIEMHELHDIE@KGBPLHRMIKGBFA=D@HD@IEA<95  !*%""  )**?<8F?6JC:QMGTOIOJDJD>OG@UMEUMEVNGVPIUPJYUPVSNPMHTOIZSL^XQd^Vd^Vf`Xd^VWQKNICQLGSNJRNJRNLPMKQMKQMJOKHSOMSOLRNLRNLRMKPKHMHDJEBHD@GC@FB>FB>IEAMIEKFBHC@IEAMIFPMKPMKOKINJHOLIOKIOKHPLHQMJQLINJGOKHNJGLHEMIFLHEKGEMJGKGEJHEKHFKGEJGEHDBEB?C@>><9=9710/,,+--,11166655400/554232,,,112898;<<343./.222.00`ZQ{mvu׻ȫ̯Ͱ׹ݾ޾޿޿ӵڼ޾ۼ׹ٻҵ۾ܽոӶéֻG<53`3$j=+7 H#H!" N2&cD5?$? .# &(1( 7%F, D&;=0'U4)e=2M-#C&e:,h=.<"E&;4$ >%N/%E&3#-83.@!45A" %2(A*1 !6!;9"9$J(M'<::!>cB1T2$<=?"@#A&!9/ >& .2B#=>D!M) AA' ) O$S'f6"rC0R+#,,/-E'b8(Z3%&  -  ? >#BX,!H#F#I&0. T-iC1jE3B(]4$]8%C'+1F-$O1&G*/E#83'%:+"K:/a3&a/$46;>6M* W/"T/!P'2, >94952<"G*!78/m^ѵCP'J%@ E"cF;ݾؾҹ϶Ʈϵgg`Mtk^~z|pvwy~rb\T;84     -%6,#D7,RB5dQAr\IlYGOE:SG7(**)**%%%"#""""$%$!! !!!"###%%#$$ !! !"!%%%&&&(((()(((('(''''))))))+,+,,,./.010222010/00/0/010222233343454243233444344232011122233122011233232121222222222243344455454454344122011011122233343455687454121010/00111232233232333455576677566566:;:EDAWTOmg^}p{pnh`\YSMLHCCB@?>>=<@?>A@>?>EA=FA=IE@KGCNJFRNJQMIOKHPLIRNKQMJOKINJGKHELHENJGOJGPKHQMJOKHOKHOKHMHDKFCKFCKFCJFCHEBJFDKGEKHFKHFJFDFB@A><=97<8610///-,,+///566676110443000*+*/00787;<;455.//000,-.^XP|~o{zĩαڼݿ޿ͮѳܽݿ߿ҲŧΰڼغʭǬ_PE1Y- I'!I%L$" G-"dF7D,">7! &%1, 1C.$P4(N-"H(5%S2(e=2M-#B%d:,h=.:"C%? 4+ =#N0%H) 3#.83.A#59B# + 3( E-"%'7!99"9$J(M'=:;!AgE3U3#=>?"@!:7, :#-2G&;>C K)!AB' ) N#T'g6#zI4RK&4C(S,iC1jE3B'V2!_:&C%)8!G.%K.!;"5G$;.-*9) K:/`3&d0%96=F 6" I'O*V/ @ )( >&5M!94939 E)!C%69 zhγCP'J%@D$vѸ۾ƭγĭlmfSqg[yy|oxwy|pa\S<95    .' 8-%E8-SC6aO?p[HlYGQGi\NcVI^REeXJi[M`TF\PCcVHg[MG@9)++*++%&&#$$%%%%%%!!! #$$$%&%&&"""!""  $$$%&%()())(()())))))+,++,+,-,---.///00011000///./..//010121232344233111122233122/00/0/010000///.//.//.///00111121111000000121232232011111222333344343333344344233122011122232233233122011111222122.../00443<;9LIEa\UxqfvuyrhgbZRNI>>;565232233333232333454354133.12+02&-0&, ',#*355.13887>=:==;IFBJFBLHCd[SmcY}rfxȸͻ̹ϼ«êƮŬƫūĪϴӸֻӶԷϴɮβܿ׹гҵдɭ׹ݾƪǪ࿡ŧ˭Ǫʭαʮƪܾʯг̱ӷԷ׺շӷԸԷͰʭʮĨ޿ۼܼ۽ع׹Է{|qxk|nbuh\eYPNE>62.0-+41/31/30/41/30/52164241/41.20-41/41/0-+/,*/,*/,*1/,1/,31.31/20.2/-2/,42052052041/5207525301/,1/,2/-0.,2/-31/31/20-20-52030-630863;85952F@:yj]ūշήȩ׸۹ˬ׽}9-!?2$F7(B5%9- B4&M=,H8)Q@0TD3mbU|xyyxrdwhX{}rwl}rg|ptsxxtuj}qwth\Pk\Os|                       >:7RNKRNKQMINJFNKGQMIQMITOKTOKPKGLGBFB>B>:A<8>:62/+)&!0,'?:6JFBLIELIEJFBID@GD?B?<&&& ,--:84@7-D:.E?9F@;JE@HC>E@;D?9G@:LE?OG@SLDSKCRJCVOHZTM[UN\VO_XQe^Ud]T`YP\UN\VO\VOOG>RG>?"? 17 * 7! *2H'=>=F*!A A& + O$U(g7#qD1|L8Z."P#K)# 0- 1I(rD1g=,'- 0?& U:1)()>+$,. -0*W2%c9)J)    B$@ ? =6R(T);K&I. `@*Q*iC1jE3F(Z5#^8%;'>'G.$J-0A!C"2.-,8'E6,]1%f0%;5 ;B 5% J'O+T-1+/ H)d=,>O"?!5?#:!C( I,#;74-nɭDN'J%0ve޾ܽ۽ӴӵھжݾĪǮԸƭpnfSmdWx{zm~yxyym]XP:73 .& 9/&H;/WG9dQAp[HkXGRGZVPwqgw´õŷǸɹʹϾͼǵòŴ˺ȷɷ˷ѽҽιȴƱ˶ԾªªªȯūƬȭū̲ͳ̲ƬۿԷӶֺ׺ٻոϲԵۻݽݾԷĨʮҶͳzxkh\SF?:62/853:7696496441/53164241/30-30-41/41/0.,1/,2/-1.,0.,0.+0.+0.,0.,2/-20-30.31.52/52042/52030./-+0.+1/-1.,1.,30.1.,1/-1/,30.1.+52/852:75<95LF@rd׻̯ŧۼ׸߾ۺȩԻ+$8, >1#D6'C5&7,?2$P?.G7(M=.PA2dYLy|v{xvzm`i[Mv}|~otcTpx{                          852QMIKGDJEALHDNIELHDPLHTPKUQMQMIPLHSOJNJFGB>D?;C?;2.+,($0+$C?;NJGLHEJFBIEAJFBLGC864)))851=3(B8-B<6A;6HB2T2'@$_7*k>/G)>"E%537N0%H) 3#.83.C* 6@!;  / , 3G1%3479"9$J(P)A 8; I(iH5S0 ?=?"?!1:$ & 7 % 2F&B">=E*!A ?" + O$U(e6"D"S.Q%Q%A#% /.0V1$tE2Z5&"/0J/(N4,&&07#-7!-/,]5'b8(@$ !  #E&?> >* J$W+ D F#J+nJ2W0iC1jE3J)\6$]8%7)B*!H.$E)/I&? +3Q6. *7%A3*X/#g1&D 5 :?4% J&R*R)-0R>8bI@9#& ?#C&=I67A$<#H+#F)!782% E}lƫEN&J%yն׸ϯˬҶؼپٿʰȭȮֻrtkWlcVy~xk}{y|~xm[UN851  ,$8-%E8-TD6aN?oZHiVERH)++)**%&%$$$(*)%%%$%$$$$#$$$%% !! !"    #$$$$$$%$&&&)*)***())())***++++++,,,,-,-.-./....---,,,----.-...///111111000010122121010111232343343233232122222343233232232232222111/00.//.//////00///.///00122122010/00122243232021122344788=>=OMIlg`x|zojd\PMG;:8221011122232122122121121333343233111011111121121121222233354454455565776EC@]YSzsiu~µöŷĶȺ˼ξííĭĮ¬̺|xvvyssfe[SE@=75274386475475442053153231/2/-30.30.41/41/30.1/-/-+.,*/-+/,*/,*0-+1/-1.,1/-20.41/42/31.1/-.,*,*(,*(-+)/-+1/-31/2/-41.2/,1/,20-30-752964<96GB=uh[ֹɫĥͮڻܽܽۻڻعΰҳӴۼۼӴ¤Ϸ<4*4);.!@3%B4&6+=0#P?.D5'H9*L>/XNBwzwztsfZo`Roy{{yyxx||}|rk\Nsd~qv                          20-PLITPLNJEPKGPKGQMIPKGJEAID@MIDLHDLHDPMINJFKGCIEAFB>.+).,(/+%@<8FB?MIENJEMIEKGCJFB,+*  ,,+850=2&A8.D?9E?9GA;JD=NF?IA:F?9B<5@:5A;5KE>KF?NHAPJBQKDRJCVNFVOGSLEUNFZRJd\Sle[jd[WQIJ?4PHAQLHOJFKFCKFCKGCKGDLGDLHEMIFMIFMIENJGQMJSOLRNKQMKQNKQMJOKHNIFOKHPLINIFJFCJFBKFCLHEMIEKGDLHEMIGOKHPLIPKIOKHQMJQMJNJHJFDIFDHECJFDJGDGDAEB?FC@B?=>;996476566500/344:::;<<454454221///010887;<<444-../00*+,ZSK{}tsrѶټдֺظѱԴ߿ܽ֯ +" ? ^.%2 V:-U:-5F% $:!658 qJ8gB2I)B(&M/%e=2W4)?#\5)k>/I* ; D%445M/$H)!4#.74.>&5B"8 0* 7!B,"7!258"9%J(P)C!7; L+ fE2S/D#;@">!1:+ $ 7 $ 2E%D$<>E*!A ?! + O$U(d5":O*O#R&;+/03d;+sD1J,&01K/(A*"'&4#/ 4?( /+ ; b8(`7'5#+F&?? =9U*M%<M) b?,W1jD2iD2P,_9&Z6$. , D,#J.";#A!I%8,M1+WL*5$;.&O+ h2&K#4 9?4(L'U*J%)>-(^H?pRG4( / ' EH5: @$=$J-$A$6::2ugƪDM&J%޾ж§ڽͳyjskWi`Svyl|}zym[VO641     +#6,#B6+TD6bO?oZHhVESH7?92B<5F?8@:4D>8E?9ICLE>PJBMG@GA;KE?UNF]VMf^Th`WNF2V3)>#\5)k>/P/#5C$054K.#M/%>$#/74/11F%F&0- ) @)?* 8"29 77!93 =6; N-"eC1T0 J)6@#>!0, * ! 6 #.1?"H&<=D) B!> + O$U(a3!8R,O#J # ./2;m@.nA/7+ 119* (&1,A)?'/' F'c9)\5&+ $ 5E%?@ <;W+ S)=P*"L*S/kE3gB1[1"a:&Y5#*1F-$J- 6I%C".(nJ@aU*5#7*"C$h2&U)37?46Y.!X+? +N;5eLCnPF, ). +I@4="=#<#H,#67:8;L#wgͱ?L&I%ٿ˱ڼʮut]jcMdZN~qzm}|zo]XQ541   (!4*"C6,UE7aN>mXFiWERH:OJE`ZStlcs}}~wvyywsr}p}p~qssrr|o|prstyx}p{rfmf\[UNFC>76400/...-.--../00010000000011111011111011111121122222222232343343343333776DB>VQKgaY|tht{{{nni_YVOCB?776454454454232121121121010/0/010111/0/./.././0/010011/00010010/0//00010010010010/0//00/00/0/./../..///00/0/010121011010/00/00010011121233243122010/00010010/00011121121011.00011332@=:?<9B?:4A<7E@:KC8A<6@:5?94C=7GA;HB;NG@RKCTMEZRJNG>PI=SNFRMHKFBIEAKGCPLITPLOJGKGCJFBKGCIEAHC?JFCMIFMIFMIEOJGRNJSOLQMJOKHMJGMIFLGCJFBKGDNJGOKIOKIOKIQMJPLINJGOLIQMKPMJNJHHDAEA>D@=C@=EB@GDAB?=?<9:7596442043244334344489889822223223211100/333676333./../.+,,HC=vk_}ps{yrtͳڽèϲӷҵ۾׷޾е( 1* % * ! 0a0&C 8#\@23G%( %11.+I-"rJ8L+ H*+F*!e>2U3(="W2'k>/V2&3@"' 54I+ J+!< #.74/12G&P,$6&( E-"6$ 9#06567, ;4;S2&b@.T0 F&5?"=!2%(" 5 " /3>"N);=D) C"> + O$U)]17R+O"H! /0 2I(rD1g=,* /138((&,.H/&60%P-"d9)V2#$!  ="G'@!@ 6G!^."U*R* U-$C#T1lF4fA0e7%a:'W4"'A&L0&L- @"K'=&6 i\dW*5$7)!4e0%Z,"Q&>>4> \. W+5:(#[F>kQFiLB%+, 0J8590<#D)!-9:6:W+ ue<H$H$ƬڻػԹʯڽȬm{sZngPe\Nzn{n}|}q^ZR641    )"4+#D8-WG9bO@lWEjWDQG;WK>TI=fZLfYKaUGcVHfYKbVHXM@gXIcVIRI@*,,,--)))&''+++%%%$%$#$$#$$$%%""!#$##$####!"! ""!"""$$$&''(((*+++,,---////0///.//.00////..../.00000/./.---,-,-..-.../.-.-,-,,,,--,--,+,+*+*)))(((((())(**)**)++*,,+,,++++,,+--,+,+--,,+++)()(')(())()))+++--,---,++*)(*)(,+)-*),)'-)'.*(/,*/-,/-,1/-631?<8PKEb[Sxods{ysqtwwu}p~quvuw{w~pwipi^\VNGD?:96221-.-,,,,--,,,,,,---..../.......-..-------.....-.-----------.----..-10/975HE@\VOtkaxlu{|yxwvwy{|zy{}}}|pgaXOLF>=:342/0//0//00011010121121011/00/0//0//0/.//./.-..././0//0/./..///00/0/.//.//./.-.-,--,-,+,,,-,-.--.-,------.--.-,-,---,-,,---..-..-..-..,---..-..-..-.--.-./..//-..-/..0/.//-..-.../../.-.----,-,---,,,+,++,+00/B@<`ZRvj|õǸŷx|l{k\n}||wuw}yi[Nn^~|                   p}tqwkxmcqg^si`qg^pg]j`VZQHVMEHA:"" ,*'TKBaXO^UM[TMSMHKFAHD?))'%&%()))**&''!!! -+(6.%;2'=70=93=93B=7D?9@;6A;6HB;GA:ME=PH@LE=HA9E>7D?8C=7D?8GA:C=6B<5?:4D>8LE>PIAMF?NG?LE>ME:VOE]XPRMINIEMIEPLISOLPKIMHEMHELHDMHDKFBIEAJGCNJFOJGNIFPKHRNKQMKOKHMHEKGCLHDLGDKGCOKGRNKRNKOKHMIFLHEKGDLHELHFLHFNKHKGEGCAEA?C?=A>;B@=>;9;86:75:75531443110221443676676121221222332343343666222010/0/---?;6_WMtj_viv}}qyl˱ܿƫͱӷ׺޿ۼ޿}gZ8) % , $&^.%M% )[>08 A"." &2:",43hD3S2%J+1F*!e>2X5*>#T1%k>/W3&-<  43F)J+!= %-74/13?!@",' ) G0$/# 9#0556;!, 82:X7)a>-T0 B$5@"?"8$ '$4   09K(9>E) C#> + O$V)Y.5 Q)O!C" /1 0V1$tE2Z5&%0045((',9!M3)./& Y3%c9)M- C%P-#I) A!@.S([-!H&c=1T,#D#V2 lF4iB1l;(_9&R0 $ `9.a:.L-> D#?!'\<5xij]!' 5#5%'a.#^-#c1#I!=4@ [-T).L93`JBpUJcG= <2+N-!973! @&=#.;9. :W+ o8*"E#H$˰ѳǪͯ׺дػ۾׻¨̰~h{sVmfMf]Nzn}p{y}qb]U=:7   *#4+#E8.YH;fSCoZHp[IRG;XL?VJ>eXKgZLaUGbUHfYKdWIWL?eWHdWIULB+,,+,,))*&'&*++%&&%%%"##"###$$ ##"$$#%%$%%$$$$&%$(''(('(('&&%(('**),,+,,,,,+-,+-,+-,+,+*--,.--0/.//.,,,**)))()))()(())'(''(''('(('''&&'&&'&'''&'&%&%%%%&&&'''(((()(((''''(('))()))+,+,-,+++++***)(('''&(('))))))))(*)))))++*.,+/-,/-,.,+.,+.-,/-,/-,0/.520<96KE?`WNtk`}pyy{~xy|}ztrtssst~r}qs{nska]XPMIC=;711/,,,+,,,,,,--.../0////....//.//-.-----.--.-,-,++****)))()(()()))**)++*10.A>9YTLog]viryuqqsrsuwwtrstvxz|vrkaWSLA@<665232011011121122122122122122121121132132132233233233132021/10/00/10011011011021011/00.//.0//0/.///0/-..+-,,--./../..0/-..-...///0/./.-..-...///00/00.00-..,.-,--,...///00.0/./.-.../..//./.---,-,---,-,,-,,--,--321LICle\uznbVbUHrc}z{|zxxxtsvytwwsq}zj\m]Otu                            sϵɰ˲éٽѷƯ}wuxgp^ZNC%%$+*&seWxk\rfYoeZof\lbZ[SL !!"#""##$%%%&&#$# !  #$#,'#5,#7.$0+'4/*61,:4/;60;60;60A<6B=7A<6G@9JCTKBZQHTKCOH@JC=KD>JC=MF?PI@JD;RJ@\TKUOJNJFOKHPLIPLIJFCJFCOKGQMJQLILGDJEBHD@JFBLHEOJGPLIRNLSOLPLIOJGMHELGDNIFOKGQMJROLRNKPLILHEIEBHD@HD@HC@FB?GDAGCAEB?DA>B?<@<:><9=:8<98<97854864876/.-..-44355566612111101000/222111443010222121...640G@9[TKndZ}nzozqeĬéǬȬͱ۽ټغӴԵݾٸzk0. , " ! ].%R(# S8+>&5' ' )- 8 ' 74U4'U4'J*7!B'd=1]8-@$S0%j>/Z4(*824E'K+!>!%-75012( !) ,J2&#,:#0665 + O$V)Y.6 P(O"@$ /13d;+sD2J+(1.40('(,E,"N5+( +1_6(b8(C& D&O,"H(@!?& Y+ L%Q4'vN6I,Y4"lF4nD2p>*_9&O/, i>3Z5)L+0<>$.]Q|maU % 4#5$ V(`.#e2$G =4A[-Q(9&![F>eMDuXM[@7!D#.7%Y;,48,&D) 33;8! :Y-#qbC4,D"E#Ŭ̬ͯغͰϲ۽ؼǬгèvdvnTd[L~rt|x~re`WB@;       +$4+#E9.XH;iUEu_LwaNRG;XL?WK?bVIeYKbUGaUGfYJdWIWL?cUFeWJYOE*+*+,,***''')**%%%&&&!"""##$%% ! !! $$$'&&(('''&&%%)('))()((('&)(()))***+**++*++*+*)**)**)++*++*+,+,,,+,+*+***))*)(((((('(''(''''((())(**)***,,+,,+*+*+**+++++*)))'''&&%&&%''&'''&&&%&%%%%%%$&&%&'&&&&&&%&'&()()*)))(((())(++*--,..-.--,,+++*++*++*,,+--,--+..,752GC=_XPxodu|~~}znpi_\WPHE@764//.-.-----------------.-...././/.///00/00//0//0/...+,+*+++,,,,,,,,,,+420HD?^XPph^~ui}q~q~qsvuttts}p{o|o}pty|zzzz{{utmcYUNDB?775333122011/0/.//.///00/00.//.//.///0//00011021233233344344233011/00.//.//.///10022122122/10/00/00.///0/.//,--+,,,-,,---..,.-,---..-..-..-..-/.-..-..-..+,,*++*+++,,,-,-.--...//.//-.../../.-..-..-.../../..//./.-.../.?=:^YRxl~~y|rgof\mcYsh]j`Uk`VmcXpf[qf\sh]sh]th\tgZvhZ|l\{j[~n^~n^{k\vfWzjZj\OSG=k^QaWM                     sϰ£ƨвݾٽֹͱȬǬи`RF%'&E>6{{pyhqyzl_  !!!   ./.-("4+!5-$-)%/+&1-(4/*71,60*60+:3.;5094/;60@:3C<6F@9F@9E?8JC[RIRKCC?;HC@LHENJGKGCJFBLHEMJGPMJPLIOJGMHEKGCKFCMHEOKHRNLUQOTOLQMJQLHOKGOKGPLIRNKTPMTPMPLJNJGMIFKGCIDAHD@HC@HDAFC@FC@B?=B?=A><>;9:75:75=:8864864;870.-,+*110332444122122222221010-.-/0///.121111...2/,50+D>9XQIzob~szpdܿܿ¨ʯֹظظٻܽѴԶ۽ָڼ׷ܻ鼢 . . ' ( X+"R(*  F.#H/$, , * (, >$$ 29A#T3&J*<$>%c<0^9.@%O.#i=.^7*++04@$K,"@"&,75022&!#) 0H1%39#/565< , /3:[:+[8'S0 ;7@ A#8! + . / ! /3M* 9>C&C$> + O$V)V-6 N&O";(/2;m@/pB0:!-2, 9.&%*1 P5+K3)&'?"c9)_7'9 >"L+!G'? < % ].!:\>*`@C)^8&lG5pD2o>)_9&K,:l@5S1$H(4D$7 K0*sdyjfE<#3"4# E g1%q7'F </G"[-K%I71`JAiPFyYNM5,/G)!!K4&[<-15%/D) -6-2,T'wUGdUI(  ӹڽϳֺʰݿҶɯu}t[bYJvy{}qd^UC@<"!      ,%5+$E8.XH:iUEwaOycPRG;XL?WK?aUHdXJbUGaTGgYJdWIWL?aRDdVI]RH))(+,,+++'''(((&'&&&& !""%&&"##!"#!"" !! ""!""!!! !! ##"$$#$$#$$#&&%''&('&(('(''''&''&&'&&&&&&&&&%&&&''''('&'&&&&&'&&'&''''''()()))++*+,+++**+***)**)))(**)**)))('(''''(('))),,+---+,,*+****()(()(()(((((((())***+,,,--,-----..-././0//0/...---,,,,,,-.----+,,,,,..-541GC?_XQvmc}p|}~}}~}~y|oxpec]UKGB996332111110010111011011010010/0//0//0//0//0/00/010./.-.--..-..-..,----,763HE?_ZRyqfsx~}|}}}}}~{vpf]ZSHFC::9565344232011.//,-----././0//0/.//-.../..//.//.///00/00011122011/00/0//00.//.//.//.0/.//.//.///0//00.//./../....-.-./.-/../../.-..-..,--,--,---.--.--.--.--.--.-,.-,--+,,,--,.-.//.//.0//00/0//0//00010010011010/0/.//.//664PMGtmczwqrurtuttssq~nqxhtetftewi\dYNYQIrv                 ufXڻ߻ӰϮабϱӶܼƦظݾ¥ٹָYMB #"m`RӶ̱ƫѶo    %&&-,+.(!2* 60)51-2/+/+'0,'2-(2-'50*82,60+1,'2,(60+:4.@:3F?8F?8E?8JC;VLCYOE\PG`ULZQHE>7G@9VPHVOGE?8KD;[RGVNEIE@KGCKGCKGCJFBMHDNJFLIEMJGOKHOKHRNKOKHKGDIECIFCLHFQNKUQNUQNUQNTPMOKGOLIPLINKHNJHLHFJFCJFBGC?FA=FB>FB?EB?EB?EA??;9<96>:8?<9=:8=;8<:7753531:8620/..,332343555221222232443//.,-,///.../00.//...63/.*'52.KE?pgZvyzpd¨Ṵ̄׻߿޿غԷٹ̮ѳغշ׹%/ . -.S( S(3 3L2'.5% %(=#% +99F'K*J.#P6+c<1^9.A%J+!h=.Z4(& . 4?!L-"B#&*46121%!$) 4G1% ;$7!0565A". -4;a@0Z8'S0 :8@ A#:# - 7, ! +2O+!? =?$@"> + O$U(O(6 N%O"5*02B$qC1h>,, 01+ :* &&+9!S8.D.%K*d9)Z5$,<I) F&?:1^."( ^<*yP75\6$f?-vC/k<(^9&B%F'g=2Q/!D%@ G',|SI{li\3!!3"5# B`.#r7(E8I#[-M+YE>cKBnSIwWL5aNCbKAR9*O1&32"6?%.2" ( ! cG<ɩ|k\wfXѵũǬټϴε˳­t~v[e]Kvz}}qb\SA>:"!       +$6,$E9/WG:gTDwaOycPRG;YM@XL@`THeXJbUG`SFfYJcVHWL?`QCdVH`UI'''+,,+,,(((''''((&&& """%&&$%%!##!""!! ##"$$#$#"$$#""!!! !! !! !!!""!""!!!!!! !! !! ""!""!###"#""#"#$#$$$$%$$%$%%%&&%'''&'&&'&&&&&&&&'&&'&((((((&'&&&&''''''&''&'&&'&''''''&'&&'&&&&&'&((()*)*+++,++,,----.-,-,+,++,+*+++,++,,,-,-.-///./.----../0/332><9PKEiaXymyrxktla^XPGD?442..---,--,-.--.--.--.----,,,,,++,+,-,--,..../.././//////0/000010000332?>:YUNwpeyzx{}|zzurkaXSMDB>997565454343221010./.,,,,,,---..-...-----,-.-././/....-.-.../00021121122011121011/00...-.--..-..-.-,-,-.-...-.-..../.././00/00/0//00/00/00.//.0/-..,--+-,+,,,---..-..-..,.-,--,---...///0//00010010111122122011///-.-,-,,-----00/A?<`[Twkz~}z~zrttsssronuw||tnyh~o`~n_udRI@~o                 E<4Ǩ˫ȨʪͭаѲƩʭܾҴҲ߾طظۺѲ̭ۼ3-'uعյ׶Ƨ׹Ǩt''&&&%%%$""!  ,,,(&#*$0( 73.73/40,62-62.30,/*&0+'2-(3.(2,'1+%.(#2,':4.A:4D=6E>7E=5JB:KD6F>4QH?RJBNJFMIFLIEKGDJEAHD@LHELHELIFOKGPKGOKHOLJLIEHD@EA=FB>IEAMIELHEHDAHDAGC@GC@FC?EA=GC@JFBKGCLHENIFKGCHDAHDAEA?B?<@=:<85:73=96>;8=:7=:8;8663130/743/-,,,+232444788232222221442//../.343232233565344<84+(%.+)A<7e^R~p}sgǭ˰Ըܿھ߽߼ۼۻ׹αܽŨܾܽػո޿. . ,.Q'S(;' H.$0=  ! &="& '4:A"K*K.#T:-c=1`:/C&E(j?2K+#  +4:L-"E%*)27120$!%( :#B-" A(6 2444C$/ -6;_>.W4$R/78@@#< $ 0 <- . ! )2O*!C"=@#A$> + O$U(L&6 N%O"6+/* H(qC0Z5&'10+8'%&,D*!T9/@+"V1$d9)R1!( E$I) E%?3;W* T1$b:+3V0`5 {A,i<(_9&="U1(\8,O. >!D$G( =% l_{lsND'%# 7(;,#8#-K$s8(F8G%X.U5+bLEgNErUKqRGu`QC,%' 5 :5-! 9!71(0' |iZ㮗Ūھ̰ǫǭٽӷɰvoz]iaNt}w~~}~r`ZR>;8$$#     *#3*#D8.XH;gTEu`NydPSH_ZR~vj|}~z|oph^UPI><8331221442443221000///...,-,--------,--,,,,,,,-.-//...-,-,++*++*--,..--.--.-./.000221110...-.--.--.-,--+,++,,-/../..//.//.0//11011011011011011/00./.---,,++++*+++,+,-,,-,,-,+,++,+,-,-.-////00011122233233232122000./.,,,*++,,,-.-///764PLFrkav~swwssrtvxyusurwys|~k]Pvi}}|             tfʰֺչ¦ٻָĨ§Ͱڻܽܽk]P sdԷӶͰɫǩƧ~k#$###""" %%#&%$!! --+%"' 3-';84>;6;73950:61<83<7294/73.2-(/*%0*%,'!,'"3-(:3-?70B;3B;3G?7H@8F?7D=6A;472,1-(;60KE?>80D:.KC:SJCKGCHC@HD@JFBNIEOKGPLHPKHMHEKGDPLILHEIEBLHELHDHC@C?;C?;IEAJEBGB?JEAKGCJFBGC?E@&2;! %: ((19@!J*I+ X=0e>2a;/D'C&i>2M+%  )37K,!G&-)1852/#!%(>(;((C* 5 3234C$/ ' 5<`?.V3"P-9;?@"?"( 1<0 :. %1J(P)=A#C&= + N$R&C 7 M$O"5.- `8(tE2O. ) 2-/ 8'%%1(G:1M1'<]- u9(J"7F(T/ ^?5hOHkPGuVLdE<-s*+475( %=#.2' =3p_RͱܽвҴʭ§ֺѵƭrq}`jbOs{uy|{o`YQ=:7&&%     *#3)"D7-VF9eRCq\JwbOUI=[PC[OBbVIgZLdWI]QDeXJgZLZNB[NAdUGbVJ+*(+,,+,,***$%%)*)'''### ! "##%&&&''!!! !! "!!"""#""%##&%%)('*)(*)(*))-,+,++++***)))()('%%%$$$''(+,,+,,,--,--.//---,---..--.+,,,--.//.//--.-../00011122011012223233122011122233344344233.//+,-+,-,---..,-.,--+,,+,,,------.-//...-..-0//11010/00/000000///--,+++--,652IE@_XPph^xl{xke^UKGA98633222122111001000000/110332232221110..-,,+,,+..-//.00/00/010121343986HFAd_Vxmvxpd]XPDB=66422111022011000/00.0/.//.//-//.00/00//0/00//0///.00//0////./...-..-..---,,-,...010232121./.-.--..-..---+,++,+,--,,,*+*****+*,,,,,,+,+,,,-.-121333121///---+++())()()))))))*))*)**),,+--,---,-,,--././00121122111/0/...,-,++++,,,,,,-,/..<96ZUMvj|~}{|}~~~yxur~qtqsvv|nqer~ptwxspn_QmaV~qyz                    VMEuhtf{l^o`pryhp_ra{iy~~ªʱ}oa D=6©éͲֻ˰zjY  !!!!!!  !    !!!#"!' 1-(42.63/73.62-960<83>:5;72<82;6094.;5/94.0+&,(#1*%90)?7/>70>81@92B;3B;3B:3@91@92<5/:4/70'A6);4-C=7JEBKFBLGCKGCIEBMJGPLJLIFJGCGC@HEBKHELHDMIFKGDIDAE@=A<8B>:FB?FA>IEAJFCLGDKFCJEALFBLGBNJFMIFMIENJGMIEKGDHDBIEBHEBEB>EA>D@=>:8<96;8586320..,*-,+,,+..-110444677454333..-332--,++*110454010666222741)&#,)'?;6c[Q~przԷɯػв׹ܽɬɪί޿ܿٻݿԵѲӵػָѳغٻ׸mWKE!5-R. P-M&Q'@* !//;* %8' /;",B$=9\>2e>2b;0X4)b;.j?3Q-' " (16I+ H(,)0::2."!&(B+!1 7!B)53/14A#. % 6?!dC1V2"O-I.$F(?@"A#.294 :1 # 2G&U,"=>!D&> * V*a2!@7 L!N!0 .-' j?-sD1G).1* 1 4($%L-!R6,R8--7c8)`8'>$'+ ' H'H) C#=$ I(?  -O5$W7%?"W1f8${B,c:']8%C&i?3Q0"I);09#j]|lWL'8-'4)#">1(H;1L2'Ae1#u9)N$6! K+U1"cG>kQInQIxVMP3,cPD,462'0?%.-, >A8B,$ֺ^PEβ޽߾ݼغɭȭŪʱprglcPymyxut|{o`YQ<:6&&$    )#2)!B6,UE9cPAmYGt`LWJ=[OCZNAcWJh[MdWI]QCfYKgZLYMAYL@gVHbVJ**)++++++***###)))'('$$$!!!#$$%&%%&& !!!!! !!!!!!!!!  !""###%%%%&%&&&'''((('(('((()))**+,,+,-+,,++,,--.//...,--,--,---..,--+,,,--.///00.////0.//,--*++)*)*+*,,,***((('('*+*----.-..-..---,++++++++***),+*--,--,--,-----,11/:85FC>WRKld[zm{{zpwma^WOEA=654332222121000/0//0/110110110221543443110..-..-10/11000...-..--.-..-320EB=`ZRzrfv}}~}}~{~orj^YSKA>:44100.//./0///.//.00/00/00/..-,,,*+*++*+,+--,././0/./...--.--.-----.--.-,-,*+*)***+*,-,./../.,-,,-,-.-,-,+,+*+*****++*++*++++++,++,++,+*+**+*,,,././00.//-.--...//.//.0/./.,-,+,++,,+++,,,------,-,+,,,,,-.-/0/000...,,,+++***)))))))))()(()(.-,DA826.&=1&82,;62MIELHDMHDKGCJFBMIFMIFKGDIEAEA=EA=JFCJFCJFCGC?HC?GB>EA=EA;8<8585230.0-++)',,+//.010000233556222110+,+110./....221787222676122751*&$)'$<72bZPq~rtαۼγݿڻӵͮŨٺѳæֹ۽ܽڼ؀j\@9* Y2#[4$K&P'>2'* 6.#%6.  6!0B$;4bA5e>2b;0g>0uH7g=1T/( # '- 4F(J+!1(0981-"!' (B,!'B)!B)53054C#3 (6@#dB1U1!O-L1'F(?=A#648596" 1@#X/#>> C&= ) Z-i8$B 7 K N!30*1oB/oA/810'3E(I2)- 0 [9+Q6+Q7,(D%d9)]6&5*)* H'H(A!<2#U4(4 ,BM)W1i9%zB,`9&X4"H)b;/P. C%7&jG>yjseM3,/#:1*8-&! =0'H;1G1'E"a/!v:)S':G)S0!\>3kQJmRJqSKuSJ'tz.35/>%F*!;"%$-6\F;͌ziNB9β޿յյٽҷӸ¨̳qoltjV}thuts{o}q`YP<95&%$    )"2)"@4+SD8cQAlWFnYGVI=ZNBWK>`TGfYKcWI\PCfYJfYKXM@XK?iXIbVJ-,+*+*+++***""")))((($$$ !!#$$%&&%&& !""!""!!!!!!###"##""#"##!!"!!! !!  ! !!!!!###%%%'('''''(''(''''()((('))())('''$$$###$$$&&%&&&''&&&&%%$$$$''&)(())))))))()(((('''&&&&(('++)1/-<95LGAc[Q|qdt~~}|~}ylibZIFA442111221222111000121443332321322443332//.--,-.-//./0/---***(((''&&&%&&&+*)973QLEnf[ylvyyyusrttsrstsuuuxz}}{|}zyx}qog[TNG@=810.,,++++,-,,-,,,,,-,---./.000000./.--,,,,**)**)**)**)))((('''&(('''&&'&&'&&'&%&%%&%'''))))*)***)*)*+*+,+*+*)))())(((()(******)))((('(''''''''''(((()(()(((((((())****+**+****))))*)*++)**())()(())())'(('('((()))())'((&&&$%%$%%$%%$%%%%%%%%%%%&''21/QLErj_u~|uvw{~wslvi]{nznu                            &#!LGBQLGMIDLIDNIEMGBNGASLEWPIYRK\VO\UOZTNWQKWQK]WR[VPWQKVPJ`WPj_Urg]odZh]SfZOPG=QI@wi]wi^vi^ocWvj]LF?%&&,++++***(%$#!!  "!"&#*&".*%,($,(#.*%0,&3/)73,:4.83-73-61+2-(0,'1,'+'",'"2,&5/)60*;4.;5.71+4,#;0&C;3F@9RMIJEBGC?FB>GC@JEBID@IEAHD@FB?D@=HEBJFCIEBIEBLGDMHEKGCJEAJFBLHDOKGOKHMIFOLJRONRNLOKHLHEKGDKGDKGCKGCKHDKGDIEBGCAEA?A=;=:796384152/1.,0-+*(&..-111232222233344/00...))(./.00/332443776010555011;74,)&)'%84/^VM}oysvؼƬǬ̰ھݾٹԴնڼϱԶԵϰåᾟĥۻ׷Ʀ㿠Ǩгʮũˮݿݿڼܮ'2) U0%[4(E"P';:, + +71"# 35 /7'B%B"5cB5f?3b<0j@2uG7d;0T/) % ()4A#N/#6(0971, "!&'B,!$H-$I,;"33;!3B#6'8A#a?.T0 L+K0&E&?7A#;78598% 1=@$= ) [.h8$B 7 K N!40';!rC1h=,/2.(6J-#K5-,E(d@1P6,L3) R.!d9)Y4$0,)0I(H(A!?J,%=*$W5) ''J"M+X2g8$u?+I'2 V2(Z6+O. >!/8#h[{lWL&5*#<2+<2+"9+#I<2?0'=a/!v:)U)6N-"T0!_B8mRKpRKuULmLCra.350G*"H+#2|˰(%ڻӴֺԹϴپзʳyunukV{qex}}p~qymtb\S@<8&&$     ("2)"A5,SD8bPAlXFkVDUH;YMATI=]RFeXKbVH[OBfYJfZKYNAWK>hXIcVJ0/-)**+++***$$$)))()(%%$ #$$%&&%&'  !!!#$%$%%###"#"&''''''''''(%&&&''&'&%&&%&&&''&''())())()*)**)**())'((&''&''&''%%%$$$#$#$$$$$$#$$### !!!! !!!!!!!!  !! !! %$#.,)>:5RKDi_T~qd{l~oppp{m{n}prw{{vrswuxytrx}ywq}sghaWHE?//-++*++*+++,,+,++,,+..-..-..-//.//.///./......--.----+,,***++*-,,.--//.///0/.;84QLEhaW{qe{nrttqpqqqrsq}o~psttqqqrsssttstuutttsppqqrstwz|xzlng\TOG><710.--,++****+,+,,+,,+-.-././/./0/00//////.//.///00000/...--,++**)())((('&&%%%$$%$#$##$#%&%'''''''('&'&&'''''&''&&&'''''''((((('''&'&&'&'''''''''''''('(((((((('('&&&%%%$%$#$$#$$#$$#$%$%&%&&&&&%%%%%%$%%%$$$#$$$$$$$$"##!"!   !!###42.PJClcX~tgylzl}pstvz}zu|pym|o|ozn{o|psz|o}qxtuy{vy{|pi^S{nznui                        " LHDRMIQMIRNJNJFJFBMHCKFAHD?HC?KFBKGBIEAGC?HD@EA=B?;C@HD@QLHWRLYSMWPJWPJNHAKD>*'$! JE?XRNTOKMIDRLG;84"#$((),+,//.-,*)(&'&%%%###" ! ! #%!'#*%!*&!($ -(#1,&0+%.*$1,&0+%0,'1,'0+&/+%0+%/*$0*%60)71*-(#2* ;2(E=5LDKEALGBPKFMGCKFBJD@KFALGCLGDKGCLHDOJGOKHOKGMIEJFBIEBLHEOJGNKHJGDEA?FC@HDAIFCIEBLGDLHEJFBIEBEB?@=;<9795351.30-41/41/30.20.,*(332343444233222122..-...)))..-00/221332554///444//0;84+(%)(&73/\TK|o|{rϴܿɮˮֹ۾۾ҵǪȫȫ޾ֶ¢ϯڹմԴ̮ƩȪвָۿ׹նѶ31 V0&`7-=N%8F!P&C+1,$ C&N. @(*:)A&F$3 N4)a<1d=1c;.i?0a8.U0) &(%3<N/#9 '.961( "( /6 A+! J/%J-<"37?#3B#F$)8A$a?.T0 K*L1'C#>-@#?":47:9617X/#A=@$= ) \/i8$B 7 K N!4 0# F(tE2[5%+19=;@,%<)!( T4'a>0Q7-H0' [4%c9)N.) ,&3I(G'? >N4-5#G+! - $@ K+X2P-S/$/ - e<1S2&N, 7&kG>yjseM3,.!7-&=3,@6/$5( I<2@2)8c0"v9)V)3N-!U1!cF>nRKqSKwVLR3-tbUr_R$ .437 I,$D) >)cNCG-$}fZܽܽݾֹβҶϴѷ̲Ūؿʴ|kofQxnb}}{n{o{n}ud]TB?:('&    )#2)"@5+PB6^M>iUClXEUI:B>9=95>:5@<7A=8A=8C?:FA=HD?JFBEB=A=9<84 *(#KGCPLIJGCNJF=:6!!"'&&)'('&&'&&&&%%$$!! !!! &&& "%!'#+&!-(#*% +'!/*$/)$/*%0+&1,'3-(60*50*3.(2-'5/),& 2)<3*C;3bVKpcXnbWsg\j]SbVKfZObXNe[SaXQ`WP_VO`WP[SMWQLSMIOKHOLINKHNJGMHDID@FA=EA=EA>EA>B=:?;7B?;HDAMIFNJGKGDJFCFB?A>;>;9:868425203/,0-*30-42/31/20.-*(544221.//333565788222332//.333554553442332-.-232///;83*'$('%730YRJwky~}p˰ֹǫԸݿͲ۾۾ֹѴ̮ͯɫ⿡ŦήҳָͯշݾټܿغַȮ>"9Q-#d:/8\.$Z,#J$Q&L$. .-# R1"`:(E+',7%@)C#5F.#a=1d=1E(/P,%S/( &(#38M."D'),851&#- @)O7*A,!$L0%I,;"3:D' 3C#P)'8B%`>-T0 I)K0'B#>( >!A#;19993.4W.#D!=@$< ' [/h8$A7 K N!4 0! K+uE2O. -3>A<A0(4' X7)\;.R8-@*"' ^6'`7(?$)," 6H(I):>!O81393 00L+Y2U0"K* %?#g>2P/"K+11WMzkZO%3("8.'?4.D92&5'I<2B4*0X+v:)]-7O.!V2#fIApRKsSKvSJѷ6$ +/43?%J-$A&?Ȭ޾аݼָгݿػڽֺԸαͱ˰ũԼî}zmriRwma|p}qwz~ve_VEB>))(     ("1)">3*N@4[JYMAVK>YNAeYKcWIZNA`SEfYK]REQG;\PCdVJ530+++,--*+*%%%)))())%&& "##%'''((""" !    "##"##""""""###&&'&''%&&!""!"!!"!!"""""!""!!!""""##"##"#####"##"##"#"####$$###"#"###$%$$%%$%%%%&&''$$%#$$#$$"##"""$%%&''&''&&&%&&#$#######""""""$$$######$$$$%%%&&&''&&&$%$$%%%&%%&&$%%#$##$#$$$%%%%&&%%%%&&&&&&&&&&&''''('&'&%%%%&&%&%%%%$$$)(&31.640;84@<8@=8=:6<:6B?:A>:><7@<7?;5@<7A=8A=8?;7@<7@<7@<7?;6@<7C>9A=8D?9E@:E@:B=7A<6840('$ !! &%$20,C?9WQIg`Vtk_{re~tgviwjzl|n}n~p~pq~prtutrrrtutwyyyyupqvxwux|}}wwt~uhjcXTOH?<8220--,*+***))*)**)))(((())()*)**)*+***)()('''&'&&&&&&&&&&&&%%%$%%%%%%$%$%%%&&%&&%%&%%%%$$$$$#%%%%%%%%$$%$$%$%%%%%%$$$#######$#$$$$$$$%$%%%%&%&&%&&&''&&&%''&))))*)*+*++*+++**)**)++*,,,+++**)++*,,+,,+,,+-,,***(''((()(((''((')((*))+**++****))))))'((()(*****).,+B<8_TM|mapz~{tr}qzm{m~op~oqwxxzzz|{xwz}zss|~~r}q|pzo{|qxl}qsy~~z̮yj\xjwkwl                   >;8QMIOLHLIDJFBPLHRNJJFBGC?IEANJFTPLTQMNKHNJFMHDHC>ID@E@9E@;GB=GB=LGBOKFOKGHE@GC?GC?IFC=:8 30,MJGMJFLIE=:6#$$'''$%%"""!"" !'"($)$*% *% -("1+%5/)5/)2,'61*:4-:4.;5.;5/,&/'7/':3,pyvtmosb~n_{l^zl_yk_ymaxlbkaY[TNPKFMIENJFSMISMISMHSMGSLGPIDLFAHB>FA=EA=EB>HEBJFCHDADA>>;8;749649649638527416307426311.-,)'*'%643311...222455999333454210865:8687666566500/454122=:5-)')'%;62aYOswz{rϳܽ§ѵд׺߿׸ַַҲ׶ظԵˬݽݿָػ۽׻ܿ۽2 A$E#F$h<19f3)k6+L'O&Q&:) /# N. `:(H*(.2B%B#6B)a=1c:-H)! 4/ )'#46K,!H+ *,=51&#- C,!P7*9'.N1&I,:!3?"H)!3B"O(%8D&^;*T0 E&J/%A =$79:39795.2S-"G#=A$>! ' \/f7#>7 K N"6 0Q/!tE2H)/8@A;=+#.(];-V8,R8-5"1c8)\4&6*+  ;H(G'6E+$E2,:>!" @!6P-Y2U0#J)# R0&a;/P. E'.2>%fD;J1*-5+$9/(@5/G<5*.H:0E7./P'v9)b/!6P.!W4&kNFrTLvULlJAL:1ۿ-144E)!H,#@"<C)"ټܼطڸ޽׸ϱܾԶշټԷ׻Ѵϲ˯ŪҺzyrxnWvl`}qtu|wgaXHE@)))      )#3*$<2)L>3\KHE@HE@PLGTPJXSLUQJQNGKHBHE@FC?GD?JFALHCIE@=;7//-&'&$%$#$####"##"##"###$$$$$#$$$%%$%%$%%$%%$%$#$$#$$"## !!!!!!""!""  #"!)(%31-<94B=7D?9FA;ID>MH@NHANHANIAOJBRLDTNFUNFYSJ]VM_XO`YOc[Qd]Sg^Tg_Uh_UjbWneZqi]tk`ri]kcXh`UmdYpg\ri^sj^sk_umaxpc{rf}tgzrevnbog\_XOMHB;84,,*(('(((()(()())))*))))))))))()(()()*)++++++**))))))))))))('''''&((''('&'&&&%&&%''&''&('&''&%%$##"""!$$#&&%))(*++*+*((('''&&&%&%%&%%%%%%%%&%%%%%%$%%$%%$$$$$$#$$#$$#$$$$$$$%$%&%&&%'''((''''''&'''((''(''('))())(((())(+*)+*)+)(+)(+*),+*++*))((('))(((((((((((('*)(530NHBlaWyky}||{|}{xxvtuy|~{x{|zvsyxssut~r{zwlvk~rwxtwŨ|ue}                    C@JFBMHDMHCMHCLHDKHDHEAHE@IEAKGBHD?E@FC?B?;@=9EC@EC@CA?10.:73KHDKHCB?:''&.//011-..())#$$ !!    "&!'")$)$)$*%-("1,%3.'3.(61*61*83,>8193-(".';5.TJ@ɭŪ{zwuq~nu|orfseYk_Tk_Uvi_qeZmbWpdZti_mcYcYQYQJQKFKFCHDAHC@GB?FA>A>:>:7;85<96;85;75;85:7596485330.0-++(&+)'6433211113334448993322210/.75397587644355400/343333:84-*',)'?:5i`V}}r{uʰƫд޽ۺַܽںܽغֹֹ׻F1*2=e3)l6,M(K&R&D&' E(`:(N. (.+ C$C%9@&a=1a8*R- &= ) " /%"95G)J,!**<60&#0I1%P7*/8 N0&H+83C%F( 3A"O(%8G* ^;*T/C$I.%@;"0093;892*1N*K&<@#># $ [.j;'I*6 L!N!5 /]6'qC0=!0=@A;5!,'\;-S7,R7--:d9)Q. * ,) >H(E&5O6/7'#! ?"+6F$7R.Y2U0$K* %^7-W4)P. <"16@& 0.3'!6,%;0)A70J?8?4.C82H;1F8..O&v9)d0"5O-Z7*oRJuUMxVLM*#uδ/648I,#F*!=+o_ڹӲݽвɪڼԵ׸ټۿҶϲǫռǰ}|v~s]vl_tssx}wgbYGD@++*    '"1)":0'J<0YH:hTCoZH\N@ZOCXM@VK?dWIgZL[OB]PCeXJ_SFND9UJ>cVJ:73*,,+,,(((&&&++*+++'((!"!$%&&(("## !!! !!!!! !!   !! ! !  !!!"""###$%%'((()))***++*++)**)***+++,,*++*++*++)*)'('(((+,+,-,+,,()(&''&'&%&&%&&&''''''(('(('(('(('('''''''&''%&&$%%$%%%%%%%%"#""##"##"##"##!!! """#$$"##"#""##$%%$%%%&&$%%$%%$%%'((')('((++*=;7VRKke\undwpevocpi^kdZhaWh`Wb[Q\VM\VM_YPc]TgaXicZle\oh_mg]kf\gaXc^Ua[S_YP\VN\VMXRJID>31.""!!""$%%%''&'''((()))**(**()))**)**)**)++)**)**)**)+*+,,+,,*,,)**)++)**)+*./.;:7KHCPMGSPIQNHJGBCA=B@IFAIFAKICIFAHE@EC>DA=GD?GD?FC>FC>FB=GC>EA:5<94:72:62961961;83<8395041-1.**(%#" ""!$%$%&%%%%$$#$$$$$$%%$##"!  !! ""!$$#&'&()(()())))))()))*)*+*++*,,+,,+,,+,,+,,++++++*+*)*)(*)())')('))(**)++*+++***)))(('((''''''''''(('''&'&&''')((*))*))))(((((('&&&&&%&&&%%%$%$%%%%%$%%$('&630NHAi`V|qexlym|o~ptvwuuvuwy|wvvyzvx|w}rvvwyyy}{}l             /,*C?;FC>GC?JEAOKGRNJQLHOJEOKFQNJTPLMIDD?;A=8D@JFAMHDLGBHC>KFAMIDKHDMIEOKFKGCD@<@<8<9474/52/52.630=:7%#!:73EB>EB>.,*-..344233+,,)**)**())%&&"##   !#$ %!'"'"&!#$ &"*%,'!/*$0*%2,&60**&!$.' 2.)o_Ӵѳͯʮ˰ɭĨ{yp{i{jp{m~ocpdYcZRXRLVPKVQLVPKTNIPJEMHCGB=FAGA:796431/2/..+*.+)643543543665676898221000..-110443665443332./.232222531,)&.+(D?9kbW|}ouzŭ¨ֺ̱޽۾۾۽ָԶݾs_S0" :i<1C"e3)l6,M(G%Q&M$/ & ! A&`:(R1") 1) A#E&@ <"a<0b9+]3$1 C%* ! 1$!?6A#L."/);70%#3M4'M5(%@&M0$H+64G(>"3?!N( 7G* gD2a>,D%I-$@:#018/ <78:80H&M';?#=$ ! [/k<(N0!6 L!M!4 /]7'l@.32B"@A6-,( [:,Q6,O6+%C%e:*D&$-%% >H(E&:V?7)1B$$ D&D"0S/Y2U0$A$1c;0O/#M,45:"<$/2#4)"7-&<1*B70KA9TKC[QJL?6G:04$G"l5%`/ 8M+];/tTMwVMsQH5375A&I,#E(>ϲұɪۺͭ࿟˩߽޼ݻٺշ׻پедŪҸëuu^sh[zuvv~}wic[GE@..-   #/'!:/'K=1YH:jUDr\J`QC[PDZOBWL@eXIh[M\PC]PBbVH_SFOE:SH:[WOoj`}vktz{wr|owk}sg{rf{rf|sh~vk~wl}vk~xm~xm~wlwkyqfypewodwnctk`qi^`YPC?9'&$  !! !! !!!!!"""#$$$%%#%%$%%%&&&''&''%&&$&%$%%%&&&''&''%''%&&%&&()))**)**'(('((()()*)541LHB_YRjd[pi`pjajd\e`Xa]Uc^Ve`Xic[hcZfaXd_Wa\T`[T]YR^ZR`\Tc^Vd`Wd_Wc^V_[TZVOTQKSOIURKYUNZVO_ZS[WPYUNYUNVRKQMGNJDLICMICGD?;96.-,'('&''&'&%&&&'&&'&&'&&'&&''&'''((')()**'))&''$%%#$$"#$"##!"" !! !!+)&@<6RLE\VN`YQb[SaZQaYQd[Re\Se\Rf^Th`UjbWpg\uk_xl`{pctgxj{l|mouvtuxutuy~s}q|qxz~tju}v}r}svz{{}}xfsy~r              ?<9MHDKFBGB=HC=LGCPMITPKQMIQNIQNJKHDJGDGC?B=9@<7B=8C?;HE@PLGQMHLFAMHCPKGMIDHD?DA9<8473.3/*1.*3/+=:6?;7!1-):620.+'((344022.//-.-+++'''#$$#$#$$$$%$        !! !%!%!(#*%,& ,'!#-' -(#{ϲϱշܽٻնػոϳ̱ƪƪ˯ӶɯĬغˮyt~pui|peznc{ncxk`re[pdYi]Sf[Ph\QdYOYOGQHAIC==8531.20./,*,*(1/-210332554676676/0/-.-,,+0/.21033255433100/333222431.+(40-JE>ndY}rv}êѶ۾ۻ߿ݾٺۼ޾ݣz& 6i=1D$`0'm7,S+D%O&Q&:% " :"_9(W4$+0) ?"E&@!;a;0b;/H*(R-'5! & 1#!I&=;M."1)620%#5N5(J3'" F*"L/$H+65K+"9 3= H%4G* qN:pM9E(G+"?8#0181 =:6300B#Q*<>!>& [/k<(Q2#9 L!N!5 /a9)g=,16J&?A5,0 0`=/Q7,J2(L*b8)9 * 3)=I(D%C*#R<5 * 0 6!H(>, W1X2S/$4G'a;0N.!G(26<#203' 5*#8-&=2+C81LA9UJC\RKMA8H:08) -A!B!8K)dB7wWNyVMX70p`#08P2(P2(I,#ܽӴԵΰťԳ߽ϭӰԲҰ״ٺίӶչۿ׻ѵӸǭռʱpu]peWz}uwtz|wje\JHC11/    .& :/'K=1XG9gSCr]KaRC[PC[OCWL?dWHh[L^RD\PB`TFaUHPF;QF:aTGA<7+--+,,)))%&&******&''!"!#$$#%%!!!   ! !!"##"""###$%%$%%%&&&'''''''''((()))***+,+,,-..-//-//-..,..-././/-..-..-..,--+,-+,-,--,--,---..-..*++)**)**)********)))()))))())%%%$$$#$$#$$#$#$%%&'''('((('((%%%$%$$$$$$$$$$&&&&''&''&'''(('((&''&'''((())()))**)**())())())---;:7ROIic[~vky}p^XP641%&%$$$$$$$%$$%$$%$%%%%&&%&&%%%%%%%&&&&&())())())()(()))**)++*++)**())*+++,,+--+--+,,+,,,--;:6VRKpj`~vkswxstvt~q~vkvndslbqj_tlbvodwod|th|ti|ti}vj|uiwpfslbnh^mg]pj`uodwpexrfwqfvpetndsmcsmcsmcrlbke\^YRGE@//-$%$"##""""###$##$####"#""""!"""###$$#$$#$$!##!""!""!"#"##"#$#$$#$$"$$"##!"" !! !!""""##"##"##"##""#""#"###$$$%%%%%$%$"##"""""""""#$#$%$$$$###"""!!! ! ###$%%%%%$%%$$$$%%$%%#$$#$$!"" !     ! !!!!!! !!!!! !"!"""!"!   %$#.+(51-840951;7295084/951:6196185073.51,62-95/<72;60;60<71>92@:4A;4?93@;4B<5D>7IC;PH@WOFof[{yzxw|wv{pulc|qwwtzlyjwy        0.+HD?MHDNIERMHRMHRMGQLGOKFRMIPLGOKGMJEJFAGB>GB=D?:D?:C>9B>:FB>MIENJFKGCMIEPMIOKGIEAB>:B=9EA=B>:>:6;74951951;72@<8HC>=95$!  '%!&%#..-+,+()))**)**&''$%%!"" ! %&%%%%"##            #% '"'")#"$*%E<3yŬͳʱʯĩƬ̱ϳͰŨϲݿѴۿ׼ʹƭپԸϴγϴδ̳{zvqqrrpxj{mak_T`ULIB<72/2/-.,*)'&-,+//.221333333344000..-,,*/.-00/10.4323313324542225421.+<73SLEsi]|swyܾƬʯոݿݼδ  " f;/L)!\.%n7-V-!B%K&Q&D& $ 5Z6%R0!./+;E&E%@!c<0b<0=&&P,&8 &32# L'D!9L-"2(310%#8!O6)G0%' I,$K."F*47L+"/4= B! 5G)pN:oL9C'G+"?5$02 62 >:0-127D"<>!>( Z.k=(\;*BL!L!2.! h=,\6'-@"X.!?A1 ,81[;.R8-C-$T/"`7'1 ;"0=I(D%O6/H5/  D)F%7(P-W1!M+ '_7-Z7,P. A%46402#4)!6+#9.'>3,C81L@9UJC^SLRF=H;1=.%5!>#/4 E#gF;xWOwTKE"еvh--;!\<1L/&H+"9ھغѳͯåɨִ޻ձ޺عͮ׸׺ֺӸͲ˱ūؾ̳ĭ~rzalaS|pwxt{zzoi`NKF331  !0)#<2*H:/UD6eRAs^LaRCYNAWL@TI=`SDfYJ]QC[OAaTFdWIQF;PE9\PC@;5+,-,--***&&&)**)*)&''%&%"#$"#$ !!"""!"! !  !!!"######$$'(()))'(('((())()))*+,-.-..-..,..-//./0./0-//-././0.00/01/12134234234234123022012012/00.//.00.//+,,)**)**)***+++,,+,-*+,*+,+,,())'((&''&&&%&&&&&&'''((())(**())())())())(((())(*))**()))**)**())()))***,,+,,,---//.///00.///00554DB?YUOqlbw|faX<:6&'&$$$$%%'((())()('((()))*)())(((())())())())'((&''&''&((&''&''()))**,..-//-//-//-..-//,..331MJEkf\{o|~yvuuvz{{wssuvvvsuus~r}q}q|q|q}q~s{pxrgb]UEC>-,*"##!!!!!!!""!""!""!!!!""#$$#$$#$$#$%#$$#$$"##"###$%$%%$%%$%%#$$#$$#$$$%%#$$!"" !!!"""##"##""""##"##!""#$$#$$$$$#$$"## !! ! !!!!!!!!!!! !  !!!!!! ! !!    !!!!!!!!!""""#""##"#"!""!""###%%%%&&%&&%&&$%%#$$"###$$$%$#$#"##$$$(('42/?<8GB=GB8C@:EBVQIvncz{}uv}y~s}rtu{p|täq~o       ! ?;8JGBOKEMICKGBOKFSNIRMIRNJQMITOLVROUQMSOKOLGJFAJFAKFAOJEOJEHD?C>:GC?KFBJFAHD@GD@HD@KFBJFAFA=EB>@=:;7473/840>;7FB=HC?KFAIE@D@<<96)'% $#")**)++'((&'&%%%%&&#$$ !"" !!                       % '#WMCsesuuvtƭʯ˱̲Ӹھ©۾չԺêéūͲҷжǮԹƭ~|ssebWNC=81/,-+*)'&0.-220665676566344010///..-00/32132122000.2213320004303/,E>9`XOtgx}}ƬéǬѵ۽ٺ f:.S.%Y,#l6,V,!B%M(Q&N$.% % 0/%-.:E&H'<V8,Z$3?I(I*"ZB:YB::$ $G*D"- C$T0%C%1h>3S2'O- ;!65013'5)!7+$:/'>3,D91LA9UIB_TNVJBH;0@1(0  / @nMCyWNfEp[IaQBVK?UJ>TI=\OAbUG]QD]QCcVHeXJQG<9ZVOzsh||ymc]UA>9--+'''&''&'&%&&$%%#$$#$$#$$$%%$%%%%%%&&%&&$%%##$#$$$%%$%%$%%#$$!"" !! ! !! !! !! !!!!""###$$#$$######"##"##"""!""!""!!!   !!!!!!!! !!!!"! !      !!!!!!!!  !!"#"""" !! !!! !! $#"53/LHBb\Snf\ri_qi_sk`ulasj`nf\ldZldYjbXh`Vg^U`XO[TKYSK]WN`ZQc\Sd]Sd\S^WN[TK]VM\VM]WNf^Tyoc~y~uvzo~tivk}q~s|q|q{p~ukypf}r~vxzxzftfz       10-NKGRNJKGCKGBLHCOKFKGCJFBHD@HEBEB@IEBPLIMJFJFCKGCLHCQMGQMHRNIQMIQMHMGBMIDNJFLHCGB>IEALHCPMIQNIMIEHD@C@;@<8;72:61>;7DA=IEAKGBB>:<74B>9HD?=:7,)' "#"''%'(&%&$!"!                   ($ RIBZQH^UMf]Ui_VlaWsh\uisuw{}©¨¨ȯεҹӸֻêĬۿԺʰŪ΍uocXGA<1.,-+)'%$/-,10/221333455677010...//.11066498766511011033211021/40,LD>k`U|n}~zĪɮȭӷھ߿Ͱ* e9-Y1':O%J%B%N*Q'Q&8% " @(X8'$, /5D%J)<H1&Q;.>+!+ '(&&1$K'J%6H);"(000$$E-"P7*9&1 L0'J- E)3< K+"" 4;E#7I,!qO;nL8B&C&?2&03 62 ?@0 .+-3K'?<;( Z.k=)^<+CN"K 1.$k?.N-!.P,!T+88"-4 A3W:.R7-5!B$N,!  ?$C'G$I'M1)]E=X?82 F) K+!= ) M+!S/$M,"d;0h>3O/"K+76202#4)!6*"8,$;/'?3,D91KA9UJCaUO^QJH;0B4*3"$.E%rQHxVL]5&ѳD#:9M/&W9.H.%8޽ݼܻٺѳշչֺؽӸеҶϴ׽ζ{yvdmcRxm}{r|y{zwoePLF331   *#<2)G:0SC6`N>mXGbRCVK>WL?WL?ZN@aTFdWI`SEcVHeXJQG:)))%%%%'''((*++*++)**()*)**+,+*++*++*+++++*++*++*++++++,+*++*++*+++,,*++*+*++++++++++,,,--,,,542LIDmf]u~~~qph^PKD42/'('%%%$%%%%%%%%$%%#$$"##!"#"##$%%%&&%&&%&&%&&%&&&'''(('''#$$""" !! ! """####$$!""!"""""""""""!""""""##"#####"""   !!!!!!!!!!!!"!!!!!!!!! !!!!! ! ! !   !!!!"!!!!!!!!!!!!  ! !! !!!""!""!""!!! ##"862XRKumc{owxut}q}shxodxod{rfxk{nrus~q|o|n|o|oylzlqsruzzxlxmcrh^wnc}rgyodpg^wmd|rhvkyoewmxv{p}r~rrymtez              #! =:7KGCOKFOKGMHDHD@GC>NJGKGCHD?HD@DB@?=;C@=PLINJGGD@EA=KGBUQLVRNWRNUPLRNIMIDLGCNJFQMHMIELHDJFAMJFSPLTQMROKLIEJFAFA:EAGC>JGBHDAHD@A=952/#!  "!!!                952IC?FA=B=8C>9ID?PICVNGaXOmcYth^ylazl`pcrdqc~oapavf}mqw}zz}˱ڿìؼϳ̱ǬϴԹϵɮ˱˲sk_TF?:1.,.,*(&$-,*/.----000121565///,,,..-11045366544422144356533310/:51ULDwj]x}yڼȮͱѵֹܿϲB-& _4)]3)2FJ$C%N*O(Q&B% # 4 dA-& * 04E&J(@ F/$R;.B/$.')&&1$ L(Q):B$A&0405.+ >&N6)4 5L/&I,B'2?"A$ 49C!8J,!qO;nL8B&A#?.'03 33 @A ;.071==;8( Y.k>*_>-DN"K 1.$i>-C%3U0$Q)42,;A4 T8-P6,-D%@# # +?$D(E#I'H*!I0)H/(3 l?3a8.4 ;L(B$Z4*sD8a;/O.!B%5501 3' 5)!7+"9-$;0(?4,C80J@8UIB`TMdWPJ=3E7.-" ) G'rQHlI?xYH9=A$8 46:߼Ȭھ§ƫ̱ʰʰèռDZysdlbQ|p{{zm~x~|{voeMIC210      +$<2)G:/TD7bO?lXFdSCTI=XM@YNA\OBaUGfYJ`SEbUGgZLRH=SH:>:6>:6EB?FB>IE@IE@IE@MIEQMIVRNVSOTPMQMISNJUPLSOKKGCIFAHC>HD@LIENKGJGCGDAEB>B?:B>;EB>IFBJGCHEAJGBNKGMJFKGCD@:C?;@<8@=9/-*!! "!! #"!##""#""##$$$### !! !!!!!                0-*KGCFA>EA=E?;E@;HC?LGBOIDQKFRMHUOIXRLWOIXPH\TL]UN[SLWPIYQI_VNh]Sxk_tgqdobsd~nv{Ĭīêƭ~ofZPC>91.-.,+*'&.+*.,+,,+-../00666211--,//.00/11033300/00/3434541110//@;7[QH}m`}xָʮ˯αػʬ^J>[2&a6,2EJ$C%O+N)O&J"( # $ eB.4) 12D%I(F$A)R;.D1%.&*'&0%$P*T+C!<C'0506./ 9!L5(19N1(I,A'2B%<7+ W-k?+bA.E N"J 1-$ f<,>!7Z2%S*3,-C?/P6,O4*' J)6 ( & 30?$D(D"I(F'6701oA4V0'% B!@/ h=2pC7V4)N- ;!6202$4( 6)!8+#9-$<0(?3,C80J?8TIB_SLgYSN@7F9/9%4!! aB8xULV7/е9>!@$55r޾޾ɫ۾ũѳӷƫеγҹʴ~tei`Ns~|{oy{{|xqhKGA11/    *$9/'C6,QB5`M>lXFfUERG;UJ=XM?\PBcVIfZK_RE`SFh[MUK?UI=gXJRI@!#%()**++***)++&&&###### !!!#$$"## ! !!!!#$$$%%$$$#$$&&&&''''''((((()***+++,,*+++,,,--*++*+++,,+,,*++)++*++)++)*+)*+)++)**)**)**())&''%&&#$$#$$#$$$%%%&&%&&%&&&&&''&'''((('('&&%&&%'''))))))()(((('''''''''&''$%%$%%%%%&''****++***)*))**)*))*)***,,+--,------.../0/111232332232111000010111111121011121122221<;8RNHnh^}p~zvmcNIC21/--,-..-.--........-..,--+,,+++++++++++++++,,+--,..-..-..-//.//.//.00/11011011000/////0/00/-.-//.;95LHBa[S{rgx{wtw|vvnc[UNA>:210,--*++)**))))**())'((&''&'')******+++++++++,,+,,+,,*+,*,,)*+(((&&&'(('(('''''''(('''%&&%&&'((%&%#$$###$$$$%$%%$%%%$%$#########!!! !"!"#""##"##"""  !!"##&((&((%''%&&$%%#$$$%$$%%$$$"""!!! !! !"""##"###$$"$$"$$"##!##"##"##!""!""#$$$%%%&&%&&%%%%%%&'&0/.JF@me[t}}|}|yurruuwvvxyxyzzyluu}mylr{z}oqyszo{p|qt~ryk|kcWL~p}                 $" LHDPLGQLHNIEQMHSOKRMJMIEJFBFB>D?;C>9B=8@;6?:6B>:FB>LHCKGCJE@ID?ID@LIEKHEHFCLIESOLVROVROMIEIE@KGBKHCMJFIEA@;7A=8E@;D?;C?;C@;DA=GD@GC?JGCOLHSOKSOKPKGLGBMIDLHDOLGNJF:73$"!***,---.-./../.-..,-,,--,---...0/.00.///.-60*+'"                    $!@=9KGCE@=EA>EA>FB>HD@EA=B>:B>:A=:C@=GC@IDAKFCKFCJFCLHDNIELGCJE@QJDYQJ`WObYQe[Rh]Tk_UpdXyl_}obqdqeqezmuxz{|{}x~obWME<73.+*)'&('%-*).,+.--,--.//566111---./-..-/.-110//.//.232565111.-,>95ZOHqcvԶݾȬʭǪ̮ѳܽܿӳs^O#+c5(d8-4@J$C&Q+G&H#N$C!+ _>+H+& 01 D%H(L)>%Q:-E1&.(+(&0..S+T+E#6=!0405' /2D.#0 ;N1'I,>$3F'?#28G$8H)pN:mK8?%?@/(1+) 6AC S)=6>!17?;6, V,k?*eC0C!K J 0-% b9)48X2%T+1,1G?1Q7-L2(" " =! ( ?T) A!/>#D(C!I(H(86:# 8!qB5P,$7;H$8>"pC7i>3M."K+7501!4( 5)!6*"8,#:.%<0(?3+C70I>6SG@^QJhZSUH?F9/cLArUI?-'hJBtQGaK@&<@$=#46ؿ߿ܽ׸ѲƩα۾չͲԸɰɳrelcOvzr|yz}|vlKHB10.       *#8.'B6,OA4`N?mZGfVEQG:TI=VK>[OBdWJh[M_SE^REi\NYNBVK?iYKVLB "$)**)*+*++(*)%&%"#"""""##"""!!"""""""""####'''())))))*)***---,--,--+,,,--,--+,+)**())'((&''%&&%&&%&&%&&%&&$%%%%&$%%$%%#$$"#####"""###$$$%%%&&&&&&'(')))++*+,+,,,--,--,..-//.//-.-,,,+++*+**--,..-..---,++*((())(******)**)******++*++,,,-.--.-------./..//.//./../../////.///0/010010/0/.///0/000010231><9TPJhbYxl}wlUQJ764010/0/////00000111121010/0///.//.././/./0/00/00/00/00/00/00/000000000010010111010/0//0//0/,-,,,,..-763KGAf_V|th~qr}qwzxpe]WPDA=210+++,--,,,*++*****************)++*,,+----.-,,,+,++,++,+*++*++*++*++)))()((((''&%&%$%$#$$"##"##$%%%&'$%%$%%#$$"##""""""""""""""""#""##!!!!""!!!   !!!"##%&&&'''(('(('((&''%&&$%%$$$$$$$%$#$$$$$$$$#$$#$$$$$$%%#$$!"" !!#$$%&%'''()))))))))**)**())****+++,,+,,*++)**())**)863TOHrj_}pusvyzzz|zvi}m]sczk]tfYodXpdY~pcug{l|nuhvk_ti^wmbxncrh^uizk|k]QExjz            63/MIDMIEPLHQMISNJUQMVQMQMILGCJE@JE?FA:GB>HC?HDAMJFIFCHEAIFBIFCKHDMIEID@GC>GC?HD@HEADA=?<8B>;KGCQNIOLHFDBFC@EB?C@=@=:B?;8863#"!!"""#" !! '#($        740C?;HDAJFBHC?E@;EA>@;8=84>:5B>:EB?FC@HEBIEBIEAHD@KGCJFBHD@D@=;85>;8B?;GC?IE@IC?HB=JD>MGAMGBNHBTMF`WOmbXpdYvi]}ocugtfqcrdvi|nbdYPG@;741/-+)'&'&$,*)-,+///,,,--.233.//+++..---,,,+---///--,1107874440/.?:5VNEvg|~xҵ߿ɭгΰնܽݾںĝp6 l9+g9-6B!P+C%A$;"G%P%O&1 T7&];)" / 5C%G'P+ >#P:-I4(3 7!/)&10/S+T+C#36.8:6 & +?*3 ; N1'J- <"3I) =! 16L'9: I*qN:mK8?$?@ 4*1*) 8B D!P(E!7 B#$ ' ?<4. U,k@+eD1;GJ 0-& `8(48"W2&X.!1,5 I>0Q7-H.$(3+F"].$E$,=#D(0B$H(95@0<#oA4L("E#Q)G#/ H(nA6_8.M- B%5203'5) 5)!7+"8,#:.%<0(>3+B7/I=5RF>\PHfXQdUMbQFnTHyYLgK@cG>tSIc?6=-*_C7K+ C& 9!4,pZOݾҳʬίۼгӶӷϴϵĩϵª|nbjbNxxtzyz}vlKGA00.!!!     (!6,%C7-O@4_N>mZHiXGQG:VK>TI=[OBdWJi\N_SF]QDi\N\QDXL@gWIXND"#$**+())+,,())&'&()(%&& !!!!""  !!!$%$&'&&&&%&&$%%$%$((()*))))))))**---,--+,,*+++,,,,-+,,***)**)**())'((&'&&&&&''(((())*++*++*++)*)()((((()()))()()))()(((()*)*********)))))())(***+++++****)))**)++*--,..-//../...-------..-...//////...,--,--....//-.---,..-//./0/./.././/.//./0////////0//0/010/00122232232222564A@=QMGhaX}uitznVRL664010/0//00010010121122121121121232232232232121121111010010010010010010122233233132011/00010.//.//.//110><8VQJtla}py~{twlmf\VQJA>;210*+*(((*++--.,--,,,---././/////...-.--.-././//./.-.-,--,--,,,*++******())())())&''$$$"""!""!"""""###%&&%''&''%&&$$$#$$#######$$#$$$$$$%%$$$####$##$##$##$#$$$#$$$%%$%%$%%$$$"##"#"!!! !"""##""##$$$%%#$$#$$#$$#$$$$$$%%%%%'(('((()())))***+++,,+,,+,,,-,+,,*++*++)++())&''%&&%&&%&&$%%####$#$$$++*C@JFBOJEID?C?:EA=IEBJFBKGBQMIVRMUPKQLGPKFPKFOIEJFAID?JFAGC>D@:EA:6B>;HD@FA=GC?LHDPMIGEB'()"###$$())%&&&&%?<9DA> 2/-EB>A<9A=9FB?JFBGC?B?;@<9DA>JEBIE@ID@HC?EA=FB?IFCKGDNIFMIEKGDJFCIEB@><.//-..,---///00.//--,**)++*,,++++E?8QH@SJCULDVMEXOG_TK^TL\RI^TL_VNWOIIC?;7420.-+*)'&'%$+)(/.-210------122-..++*..-//.-,+,,+///./.3329:9566310@;5RJC{m_|}~۽̯ѵ׺ڽܽ޿޿ֹҵۼȬtef.j9-9C#S0!A"N- N+J*H!Q&=G.hB.( 5AC%F&R-!> N7+K6*4!:#6-&000T,U,K(44-8<9'  9"4 ?"Q3+O2(;"5K+"9- 36M'G#HC?)Q7-F+"(& ,I$\.$B#) =#F)0?"H( 95@1(I) C"G$Q)@'+ =$@%M,;!402$4)!5)!6*"7+"8,#:.%<0(>2*B6.H<4QE=[NFdUNn]UvbWvZMwWJvVJuTJrOEN+"A89RHOzqӸܼ]>/M.#@$74ֺܻԴˬٺٻѴȭɮɯڿڿжzhogQvzuyx{{pOKD10.!!!    & 2)!?4*K=1\K;YTLsj_}pwxz~|zrg`ZQEC>+, &"($"(),&,-,...///00011021233122/00.//.//.//.//./.-..*++)**())())'''&&&%&&'''*+**++*++())'((&'''(''('%&&$%%$%%&''$%%#$$"""!! """"""!"""""""""#"#$##$$###"##"""!""!""!"""""##$#$$#$$$%$%&&&''())*+**+*+,+,-,,-,,,,+,+-...//-..+--,..-..+,,)*+)**'((%''%&&%&&&''()))**)*****)*))*))*****763YTMypf}rw{{~}zvtsrvvmaU|nr|qz{}|suxy}nsf{lyzzk}iXp           LIELHELHDMIEJFAID?HD?D@MIDQLGPKFUPL[WS[WRYTPVRMTOKQMIJFBHD?MHCPKFNJEKFBLGCOJELGCJEAFB?FC?FB=C>9?:6A=8KHDNJFNKGSNJRNJGDB)**'((###())'''###221+---..+++++*++*+++())*++-//*++,--.//,,-+,,,---.--..-.-**)&&&())+,+)*)$%%+,+011.//+++))(***,-,+++())))),,,((((((***(((())(((%%%%%%&&&&&%&&%&%%$$$%%$%%%###'''/00***//.00/.-,-,,10/321221210.-,0/.42143142075342031/752853;86=;8<96964853420#"")% >80G?7IA8E>7@:5?:5A<8@;7B=:C@=A><;8641/.+*+)'&$"%#",+*10/433121343566/00++*--,..-,,+**)--,--,1106763440/-:40NF?obUtz~۾ӷ׼©Yl;.=> V1"> w_NZ<0K*O)R'E"# ( P,29F!C$F&T."B"L5)M8+5#:#9 /%.04U, V-L(16,7<>!+  21?$Q4+N1(77O-$7/ 35E#F#A!6)-&* :B F!I'M(:<(< B(- + V,k@+eD1<EI0-( Q/"/;%]4&Z/!1 4N+[,"f>/gC4R8-@$+ & /S)Z-#:( ="F)0< I) ;4?50C"J%N'6&6E,#J-!H)511 4)"5*"6*"7*"8+"9,#;.%<0'>2*B6-H<3QC;ZLDcRKm[SvbWv[OvUHtTHuSIgB8:0)+H?CLBGl][ɮոjL=K,> @ ([F=ݼֶӵǬʯдǫǫ§̵tskU|o{~yyw{}qQLF0/,        %.&<1'I;/YI:kXFiWETH;]PCVK?_SFfYLg[L^RE]PCj]N\QDUJ>_QC\QF'('*++'((+,,+,,)))*++&'&!!! !!!""###&''&''%%%$$$#$$$%%&''&&&%&&%%%'(('((&'''(()))()(((()))***)))***,-,,-,++++++*++***)))))()((((())(**)--,---......--,,,+,,+,,++++,,+,,,--,-----,,,,,,+,,++++***++*,,+--,---...///010000///././0///../....-----,-.----,,,*+****'('%%%$%%$%%&&&&&&&&&''''('''''(''(''('((((((()(+++-..00/321<:7LHCe^U~uivva[S:97///,--+,,+++,,,.//011122132233233122/00/11/12022255234122133243232011/00/00022233343344455133-./+,,)++/00887IGC`\Tzsgytuk[WQ{YLnWيkt{toqۏndnWbNuSEYC:(+$)"( %**,#*,*,,,---.-./..//...-..,--)**()))**())())'((*+*.///0/.//+++())'(('(''('&&&$%%$%%'(''((&&&$%$##########$$$%%$%%%&%&''&''''''((()()*)+,,,,,,---.--..,--*+*(((((()**+--,..-..-..,--*,,'))'(('(('((&''())*++*+,+,,+,,+,,*++*++,,,,---.../..///0/./...----,,,./.EB>_XQrj`}sh~q|}vw}|yxwwyy{~~wtf[Pxkui~rhxmzowm}rt~rtwzuuh{l{v}sr`P~j           631SOKLIEHD@HE@HD@HD?IE@ID?C>:A=8D@;HC>KGBNKFLGBPLGUQLSNJSOKUROTQNVSOVSOTPLSPLPKGMIDMIDRNJUQMRMIRMHVQLUPLRMIKFBLHDNJEJFAIEAKFBMJFQNKNKHSOLVRNEC@())'((#$$))))))"##+,,.///00,--,,,----.-,,,,--022.///10233/00-..-..-...//.//()(&''+--***+,,(((,,,233233,-,()(+,++++-..-.--../0/***'((...+,,------******+,++*).,+/,++)(-,+/.-***++*/00.//-..+,,***--,//.///111455/00-..,--,--+,,011)*+'((*++*++'()&'')**$%%"#####$%$#! &$"(/*>71:61852631853:76854521/,+,*(&$"%#!.-,110222221454677222,-,..---,--,++*//.///1104441220/-2.*B=8[QH}pc|u}{ҷҶؽھܾݿ޿ًcTm:-B :W2";q_`D7N,!f:*Y-!L%-! G&J+ Q/$O&C$E%H&F$H1&O9,6%9"9!2%+05J(V.F%+ 6,6<>!) 1/A%Q4+M0'69P.%5/ 35C"F#B"7!# !  * ;B F"F'M)>>52E*!0* V,k?+fE2=BH/-% E&/;&^5&W-,;!X3$tA1uL:gD4Q7-?#0" <\.#W,"5( <"E)0:I) <4>66C"L&G#)&9B"L+?$304'!5*#5*#6*"7*"8+#:,$;.%=0'?2)C5,I;3QB9ZJBbQIlZQvbWx]PuSFsSHnNCK,$- (#&914I>BJ@E{ibV6)H(<AiTIܽ߼ݾۻԵ׹дҶӷԸԸӷɮվʶŵ~zpZwls~|{uwzoQLF.-,     %1( >3)I;/XH9hUDgUDUJ=_SEWLA_SFfZLl_PcVH]QDj]O_SFVJ>[NA[PE))(+,,'((*++*++()()**&&&#$#  !!!"! !!!""#$$###!"" !!!%&%&&&'(''(')*****)))***--,-,,,,+,,+-,,,,,,,,--,,,,,,++,++,+-------.-..--------.....././//./....-..--------,-,,--,..-...//.//.///////0/010000///////0/000/00/00-..,,,+,++++****+*-...//---,-,+,++,,,,,,,,*++)**()))**)**((('''''''(''('((('(''('''''''((')))*+++++++*,,+531D@;WQJld[{oyd_W=<:122///-..,--+,+,,,-../10010000/0/...+++))))))*++,--+,+*******++*++*++*+*)**)))***,,,,--,--+,,*++*++*++,../00443BA>YUOtndvЙƖÕ|ݔqˈi{_jT_LyUEeJ>^F9@<8?;7B=9FB>GB>FB=IE@MHCPLGROKRNJRMIQMHPMHPLHPMHNJFSPLURNUQMTPLOKHOKGSOKTQMRNKPLINIERNJROKTPLNKGNKGMJGIFBJFCPLHSOLNLI--,..-531310''''''$%%'(()))$%%)**,--,--*++())*+*,,,-..*++...121121133./0-..-..+,,+,,,..&'''((/11*+++,,())*+*122232*+*'(',-,+++,--,--+,,-..,,,'''...,,,./....+++***+,++++---0//.-,.,*.,+,+*,,+/00011.//+++*+*//.//.,,,--,333011.//-..,--,--122+,,,,,.//-.-+,,*++.//***)*)))(,-,)**"""""!$$#''&''&&'&'''$%%"## !!&&&'''*++%&&&%$/-++)'+*)*)(@;6;74420853.,+*('%#"$"!//.00/111222344667343--,..---,--,,,+//-///010444333420,)&0-)E?8dZP~tgz{u|ɮɯԺӸչ۾ܾغ׹ع޾ӵϱڻݾۘsal7*H#8V1!<n\`C6N, i<+e8(P%5 < Q-!K.$Q(E%E&E$I&D+!P:-;*8":"1%)02>"V-< -6-5:.  ,0E(Q4+I.&2=!Q/&//3H%E#B!;!J+pM9pN:C'>B#9"#  ! . <B G#F'J(D9:(E) 0% V,k@,hF2? ?I6 *"90;& _5&P))>$Y3%tC2uL:eB4P6,0" 4" H#^/$M'-( 5F$?5I) =4=6<D"M&=&)=B!I)613#6+$6+$6*#6*"7*#8+#:,$;.%=0'?2)C5,I:2PA8YI@aPGkYPuaWz`SsRFtSHY=3$)'*)'*$!#'"%1*,;24E64Q2#F&=/yk޼߿ݼֶӶαѴҶھ׼ȭйκɹ~xoZ~ui~r}{u|qynOKE-,*      %1(!>3)H;.WG9cRAgVDVJ>`TGWMA]QDdXJk^OcVH\PCi\MaUHWK?XL?YOD))(-..(((*+*)**((('((%%%###  !!$%$"""$%%%&&'(('(('(('''((()))**)++*--,././/////---,,,+++*+*)*))**++++++*++*+++,,,--,--*++)**)**())(((((())))))***+,,+,,,--,--+,,+++****++***))))))*++*++)**)**(((%&&%&&'''+++-..011122/11/00.//,------.-,--,--+--.00/00.///0//0//0//00010010011010./....///000/00-..---00/975JFA^XPrj`~r}~ywy||yxm\XQ986/00.//.///0/.//././00/0/.//././//000.//-..././0////./.---,,,----.--.../.,--*++)**,--011133011.00/11011011122011444A@=URLpjas߬əĕ~zwxwwwvvvtvyzz|~}~uܑnădiSuSEYE<&.0 (-!,.,//./.-.-,-,+,+)*)'(('''()(*+*+++,--,..,.--..,--+--*,,)++)++(**'))'))(**(**())())&''%%%$%%$%%$%%$%%%&&&''&''&&&'('()()**++++,,*++)**'()())+,,-.../.,,,(((&''&''&''&'''('()((('((')**)**'((''''((())((('(('(''(('((,,+B?;icZy~{zy{yxvsv~ys}s\SJvhymbwkznvk}shzpfwmcri_qh^si`xndym~qwjzkwhwhuf]UNwm              OKGQLHOJENICMHBLF@LF@JE?LGBKFBJFALGCLHCKGDGEBKHEQMJMJFKGCMHCSNINJENKGQNJROLTPMQMJRNJSPLSPLMIFMIDPKFROJQMIROKPLIPMJOKHEB>FB>KGCOLHIGD&&&+**%&%&&&$%%%&&&'&'(()**+,,,--)**&''&&&'((,--***---233122243/00,---..,--,--,--&'&&'&-//*++)**%&&'''/0/011(((''',,,,-,*+++,,*++-../00$$$***,,+,,,---**)()(+++---///000100.-,-*)*)(+++/00.//,--*++++*00///.***++*111/00-..,---..--.011(((*++-..+,,,--+,-,--*+**++))(,,,))* ! %%$(('))())()*)***)))&&&!""%&&(((,--%&&$%$)**%&&&&&%&&PH>TKAD>6OG>A;4.*'#! &$"10/.---..///122455333---//.--+,,++++//.////0/233332421)&#'$"4/+JC<`XOulbxmp©ƬδպܿڼԶֶ߿ڻ׸ٹݾָʭ̯ͯͯ׺αвݽ޿Ԝwdi1$L$5M+@ rYIZ<0O,!j=,m?-V+ < 1Q,H-#O* D"A"B"K*!B'Q:-B/$7!:#3&'/1="V-8B%N*33;&  '0G(Q4+G-%1@#Q/&,/6X- M'A!;!K*oM9pN:C'=B#6 #  "/ <B G#E'F%I#8 7 A'0# U,kA-iH3C%=P"G!//+6#`6'I%)=%\3%uE4uL:Y:-D,$$ $5" P'^/$D"*) 7H#G".S0%G'1<6 @ E#K&1 &.A!C!A$21 7*#7,%7,$7+#7*#8+$:,$;-%`PGkYPvbX|cWtSGnNC=' +)--+/%#&&"$("$.%%. ;=. 4',и޺ܹ޼߾ѱ˭Ͱ̯̰ҶԹʯڿζʶǶxulV}sgv{{uym}vlOKE,,*    %1(!=3)G:.UF7cRAiXGVJ>aUHXMA[OCcWJh\M`SFZNAhZLcWIWL@UI=YNC,+*.//)*)*++*++'('&''$%%"""  !""%&%!!! #$#%&&%&&'''****+*+,,,,,,,,+,,*++******)**+,,--.-..-..----..,--+,,+,,+,,,--+,-+,,+,-,--)**'((&''$%%"#####$$%&'')**)*+())()*()*'))'(('((***+,+*++)**)*+)***+,+,,*++())'((())++++,,,---..-...//011011/00-..+,,***)))())())'(()))++++++,,,----.--.--.--------.-...-.-,-,,,,,,+--+641GC>]WOri_wks{}}qa\T<;9011/00/00011011/00.//,--*++)***++,---...//122344233122011.//././00/00/00/00,--())'((*+,-//,..*++*+++,,-.//11/01/00232;:8LJEc^V}ukåƙŖ~tikhfgdfhilijgghhhޑhkoqvy{~zvuҊisZYIVB:!,.*-,//011/0/,,,)))(((())())())'((&''%&&$%%#$$#$$#$$#$$#$$$%%%&&'(''(((*)*+++,,*++*******+*)***+*+,++,++,,-.--.--...//-..*++)**'((&''''')**-.--.-*++())'((())*++*++))))*)******)))()()))***)))())'(('''''''''&''/.-JFApj`~}yqg[{m`ui|pynvkuj~tiujvk|rgxnd{qfxmzntho`}l[yiYzk[D<4NH@                  &$"MIEQMISOKTPLSNJTOJUQLSOKSOKQMIOKGTPLVRNUQMLHDJFBNJFKGBHC?KGBOJFJFBGC?HEAHEBMJFOLHUQMXTPWSNRMIOJFPLGQMJRNJROKOLHMIFOLILHDJFBIEAIEBB@=$$#*)("""####$$$%%$$$*++(**)**-..---)**'(()*)./...-/0/244/00133022-..///...,--,--)**&&&*++*++*++&'&$%$,.-121%%%'('+,+,--+,,+,,*++,--122$$$''',+++**-,+*))))(**)+++///-..-.-*)()'&*('+++.//*++*+++,,***..-...+++--,//....-..+,,,,,,,,-..&''''(*++*+*-..,..+,,+,+*++&&&***''' ! $$#''''''()(*+*(((&'&#$# !!$$$'('+,,$$%&'&*+*'''%%%)**:84LE>XNCWMBXNCRI?*(%)'&20/.,,---...111565333---000*****)++*00////,,,///111320(&#$" ,)&940IC=]VNof\rf|ūȭ˯Ըٹطܻڻ۽ݿӵбʬȪвȫ̮ܵ{g-N%3F&D$K."N, O,!j=,pA/g6&M(! ( N*I+!J,#F#;<F%?"K1&B)5!:#71/00<"Q,, P."a8)83/   &1H) Q4+F,%.B%J*"" . 4W- M'B";!J*oL8qO;E)=@!.$   0 =B G#E'A!L&:4 ?%0# U,kB.jH4E&;P"M%?$+)0a6&H%(?(]2$vE4uL:L0$- ! %>"23T* ].$A!* + ;E!D 5~N8mB/0;5%C"F#F"'$ 4B!B!9 06)"9.&9-%8-%8,$8,$:-$;-%<.&=/&>0'@2)C5,H90O@6WG=`PGkZQvcY~f[uVIV<2%  &%)(',)',2/13-/*; ;. C9:TOWì޻ط߿ӳɫΰѳѴϳβĨҺ̷ƴuvmV}sg{x}vxm{siPLF,,* !!    $/' ;0'F9-QB4`P?hWEVJ=aUHZNB[OBbVIj]O`TGYNAhZMeXKWL@SHHD>KFBOKFQMHNJEIFAJFBROKPMIJFBIFBMIEOJEMHDOKGPKGNIEJFAEA 3  &2J* Q4+E,$-9-(U,M'B";!I*mJ7oM9C'><'$   2 ?C H$D'?K%?7 8!1$ U,kC/iH4E&7O"P%C&+:$@*"c7'L&0 G- _2$vF5uL:J/#$ # (F&49Y,"[.#B#' - >@C .|M7rF2/ :5/C"G$H$0#9B >13#9.&:.':.&9-%8-$9-$;.%0'>0'?1'A2)D5,I:0O@6VG=_PFk[Qwe[j_vWKN."7)&+"'&++*.2/2IDEWLLB542-0HDHb]cTOW߾߼߽ں޾ٹظںݿػγβּѸθ͹vtlV}sgw|}{{pyrhRNH.-+!""     $.&90'E9-QB4]LID?JE@C?:C?;A=9D?;HD?MIEPLHOKGKHDLIELHDIFALGCOKGSPLSPLQNJNJFJFBIEAKGCFB=EA:6NHBk_Vxi}߿ŪʮʮԶܿػӵٻղaZ,"3D%B%B$L)pTEaOg8&k9'i8'-, M+K,!F-$F* <;D"A!D%D%4 :$: 9310:!J( S0#_6(? &  $3M+!Q4+A)!09$ (T+M'C"?!D%[7&R1"9>;% $  #3 ?C F$D&?E"D 9&.1(R*jC/iH4F&6O"V)R/") ?' C,$c6&Q);F-_3$vF5uL:G-!#- N+7?\.#]/$T. '/A :C ' wI5sF2/ :57C"F#J%. $ <B ;1 7+#9.&:-&:-&:-&9-%:-%<.&=/'?0'?0(@1(A3*D6,I:0O@6VG>_QGk[Sxf]lbpSHJ'9#"$%*+'+ %$(+)-/.0103+*.))///5@>CYTXUQZ`VYܹط߾޿ܼϱ̰ھδ˲ůκxulW}sgy|}t|ujVRK/.,!""  ",%7.%B6+O@2XH9_O>UI<`TGZNBVK>\QDi\NcWI\PBh[MfYLYNBTI0.+)**&'''(((((#$# ! !""!!! !!&&&   " "!$"!$"!$" #!# (&$*(&+)'*(&*(&)'$'%"'%"'%"'%#)'%+)')'%&$"&#"%#!%#!&$"&$"%$"#" #!  !!!""""""##"########"##!"""###$##$#"#""""$$$%%%'''()(((()**)*)&''%&&(((,,,442B@MICMHCID@FA:D@;GB>HC?NJFURNUQNMIFLHDNIELGBHD?JEAJFAJFAKGBJFBOKFLIEHD?FB=B>;D@=;97+,+//. #$#### *++)**'((((((((++*---/0/121344233-..)*)+,,+,,())+,,,--+,,())*++$$$%&&.//,-./01233133*++"#"'(((((())%&&'''*,,'))())%&&(('((''''%%%)('*)((&%&%$''&---*+*'(')**())-../01/11+--***())%%%'''**)+***+**++())())%&&###%%%%&&#$$%%%%%%&&&%&&%&&())%&&#$$!!!!"!&&%&&&'''"## !!!"##"""!!!!"!$%%#$# ---)++NF=aUH_SG[PDaUHaUH^QE>83,,+100332222010110..-.-,++****++*,,+--,+++---./.4201,(+'$.+'30,41.851D@<]UOznbzĩʮͰӵܽӷ׹ۼڹ߿ɮe']-#4:>"A$J'tb~[*m6#=% H+!K-#I.$G-$>:D"B"C$E&7!9#; :41/: G'U1$_6'A$    $3M,"Q4+=&29&  +T+M'F#D!?"X3"M,<":6&$  & 4@C E%C%?=I#9. #/ (R*kD/iH3G'5N"U'V1#( @)"C,$c7&Q):A)^2$vG5uL:F,!" $3L)5H%].$c3&M*%3E"7E!* uH4wI4197=C"E"J$. ) @!A 75'!8,$8,$9-%:,%:-%:-%;-%<.&>/&?0'@1(A2)B3*E6-I;1OA7VH>`RIk\Txf^ndtYN: $""'%%)'#&  +)+1/1/-0/.142698>CDMIKWF@GA9A~ݻۻܾշغ̯ũٽϵ˳ëȳ±{wnX|rfx~}~wxl[VN10-"""     +$6-$A5*L>0UF7^N>SG;_SFZOCRH<\PDh\NgZK[PBgZLgZMZOCSH:b\Swk|}wu}s}qv}z}w~thj]Qzm`wk`|qezodqf\rf\wk_{ncti^pe\vlbyoe|qf|qfv}tfNG?          B?:A=9752+,,-.. """### ()*'(($%%%&&&'&))(,,+//./0/233133,--))),--/00+,,,--+,,+,,+++.//,-,***/00./0./0022011(((#$$%%%&''&&&''')**'((###$%$&&%(('))((((++*)))$$#$##%%$***'('%%$&&%%%%,--.00./0*+,)***++%&&'((+++++*****++)**)**'''### !!!!"#$$&''%&%%&%%&&%&&'''###"## !! $$$#$#""" !"!"##!!! ! !"" #$$!"!#$#00/+,,NF=`THaSG_SGbVJ`THdWJZNB951///1211111102100//+**+++---0//-,++++,,+...///420.*'*�,(51.63/841@;8SKEh^Uwi|ڼĨ˯Ҵۼڼܾܼæb"b0%77>"@#J'ucжfVr_=A%L.#J.$I.$@":D"D#C#F&<"8"; ;41.: >"Y4&^6'H"S.2 "0 3L+"P3+9#5:*/1O(M'E"E"?"X3"M,;"&  $ #  & 6AC!G&B$>6L&;4  + 'R+kE1jH4I)6N"R%X2$% ?(!D,$e7'Q)9@)^3%vH6uK:B)# # 8G%6R+!].$e6(>!( 8F". C + mC0|M757:A!C!50 % . A!@7%8,$8,$8,$9,$9,$:,%;-%<-%=.%>/&?0'A2)B3*C4+E7.J;2O@7VH>`RIk\Txg_ne{bW&! %""&$$(%!$  !""())/12:3290),A7;6/9zsڻ߿նʬȪǪæԸƮƮí~v_xnbx}}xxl^YQ31."""  ("6-$@5)N@2WH8^N=QE9]RE\PDQG;_SFj]OgZL[OBfYKi\M\QDSHaCgInQoSmQmRiPoTeNnI=80-&'*++,,++++*+****((('''&''&''%&%%%%((()))**),,,---,-,,---..+,,*+*)**)++)*+'((&''&((&''%&&'(()**)**)))((('((((((((())*++*+++,,+++,,,,--+,,())&&''(()++*,,+,,+--+,,)*****,-,,--*++))*)*****874YTMzqgz|wv{}{|vrh[Prcrcpbyk^}nauhtfzm}prfocYsg]}qfvjvztgB<6          ?<9TPKQMIPLIQNJSOKUPMVRNTPLPKGPMIRNKUQNROKPMIMIEOKGROLROLLHDID@LHEQNJQLHQLIQMJQNKOLIJFCGB>KFBNJFTPMYUQWSOUQLPKHOJFQMHRNIMHDLHDGC?D?FB>IEA753*++)** !!!"##!""%&&"#$ !!$$$''''''++*..-..-021133,--'''*+*-.-)**)**,--+,,*++,--+,,()),--,-.,---..*++%&%"""#$$&&&'((&''$%%!!!"#"''&**))))***(('##"##"%%%(('%%$$$#&&&%&%,---./,-.(**()))**$%%%&&)*)******)))()(***)**#$$ !!%&&(((%%%###$%%$%%%&&### !!$$$###  ###!"! !""###### ! "##$$$000//.ULB`UIbUIbVIbVI^RGdWJbUHKC;0001111112211/.00/***(((,,,100/-,)(()))./.111542-)&).*63/730851;73HB=[TLof[{mֹȫ̯ϲԷټؼγҶټػ۾ݾڼϮn;,c0%77>"?#H%o]չzh/$ 5L.#L-"Q(C!?G#C"A"E%B$:#:!;52.="; \5'^6'G"`7%X9,8"*4!V:)$ .D( P3*7!5:& 4"/L'W,J$F"A#X3"M,:!#  $ '- * 7AD!G&A#=1J&?7 '$ Q*gC/jI4L,3M!R$V0"$ ?(!D,$e7'Q)7?(a4%vH7tK9>&# " @#Y/"L%V,"^/$b5'/+ <E!'@- f>-O866?C"?*& $4A@":+$:,%:,$9,$:+$:+$:+$;,$<-%=.&>/&?/'@1(B3*D5,F7.J;2OA8VG>_QHk\Twf^mdj_7+%! $""&&%)%!$     ,%(@7;81:e[[ؾڶ۶߿׹вˬѳҵαħϴƭɲv{q[uk`}x}zv~vk`ZS641###   ' 5,#A6+PB3WH8]M;8><9>;8>;8?=:@=:A?;8<9753141/30.20.1/,0.,0.+1.,30.+)(&$#&$"(&$*'%+)'+)'*(&)'% $" &$"'%#'%#&$"%#!%#"%#"&$"&$#&$#(&$(&%)'&)'&)'&*(&/-,0.-0.-0.-0.,/-,/-,0.-0.-(&%&$"%$"'%$*(')'&*(&+)'*('%#"$"!$"!#" !   !      xD7vwlbZ|UxR{SO{KwGpBidEaFaGgLcJkOkQhQ`MkE9)$#!!"""!"!  !!!!!!!!!###$##""!"!!!!! !!!!!!!!       "##$$$%%$$%$#$$"""!""$%%&'''))'((&''&&&%&&$$$"##!"""##$$$$%%$%%%%%%%%%%%###!""!""""""###$$###''%;84ZTLumb~qxvws|p~qrtsqq~q~qqrr{nxl~vjwkzzbWNtetdrbrc|lp{lwi|nzm{mawj^~qdykwj{vs|re;5/             :85UQMZVS[VSWSOTPMUQMUQMQMIUPLVRNQNJLHEQMJOLJLJGMJFMIFMJGOKHMHDJFANJFQNJSPLTPLOLHNJFQNJOKGMIEPKGSOK[WS`\X_[W\XUXURTQNROLSOKLHDKFBNJFHD??;7B>:LHD975)**())  !!$%%#$$ "##&&&$$#))(+,+,,,.//.00*,,$%%()(*++'((%%%+++*+*'(()**)))&'')**'((())&''#$$ !! !!!###$%%%&&"##!!!%%%'''&&&'''%%%!!!##"%$$%%%###"##%&%#$$)**+,,*,,&'''((())$%%%%%())())))))))())'((&'(!""!"""##%%%'(('(($%$%&&%&''((%%%"""$$$##"!!!!!!!!!!!! "##$$$$%%"""!!!!""%&%.//--,[QFcXLbWKcWKbVJaUIeXKdWJG@8+++/..110211-,+00/---)*),,,10021/+*)))(--,110653.+'(%"0,(62.52.51-3/,:62LGAZSKrh]׻βѵͲ˰ƫǬҶؼۿ׹շշڼܾټԶڻ۽ָֹ۽ټ߾tD6f2&<7>"?#F!s`ŧ3kXJv( ( I+!L-#R(H$B"I%? >>@C(:#;51-?"0 ]6'\5&G!a7%gC4Q1&/ 1W:)# 0J+"N2*479# /0L(Y- K%G#B#W3"N,8  $ + 7, 8B D!F'A!<3G&F!9&($ S+eA.kI4N/!* GQ#T.! ">(!E,$e7'Q)47#c4&vH7tK9>%# ! G%`/!T(V+"_0%V.!&.@ A$ >7^9*O976B C"6&% ( @%A@$;-%;,$;,$;,$:+$:+#:+$;,%=-%>.&>/'?0'@1(B3*D5-G8/J<2PA7WH>`QGk\Swf]mdodVC;!!%"!%%#'#       *$'>58@8>D?FȰ׸ӴָշոǫڿҸ̵vxnXuk`}u~|vvxmc^V;:7%&%    ' 4+#A6*NA3WH9_O>SF9ZOB^SFPF;bUHk^O_SFZOBcVHl^O`TGUJ>JA773/&'''((%&&'('(((''''('&'& !!$%%!!!(&$1/,520520742741852<97=:8=:7=:8>;9@=:@=:@=:@>;A>;A><@=:>;8=:7>;8>;986475364253142041/31/30.30.-*)-*)/-+1.,2/-41/41/41041/20.1.,/,*.,)*(&)'&)&%&$"'%#)'%*('/-+/-+/-+/-+/-+/-+/-+0-+1/-20/31042131/420531532521.,+-+)-+)-,*.,+.,*.+*-+),*('%#%#"$"!"!!!!" #!  !" "  !    !"     ^L{m`WzQvOtKpHvIxIuGoAk=g&^=$b>#c=$mD'uG*|K*K+~E(L-L-O0R1U5X8X82           531VSOTPLVRN\XU]YVYVSWSOQMJHDAGC?FC?IFBIEALIELIELIFLIFMIFQMIWSOVQLSNISOKTPLTPLTPLROKPLITPMTQNROKROKVSO\YU^[WZWTXURWSPUQNVRNUQMPLIFC@IFCKGDGC?HEAROK;97,--,--  !!!!"" ! #$$!""%%%((')*)+,,*++'(("##$$$$%%!""!""'((&''$%%&'')**)***++&''&''#$$!!! !!!""!!!!!! !!!  !!!!!!"""###%%%"##%%%'((())#$$%%%&''#$$$%%'('&''''&''''''%&&$%% !!!""!!""##&&''((""#!""$%%'((%&&$$$%&%!!! ""!##"!  ! ""!###$%$"##"## !!&'&-.--,+[QFbWK`VIbWJbVJcWJfYLeYKD=6(((,,+///10/-++,,+***+**..-11020/,,+++*..-221:862.**�,(61-61-5/+/*'0-)>:5HB+ !B&L.$P+ J$B"H%<=><H* :#;!60.@",# _7([4&E!`7%fC4O0%/ * P5&$ /P.$M1)388 )/G&Y. K&F"B$W3"O,7 ! $ , 6- 9B E!F&@94D%K%92 ($ Q)b?-kI5P1"(EQ#R+ ! -T.!j9'Q)53 e5&vH7tK9?&# ! N*_.!Q'Y-#a1%J'&/D!:%8<\8)O976A C!2'$ 1C&A>';-%;,$;,%;,%;,$:+$:+$<,%=-&>.&?/'@0(A1)C3+E6-H90K<3P@7VG=_PFjZRud\ldpfoWN"!%!!$&$(         (#%;25B9>WNPŭֹܾܿշټдèԻuzoYwmazuz{ux{pe_V?>;'('   (!3*!?4)L?2VG8`O>VI;YNA^SFPF:aTGk^O]RE[OBbVIk^OaUHVK?KA783/%&''(($%%&&&'((&''&&&"#" !!(-74274163152/30-742;86=:8>;9@=:B?=A>;?=9@=:?=:>;8?<9?<:?<9@=;@=;975:75975964853:7596485374152063152063163163164253130.1.+0-+0-+52/2/-0.,0.,/-+.,*/-+1.-2/-2/-1/-0.,.+)0.+2/-42/631863;86;87:86964742632531/,+.+).+)0-,1/.20/31/20./-++)'%#"$#!#! " #! %#!&$#&$#" # !!!" #!" " " !$" )'%(%#&#!%#!$"!!" " #!#" $"!$"!$"!$"!" ! !" " #" $#"$"!"!  u_uf|[uQoJlEd?hAgAl?m?m?i;g8d6c1[-T)R)S&T)P'M&N'zI&yH'{H'yE'{C(W1[3Y1W/P,{I+kC(^?'X<&[<&\<$Z;$\<#\:#a<#kA&qE(tC&xC&F(G)J,M.R0U6S5T7S9U;\?[AZ@]B_E^F]HYFM>G-&  #"!&$#&$#%$#%#"'%$'%$&$#$"!" #! $#!%#"'%#*('*(')'%(%##!#" %#"%#! $ xodvirrzl}pzm{pdoeZtj_shvj}qf}rf~rg{msf~qvsxSLD               +)'MJGTPMPLIJFCOLIWTQWSPNKGKGDKGCJFAGB=GB=ID@NJFIFBMJFNJGMHEPKGVRNUQLTPLTPLQMHNKGMIFJGCHD@KGCPMHTPKSOKSPMTPLQLHIEAKGDSOLUQNUQNUQMPLIB>;A>;GC@HEAJGDPMK986&'''(( !"" !!" !!#$$&&&'(''''&''&'&#$####!""  $%%###!"""##%&&%&&'''%&&#$$#$# !"""##  "!!!!!!!!"""$$$""""##"""$%%"""#$$#$$"""###$$$#$$$$$$$$$$$&&&%&& !!""" !$%%'((#$$!"#%%%%&&$$$$$$ #""$####"!! "#"%&&##"!! ""!"#"!!!""" '('///42/ZPE^TH^SG^SG_THaUHfZLeYK@:3(((+*)--,--,,++)))(''-,+/-,.-,..-,,+++*--,210;963/*'$!.*'4/,61-4.*,'$-)&83/;5063/ǩͮҳ۽ֺϳӷڼϱʭֹۼغԶɬܾͯݿ߾ɑk[f/#A5=!?#=盄r4~&% !>#O-"Q)L%B"?!7A%?9I*!;$;"700C#" *a9)[3%E!`7%fC4N/$/ F. " * Q.$M1)497 #.C%Z. N'G#G&W2"N,0 $ - 51 :B E"E&?77B$I&;6 ($ O(`=,kJ5P2#'?P"F  [1"q>,Z1#00b3%rF5uL:C)$# S.!T,!G$\.#a2&;( 4G"3 '1AX6&O9765=1 '$ <#B"A>)!<-%<-%<-%<-%<,%;,%;,%<-%=-&>.&?/'A0(B2)D4+F6-H90L<3P@7VF=^OFiYQsb[~jdogh^1% ! $!!$%#'      % #5-0<4;tgdͰƪٻαɭжӹǯw}q[zpc{uwyvx{pc]U?>;())   '!1( <1'J=0TF7aP?WJ;8=:7A>:B?<@=:<95<96?<9@=:FC@FB@@=:@=;@=;@<:>;9>;9<97:75964:64864975=:8=:8;86:75;8696463052/52/74174220-2/-30.6417428537527416415302/-1.+0.+30.631741:85=:8=:9<:8:757425200-,/,*.,*1.-2/.2/.41063220./,+'%#%"!$" $"!%#!%#"&$#&$##!#! !$"!%#!%#!%#"(&$(&$&$"%#!#!$" )'%(&#*'$,*'+)&+(%,)&/,)0.+,*'*(%(&$(&$&#"'%#(&$)'%+)(,*)-*)/-,,*)&$##! $"!%#!%#"&$#%$"%#"%#" E'"mrbwUkKa@`<_:^:^7b:h9h:f9c7b5a2[,V+T(R'Q%O'{M&vJ$xH#uG#tF$uD%xF'}G*Y4[3X1Z1R,I(mE'_>%V:$V;%[<%Z;$X:#Z;$\:"d=#h?%k?$q?$yC%B&D'K/L-P1S4U6U7Q7P9N7K7R;P9R;RJGBFB>D@=IEBMIDJFBMIDNIEPLHSPKPLHIFBFB>GC?JFBKFBOJFQLHLHDHDALHDNIEQLHTPKXTQYUQWTPSOLMJGB><=:7?=:?=:B@=FCAFCA0.-"#"#$$"##$$$!!!!""!""!""#$$$%%&&&'((()()))'''&'&%&&%&%%&&%&%$%$$$$&'''((%&&%&&'(('(('('&''#$$$%%###   !!!"!"###$$ !!!!!  ! "## !"" !! !!!!!""" !!#$$#$$ !!!$%%#$$  !$$%&&'"##!!!##"#"!! !! !! """&&&""!"""#""!!! !"!***010741\RF^SG_TH\QF]RFaUIfZLbVI40+'''+))+*)(('(('++***)1/./-+('&((&*)(**)++*//.9741-(#!+'%0,)4/,60,.)'+(%3/+61.,+*}ۼƩ̭ήέͮбܾٽ׻׺гϲ׹ڼݿٻָͰԷټӵ׹ۼԶвΰϲ׷ظҥoe*J"5=!?#>ڰ^L@% '"2V- S(P'H&?!9 G.$>4F(?&;#4/2F% /c:*[3%C^5$fC4N.$/ P. B$1Q/%L1(495$/B$Z.!O(G#H&W2"N+,  & $ - 3/ ;B F#D%?59B$97 9! ($ N(^;*hG3O1"(9Q#F  [4(Q>vI6"0_2$nD4vL:F+ $&Y1$M) K&^/$\0$.* :F"+(,G"Q1#O8773?"0 '( C%A A!?-%>/'>.'>.'=.'=.'>.(>.(>/(?/'?/'@/(A1)C2*D4+F6.H90L<4O@7UE<]NEgWPq`Z{jdpiofTA: ! $""%&"&     !")$'+(2la_Ӽٹֶ׹ٺ߿ɪܾŨɬ۾˰ȭ˱ǯwu^yob|uxxvwznc]UA@<*+*      ' 1( <1'IVI;WL@]QDQG;_SFl_P_TGYNAbVIgZK^RFVL@PF;C=6"$$'''$$%$%%'(($&%$" 2/-631864975:75<97;85;75=:8?<:@=;>;8;85D@FCAFCAFB@FCAFCADA?B?=B>;A>;@=;?<:>;8<96:74=;9B?=@<9>;8?<9=:6;85852974;86:86:75:75;87:75852742741742641853:75974:75<97>;9>;:<:8964632531/-+-+).,*0.,1/-1/-30/20.0-,'%$%#!%"!&$"%#"&$#'$#&$#%#"+)(.,+.,+'%$$" $"!$"!$" %#"&$"#!#!%#!&$")&%.+*1/-30.0.,.+)-+(-+(-+(*(%*(%.,)0-*52/63/52/74131.0-+.+).,*)'&)'%+('-*)/-,.,+.,+0.-/-,.,+(&%&$#%#"%$"%$"$#!%#!%#"E("pt`qRdF`?Y7X5Z5Z4Z2Y2_5`6]4[5\3Z0T+S*Q'N$}M$zK%|M$N&R(W,X+U+S-T0Z4Z5X0Z1T0{I(nE&b>$V:$T9$W;%Z;$X:#Y:#Y8!]9 b;"h="n9z>"@%E(F*J,S2W6X8T8T8P7I2G2G3B/H1F2D2A2B4JC?:ID@MHEOKHPMINIEKGBHD?E@;HC?FB?FB?MIFPMIIEAHC?IEAMJFNKHKHDIE@KFBMHDPKGQMHVRNYVQUPLMHDPLHSOKURNWTPXTQXTRVROQMJHEB010+,+*+++,,+++'''&''$%%###%%%&&&)*)*++*++())'((&'&&'&&''()),---/.011011/00/00-..-..-.....-..-...//./..//.//-..,-,+,+*++)*****+,,+,++,,*+++,,,---..-..-...//-..-..-..,---..-..,.--..-..,.-,--,--+--,--,--*++)***++*,,)**)**())())())())())())())())&''&'&'''&&&$%%&&&&&&%%%%%%%&%%%%$$$###%&&&&&### !!##"$#"!  !! %%%!"!""!"!!!!!,--011=94cXL`UI]SG[QE\QEbVJeYL`TH2.*()),+*-,+'&%$$#(('+*)310521-*)'&%('%)('(('--,642.*&" )&#/+(3.+50,0+(+'%/-)730..-qۻ˭ַظаȪǩ̯ػ׻۾ټ׺׹ܼ޿۽۽ڼֺܾѳҳܼۼ׺ͰշԾd%N%4>!?#=|ȭ* ')*0 `4%a5&T-"H&A":!K3)? 8D'B';$533E$ /c:*[3&C]5$fB4J+!0 V0!U/!3R0&I/'295'/8Y- Q)G#L)W2"O+*  -% - 3/ <B H$D$>3;B$02 ;) '$ L&I"G$>2>Q#H  V0%S?pE31Y/"hB2wM:I-"$* [2%H'R) _/$N(&, ?B'('D!I+|L7577C%- &0E$AA%@0(?0(?/(>/(?/(?/(?0)@0*@1*@1*@0)@0(A1)C2)D3+F6-I90L<3O?6TD;[LDdUMn_YyidpkrjnXP!! ##"%$ #     "" $&#(##/VORؿѰּϰնۻڻָڻعɩ¤ͯǪ۾ڽϴª~ybxna}v}xvwzne`WDB?+,,   %-%;1&G:-PB3^M\QDQG<[OCi\N`TGYNAcXJgZK^SFUK?QG;8B?DA=D@=EB>EA=EB>GD@GDAGC@IFBIEBJFCKGEGC@EA?C@=B?=B?=DA?FB@GCAGDAFC@C@=C@>@=;?<9@=;A=:@=:B>;@=:>;8;86<97<:8;97;86:75<97<97863741742853964;86;86:85;86<97;97<97:7674296496430/1.,1.,0-+1.,1.,1/-20.1.-*'&-+),*(,*(+)'.+*.,+.+*,*(.+*/-+0.,0.-'%$$" &$#)'%,*)-+)-+)+(&*'%-*(0.,30.42031/31/30.52/74286363063063064152/74073052/6302/,-*',*(.,**(',)(-+)/,+/,+-+)-+).,*/-,1/.*)()('(&%'%#&$"%#!%#"&$#&$#G(!oubxWnKa@[9W5W3V2S0S/R0T2W4X4X5Z5[6Y3Z/V+T(U(S(Y+]-].a3k9q?wF~N׃UY[؅XzPgAO.d=!U8!S9$T:%W<%X;#Y:"Y8!\9 _8g<"q9|-?-@-~=,=.}=1}B7xC8S3,%%$&%$%#"#! " $" #! !$! $#!$" $"!$#!$"!$" '%#'$"'%"&$"%" &$!)&$(%#(&#+)&/,*,)',)'-*),*(,)(-+).,*0.-1/-20.3101/-/-,.,*/,+0-+2/-1.,0.,2/.1.,/-+0-+1.,0-+1.,1.,1.,2/,52085396351/73073030,.+()(%('$'&"('#+)%)(#&%'%(& *(!+(!0,%72*$ypd~t~nwhsbTp}ztutc[Q           =95NJFLHEHEAKGCMIEMIEMIDMIENJFOKHPLHSPLSOKQMIJFAHC>JE@IDAE@!?#8ɬմ2 -%)+-d6&g:*[3&H&C#8K4*?!;?#F) :#8 6"5D#4d:*[3&B[3#fC4J+!0 'X1"S. 5S1'H.&394)05Y- S*G#K(V2!Q-+  ) $ - /. =B G$B"=16= ) + ;0 ' ,F"DB<5<P"J  U0%T@b<+ /O)b>/wM;L/#$5^4&B#V+!_/$A '/D!;'( %A$J*xJ5430F'- %:F!AA) A1)?0(>.(>.'?.&@/'A1*B2,B3,B3,B2+A1*B1*B1*D3+F5-I90L<4O?7SC;YJBbSLl]Xvgcolsm|e] ! ""!#%#&    !!$%#('&+ #1lb`׶Ĥʪί׷ۼڻعٹ߾طϰʬҴͱé׺zxbuk^zx~wvxzofaXDB?,--  % .&:/%D7+N@2\L<[M>VK>\QDRH;B?FB?C@=B?<@=:>;8?<9B?D@>C@=A>;;86;86;86;86<97;97<98<97853630630530742963963:74:75974963853752975:75:755214207426316316306308538532/-30/1.-0.-/-+0-,0-,0-,/-+30/410521521.,*+(&,*(.+)-*(.,*0-+0-+/-+30.63197596464164263152/74174141.52/75274152/52.40-2/,41.2/,/,*.,)-+)*'&+('-+).,*-+)-*(.,*/,+0.-1.-+*)+))*(')'&)'%'%$&$#&$#&#" %izj[uPiD\:V5R1O.O/M.N/O/S2W5\:dApHwLzMzIvFsBsCtEvE}LňWԔaߜgorvx}~uΊelLoI0P7 O6!S8#U:#Z;#[;"[9!`: j?$t< >$L,L/M/P3X9\=\?[@Y@W>S:M7H3E1@/;,;+}8*{8*x:*s<.u;0zC6\91*&%""!'%$&$#&$"(&%)'%*(&*(&*(&+(',*),*(+)')'%*(&*(&)'$(%#-+(1.+1.+0-*1/+52/30-.+)-*).,*.,*0-,1/-30/2/.20.41030/31020/1.-0.,1.-0-+/,*2/-30..+**(%,)'.+)2/-731841<73B<6JCID@LHDOJGOKGPLHQMIRMITPLTPMRNKTQNTPMSPLVROWTPTPKQLGLHCJEAID@ID?KGBOLHQMIQLHPLGPKGNIERNJZVR\XTZVRURONLHNJGMIEFA>C?;HDATPMXUS[XU\YVZWTQNK221-..-..,--,--+,,'((%&&$$$%&&'(((**+,,+,+)**(((&''%&&%&&'((+,,-../00/00/11/11011133233133122122233122011011/11011122122/11.00.00/10011011011022011.//-..,--*++)**)**)++)***++)++())'))'((()))**)**)**)**+++*++*+++,,+,,++++,,,--,-,,-,+,,+++******+,,,-,---./../.-../00122122000/00/0/000010000/0/111232121000-.-------.../////.---++++,+++++++..----,,+)**)))'''#$%:5/+'".)$82+F>5UK@bVJdXKXNB$#"&&&'''&%$$""! $$"+*)4438874110,+0,*/,+)(',+*642.*&#!+'$2/+50-2.+0,)/+(+(%2.+0/-n¥æȫӵٺٺ׸Եٺݼ޽عܾܼѳȪŧˬնܽݾͭãϯԴҳܾԳaW) 4>!?#7ͰlXKG4*(+# O,h;+`6(J'B"5G2(= >@#K,":#:!7"8A"="e;+[3&B[3#eB3G'/ B G#A <16:" # :5 " /E"DB;5;P"K 0 7R6&jA1zI7J*0B#^=.xM;N1$# 9\3&A"Z-#Z-#0) 3G"3 (('?(!N,qF2/5<"F'+'BCA B.%A0(>-&=,%=+$>-&@/(A2+C3-C4.D5.D5.C4-C3,C3+D3,F6.I90L<3O@7SC;XIA`QJi\Vseb|nkrnnf0&""!#"!$%#'   "%#''%**)/%5xۺصҰӲմ޾ۻܽٺӴӵغҶҷչ}r}r]sh\xzz~xtxynf`WA@<,--      & .&8.$C6*OA2]M=^O?VJ>]QDRHKD; !"#$$  ###'('&''!"! $"!%#"('%.,*20.420964963852@<9A=9C?;FB?IFCHEBGDAFC?IFBMIFOKHQMISOKSOLSPMQMJRMJQMJNJFJFBIEBHEBGC@JGDJGDJFDHDAGC@DA>EA?C?=?<:>:8?<9A>;@=;?<:=:7631520742:75<:8=;9=:8<:7;86:74853742752853852:74:74853<86=97=:8@=:@=;=:8853752:74<97;86;8685385386352196585374353163153164263152063185485452141/41/731;73>95<6262/41.731;75<97;8595363163163174174163074185274286363/1.+/,)30-2/,0-*0.+0-+-+(*(&-+*/,+/,*-*(0-,2/.410310,+*+)(+*(+)(*(')'&(&$,)(,*(+)'20/--,((tap_tQiF_>W8S5Q3P2R3Q2T5V6]LHDKGBMGCQLIRNKRNKURNUROWTQXURUQOTQNTQNUROVRPXUSWTQQMJMIEHD@GC?KGCIFBHEAHD@LIEOKGOKFSNJTPMVRNYVSYVSTQNLHEIE@HC?EA=;+-.-//-./-...//.00,..+,,*+++,,,--.///11011./0.//-..-......//011011011/00/00/11133244344233133233244233122011011122122122122011011011122122122233122/00.//-.-+,,+,,,--,--+,,,--++,'((%&&%&&&'''(('(('(('((())())))))*))**+,,,-----,-,,,,,,,,,,*++*+*+,,,---...//...+,,+,,.///00/00.//,--,---...//.//.//////0//0/...,-,---,-,)*)(((*****))*)++*,,+/.-.-,--,,,,,--+++()*D=6:4.HA9B;3,(# 4-'YNCXMB$#"$%$((()'''%$&$#$#"*)(2328875431.-.+*/,+)('*)(210.+(%#!*'$2.+51-2.+/+(0,)+(%2.+/.,{k]Ūͱ̰շݾݾڼ޾޽ۻܼܿܽۼɫҴڼ޾Ҳ|N@V!4=!?#6ڽշjYLXJ?# C&Z3$O, B#=B*!K5+9? >!N-$;$:#7#;$= B%f;+Z2%B[2#gC3K*/ 7f9(P,9T1'C*#.' !-/# N(W,H$J&M+L()  & $ + + 1>B L&B!;088  78! ) BDC946 N"O"EH'eD1c@.?3 ) ( 2_=.xM;N1%" D$Z2&F$]/$T* ( * 9F!+)'+<*$O-!lB/* 8L.B%&(B??!C1)@.'=+#;(!<*">-&?/)A2,C4.D5/D6/E6/E6/E5.D4-E4-G7/I:2L<4O@7SD;XIA^PIg[Vpd`yljqoqj;/+ #!$#"%&#'   #!%&$)&%*,+2!4ȯ޻޻ضִճյ߿Եбʬ̯׹ӷ¨ӷ̲ǮzycrgZxz{~z~qvxmgaXA?<-.- & .&6,"B5)PA3_N?_O@TI<]QDRHgZL`TGWL?^SFfYJbUHXMAYNBQH? !"$$$!!!!!!###''''('"#"! '&$/-+1/-0-,2/-964=:7?;9A=:C@=FB?HECJGEHEBKHEJGDMJFQNJPMIROKTPMROLQNKRNKSOLSOMRMJLHFIFCIEBIEBKGEIFCGDAHDAJFDFCAEB@B>;@=:>;9<96741:64964742964975853742964:75?<:?<:>;8=:7=:7>;9?<9=:8<86<96>;8A>;A>;8?<:?;9>;8=:7:86:86853742531631964;86:64:75<:8?<;?=<<97742631@;7TKE\RIQH@G?:F@:ME@WOHVNHOHBC=9964752:75:85863853974964:85;9696341.1.+30-52/1.+2/-20-0-++)'-*)/,+/,*-*(2/-7429759751/-0-,20.31031042142041031/30.632,-cVxfz[mOdG]AZ>Z>Y=Z=Z=\?bFdJpWg˔vޤᦃן}˗uđqkikmnqqmkkmp˗v֡ݦઊ䬋誈楄ࠀ՗yˏredMeD1S7"fD'uN-uI(M*X2[7a?bCkKnPoUpVsXtYrUpRkNcH\DT@I8C2>.;-7+:,}:-z<.v:.t=0w@4c;32-+/.,1.,42/5202/-/-+0.,31/2/-2/-20./-*0-+0.+.,)1.+31.30-30-2/+1.+30-2/,/,)-*(,)'-*)0.,2/.2/-0-+30.30/53164275464353142030/0-+2/-30.631520631741=96NHCqdYpxuuz{l}c{a|cjuszeL@2j_R~ti~preYpcVz}~~~uuiwkui          730KGBMIDKFBNIEVQMWSPSPMPMJROLUROUSPUROSPNOLIMJFNKHOLIKHFLIGKGDIEBJFBKGDLHEJGBLHDLHCIFBKGDOKGNJFJFBGC?NKGQNJQNIPLHMHDLGBPJEPLGUROWTQUROURNSNJOKG?<9:85975975653764:86<;8=;9;97420$%%$$$%&&$%%"##!""!""$$$$%%%&&$%%$%%$%%#$$###$%%%%%&''%&&&'''''&''%&&%&'&''&''%&&&''()))**)**))))*)*+*())((((((()('''(((&''%&&%&&'((())(()())&''&&&&'&%&&%&%%&&%&%&'&&&&&&&&&&%&&&&&%%%'(()**)**()))*)*++,--+,,*++*++*++*+++,,,--+,,+,,,--.///00.//,--,,,,-----./../.----.-.///0/./..//...+++++*++**)(('&))()))++*,++------...,--*++F>7E>6]SHZODNE; *%E=4$#####***.,+-*(,)''%$'&%,,+00011030/.+**)'''&(('10/3/,*(&+)&0-)2/,3.+/+(+(%).*2/-l_Sƫͱαҵ׹ۼ޿޿޾޿ܽ޾߿ٹعܽݿٸ׸߽ۼ޾ܽ޾àT4=!= 6ܹbM>'7* 48H1'L7,:? = N-#;#:#8#;%< B%f;+Z2%BW/ gC3N,!/ 5f9(M+<T2'A)"0) //! J&Y. J%F"8?% ,$ ).8?B J#@91:4 6;% K'Y/H#CC845 CJ$GG#cC0aA.8 :<+  _=.yN;O1%! G%S.#L&_/$J$&+ >B')'0"=+%L, yK6^8(:K.A$&+B>@#C1(?,$<(!:%:' =+$?/'A1*B4-C5/D60E70E6/E5.E5.F5.G70I:2L=4N?7RC;WIA]PIeYTnb^vjh~olnh7,(!!#!$&$'##    !#" %%#((&,#$.OJM̲ܹܺ޽бʪԵٺټγҷ̱ҸƯ}gshZyy}|ov{tifaYBA=./.    $-%7-#D7+QB4^N>^N?TH<\PDSI=RH=fZLaUGVK?ZOBdWIcWI[PCZOBTKA###$%%!""!""$$$&'&()(#$#   *(&/,+1.-0.,1/-631A>;GDBIECNJGMIFJGDJGDIFCIFCJGCKHDNKGOLHSOLSOLPMJOKIRNJTPMUQNTPMMIGIECGC@JFCJGDFB?D@=FB?IECHECDA?@=;?<:>;9?<:B?=B?=@=:>;8;85?;9?;9=:7;8596485262/953<96?;9@=;A>;=96<85>:8?<9>;8;85<96A>;B?:7>;8B>=B?=?<9>;8<97;86964853963:75=;9><;?<;=:8753741JB:8TLFuhвɭͰβո̯ӸȱƱɳ˵ưwrou{r[N>j^P}qfuhmaV\RH{yzxxz~s~ti}rg}qf          =:8IEAKGCLHDIEAGC?KGCPMIRNJSOLROMROLROLPLINJGMHEQLISNKRNKJGCJFCOJFOJFKGDMJGPMJPMJPMJPMINIFMIEOKGRNJMIEFAMIEQNJURNROKSOKXSOUQMVSPVSPUROQMJOKGPLHOKGNIDHC>D@IFCLHEMIEOKGC?<$#"###%%%"#" !""!"" !!#$#"""""!%%$%%$&&&""" !!!!!!!!$$$$%%"##!""!""$%%%&&&''$%%$%%&''!!! !! !!$$$$%%%&&%&&%&%&'&%%%%&&%%%%&&''''(''((((('(('((((())())())(+,+,,,+,+,,,--,,,,+,,)**,,+NEbWK^SHWNC !!!""!'''+**+)(+)'*(&&%$(('++*,,,0/.2/.,*)'&&(('11/30,)'%)'$0.*52/40-1-*+(%(%"0-)30-dXNéŪçǫϱڻܽܽۼܼػڼܽڻܼ׹׹вָͯ߿Ӷ׺޾޾߾ʭǪ¤ϯӲظ˩V7>!:ud۹ݷ˟qS{WDM/"+ 68I2(L6+?!@ @!N,"<#;$8#;%< F(f<+X2%DU-gB3O-"/ 5f9(F&;T2'@(!1* /.? Z.!N'G#D"B& 1%)/8@C!J#?62;0$ 7;+ [0j9$J%CC7658T- g8(@!_@.dC0>"9<* R4'U5(2 # Q+J(S) ^/$<#0D!;'( '4% G-%U.!P9P9G'H,C%(- C>A( C0(?,$<( 9#9#;(!=,%@0)A3,B5.C6/D6/D5/D4.E5.F6/G70I92K<4N>7QB:UG@\OIcWRk`[sgd|miub\$"$&%'*(*   !!# #$"&&$))(-$3aYZĬ߽޼ҴɪڻݿչʮٽͲжӸĮkui[{y~pxxqggbYEC?00/  $-%9/%F:.PA3\K<]M>SG;[PCUK?QGcVHeXJ^REXMAUKB###%&&!""!""$%%&&&()(#$# -+)410632632642:75DA>GDBHEBMIFJGCHDAGD@GD@GD@IEAHD@KGCPMIROKQNKQMJQMJRNKVRPXTRVRPNKHKGDIEBKGDKHEEA>D@=JFCKGEIFCDA>C?=B?=B>;DA>EB?D@>A=;?<9>;8>;8@=:?<9>;8=:7<96B?B>;?;8B>;C@=@=:=:7>:7A>;@<9@<:@=:B?B>;C?@<:@<9>;8=:8852742964:75;86=:9?=;A><<:8<97RJC}nc~{~zoh\RC=985364120-2/,631853742741:85;95:74<96;74:74:74853963;7595363141041/:64:75;86<97=:8<96742964:76;86;86;87:86><:;;:J;8o⛁֔}ʌun~hzcw_v[x[|^dŠjƑqʘ{ʞŞœzztt}qwlod~i^u`Vq\RnYOmWLoWLv\OdUo^~jvʛ̝ɜřzqȍoٗv宅ؓqy]nTZٌckpsuvxxywvrofx\oUhN]GS?I8C4>0<,8+|9+z:,z:,v:-t;.xB5]<501/20.1.,30.41/63253152152163164263131/31.31.41/53074152/0-+0-+2/,0.+0-+/-*/,*0-+1.,1.-0-+520742975975742742:75<97=;9A>A><@<:B>:7SLFylêαϱ¢ȤɦƤģι}u{xfXFdUFzwj^sfY[PF[QG}x~r|}py            =95GC?GB>JFAMIDID@EA:5>:6C@M+!?$:$8#:$;N-!f<,T0$FU-hC3P1%/. d8'B$>S2(>' 2) 01(2Y. P(G#A >&  1%(.9@C!G">53;,*592 O'Y-51 8566:c7'zE2;E+O0#;!8<* 3" )Q+ @ Y-#[.#- :H#3 (()8)$E0&R3#}N8Q:N, I,C%&. A>B,$B/'?+#<( :$7!8#;(!>-&@0)A2+B4-B5.C4.C4-D4-E5.F6/H81J;3M>6PA9TF?YLFaTNi\Xqd`zicXIC %#$&$&+)+)'* !"$!%'$(+(,/-413@sgcػ޾ڻܽӵʫѳͱͱɭ§ҵҷ϶krgZ~{~szxqfic[GEA010   %/' ;0&F9-PA3ZJ;`O@RG:[PCVK?OE:cVIcWIYMAUJ>bVHfYK^REVK?WNC$$#%%%"""!""$$$$$$'''"## ""&%"/-*420420742975<98EB@HECIECLHEIEBIEBHDAGC@GC@GC?EA=IE@NJFPMIPLIROLROKRNKTPMTPMSOLMJGNKHMIGNJGPLIOKHNJFPLIMIGKGEGCAGC@EB?C@=B?=@=:A=:EB?C@=DA>EA?EB?D@=D@>EA?GCAGCAGCAFB?FB@D@=B?GDAGDAB><>;8B>;EB?FCAFCAFB@A>;>:7;75;85953:75;86;85964;86=:8>;9:76<97QJD}ocȮܿ׺ʮʯǬ~wh[HA<<85<9663052/<96>:7>;9?<9>;8>;7=96>;8>;8;85;86<96<96?<9B><@=:>:8;86?<:>;9=:8?;9?<:?<:;86;86=:8=97>;9@=;>;9B?=.<DA?IDAk_Vβ׸˪ΩϫϬɨտƲo_L_O?xwh[xhZl^QG@8~m~x|{zx{zwx|        +(%@:6E@;GB=JFAOKFSOKOKFLGBOJFRNKWSPYURWTPROKNJEKGCNKHMJGMJGROLTQNXTQYURYVRVROSOLKHDJGDQOLUROTQNQMJHEAIEBOLIPMJOKHMIEJFBJGCUROXTQSOKUQMXUQWSOSOJKGBJE@MIDLIELIFIFB>:6:61=95?;7EA>GD@HD@D@<:75###$$$)**%&&%&&&''()))*+%&&%%%&&&)***++--,+++((($%$"""''''('&''*++())%&&$$$!""#$$%&&&''())%&&$%$  0-*`VJYODTLAcXM_UIQH>!!!%%$''&'%$%$#&&%###&&&**)+++)))))((''%%$))(,*()'$'%#,*'30.52/63/1.+(%#-*'30-<83ԵӴݾ̰еչӵϱϱΰαԵշѳշڻӴ޾ܿոټֹڼڻۻ޽ݽݽݼϮͮӴӴعٸ߿ڼۺ[9C*#ϲٳʝ쭅娃ߤ؟ӝ~mW4- 7:M6+L6+= =? G'>";$8#:$:R/"f<,N-"FV-iC3V5(3(a6&B$?Q1':$2($/1)(W- T*H#F"@$ 2' % .:AD!E!=25;% 003 6 22, 4G+88=m=,|F3E%4H(="8<+ ( " 4 3K'C!].$U* ( ?G",)'-:+%8$: {L7R:P."I,D&43 ??B.&B.&@,$=*"<( :%:$:%;(!=,$>/(?0)@2+A2,A2,B2,C3-E5.F6/H81K;3N?7QD,/?ob^α۸ڹӳյյήǩڽ§ؼؽеȯʲí|yblbU~~xu|yrhlf]JHC221   &1)"<1(F:.QB5[J;`O?QF:[PCVK?ND9aTGcWI\PCYM@bUGfYK^REUJ>YOD$$##$$"##"###$#"""%&&!!!##('$0.,420520753964;86C@=FCAHEBNJGNJFLHEIEBIEBHEAFB?FB>KGCLHDMJFOLHSOLTPLTPLWSPUQNTOLPLISOLRNKOKGMIFPLIRNKQMJQMJRNKKHEIFCKGDKHEKGDGC@HEBKHDHDAGC@GC@GC@GC@HDAGCAGDAJFDJFCGDALHEJGDGC@FC@EA>A=:C?D@>C@>DA?C?=?;9;75;86:75;86;86<97:75853:64:74631963HB>obX{ɯĪгѵɭ۽tfPIC>;8>;8;85:74?<9B?;C@=B?;EA>D@=A>;B?;8;86=:7A>YEAt{upݓlӐj̎hċgfedjot{{xw}rxpqj~letb[iZSbSM]NGWHBTD=Q@8R@8VB9^I>iRFw]Rl_}ownpʒx؝夅줂ܒnxW^BzL7tG5K<[LkZwe}iklljez^nXgP\FU?R;J6I3B.=+};*z8(z7(y7(x5(u6(v5(t9+t<-t:0rA6K8400/20.0-+1.,30.31.30.31.41/1.,/,*41.863853742963852863963741963853852963:74742631853964;75<86<97<96=97=:8=97?;9A>;A>;DA>GCADA>A>;C?=JFDLHE\TNuªյʪɥѬүɨԾɵîíp[ZI8urfYyk^qeZF?8uexzvkypfxmwlw{}        :74LHCQLGOJENIDNJFQMJROLPLIQMISOLSPMTROTRNXUQYVRTQMOLHPMIPLHOKGTPLURNSOLQOKWTPWSOQMILHDGC?C@=EB>HEAMIFKHDIEANJGSPMTQNTQMRNINJFPMJUROTPMRNJROKTPLTPKRMFPJCMGAEA;;84<95C?;A=9GC>JFBGD@C?<753 !!!!! &''%%%$%%%%%'((())$%%#$$$$$()('(')))()($%% !!%%%%&%$$$)**'(($$$!!! !!#$$&&&''''(($%%#$$  !!   !!  """ 2/+`VJSJ@YOEg\ObWJQH> ###%%%'''$#""! ()('''''',,,/0/++***),+*'&%'&%+)'-*'(&$+)'/-*1.+3/,-*('%"-+(41.<84ǫݼֶۻƪç̯ϱշ׹۽ݾڼټշԶ׸޼ԴԴ׷ܻݽֵۺٹۻٷMV:1oݹըﱈ諅⧃ܤ֟Л}̙{|dd7+>!8>?"C0(B/'@.&?-%>,$?,$?-%?-&?,%>,$>,%?-%@.&@/(?.(?.(A0*B2+D4-F6/H91K<4N@8SE=ZKDbRKbQJ<0+" +)+)')+)+   !!## $$!&.+2;9B*-PE9[PCWL@LB7\QDbVH_RE\OBbUGeXJ^REUI>[PE*(&"##"##"""### !!#$$ &%",*(41/743853:75;96A>;DA>IFCPMJQNKROLRNKOLHNKFJFBMIEPLHMJFMIEMIFOKHPLHSNJZVS[WTUQMSOLUQNTPMRNKQLISOLWSPXTQVROUQNRNKQMIOKHOKHOKHMIFLHEMIFIEBFB?JEBJFCLHEMIGKHELHEPLJPLILHEKGEHDAFB?HDBJFCIEBJFCMIFQNLRNLPLILHEIEBHDAIEBHDAIEBIECC?=>;8@=:B?=C@>B?=@=;@=;?;9>:8<98<97@<;@<;>;9=:8;86<97<97<96>;8D?<`VMykȭūҷӶαϳ}mTLE?;8@=:B?=C@=C@=DA>C@=C@;C@=FC@D@=A=:D@=B>:7@<:C@=EB@DA?DA>HDAGCAGDAEA??<:=:8A>;2==cS|qmޖmהlȎkjf~f{fxf|m|o|o}r~r~sxorjng{iataZjYS_PJVICPC=O?9O?8O?8VD=[H@aKBoXN|e[vk|zqqǓ{ڠ몊暈؏lnPYTDZI_N^OaMdLgKkKaGV=N6H1B,;'9%{6#s1!k0 i/l/ k/!m1#n3%o4&p5(n8(p7*v<0qB7A5210/30.2/-631741852852963853630963;85=:7<96<96<96:74:85:75964=:7>;8<96=:7;85964=:8>;9?;9?<:?<:=:8>:8>:8=:7@=:B>:B>;EA>GDAFC@EB?753$%%"## ###$$$ !!$%%$%%&'(())$&&"##$$$()('''()(())%&&!!! &''&'&###&'&'''$%% ! $%%'('(((())%%%#$$ #$$  "#" !!!!!!!!!"##  ! ! !! """ !!! !!! ! ###$$# ! 950aVJPH>[RFh]PeZMME< ""!%%$&'&""" %%%'((()(,,,///++++*)/-,-+)('&)'%-*'*'%*(&+)',*'0-*+(&(&$,*'52/)+*ƬƪȬѴαгշ׸ڽٻݾܾ޿عԶҴݿ޿߾ٺۼݿ׹޾ҦŖꭇ䩅ߥڢԟϛ|ʗzǕynX]/$A"7>%P9.N7,9, ? >7;#8$9$=  R/"f<,J+!>Q*hB2_;-8"[3#>"F"M/%:$2($ ) % *# M,!Z. M'H#L&@<7!, $ +;B E!G"4088,06*7@8 +46 X:(c@,X7,8 ;!rB0|G3P,-L+B%9<5! 0W7*N)A S) ^/$; 8D!:() (5'!;+$6#+ qE1T<]7(B&H(DD+"B/'B.&B2*B1)A0)A0(@0)A1)A1)A1)A1*B2*C3+F5-K8/Q<3S>5K80C1)>+$?-&B0)D3+G6.J91O=5TB:O>7/$  (&'*()+)+(&)     #&$)207<9B()8z޾ݼطں޾ܼҲβǬǫ̰ūëqrhY}~wz|wqgmh_MKF342 ("4+#<2(H;/UF8]L=aPAOD8[PCWL@J@5YMAbVH_RE[OA`TEdWI`TFUI=ZOC.,*"##"##!""### #$$$# *)'31/753975@=;B?=C@>DA>GDAJGDJGDLIFLIFKHEPMINJFPMITPMPMIPLIROKSOLSNKUPL\XU\XUTPLVQNZVSXTQVQNTPLTOLUQNWSPWROWROTPMSNKRNKTPLSOKQNJQMJRNKOKHMIELGDKGDOKHQMJPLHQLISOLPLIJFBGC@FB?D@=EA>IEBKGDLIFRNKSPMROLOKHMIFJFCHDAIEBHDAHDAGCAA>;8@=;C@>C@>B?=B>;C?=?<:?;:EB@FCBC@?EB@DA?C@>>;9?<9>:8=96KE@h]T{m׹ˮѳԸsYQJC@<@=:@=;B?<@=:B>;EA>EB>FB?EB>DA>D@>FC@FC@EB?D@=D?EA?FB@IECJFDIFCGDBB?<@<:B?<9>=j{pjn֕nːllkygsdpcocshshwmuksivlpgmd{e\w_UnXOcOHWHBSE?PB]KDhUMwd[sj|x~nmmƓ{ޢ駈}ІchIS7qC,c:&e=(m?+{C/F3H5N;L=M<9>;8>;8@=:?;8>;8>;8>;8?<9?<9<96;74;85963:74>:7A>;C@>B>EA?C?=EA>JFCHDBFB?IEBJGDKGEIFCLHE\UPuڿӲ¢ӼɤͩʨģθűƱƯl\I6t{qe|ovkPJCzh{|}}vuulb|p       C@=UQNWSPVROOLIQNLSPMTQNURNVROTQMUQMSPLNJEMHCMHDLHDPKGUQNXURXURYVS\YV]YV]YU[VRXUQYVSZWTTPMKGCKFBKGBMHCRNIYUQUQMTQMVROSOLROLROKSOKSPLRNJQMIROKSPLSOKWSOXTOXTNUQKOLHGD@A=9=:6@=9FC?HEBIFCGDAD@=A>;31/%&&"##!!!$$$#%%&''%&&&((())$%%"##$$#()('(('''()(%&&"""""")**())$$$''&+++)**$$$"##&''*++*++,--'''#$#!""$%%!"" !!  !!!!!   ""!###"""!""### !""(((!!!###!!!!"" !!#$$"##!!! ! "! #"!#$# "#"%%%"#" @:4`UIPG>]THg\Pf[NB<4 !! !!! #$#&&&$$$!! $$#&&&((()*)+,++,+++*/.-1/.+)'+(&-*'*(%*(&,*(.,)52//,**(%*)&30-'('Ǭɭгھ۽ݾҴ̮ίαٺܽٹۼ׺ټϲѲ޾ݽۻ߾ѳܼ޿ٹˮɬ޿̝쮇橅ᦃܣؠӞ~Κ{ɗxēwufRN3(?'6@'P:.N6+4&=>4;!8$9$?!T1#f<,H+".Q-#g@0b>0;U/ C$J%I,$7"3($ ( ""& H(Y. R)G#L'A<6/# ( 9B F"F"*1:5, 36*3B#;+,26#Q0!]9/<#;"sC1|F3Q- B%C&9<5!" 5N1%O)?Y-#[-#-% =F"2 )(+9*#;,%;+$-Y;,~S=L, ?%D/%D,#C1)C4,B4+B3+B3+A3+A3+A3,B3+B2+B3+C4-E7/H:1M<3R@6XC9^I?dQFgVLcSITC;H94H82>*">,$<*#,  -+,*(*-+-""        "$"')(.64<64=C=AдܼܽۼظӴвϱǪѷĬtshY|}xz{{tismdPMH342   '!2)!;1'H;/UF8_N?cQAOD8ZNBWL?I?5UJ>bVI^RD[OA^RDaUGaUGVJ>[NC0-+######!"##$$ "$$ !%%"+*(420743:86B?>FCALHFLIGKGEKHELIFMIFMJGMIFPMINKGOLHRNJNKGMIEOLHTPLTOLVQN^YV]YVVROVROXSPVROUQNUPMTPMUPMWROVQNWROVROTPLRNJTOLTPLSOLSOLSPLMJFLHEKGDMIEQMJRNKTOLSOKRNLPMJLHEJFCJFBHD@FB>FB?HDAGC@KGDMIFLHEIEBJFCJGDKGDJFCIEBHDBHDBC?=A=;>;8C?=EB@GCAGDAGDAGDAHDBC?=B?DA?EB@HDCHDCHEC@<:B>;B?<@=:D@=PIEi^VrenݾдֻtYRKEA>A>;A=:C@=C@>GDAJFDGC@FB?FC?GC@EB>DA=GC@FC@FC@C@=@<9D@:B>;C?EB?EB?FC@EA>FC@IFCHECEB@C@>C@><>*zA-B.D0B0C0B0@-A,>*;&9#|5!x5 n1h0`-Y*Z*V)Y%]'Z%])c-e-h0!a6'i3$q9)w>0\;3431741:74A=;@=:?<9>:8=:7?<9>;8=:8>;8;96<96>;7>;7=:7>;8C@=DA>C@=A=:?;8=:7:63852952=97@<:A=;C?=GC@GCAIECHDBFB?GC@JFDGDAEA>LHEMIGLHFLHFMIFPLHpe\չִĤšƢƢţ¡˵ƲîDZåȩ͵o_J6zkyl~pvjc[SrbTqnzky|yz{t~{p~r      *(&KGDROLWTQUROIEBIFCPLITPMURNVSOVSPUQNTPMQMITPLUPMVRNYVRXURURPURPYVSZXUWTQUROXURYVSYURWTPSPLMIEPKGRNIUQLWRNYURSOLRNKTQNRNKNKGOLITQNURPSPMURNVROXURWSPXUQYVRXTQROLROLNKHGD@A>;FC?GD@GC@KHDOLHLIDHD@420)))''(""#"""$$$%&&(**'((()))+*&(($%%$%$))))**)))*+*((($$$$$$)**)**&&&(((+,,)**&''&''&'')***++,..'((!!!$%%'))%&&!""!"" #$$"##$$$""" !!!#$$ !!!!!"###$# """***$$####"""$$$$%%"## !!!#$$#$$!!!!!!  ! !  !!!###$$$&%%$$$#$#&&&!""@:3`UIOF=`VJf[Of[N@92!"!"""""!#$#$%$#""'%$'%$'&%&&%)))+++++*0/.421/,+,)'.+(*(%*(%.,)1.+74130--*(*(%1/,""ȭǬβۿѳԶ޿ܾݽԵΰԷڻعܽ׼ݾۺ߾г¤ݼۺݾۼٹѲ٬鬇㨅ޤڡ֟Ҝ~͙|ȖyÒvtql~flM>1 ?%P9.L6++#9? ;; 9$8$< X3%f<+F*!.P-"e?/d@1>  U/ `6&P)G,#6!2'$ ' #"- 4C'W- U+G#H$@>60# & 7B G"A*2:3,45(% /;7/6'U5(vK;E*$3h=,}G3_5&4C%:<' " !  ?C ].$T* /@ F"*)(/ 9*$;,%>.'>/(E4+jJ8I* ?"B2*B5,B4,B4,B4,B4,A4+B4,A4-A5-B4-B4-C5.E80H;3L>5QA8VD;ZG=^K@dQFl[PtcXh\T_ZVMHF  &$%.,--+-*(+       !" %(&,-,264;%&2l_Yַ߿նֵٹۻӵԶӶ̯ƪؾҺ¬swkZz{~w{x~vkuoePMH443   %1( ;0'H;0TE8`O@cQAOD8WL?VK?I?5RH\OB1.+#$# ! !!!!## !%% )(%.,+643:86>;:ECAGDBLIFLIFJFCLHFMJGMIFKGDLHERNKPMIPLIQMJNJGOKHPLHQMJQMIQLIYUQ[WTVRNTOLTPLSOKRMJOKGOJGRMIUQNVROVQNVROVROTOLPLIQMJQMJPLIRNKNJFMIFNJFOKHRNKRNKSOLSOLQMKOKHLHEJFCGB?HD@JFCIEBJFCKGDIEBJGCKGCGC@GC@KGDOKHQLIRNKMIGKGDJFDJFDFCAFB@GDBHDBGDAGCAGDAGDAC?MHC`WP|na}еǬҹy^WPGC?@<9A=:B?=iX~tpkۖmΑnljxipf|i_vdZxf]ucZtbZvd]tc]tb\dZgYeT_K{SBlG8nK=nOAiNAgMBeMC^JB\MF`QKiZSsd]vn|odTzWFwR@ZFjR{aȌoוvݕsˁ_pO]>zH.e=&]:$^;%a9$l=(|C,?+>+>*=*@*~;(w7'x5#~6"x3n2 k3e-]*X*W&V(W(X&X&Y%W'\'a,d.e1 h2!n5$s8't>/Q71764?<9C@=B?;8?<:C@>EB@B?=@=:A>;B>;@=:A=;DA>DA>B?;>;7@<8>:7952;74?;9C?;C?.gB3G&I)d9(Q)J.%>' 2($ ' #%7?A#P,Y- L&G#B?73% $ 5B G";*2:1,55* 9=48)H.#e?3R4-F("i<+}G3`6'$F'E':<(  15L%^/$I$ 5D!@() '3%:+$;-&=0(?1)>1)B3*@'? A.&A4,A4,A4,A4,A4,A4,A5-A5.A6.B6.C6.D70G:2J>5OB9TEVK?I?5RG;bVH\PC_RD`TFaTGbUHWK?^OC2/,$$$#$#!"!!##!""#$%& $$ '&$0.,420864B@>DB@IGEOLJNKIPMKROMQNLKHFJHEOLIMIFLIEJFBIFBLIEPLIOKHOKHOKHVRNZVSZVSWSPUPMQMIRMJQLHQMIUPMTPMTOLSOLTPLSOKQLINJGOKGOKGMIEOJGOKGOKHMIEMIEMIFPLIPLJOLINJGMJGKGDJFBGC?E@=FB?IEBPKIPLIOKGOJGQLIOJFLHDOKIPLISNKYURWSPQMKLHFLIGJFDLHFKHEHEBJFCMIFNJHNJGGDAHDAJGDKGELIFMIGLIFMIGKGDIEBIEBHEBEA>EA>FB?PKGf]U|nе͵|`XQKGDDA=B?;GDAFCAFC@JGDKHEMJFNJGKGDGDAJGDMJGKHELIFKHDHD@GC?HD@NJFOKGKGDJFCLHELHEKGDKGCIFBKHEJGDJGDHECJHESJFizplmԐlklwhncyf]vd[p^Uq_Wm[SkZTl\Vm\Wn[TaUcQ]GO9_<,"5%^D:rRDqSFiQGgSKj[Uoa[ykdyr{n`{WFwQ=zQ;7@=:B?D@=EB?C@=C@=DA>FC@DA>@=9@<8?;7@<8B>:GC@HDAFB?FB?EA>DA>GDAHDBEB?IECJGDIEBJFCJFCKGCNKHOKINJHOLIPLJSOLoe]˱ҲͫƣŸţáһҼθѹǨɫ׽}gS?~p`szmznpg]bVLvuvv~oyjpxyr}n{lsuu   31/RNJKFBD?:D@2)?2*@3*?-%?*"@1)@4,@4-@5-@4,@4,@4-A5.A6.A6/B7/C7/D80G<3K?7QD;WI@[KB]KA_LBaOEdTKfS|\v\{[FW>.$.,-/-.,*,   "#!&(%+(&+-+1&%0l_ẔڹݼֶбͮǩҶīͳħɫѼsshWwzuuynwqgQNI443!"! %2)!=2(I<0UE8bPAo[JTH;SI=UJ>H?5QF;^REYNA_RD`SEaUGcVHVJ>_PD840#$$%%$!""!##"##  !!""$# *)'.,*2/-:86@>=CA@IGEIGEKHGMKILIGJGFKIGPMJOKHOKHKGCPLIQMIPLHOKHPLIQLIUPMWSPYURXSQVQOSOLTPMVRNUPMWSOUQMNJFOJFRMJRNKQMIPLHOKGMIELGCNIEOKGOLHMIFMIEKGDMIFOKHPLHOKGQMJPLILGCJEAJFBJFBLIEQMIOKGQMIRNJUPLTOKPLHSNKTPMTPMWROVROUQOQMKOKINJHMJHOKIMIFOKIOLINKHNJHMIFPKISNLRNLRNLPLJKGDMIFMIGJFCIEAHEBD@=EA>FB?IDAOIDe[Rqu[SMKGDJFBFB>HEBKHFJGDIFCIEBLHEOKHKHEKGDMIFPMJNKGKHDIFCKGCNJFLHDQLISNJOKHMIEPMJRNKQMJOJGJFCKGDNJGLHFHEC@EDWM{wqmߖkȌkivfma|g\r_VlZRgVNeTMcSMbTNcUPfUOkVN[LaKZAxG/K.  *XD;qVIkTJo[Rn_Ywicvp}xtg^OxTA{T=T;^BkNvU{YwXqOiI^;~N0iB'^<%X8"V3^7"f:$m>(t>)D.>(w5$n3#p1!k1!a0b.c.a-Z,Z(W%S#R&T'S)S'T)V'Y&[&[&]*c-d*h+m4 u=%y;'o=2H@=FDBHECEA?FB??<9?<9EB@DB?GDAHEBIECIFCFC@DA>FC@FC@GDAHEBEA>B>:A=9GC?HD@JFCKGCLHEKGDHD@FB>GDAGDAFB@HEBKGEIECJFCOKGQMITPMUQOTQNTQNTQOTQN]WSsgӸۺέǣĠվͷͷϹռǧʫcR@vgW{zncodYmcYQG>~pbuh[sfZnbVk_Tj^Sl_RqcU{j[}l]zj[yhY}nyjug       JGDVRNSOJNJFMIERNKWSPUQNQMJQMJROLSOMPMJJFCFB>GB=KGBMIDMIDOLHQNKQNJROLWTQZWUZWT[XU[XV\YVZWTZVSVSOSOLUQNSPLTPMWSOYVRYUQYURZWTXUQTPLVRNWSOVRNTOJRMIQLHUQLWSOXURSPMNKHLHFIFCFC@C@>DA?EA>KIFPMJPMJQMJPMIKGD*))'('())$%% !!%&&)**((()**())%&&$$$%&%%%%$$$%&%)))*+*+++,,,()('(('(('((()*&'')***++"##$$$&&&(((())#$$'((*+*)**%&&'((%%&$$%%&%&'''('%%$! &$#*(')(()**+++))(%%%'('***(((&&&''&+,+--,&%%$%$)*)&''%&&%&&%&&!""#$$&'''''&'&%&&#$$%&&%&& !! %%%&'&""" #$$$%$#"!! ##"$$$  $%$'('&&&%%%()(%&% JB:]RGG@8`VJdYMcXK.*%" #! ##"$$$ ! !!!%%$$##*)()'&'&%++*,,+**),,+00/--,+(%+(%,)&,*'1/,30.7426427522/-0.*)*(ugʯʯӷڽټܾھ߾ֶڻܾ۽׺ڽαڻ׷ڻ޿Ѵܿطͭ׸޾ظ׷̮ӵ޾մ魉㨆ޤ٢Ԟϛ~˘{ǖyÓvrpli}dx`u^pRAY?2~\IuTD`D7=) + 7D#><7#7  ]6'e;+B' -N,"]8+iF7Z2!)5!\=,P*H-$E+$1(# ( #% G"@?L*V,W,I$E"?:53.:C ?.-19>!U2$83(&B!G"8 +*A$];4Z82b5'{F3B#E$I), '! ! # j7(h9*4;X,"Z-") ) >G#.)(+8,%:.&;/'=0(=1)>2*>2*>2+>3+>3,>4-?5-?5-?4-?4-?5-@5-@6.A7/A7/B7/D91G<3K@7QE=XKB]MC^MB]KA\JAfOEsW~]}\{ZvWfKqP;?-! (&'.,./-/'%)  !!#$"''%*(&+-*0#%3ڷ߿޾Ѳбظ׸ܿ˰ֻ¤ԾȴqqfVx}~tvznwqhROJ333"##   & 3*#@5+J=1XH:dRCp[JTG:RH4PF:]REWL?^QC^QC`SFdWITI=_PC=72!"#%%%!!!!###$$ !$"!*(&31/<:9?=;FCBFCBFDBHFDIFEJHFJHFNKIOLHTPMRNKUROTPMSPMUROVSPWSPXTQVROVQNTPMTOLTPMWSPXTQUPMTPLTPMOKHPKHPKHPLIPKHPLHOKGLHDMHDQMISOKSOLSOKQMIRMIQLIOKGMIELHDMIFQMJPKGRMIRMIQLIQMJSOKQMITOKXSO\VS[VSVRNUQNUQNSOLPLIQMIQNKQMJOKIMJHIECJGDKGDMIGLIFLHFMJHOLJROMROLSOMROLOKHKGDLHEKHEKHEJFCJFCHDAJGDKGDHDAHD@SKEwj_u{vj\UPOKIMJGIEBGC@MIFLHEJGCIEBKGDMJFKHDMIFQMJUPMSOLNJGNJFRNJUPLSNJUQMUQMTOKPKHOLHPMJQMJUQNUQMTPMUROROLPMJ5EDr`xpjj͋e}cram_h\vaVlYOdRJ^NGZKEYKFZMH\NIcPJfOFzWG_IU=j@)J.#(*?3,u[OqXNwcZ{kdvo{}vjdU{XF|VAV=W<_AkJuPtQpLjF`>Q1tE(a;$X9#Q6 O3V3_6!i=%n=&u?'q9#l1c. b,a.[.],\+Z*W'W(V%R%R$U&S&R%S(V(Y([(\)`*a+c)h)j/n6"t7!z;(gA7FCAFCAC@=GC@EB>B>;GDAFDAGDAFC@HEAIFCEB?EB?GDBGDAGDAFC@EB>D@=EA=IEAIEBKGDKGCMIFNJGLHDKGCKGCNJGLHFLIFNJHMJGPLJSOKTPLUQNUQNVSPVSPXURYUS[WUib\ĭݼŤκԿŢԽɳƱϹֽǨŦٽcTCl]M|vxk~rfg\QcXNRKDMGAJC=HA;IBC@<<95;96ECAFDAGDBIFCKGCMIEQNKJHF)**((((((#$$"## %&&'((&&&'''&'(#$$#$$$%%###$$$%%%((()))***-.-*++&'&&''&''())''(,,,,--%&%'((***)**&''"##&'')*))))%&&())%&&%%%&&&%&&&&%###" (&$*('((')*),,,**)&&&''&(((((((((&''***)))$$$'''-..+,,&'(%%%())#$$$%%'((&&&'(()*)$%%&&&)**&''!!!'''%&%###"##&&& ! !!!&%$ ##"$#"""! ! """%&&()(&&&$%$((($%% JB:[QFF?7`VJcXLbWJ-)%#!$"!!! ###"""""!&&%'('%%%,+*-+*(&%)('+++***))(--,//./,()&$*'%*(%/-+42/853863=:78530-+-,)ug\̲ҷڽͳպغڼڻյնݿۼִܺյض޽ګﰊ魉㩇ޥ٢ԟМ~˘|Ǖy’vsnkh|cw_t\oYjM>S9-xWFqQBkM>O5*% , D#?<7#9!! ]6'e;+?%-N,#X4*hD6]4#. -N/!M&H-$H-%2($ ( $C B?K(K&Y. M'F"A>964@!C <*.06C%W3%42'.A!?!1 ++@"[:3[:3Z0$|F2P,D"L*/ ("! 1w@/r?.0;Y,"Q( 5B C!) )(0#9.&:.&;/'<0(<0(<1)<2*<2*<2+<2+<3,=4,=4,>4,>5->5,?6-?6-?6.@6.A7/C91F;3K@7QF>YLD^NE^LCYG>V@9bLyZyZxYvWsVrUpShL~ZBZ@/3$0-./,./,/!      " ##!&'%*)',+).*(2i[Vҳ۹ۺѱίַڼαƨŧҼ̷ombQvzwrxznwqhSPK343###   '!5,$A5+H:/UF8cQBq]LWJ5QF;_SEVK>^QC[OB^QDeWITJ>[NB?94!"#%%%!!!!""#$# " %#")(&.-+<:9><:FDBGDBHECIFDHEDHECHECMJGPMJUQOQNJUQNVROUQNTPMUQNUQNVRPWSPTPMSNKRMJTOLWROWROSOLSOLUQMSOLRNKOJGOJGPLHQMIQLHOJFNIEQLHSOKWSNWSOWRNXSOXSOVQMSOJSNJQLISOKTPLTOLSNJTOLVRNUQNTPLXTP\XT^ZV]YUXTPSOKQMJRNKQMIQLINJGOKIPLJLHFGCAGC@GB@LHEKGDLHEMJHPMKOLJMIFPMJRNKOKHMIELHDHDAIEBLHELHEMIGOKHOKHJFCJFCLGCbYRvj`ymbj`YTOKOKILIFJGDGDALIFNJGOKHKHDLHDOKHQMIRNJWTPYUQUQNPLITPMXTQ[WSZUQZVRVRNVRNVROUQNTQMQMJRNKVROXTQVROSPMEKI~UN}|rkfьb_t^i[~eXv`Uo[QeRI\JBXHAUFASE@RE@VGB]KE^HAdJ?zTCoK9hB/\<,;*!-1#/%mWNzaWofyry~rm__O~WDV?W<\=bAjGjHmJkFd@V4~I-j?$Z8 Q5 L0M1S3V2a8"k>%o=&g8#c0Z*X)Y+W*W)V)S'S%S$Q#Q%Q$R$R'O&L$S&X)Y*[)\+c,a+b(f(i-p2o4#w:*_B;EDBHEBJGEIFCEB?FB?GEBFC@DA>EA>GC@EB?GDAJFDIFCHEBEB?FB?KGCOKFQMIQMIPLHPLHQMJRNKPLHRMJQMITQNRNKQMKPLINJHROLVROVSOUQNQMJRNKROLWTQ[XV\YW^ZW~tl˪տĠšվηưɴҺŧƨ¥©n^MaRBzl{vg}nukajbYiaXof]xndulbnd[pf[sh]xla}qfwwx    QMIWSOUQMSOKRMIQMIUROWTQXTQWSOVRNVSPTPMROKPLHOJFNJEPLHSOKWTP[XUZWS[WSZVRWTPSPMTQNWTQXUQXURROKTPLZVRVRMTOIQLGRMIXUQ\ZW^[Y]ZXYURUQMOKFNJFSOKWSPZWSZWTRNLKHEJGDIGCFD@@=9?;7=:5840962@=:FC@LIFOKHPLIPMJPMJHEC***)(('((#$$$%%!!!'''())$$$#$$%&&$%%$%%$%%"""'''+*)++*)))()(......***)++'(('((&''+,,,--'((+,,-..*++())"$$%&&'(('((&'''(('('%%%&''&''$%%!! %##)'&+)((((***---**)''&(((())))))))&'')**+,,)**(((*++*+*$%%'((+,,(((())+++()))**+,,$%%$%%)**'(("#"'(()**)))!"""""(((!!!"""&&%""!"""###%%%'&%&$##"!"""$%%%&&'''&'&%%%***$%%#$#OG>\RGJB:bWKbWL^SH$" !"   !!!!! %%%'''%%%+,+0/..,+)(',,+///*+*..-11/0-)'%#+)&+)&/,)31/853853<978630.+.,*k_UƬҸϴ׼ȯڻݾܾ۾ؼܼܼܿ߿ԵܼϞﱋ魊䪉ߦڣ՟М̘|Ɣx‘vrnjg|dw_s\oYjU|[HjLsSBkM=fI9Z:-I'A!E$==7":"# ]6'e;+B'4O,#W4)gD6_7%3 ( I*L&H-$H.&1(( * $=D>J&<T+U+G#E"?=7!5 @!B ;'014H)V3%45$ 55->5.?6.A80D:2H>6OCP:4}YEtWtXtWsVrUpSmRkPjNhMeK]EdG46&(&&.+-.,.+(+  ! $" %$"''%+*(-+)./+1+ظӳعڽʭŨŦӽȳtmbQr}wuxxzowqhTQL564#$$   (!4+$A5+G:.TE7aO@p\J[M?RG;UJ>H?5RG<`TFVK?^RCYM@]QDeXIUK?TI>>93 ""%&&!!! !!"## ! #"!'%$)('-+*=;9?=;EB@GECJGFIFDHECFCAGDAMJFOLJROMQMJVROVRNSOLPLITPMUQNUROVRORNKNJGQLITOLSNJRMJRNJSOKSOLSOKRNKQMIRMITOLUQMWROUPLRLHSNJVQMYUP[WS^YU\XT]XT]XTYTPVQMQLHSNJXSPVROTOKTOLVROXTQ[VS]XU]YU\XUYURUPMOKGLHDNIENIFNJGNJGNJHOKILGEGC@KGDNJGLHEKGDIEBJFDMJGNKIMJGOKHPMJNJGPLHRMJNIFKGDMIFJFCIEBKHEOKHOKHMJGIEBRMIXRMWPKTNJSPLUQOROLOLHOLISOLUQNQMINKHQMIUQNYVRXTQZVR\XUYURSOLTQNWSPVSOUQMVRNXTPVROSOLTPLWTPVROQMJQNJUROTPMPNKWLHovkcԎ_ȈawZo[i[|cVr\PjTJbNDZG>TC;PA;N@;OAaI>^F;bI=cJ>cJ?Q>56)"+!iVM~h_ulw~yxkj\^MYDX?Z>_?a@fCdCoGc@^:O/vE(c=#W8 N3J1N4"R4 T3^8!c;"b8#]2Y.S'Q&Q'Q'S'R*S'Q'O%Q$R%Q&Q%R$S'R&S%T)V,\+[2"`/c0b+c(h,o2!q5#t8$x@1RD@GECKHEIFDGDAFC@HEBFC@C@=B?JFCKHEPLIQNKNKGLHENKHROKTOKTPLUQMVRNXTPYUQVRORNJTPLVRNTQMPMJPLIPLIPMJSPMTQNUQNVROSOKRMJVQNXTRYUSWTRVSQb\WxѻۺѭЬͩ˪ǦѻɳDZֽåŨεxgWZJ:~wl_r|oyks}shyoeynt|x|}qxls{|x   DB?\YVZWSYURXUQVRNPLGPLIPLIOKGQMHUPLZVR\XUZVRYTPZVQZVQZVRZVSYUS\YW_]Zb_\b^\]ZVVROQNKRNKUQNZVSXTPUPMYTQXTQVQNUPLQLGLGCNKHSPMVSPUROWTPWSOWSOWSPRNKOLIUROPMJIEBD@9?;7961951?<8EB?IFCIEBJGCJGCJFCA?=*++**))**'((%&& ))))**$%%$$$%&&&''&'(&''$$$)))--+***''''&&,,,...*++*++()))**)))-..*++%&&*++,--)))&'&!"""##%&&'(('(('(((((%%%&&&&''%%%#"!&%$)'&*)((((+++,-,'('''&)*)()(****+*&''&&&,--.//*++())+++''''(('((()),--,--())'''*++())&&&+,+,-,&''&''*++&'' !! ''&""!&&%&&&"""###%%%)))*)(*('%$#%%$())&''%&&'''%%%)*)%&%&&%RI?^SHHA9bWKbWK[PE!! !!!###%&&$%$###)))..-0--*('++*222--,--,0/.1.*$#!*(&*(%-+(30-863;96=:89640.+0.+PHA̱ɱʹжպھھٽֺĬ̲ϴ޿ҳӵ׹ҵҵ۽ҵѴҵֹݿܾڼܽƓꭊ䩇ߦۣ֠М̙}ǔxusnjg|dx`s\oXjUeQ`L}[IuUDmN>gJ:bF7\A3T9-?"86=8"6! [5&e;+U2$[6(T/$W3)gE8b:*2 "D%O)M0&H-%2(( ) $3C?I#2E$Y- K&F#I$J)8"6 @ B 9%014N-!L, 37#  <5-@6/C71I;5P?9R>7N62X;6kRqUpToTnSlQkPiOhNfLdJcIaH_G{XBiJ8F1%,*+)')0.0$!%  ! #"!%#!&&$)(&,)',+(-+(0>7:ڻ޾߿ܾ۾Ѵȫ£ıuoeT|p|xz}w|pysiXUO886$%% %1( >2(F9.VF9aO@p[I_PAPF:VK?H?5RH<`TFVK?_RDXM@]QDcVITJ>PF;?:4 ""&&&!!!"""  "! $#"'&%('&+)(;97?=6M>7L=8L>:K=8P?:TB^?bAdBiC_"U4O5 K3J2K0M0R6 W7 Y5W2V0S,O(O%P%T'S)T+T'S&Q#P$Q%Q&P&R%U'R'S%V&W)\-`0c/f/g._&_(k-r9"u7"{:(kA7JGDMJHOLIMIFMJGMJHLHEHEAHEAIFCNKHNKGROLVROROLOLIROKUQNRNJQMISOKWSPVRNWSOXTQUQMRNJSOKQNJMJGKHELHFSPMQMJNJGOKHQNKVROXTQZVS\XVZWUWSQVSQZURukdɱ޾ѮӯѮȧťҼѻDZӻ˱vdRB1xoeZzm~sgvh|v{pxn~svw~x~vtts*('VSP\YV\YU\YV]ZWZVSWSPWTPYUQXSOYTPXSOWSO[WS]XU_ZWb]Y`\X]ZW[XU[XU[XV[XV[XU_\Y]ZWURNOKHQMIXTQXTQTQNROKPLINJGRNJXTPVQMPKFNJESOKXTPUROWTQYURYVSXURQMIIEANKHNJGLIEOKGPMINKFMJFIEBEB>C?;C@<%''(((())())%&&))))**%&&'''())&'(())'((%&%(('--,**)%&&&&&)))*+*())())%&&&'''''+,,()*$$%&''*++)))#$# $$$&''%&'%&&&'&$$$%%%&&&$%%#""$##&%$''&&&%((()))$$#&&%)))(('(((***)**%&&,-,/00.//()(*++,--,-.'((*++-..+,,+++(((&'&***%&&+++/00*++%&&+,,)**%%%##"&&&""!&'&())$$$!!!%%%)))++*++*+)($#"%%$)**)*)())))))*)+,+&'&'&%SJ@[QGG@8aWKbWKZPE" ! """!!! $$$&'&###"""(('---/-,+)(*)(321332,,,--+50,%#!-*(+(&,)'41.863;86=;8<:730./-):73wêȮƬ˰ҷٽŮëڼԷټ§¦Ȭʮëʯܽڻܼܽٺعٻ׺ټٻܾÏꮋ䩈ߦۤ֡ѝ̙}ȕytqokg{cw`s\oYjTeQbN]JxWFqRAjL0P7+;"9!=#=9!5" Y3%e;+U1#`:*T/%V3)\=2]7'I'? I(Q+P2'H-%1(' ) $7?E 1.T+R*F"N(^5"=$6 @ B 6&024U2%@%53# ?!<:B@>DA@A?>@>EA>IEBIEBMJGPMKPLJMJGNJGLHEOKISOMPLIQMJTPMQNKQNKTQNSOLOKHUQNSOLQMJUQMUQNSOKRNKSOLVROXUSXUSZVSTPLSPLWSPVRNTPLRNJRMIVRNXUQVROQMJQMITQMVSPTPLVSOSOLQMJQMIRNISOLRNKOKHPMIGHEuPIwvfڑ_·Y€XwTlRfRcR{]MqWHhOBaGUE>WG?]KBbOFjTInVKu\P{bX~i`tl}u|~~}zwzmn_eS_J\C]>[=[<`?a@d@]=[8L-pC&\9 J0K2I/I/J.H.K0N1P2S4R1P.L-M&O$Q'Q*S'R%S&R&R'R)P$O!R#T&M&S(T(T)X+\*^-c/f/b'^$e'm2!s5!v4#v:+[GAKJGPMJQNKTQNSPNRNKLIFOLIOKHOKHLHEMJFROLSPMPLINKGRNKTPLQMIQMIWSOUQMQMIRNJSOLRNJQMJNJGKGDKHDLIFQNKOKIKGDOJGUQNZWT[XVYVTYUSXUSVSQURPWTQ`ZVynʯ۽غӰհҮƤǧվ̶Įζ¤پŬ{hM=,ukbW~rf}rfs{wzot}xxy|"! NKIYVSYURYVSYVS]ZW\XUXTPTPLTPLVRNXTPXTPSOKSOKQMJWSP[WTZVS]YW[XUVSPWTQUROTPLZVS_[X]YUZUQYUQ[WT]YVYURSNJNIEHC>JEAROKTPMTPLUQMVSPZWTZVTYVSXURUROTROTQNOLHJGCJFBOKGSPMVSPTQNSPMPMKMJGKHEOLIROMTQOUQNVRMRNJOLIPLI@><"$$'((()(&&&%%%&'&'(($%%&&&&''#$$&&&'''&'&%%$))('''%%%&&%%%%&&%$$$$$%$%%'''((()**'(($%%"##'''((("""#$$%&&$%%$%%$%%$$#$$$%%%#$$#""!"!!!!#""##"&'&'''!"!$##'&%'''())+,,+,,&''())-../00'''())-...00)++())+,,*+*+++'((#$$)*)$%%)))-.-+,,'(()**+,+()(%%%###!!!'('+++%%%""!%&%)))*+*++*+*)$#"&&%***)**()(&'&,--./.()),*'VLBWNDLD;`VJbWJVMB  ! ###!!!"""###"""!!!''&...//.,++*)(0/-432.-,*)(3/*%#!-+)+(&*(%1/,641:75>;8=:7631/-*851|na}ostyz~ǭɮպؼĬ{p϶Ȭѳ׸ԵӲٸ޽ѴαϱԶݽݿ޾޽Ïꮋ䪈ߦۤ֡ѝ̙}Ȗ{ēwrnkgzau^r\oXjUfQcO^K{ZGuUCmO>fI9`E6[@2V: 4"% X3%f;+S/"`9*U0%W3)M1)H%_3 X-Q, P+O2&K/'3(& ( $ " 8?A/#G%X-J%F"]3!H(7 @ B 1'025O/"66,+@!="2'!-! !" ;G"N(L!H 1 # K); *&! l<,p>-7A].$E"( <E!:) )(0%5+$5+$5+$5+$5+%4+%4+%4,%4,&4,&4,&5-&5.'6.(6.(6-'6,&5)#3'!1$/ .-05 =(*E/2J15\>8fNlRkQiPhNfMeLcKaJaI`I_H^G]F}[E|ZDyXBwVAtS?hJ8M7)")'((')2/1%#&   #!%#"&%#''%*%#(#!&&#(/*0'ϴڷܺ߿ܽػӷʯӻʵι̹rmdRymx~{twrh[WP997&''   $1(!;0'E8-TD7\K7$%%$%%"##  #"!&%$*(',*)643642865?<;?=FC@JGDNJHTPNRNKOKHMIFJFCJFCJFCJFBIEBNJFOJGRMITOLSNJUPMTOKUPLTOKTOKSNJRMISNJWQMYTP[VR\WS^YU`[V_ZV]YTa\X`\Xa\X`[W]XU\WS[VSYTQUQMTOLUQNXTQSNKNIFPKGWROZURXSOUPLTPLTPMQMJLHDLHENJGMIGJFDLHFOKHLGDMHEHC?GA=MHDKGDLGDLHENJHQMKPMKNKHRNLRNKQMKUROSOKRNJUQNVROTPMROKOKGLHDQNJRNKOKGNJFRNKWTPTPMOLHQMITQMTQNTPMOLHPMIVRNXTPVRNRNJWROZVSRNKSPLTQNTPMROKSPLUQMWSPTQNQNJPLIUQMWTQWTQQMIPLI:QC>TC=XGAZH@^KBdPGlVMu`W{h`~ohyrz|~}|u}pugl[cO[EX>Za?c>[:U3zH+f<#T4I0G/G.G0F-F-H.J/L/R1P.O-N*M&Q'S'T$Q$S%S$T%T)T)S&O!P!R"O#R&U,U*W&Y)_/c/a-c(`'`%e+q3s0w4"nB7OKHMJGPMJUROUROSOLMJFOLHPMIOLHLHELHDQNKROLQNKNKGOLHOLIQMJSOLVRNSOLRNJRNJUQMTPMRMJPLIMIFLHENKHOKHNJGQMJVRO\XV\YW[XVXUSTQOUROVSQURPURQUQNkc\|ǰʯӵմֲײү̬ԾĮŮҸѷêoYF4~oldY{nxl`~oy{~s}qznzzs|p|psvHECXVSXURXTPWTQURO[XU\YV]YUXTPOKGLHDMJFLHDC?;B>:C?;QMIVRNRNJRMJUQNQNKRNKVROVRNVROVSPWTQWTQTQNQNLSPMWTPXTPRNJNJEOJESOKSOLSOLWSPYVRZWU\YVYVSROMIGEDBBKHGQNKRNJRMITPLWSPYWTZWUWSQTPNPMJNKIMJHOLJVTQYVSTPMNJGLIFLHE:86#$$)**+++''''''"""''''((%&&&'''((&''&''&'''''$%$&&&%%%&&%''&%%%&'&#$$ !"##&&&&&&'((&''$$$""#%&&(('!! !!!!""%'''))$&&$%%###"""$$$&''$%%"! ""! ""!$%%%&%!"!##"$$#'''+,,-...//(**&&&+++,,,$%$(((,-,.//)*+"##'(('''())())%&&&&&%&&)))*++)))$%%%&&)*))))'''!"!""!&&&+++)))''&(('''')*))*)*))#"!((',,+,,,***%%%+++/10)**.+(VLBULBOG>aWKdXKQH>!!"!!"!%%%"#"$$#%%%''&+++,,,--,+*)-+)1/-0.-+)(2.)%#!-+)-+(-+(1/,530975=;8<97742.,*31.VMGg\TmaYj^Ug\SncYti_tiynviylrq}otvz|sind\wkҵͰںڹյܼԵ׶޿Եܽ٩ﳍ鮊䪈ߧڤ֡ѝ̙}ȖzÒwsnlg{cu]pZnWjTfQcO_K|[HwWEqSAjL;8$K&_5'f;+S0#a:*V1%V2'O3*A!^3 Y.N&O+O1%L0(4)% ' $S0#Q- ?A5">![/!Q)D!W/Y2 ="A B -%258I+35# 2@!=#7*$4'! !! :F"c7'T(J 60<M*?#*&1vB0_3&1J$\.#36?E!/*) )3)"5+%4+%4+$4*$3*$3*$3*$3)$2)#1(#1("0'!0&!/% .#- +)(),0"6$(<*/B.3E/3E.0N30\HlRjPhOfMdLcKbKaJ_H^H]G]G~\F|[FzZDyYDxXCvVAsS?oQ=jL:Y?06% '&(/-..,.  " #$#'%#('%)%#'# %# %*',$!,h[Uݽ޿ػūȯı|vlYymy~|vuoe[WP997()(   "1(!;1'G:.UE8[J;fSB]M>KA6VK?H?5MC9ZOB^RE`TFXM@bVHfZLVL@LC8D=6$%&#$$#$# ! %$$('&)('0.-1/-421><;@><@=<@>=A?>GDBDA>EB@IFDQMKTPMRNKPLILHEMHEJFBHD@JFBLGDOKGPLHQLGUQMVQNTOKPKFPKGUPLSNJPKGPKGRMIUPLVRMXSN[VR_ZVa\X^YUZVQ`[Wa\Xc^[a\X\WT[VSWRNUPLRMIQLIRMJTOLTOKRMIOJGSNJXTPUPLRMJUQMUPMQMJLGCJEAOJGOKHIECMIGRNLQMJOJFOIEMHCPJGOKHRMJVQOUQOVRPVROUQNWTQVROTPMTPMUQNVROVQOXTQUPMQMIRNKSOKUQNXUQVRNQLHPKGSPLSPLNJGMIEOLHRNKQMJPLHQMJUQMVRMTPLUPLWSOYVRSOKSOLSOLPMIOLHSOLTQMTQMSPMUQNSOLVROXURXUSRNKMJG[KGotjݕeƅZ{SsNoMhK]GzXFuVFpRCkN@bF:[A7T=3N;3H82D61F95F;8I>;MA=QC>XHA]KEdQJiVNo]Vte_ylfuoz|||{w{pvhp`kYbNZCU;U8X8c?b@b?`=^9Q/sF'b<#R4H0F.D-H0J0K1I0F-J.P0M-M,O*N'O$P%R%S&S&R%R&Q)Q%R%P%O"Q"Q$R#T'R&T%U$\,`/]-b,d,a)_$k+p0#w5%x:+^KFLJGNJFQNJROLQNJNJFNKGQNJQMJMIEOKHSPMOKHQNKTQNROKMJFOLHSPLVROTPLQMJUQMZWTYURSOKRNKNJGLHENKHROLVRPYVSXURXUSXUSXUTXUTWTRXURVSQSPMQNMROMZURyofѸвմڶֱͪ͸ŬɯëwfO;{jvjxstxh}ozmxkzmt|pth{peyncsh^sh]wmbyodxmaB?=TPMUROUQNTPLTQNPLJROLROLTPMSPLQMJNJFMIELGCD?;@;6>95KGCTPLVQLTOJOKGGC?EA>OKHROKLHEIEBIEBKGDIEBFB?GC@NKGWTPYUQZVRYVQWTPUQMSOKNKGOLISPNVROVSPPLHGB>A<8HD@MJFQMIVRNWRNXTPZWS\YVXTRURPPMKPMKMJHJGDROM[XUXURTPMQMJLGD864$%%'((*++()*())&'')**)**)**&''()))**())&''&''#$$###"""&&%*)(((()*)'((%&&%&&%%%###%%%&''%&&#$$'''(((  "##&''&''%&&%&&%&%######$%$%%% ""!$$###"#""###%%%#$#""""""!!!%&&*+++++.//+,-'((*+**++"""&''())+,,(**!""'(()**())%&&#$$###$%%))))*)()(&'&%%%''''''""" ! %%$''&******)))(((%%%'(')))**)$$#**)/.-.-,**)#$#(((.//())0-*VMBQH?NF=bWLdYLOF<" %#!!"""!!!%%%!"!###)*)))(+++---...+**,*(-*),*),+).*'%# .,)0-*0-*31.853874<:8=:8963.,*20-?;8LGCMHDLFBKFBQLHXRM`YSiaZkaYj`XkaZmc[i`Xe]UjaYqg^wlcsiae]W_XRqf]tʯ׷޿߾ݽԴҠÏ變㫈ߨڤաН̚}ǖy‘vrolgzbv_r[mWiTgQcN`L}\HxXFsTBmP?gK;bF7\B3W=/R:-O8+L6*I3(F1&?!<6#L(_5'f;+Q."_9)W2&V1'R4,>^2 \0O'P+M/!K.#4*! %$\5'V1#?A;#@#b4%V,Q*X/ f9$R.B A )# 566<#33 5@!=%;/(:-'$ 7A E!i;*\.!J<1 ?"N, B%*#I'yC1G%3X,"V+!.=B C *))*3*$4*$4*$3*$3*$4+$5+%1&!, *'&$#$$$%&(+0!5%(:(+>+-A,.@)*S81{XEjQiPgNeLcKaJ`J`I_H]G}[F|ZF{ZEzZEyYExXDwWCvVBtVArS@oQ>lNaUHgZLWMAKA7B<5$&&"##"##  %$#'&%(&%,*(-+)/-,865975<:9?=;@>=FCBFCAGDBHFDNKIQNKRNKPLILHENJGMIFLHEOKGNJFPKHPKGRNIYURWROTOKQLGQLHVQNVQLTOKSNJTOKUPLVQMXSO]XTa]Xa\X[VRWRM[VR_[Wa]Y`[X]YU^YUYTPTOKQLHRMIPLHPLHSNKTOKQMJUQNXSPSNKQLHRMJQMIPLHOKGLGDNJGNJGMHEPKHSOMYTQVQMWQLTNJRMIRMJUQNZVTXTRTPNROKQMJUPMVROWSPXSPXTQ[WTYVSXURUQNRMJTPMXTQWSPYVSYURWSPUQNTPMSOLOKGMIEOKGRNJPMIPLITPLVRNWSNUQMYUPYUQYUQYUQXTPUQNOKGPLIROKROKQMIRNKUQNUQNQNKSPMVSPROLEGEWLy~p֐dЏ_ƄY}SqMmLeH\EyWCtTCpQ@jL=dG9^B6S;1M:2K:3J;5H;6H<8H>:KA=QEA]NIgVQm[Usa[uf`znhvp~x|}{{w}rzmtekZfR^H[AX;V9Y9b?c@b?_>^8U2pE&Z7 J.H/H/E.I0I/I-H.D*J,L-M/O.O+O(O%O'P$R'Q%R$S$Q$Q"P$L%M"O"R$R&P%Q#S%P#W*^-_.b,d(f)`"e(k4$r2!s2"m?7KGDJGCJIFNMJQNJOLILKIOMIOKGNJFOKHROKQNJSPLPLILHEMIFNKHMIFQMJTQNRNKSPLXURXURPMJNKHMIFNKGQNKUQOVSQXUSYVTTQOROMUSQWUSWTSURPQNLQNLRONROMSPN`[VznĪںٴ̩׿˶ĭѷչɰ|hQ<|kxkzoqo_}lzjrdyl^vi\zm`tg{obsh\f[PqeYvj^th\xj\   :85SOLTPMRNKRNJRMJRNKMIFLHEMIEPLHOLHKGDLHDPLIRNJPLGNHCJEAQMIQMIQMHRNILGCE@;GB>LHDJFCEA=D@IEANIFROLVSQXURWTQXUQYURZVRWSOVROWTQUQNURNTPLRMHPKFTPKTPLTPLWSPVRNWRMVRMUQLTPLPLIMJGLJHNLIPMJROLZWT\YVZVSWTPTPM:86())*+*-..,--**+&&&*+++,-*,,*++,--.00,..))))**'((#$$$%%(((**)''')))'(('(('(('((%&&"##""#"##$$%'((&''!!!###%&&(**&''#$$$%%$%%#####"###&&% !!!$$###"$#"$#"#$# ! !! """'((())+,,-..())())*++%&&'(('((+,+)*)"#"%%%)**(**#%%!""!!!"##&'&((('(''((&''&'&%&% ! &&%&&%'('()((((&&%$$$%&%((('''##"++*210//.+++"""'((+,,'((84/YOELC;NF=bWKbWKLC:$#"(%$"   $$$$%$(((%%%%%%,-,,,,,,,,-,-.-,,++*)+)(+*(4102.*#!*(%,*'/,)41.;85=;9@>;@=:<960.+1/,853C?=C?IEBMHEUPMWRNXRNXSOZUQXSOSNJRMIXRN\VQXRMSMIRMH^XR~qfܽԴյܾ޼ۺ߾޾̗Îėš컜黟߮ک֥ϞɘyĔvtqokh{bv^s\oXiRfQdO`K}\IyYFtUCoQ?jM#+ )j:*u@/@ >^/$I$* >F";) )(-!3*$3*$3*$3*$4+%6,&6+&1%!."- +*)'''''(*-0 5$%9'(:&(C,*cF9`KiQgOfNdLcK`J_H^H]G}\G{ZEyWDxWCwWDvWDuWCtUBsUBsUBsUAqTAoR?lP=hL:aG6ZA1M6).+)*2/0/,/     " #$"%$"%%"&%#''$(,(-#~p߿ԵѴгͰǪθxwmXzny~~w~{wqg^YR;:7)**      -%:0'I<1WG9]KG>4LB7YMA]RD\QDSI=`TFg[MYNBKB7E>7%&&"##  #$#  ! )'&*(',*)421531643;97=;:DA?B?=B?=@>;CA>EB?KHDPLINJGNJGPLJTPMVRNRNKPLHRMIUQN^ZWZVSVQNTOKWRNWROTOKUPLWRNVQMVQMUPLUPLZUQ^ZU_ZV_ZV^YUWSOXSO\WS[WS\WT_ZV\WSWRNVQMUPMPKHMIENIEPKHQLJSOLRNKSNKSOLSNKRNJNIFQLHRMJOKHNJGVPMYTQTOMVROVPLVQLUPLSNKSNKRNKVRPROLPKHPLHRNJUQMWROZVSZVS\XU]YVZVSXTQXTQUQNTOLWTQVROXTRYURVRNVRNWSPVRNTPLQMITPLVROUQMSOLRNKTPLVRNYUQ\XT[WSZVSXTQWTPXTQVRNSOKSOKURNVROUQMTQMTQMOLHPMJROLSOM?HFiW||jЋ_VxPtMiGdF_DYCvT?sR@nN^:X2wI*f@#T6H/I1I1I1I/J/I.H-I.L/K.M.N,O)Q(Q&R(P%R&Q$O#Q#P$Q"O#N%N"O"P#R$R$Q"O!JS%W&['`*`&e)d(b)k1 q5"v7&v4)YGBYLF|XJ_M_L[IvRF^OHQNJQNJSOKQNJQMJROKOLHNJFOLHQMJNJFOKHTPLTPMQNKTPMTQNOLIJGDJGCOLITPMXTRVSPSPNWTRQNLLIGQOMVSRURPROLPMJSPNTRPSQORPNVSPpg`{̶ԶݸϬģһĮɱպھּlWCo^ztdp~m~n^{jyisdufXo_vfwhZseXvh[tfXseWqeXyl_xg  20.OKHUQNQMJMIFKGDMIEQNJRNKSPLTQMQNJPLIQMIQLHRMIVRMYTPWRNSOKQNJOKGPLGOKFKFBJEAKGBJFAJFBMIDNJEPLHQNJOLHNKGPMIOKHLHEMIFPLIQMJTQNUROVSPWTPXURXTRZVSYVSYTQUQLSNJROKPLIPMJRNKSOKSOJSNHTOISOJOKGNKHLJHLJGPMIROLVSP[XU[XUZVSVRO432)**+++-..,--)**'''*+++,,+,,*,,,-..01,-.())*++*++$%%%&&)))**)''')))''''('()))**&&'!!" !!$%%(((%&&###%%%'((*++()($%%&'''((&&&%%%%&%%&%!!!"""%%$$$$$$$$$#$$$"#""##"""!!!!!!%&&'((())-..)**&'')**)*****()(*+**++%&&'((+,,())&''%&&######$%$'((%&&#$#&'&&''$%% ###%%%$%$%%$&&&'((%&&%&%$%%''''''##"+*)0.----))) *+**++'((=93\RGLC;SJA`VJ`UIG?7&$#*('$"!""! %%$&&&((('''%%$*+*./////-../0///.-,+.+*.+*74150,!%#!&$!.+(20,963<:7><:><9<960.+1/,530=:7=:7=97;75:63?<9D@>KGDMIFOKGQNJVROWRPRMJNIEMHDLGCKFALGCMHCQLGg^VpƫҴ޿ַܽڻٺںοǻǼµȸȴpjezau^r[pYkTfPcO`K~]IzYFuUCpR@lO>gJ:aF6]B3X?1T*65(*6+! 4@!@)#D6/E6/" "?#E"D j<*r?-L!J /*$ *&* r?.i9)7F"].$84A I#1))(/% 2*$2)$2)$3*$3*$3*$2(#0&!0% /$ /$.#-!,+*)))*+,0;'%[?4zXDeMfOdNcLbKaJ_I]G~\F|[F{ZEyYEwXDuVCtUBsUBrUBrUBqTBpTApSAoS@oR@nQ?kO=hM;cJ9]D4V>/L6)5$ &$%/-.301)'*  "!#!#""" "%#&(%)*'++','ػ߼ݹҲвϳȬؿ̷ƲȵsxnW|ozt{~|uka]U=<9***    !-%<1(K>2YI;_M=kWFcQBH>4TI=F>4KA7YNA]QD]QDRH<]QDeYK[PCND9LC;&'&"##"## !!#$#!!! !"! $"!,*(+)(-+)420753=;8=;8=:8<97B?sQ>nM;hH6bD4[?2X?5R=3O=5L=7M>9N@W8Y9Z9_4~L;S@VCS@yH8rB3pE9hNGWQLSPLTPMROLQNKROLROKQNJUQNTQMRNKVSOWSPUQNUQNTPMRNKNKHMJGLHEPLJWTRVSQROMURPOLJMIFQNLURQVSQURPROMSPNROMPNKOMKPMK\WRuj͸˩հѭƤĤѺϷ׼Ŧɬo[HyiXTJ@`UJi[On_Rn`SqcVyj]{m_}obtfviykvitgwivi}pc}ob   2/-NJGOKITQNRNKMIEKFBNIFRNKROLQNKTQMPLILIEROKWSOXTPXTPUQNNJFB>:?<8A=9LHDQMINJEMHDMIELHCKGCPLHTPMRNJQNJUROWTPTPMRNKOKGMHDPLGROKTQOVSPXURYVSZWTXTRYUQXSOVQMTOJWRNYUQTPLPLHQMJQMIPKFUPJVQKSNIMIDKGDEB@DA>KHEQMJQNKTQNVTQWTQURO322+++,--.00.//))*'(()***+++,,+,,,--./0+,-())++,*++$%%$%%'('**)()(***(((())())())#$$!!!!!!"""$%%''(%&&&''())+,,,..)))%%%&'''((%&&$%%''''''$$###"%%$%%$'('&&%#$#"#"$$$$$$##" ! $%%&''%&&,--+,,&''&''()(((()))'((&''%%%''')*))))&&&$$$'''***)**+,,)**&'''((())&''###%%%$%$##"""!&&&())&'&()(%&&%%%'''###)(()((+++((( ))))*)(**A;6]RFJB:ULB]SH^SG>70&%$*('%$#$## %%%&&&(('(((&&%(('---/0/---/00///,,+/-,.*)30.3/+" '$"&$!.,)30-862:859758646421/,42/520:74;85952841730:63<85B>;FB?KGCMIFOKGQMJQMIOJFNIENIELHCNIFNIFLGCVNH|m_ٻαغ׷ۻݼݼԶx{epXnWkUhRdNaL^Iz[GuWCqR@lO=hL;cH8_D5[A3W>0S<.O9+L6*I4(F2'D1&@* >9!5#M+W/#B$Y5'\6(U0%W7-6R,_3 X.V7'M. N0%9"+ $#3D'F)T."/$@#a5&2O(Y- T)P)B ; /75% .6% ( 4@!B+$H:2K<4) = E!E!l<+xC0R'K!7*& & # \2$[0!0M&W+!* I$R(H#* )) )1'"2)$2)#2)#2)#2(#1("1'!1'!0& 0% /% /%/$.#.!.!/"1#3$ 7($=-(G50bG8vUB_IaKaJaK`J^H^H]G}[F{YDyWCwWCuVBtVBrUBqTBpSAoSAnR@nR@nR@mR@mQ@lQ?kQ?kP?iN=gM=:)**    "/' =2)J=1UF8cPAo[IgUDG>3SI=F=4I?5XMA]QC[PCQG;YMAbVI[PCPF;SI?'''""""##!!!###!""!!! #! ,*(-+)-+*30.31/964:74852963?<9B?5O<5N>9QB=VGB\MHcTOj\Wob]|qlwr}x}xqwgn\iSdM]D\?\:Z9]2pF:pH:iA4Y5+Q2*T;9iNOcSOONJSOLSPMSPMROLSPMTQMTQNOKHKHDOKGOKGRNJTQMVSOTQNSOLRNKRNKSPMVSPWTRWTRYVTVSQUROURPVTRVTRUSQTQOURORNKNKHNKIOLIQMJe]U{l͸ȤЭȦãؿԼپ˫αȰweSq`OlaU|na}na~oaqc|obxk_}qdviuiwjymwkthxk}oxkyk     "! HEBMJFLHFLIFPLHTPKSOJOLHNKHQNKQNKSPMRNKNJFNKHRNKOKGLIEFB>E@;B=8B=8E@;JEARNJSPLQMIQMHPLGLHDKGCNKHNJGQMIVSOZWSZVRUQNTQLQMINJFMIEPLIROLUROWTRWTQROKTOKUQKUPJVQKUQLUQMURMROKRNJUQMQLGMHBJE@JE@IE@JFCIFBGD@HEBNJGQNJSPMUROPLIJGD+++++++,,,../00)**'''&''&'&((()**+,--//*++'((+,,*+,$%%%%%()(*+*()(**))*)***'(('''"##!""###""##$$&''%&&()))**+,,-..*++'(()**)**&''$%%%%%'''&&&%%$(('&&%&&&((('''$%$&'''('&&%"#"'(()**%&&+,,,--&''%&&*+**++)**%&&&''())'((%&%(((%%%!!"&''*++*+**++'((&&&&'&****++&&&%&%''&%$#!! %%%)))&&&()($%%###&''%%$(('(('+++'(( ! '(('('&''C=6\QEF>6VLB\RF^SG>70%#"#"!#! $## '('***()((((&&%''&,,+...+++---00/+**.,++)'.,)3/*" )&#&#!.+(2/,74075164186486321.75264152/741841:63;74<85?;7B>:D@iM;eI9bF6]C4Y@2V>0R;-O9,K6*H4(F2'C1&A,">;6#9 H"7W3%^7)U/%U4*5K'_3 Y/T4%M. N0%9"+ $#4E'J*Y1%9#>"]2%*? X. X- M&B 6 364&24  25@!D.'L=5O?6, <E!E!m=+{F2Q+>8)& ! 9O)0V*!K%( N)$L)"; ()(+2)#2)#2)#2(#1("1'!1'!1'!0& 0& 0%0%0%1$3%6(!<,%B2+I92P@8XF>]KChQF}[F]G\F~[F~[F}[G}[G{ZEzXDyXDwWCuUBsTAqS@pR@oR@mQ@mR@lQ@lQ@kQ@jP?jP?jP?jP?iO>hO>hN>fM=eL{R:vP:tP:oM8lJ7hG6cD4^A3Z@4W?5U@8TA;YGA]LFaQKjYTo`[ylg{u{|qzir^lUeL`EZ=W8]9_9cD@=JEAMIETQMSPLNJGNJGSOLTQNRNKTPMSOLOKHHDA?;8<84?:5HC>NIDNIEOKFPMITQMQNJMJFQNJVRNUQMNIDLGCPLHUQMWSOWSPVROSOJRNJRNJSNJPLGQNJRNKUROXURXUSTQNSNJRMGLGBJFAKFBOJFRMISOKSOJTPLQLGNIDLGBIEAJGDKHEJGDIEBGC?MIEQNJPLHOKHLIFFC@***++++,+*++,..&'''''$%%###$%%&''+,,-..)++&''+,,*++&'''(()**)**'(())())())))**+,,''(#$$%&&#$$#$%''($%%((()*)*++,--,--+,,)++*+,'((#$$"""$$$%%$%%$*))**))))***((($%%''''((%%%"""%&&())%&&((()**())%&&+++-..+--%&&&''())%&&!""$%$"""!""'''+++*++)**'((&''$$$&&&()('''*++*+*&&&"#"$%$((('''())$%%"##%%%%&%&&%&&%**)())'((()($%%H@8[PEC;4XOD[QF^SG;4.%#!#! $"!%%$!!!(('***''''('&&%''&))(((((((,,,111++*-,++)(,*)3.*#!(%"$"+)&1-*40-63/52/86486421.75285330-41.52/741=:7?;8C?;D@HD@IEAJEALGDMHDLHDOLHRNKSOLTPMQLISMHi`XvŭϳպҶ߾ض۸ٹݽܽ¿ļĻú¹|~xu|wtzw{wkcP|]Gz[GwYEsUBoR?jN0T=/Q;-N9,K7*H4)E2'C1&A.$><7#1I!:T1$_8*U/%W5+:!G%_3 [0R0"M/ O1&>&,% " $#8H(W/#`5(L) !: \2$+A%X0$S)J$B ." 762) 53*86@!F1)O@7SC94&9E!E!m=+{F2L*08*' ) ) ' I%, V*!:4R+&I(!7))(-!3)#2(#2("2("2("1'!1'!1& 1& 2' 3'!5("7*#:,%=/(A2+D5.H92N>7TClO>kO=kO>jN=iM=hN>hO>gO>gO>gN>gN>fN>gN>fN>fM>eM=eL3RH:C@=GC@GC?MIFOKHOKGPLHMIETOLVRNVQMVQNVQNYURWSPWROSNKRMJTPMUQMUQNUQMUPLVQLWRNYSOUPKQLGQLHQLGRLHTOKYTP_ZVa\Ya]Y`[W[VRWRNXSOYTQVQNVQMVPMXROYTQVQMWQN\VRVPLXRO[VR]XUZURVPLVOKWRNTOLXSQZVS\XU[VSYTQ\WSYUQXSQUQNTOMVRNYURZVT[WT]YV\WT]ZWYUSVQNVROXTR[WU]YWXTQTQNQMJQMJTPLWSOVSPXTQVSPUQMVRNWSOZVRXTQZVRZUR[WSVRNTPKSOKSOKUQMVRNSOKUQLWSOSOKRMIUQMZVSXTPSOKTPLQMINJFKGCHJG[Qix|{zیjρ]~VwMqHjCcAZ=U;wQ:rN9oM8jJ6dE3cD4bD6_C6_E9`F<_H?eNFlWNp[Sxe]|jcxr|wkv_jRcH_BZ;W6W3\7`9a:`;`;\9T4Q/pF'_<#O4H/H/L1K/K.M0L/M0O1O0L-L-N-P-P-Q,O*O'N&N%M$K$L"O#O"L K J#NQ!N M KJJ!K!K L P!V%Z(](`+b*b."Y%\&f(o3$p5+T1'T2(R/&N0)L1+^@>wUVc_xYLrWK_PIMIEKIFMJFIFBJGCPLIPMJNJFNJGLHDIFBHD@KHEOLIOLJNKHROLUROYVS[XVWTQTQNWTQWTRXUTURPWTRWTRTPMSOLUQOROLLIEIEBGC>MG@laSpƳ̩Эɧ¡йԽѷֻ̳xeaP?{~rh\zlxkzm{ozn|p|p|p}q}qymwkxlzmst} -+)FC@OLIOLINJGLHDOJFMIELIEROLTPMRNKSPMURNSPMTQNTPMMIEFB=C>9B=8FA;NIDVQMVRNVROWSPXUQSOKLGCIEANJFWTPYUQVRMUQMYUR\YUYURRNKOKHQMIOKGPLHRNJUQMVROSOLNJGLIELHDOJERMHMGAJE?NIDSOKVQMWSOURNTPLSNJMHDIEBHEBFC@B>;A=:HD@MIFROKVRNSOKNJGNJFFC@****+++,,()))))#$$'((#$$!""$$$%&&(((+,-)**'((+,,())()))**+++*++())+++)*)))),--.00())$%%'((%&&&&'''(#$$&''()))**+,,,--+,,)***++)*)&''$$$%%%$%$%&%****+*))((((%&%#$#&'&&'&$%$###%%$'''#$$$%%*++,..%'&())-/..00)++)**)**'((#$$$$$"##"##&''*++)**'((%&&((((''%%$%&%$$$()))))%%%##"'('*+****())%&%%%%$%%&&%)(')('(('''' )))*+*$%%JB:[ODD<5YODZPE\QF1,''%#$" $"!'''$%$&%$(((###$%%'''-,,.,+''&'''*+*/0/+,+,,+*))-,*2.*$!(%"%" )'$.+(/,).+).,)53186331/6419632/,2/,30-30-852=96FB>FB>FA=HC?JFBMIENIELHDMIEMHDNKGOKGOKGRNKRNJTOKc[Uyl˲ݽ޿ǫԴܹбֶܻ޾¾úú}wsuolrmjvpm}rl~i]vZGrTAoR?kP>hM;dJ8aG6]C4Y@2V=/S;.P:-M8,J6*G4(E2'C1&A/%>#>8!+ F ;N-!_9*U/%X6,>$? ^2 \0O*M/!O1&@(!17' $#F&K(Y0$`5)U/%#6Y0#,B&S-#L#E!A ')86+& 603;7@!I5-RB9WF<:,%7F!E!m=+{F2L+05*+& G%^3%H$H%/T* ) C"R+&G'1)) (0$3("3("3("3("2("3(!3(!3("5)#6*$8,%;.&=0(@3+C5.F70H91K;3O>7TB;ZF?aJ?jN=jMnZHq\JG=3SH=G>4C:1QG<]QC]QDOD9PE:YNB^REPE;WLA,+)!""###!"" ! """  " ,*),*(+)'1/,1/,41/;85;86;86=:7D@=IEBEA>HDAJFCNJGPLILHEOKGRNKSOKWSOVROUQNUPLVRNUQMSNKSNKTOLSNKTOLSNJUPLVRNUPLRMHOJENIDPKFTOK[VR^YUb]Yc^Z`[W\WS[VSVRNUPMZUR\WTYTQXROZTQ\VS^YU^XT_ZW[VS[VS[VT_ZW`[XZTPTMIWQMRMIUPLXTQ]XUYTQWROXSOZVRVRPSOLSOLVRPYURZVSWSPZVS_[Y_[X\XUYURWSPUQOWSPYVTWSQTPMTPMSOLUQNXTPVROXTQWSPUQNXTQYVSYVRXTQZWT]YV\YUZVRXTOUQMVRNWSOYURWSPVRNYUQYVRWSNXTP[WTYVRSPKQMINKFMIEJFB@EB`QlxzޏxޒwԈi|Z|UrKkFhCa@^?X=}S;uO9oL6mK6jI5hG6iH8iJ;kN@mPCoSGrVKz_Ti^rgul{ujtZjN_C[GDAKHEKHEIFDNLIVSQZWUYVUTROPMJQNKTQOXVTXVTXUSVSQUQOUROTPNOKHKGDIEAGC?FB=[SIwdվɧʨȧϸйȨϯ̭̳|hUE4r~xmawjsftguiwkvkvk~siujwkwluiui~sgs||  .+)IEBQNKSQNRPMQNKQNKQMJMJFMJFOLINJGJFCHDANKGWTQWTQROKMIDID?JFAJFAIE@LGBUQMYURURNQNJQNJUPLRMIRMIUQMYVRYVSSOLKGCIFBROKTPNMJFJFBMIENIENKGURNWSPVSPVRORMIPKFOJEOIDQKFMHCHD>OKGWSPXSOYURXTPSOKRNJPLGJFCC@=DB?FC?GD@NJGSPMVSQYURWSPSOKRNJFC@*++,-,---,--/00%&&*++%&&$$$())'((&''*++)))()),--()))*****+,,,--*++-.-)**)**.///11()*%&&***''&%%%$%%"##&&&'(()***+++,+*++'((())'(''('&'&&&&$%$&'&*++)**&''&&&#$###"(((())%&%###%&%(((#$#""")*)+--$%%''',--.0/+-,'('()(())#$$!""#$$"##(((,--,,,()(&'')))))(&%%%$$"#")))+++&'&##"'''())(((%&&!!!$%$'('(((++*,+*))(''' ((()**$&&LD;YNCA:3WMCZPE[PD+'#+)('%#%#"()(&''""!&&% ! "#"(((3102/-*)(''')))...+,,***))(,,*-*'$" '%"(&$+(&0-*.+(.+(.,)63085230.1/,85252/630841841<85>;7HD@HC@HC?JFBLGDNJFPKHOJGNJFMIEMIEMIENIEOJFOKGPKGVPLj`Wv˳Թ޿ٻ޿ٻʬȪа˫Ҳ׷ĺ|ysmjmgenhfrlizmfv`RiN;gM;eK9aG7^E5[B3X@1T=/R;.O9,M8+J6*G4)E2'C1&A/&>%>:+ C>L,!a:*V0%W4)?$:[1]2K*M/!O1&D*#14' $"N, M)Z1%X0$@"% -D$,B&S,#L#F!@$/955,6+9<8@!L80UE;YG>>/'6F"D l<*|F2O,12)'. g9)s?.P)E#2L&* L'"Q*%C%, )))2'!3)"3)#3)#4)"4)#4)#5*$6+$8,%:-&1)A4,D6.F80H91I92K;3O=6UA:ZE<]F8\E6[D6ZC5YC5WB5T@3S?3R>2N;0M;0N<1M<1N<1M;1N<2S@4VB6YD7[E8]G9]H:^H;_I;_I;_I;^H;_I;^I;^I;^H;\G:[F9YE8VB6S@3P=1L:/G5+?/%8( 4$'  '&(&%*'%'"#    #!'#&'$(JA>ڵүάģʪ̪ӲҴŪԹӷ£׽ʳuslUxnb~~xxkt{~wlb^V?><,-,   *#8.&E8.QB5aO@q\Kt_MG=2RG4D;2SI=^RD_SFPE:PF:YNB_SFQG;8DA>C?EA>JFCMJGNJGQMJQMJPKHSOKTPMUQNSNJRNJQLHPKGOKGQMJRNKTOKPKGPKGQLHQLHQLHPKGRMIXSOXSNYTP[VR^ZUb^Z_ZVXSPUPLTOKTOL\VT]XV]XUXROXRO^XU]WS[UR\VSXSPXSPYTQ\WT_ZW^XTZTP[UR[VRUQMWRNZUQWRNUPMVQMZURWSPQMJOJGQMJTOLXTQXTQZVS^ZX_[Y_[X^ZW]YVVRPQMJRNKTPMWSOZVRRMIOKFTOLUQMVROWSPTPMPLIVRNWSPWSP\XU]YVZVRXTPXTPZVQ\XT[WS\XU\YV^ZVYUQYUQ[WS[WSZVRTQMNKGMIEJGBMIEKHD:B@dRlw܋tՉsшqcz[xToKiFeB^>[=X;T:{Q9vN7tN8tP;pM9pM;oN=tSCzYI`PeUl]seqw™—t~dvZiL]?X9S2P.P.Q.V1X2W2X2S1~M,O0yJ*h?$U6 L0H-K0L/L1K0L0N.P1 P1N0O/O.O.Q/Q/S/P,P+N(N(N'M'L&K#K%K$I!IK JFHGJIHHI!KLK R!U&W$Z(\)_, V ^ h+r6*^1'C"X1%YCpU}bǂfÂfx^dNS@uG8nB7jJBSMJQNJQNJQNJOLHMIEIEAIEAGD@EB>HEBIFBIFCNLIQNKQNKROMRPNPMKNKHROLURPVSQTQOROMROLROLPLINJGLHDLHDMIFIFBNICjaSzʵáţʩսƧʫ̭϶kI9)zk|vl`tgtguhwkxlxmvkyoezpevj|otwyx{| <95ID@NJFROLQOLSPMSOMTPMQNJQMIQLHSOKQMIOKGOKGQNJVSORNJNJFOKFLHCMIDMJEMIDOJESPLXURYVSWSOVRNZVR[WT\YV]ZWYVSSOLKHEFB?C?;HD@KGCIFBJFBFB?JFBIE@IEBKHEKHELIFRNIOKFNICMHCQLGOKFMIDSOK]ZV]YTWRNNIFNJFNJFKHDKHDFC?DA=EB?NKHUQMSPLRNKRNJUQMVRNVRNGEB())*+++,,/00021"""###,-.'((%&&*++()*''')**()(***,--(()&''&&&())+++***,-,'(()**-...//&''$%$((($$$"""!!! $$$&&&(**)*)*++)**&''%&&$%$&&&&'&%&%#$#%&&'()'()%%%#$$!!! ! &'')**%&&!!!###((($%%"""'('*++%&&'('+,+-..+--$%%()(*+*%%%!!!""""""))),,,+,,'('''')**)**(((('&&&%))(+,,((($$$'''''''(('(("#"%&%&'''''))),+*--++*)##"'''()(&&&QG>YNC=70ULBYODZOC*&"%#"$"!%#"'''''' !! &&%"""###&&%10/0-+'&&%%%(((---,-,,,+++*.-,+(%$!$"(&#*(%0-*/,)1.+0.+630:7341.0.+641520630742:74?;8?;8FB?HD@HD@JEAIE@LHDOKGNJFMIFKGCHD@JEBNIEOJEMHDLGBMHC[SL{maܿۻݾѲͭϰӳ߿ݼ¾}~zwuolkfcga_idaumhq`VeL<1C M$S-"b:*V1&Y5*F+#5V.^2 M,M/!O1&G,%2.$$"W1$Q+ \1%Y/#/' & ) -E( S-#L#F"< 185@&35% C">8@ M91XF=[I?H80/E!D k;*|F2R. 2.S.!tA/d6'M'<:H$3Q*%O*$>"))(+4)"4)#4)#5)#5*#5+$6+$7,%8,%9-%;.'=0)@3+C5-E7/G81I92J:2L:3P=6UA8XC7ZD6\E7[C6V@3Q=1P<1O<0Q=1Q<1K9/F6-E6,H8.J9/J9/J:0H90J:1J;1N=2S@5WC7ZE9[F:[F:[G:[F:[F:[F:[F:ZF:ZF9XE9VC7TA5R@4O=2L:0G7-A1(;+#5&3$* +)+*(*(&(     %!#'#' ˲۵ֱ̪Ю׵ܻԶƩھťĦзǯyvnVtk_|~|uzqfznyxmeaYCA>,--     +$7-%E8.QB5]L=p\JvaOH=3QG;H?4E<3TI>\PC^REPE:ND8XL@aUHRH=WMB1/,$%%#$$!!! "##!*(&,*)1/-41/853:75853530641>;8B?;B>;DA=D@=HDAMIFKGEOKHLHENJGSOLUQNXSPVQMRNIOIENIEMHDOKGUPMVQMTOKSOKSMJQKGRMITOJXSO]YUZVQVQMSNJQMIWRNWROWRNTOKTNKVQN[WT\XU`[X_ZW_ZV`[X[VR[UQ\VSZUQ\WT^YV^XU]XU_ZV\VR[VR\WTUPMWROWRNTOKTOLRMIUPLVQNOKGOJGUPMTPMUQNXTQZVSXTQZVS]YW]ZW[WTVRPOKGOKGRNJTPLYUQVQMUPLVRNUQMTPMWSPXTQTPLVQNXTPXTPYUQ[WSYUQWSO\XT[WS]YU`\X]ZW[XU_\X]XUXTPYUQ[XTYUQRNILHCIFBIFBLHDJFB@EBnYmuތr̈́nƂj{_wXuSoMhFcA`@^?]?XvR@uSA{WF`NhUo\ub|lv~™ɛșÐxgsWeH]?U6O/zJ*zK){L+yK*}L,~M,K*M,yI,uF)oC'g=#[7P4H.H.K/K-K/K/N0M,Q0R1 P/Q.R-P-P-O,P+O)N(M'L'K$L$J$H"I$I"E!GIGGGEB A K!W- Z1#X/!P$IOS%U$V'X$\'T Zb%m2'e0'M(L7iR~h͉s̋rlqZYErF7d=3a>6`CAUIFQNJSOLNKGJFBIFBHE@IEAFC?EB>KIFMJGMJGNKIOLIPMJPNKPMKNLILIGNKHQNLSQNSPMROLRNKQMJOKHOLINJGNKGQMJLIEHE@YRIyfưѹĢ¢ս׾ǨίٿzJ;,{pc|xkrewiyl{nsvuzn}shuizmrwzx{~  %$"KIFVSPTQMTPMTQNSPNTPMVROWTQWSPVRORNJRNJTPLRNKMJGNKGTPMTPLQMHRMIPLGPMHRNJRNIQLHNJFQMJWSOXTQ\XU]ZW]ZW\YV_\Y^[XVRNLHCIE@KFBLGBLGCLHDGC?>95D@;LHDKGCLHDNJGQMIRNIPLGQMGSNITPLNJFMIEUQLZVR[WRWRNPLGSOJSOKJFCIFCIFBLHDKGDMIFSNJTPLOKGGB?KGCTPLSOLB@>())'((*++,--.//###+,,'((%%%)))())&'&)))())***+,-'()$$%###'''()((((***''')))+,,*++$%%$$$(((%&&""#  "##$%%'((&('(**(**$%&###"#"%%$&&&&&&$$$%%%$%%%%%$$$#$# ! %%%'((%&& ! """'('%&%!""%&%)**&'(%'&()()***+*%%%'''((''&&"#""##%&%)**()(*++((('''((('((&&&'&%&&&***-.-*+*&&&&'&&&&%&%'('$%$&''&&&((()))+*)-,+++*%%$''&***))(SJ@XNC@:3WMCZPEVLA" #! #! #! %%%&'' %%$#$#&&&''&32120/)((&&&*+*-.-..-..---,1/.)&#%"# (%#+)&2/,0-+1.+/-*52/;747411/,752741631853;85>:7;75DA=IEBGB>GB=FB=HC@JEBKGCMHDKFBKFBLGCMGCJEAID@JEAOJEZSMsh^}еپ޽Ȩ˫׷׷޾{|xzwysp|urzw~wt~wtxurlikebf`^d_\kebnaZdOA[B1ZC4X@2U>0R=8)"5G"Y1%b;+W1&W2'@&4R,_3 V1 M/!O1&I.&2/%$"[4%T.![1%V.#) ' ( +-E( S-#L#D 2 .65E) 64 ! I&> 9@!P<3ZH>]J@XF<:";E!D k;*|G2S. 3,A"L*^3&V- N(79>>R+%M)#8))(/#5+$5*$6+$6+$7,%7,%7,%7,%8,%9-&;/(>1)@3+C5.F70H91I92J92L:2SD@TEAR=1T@4VA4T?3Q<1L:/H8.H7.H7.H7-F6-C4,?2*@2*D5,H7.I90E7/C6.F8/G90I90J;1O>4UB7WD8XE9XE9XD8WD8WD9WD8VD8UC8TB7RA6P?4N=3K:0G7.B3*>/&8)"2$1"'  '&)'&(&#&  ! %!$ k^SүģѰۺ߿Զʮپۿζ˳}}u\rh\w~}~{tyqf}ujvynd_XDC?,-,     +$7-%E9.QB5\K`TGQGJFCMIFJFCMIFIEAKGDQMITOLWSOUQMSNINIEPKGUPLVRNWSPVQMXSOYTP[VRXSOZUQZUP\WS\WTZUQVQMQMINJEQMISOKUQMVRNVQNWSPYTQYTQ^YW`[Y`[X^YVZTP\VQ^XT_XU`[XZURWRNZTP]XT\WS^YU\WTXSOZUQXSOUPKVQMTOKSNKUPLSNJTPLXTQXSPRMJTPLXTQUQNVRO\XV[XUYUSVSPUQNUPMUQMUQMXSOZUPXSOTPLRNJSPLWSPWSOWSPYURZVR[WR]YU_[X\YVYUR^ZV\XT]YV^[X]YWYVR\YU]ZV\XT[WSZVQYTPWSNSOJTPLUQMMJEJFBEIGp\mqׇnʂlăjv]pToPgHaB`@aB`AaB]?X#_:!V4O1K1I/I/K0K0M1L/N0O/R0P2!Q/P/Q.P/M-P+P+O)M(M'L%J$J$H"F"G#H#F#E GCA?G xF2[CfLlPkPgNYDtF5Z/#O%P"P#V&Y)V#U]# j/%m4(q?,U@kXlrp}geQuJ;e?4[<3T=:\GK_MLPMJPLHMJEMIDMIELIEJGCFB?IFCQOMROMNKHJFCHEBLIFOMJOLIMIFKHEOLIPMJQOLTQOUQNSOKQMIQMJPMJOKHPLIPMJIFBB?;IE>i`Rn̴¡վҺз£ʫI;-sh[qzl_xk|ostzn{rgxnczod{pd}reylqrr~ot0.,GDAPMJOLIRNKVROVRPSPNOLISOLURNSOKNJFC>:A=9LGCSOKQNJPMINJFOKFUQMVSOQMIOKGPLHRNJTPMRNKUQNZWTZVTZWTZWT]YV\XU_\Z`][[YVSOKLHDOKGWRNYVRSPMJFB@;7@;7HD?LHCSOKSOKPLINKGJFBJFAPMHRNJNJFQLHYTPZVRZVRZVRXTPVRNSOLLHEIFBKHDRNJRNKRNJSOKVROSOLLHDNJFWSPWSP?=<())'((*+++,,+,,###*+*(((#$$"#"''''''&''&'&)**+,-())%&&$%%())())(((()(''&****++&''###$$$'('''("##!""%&%'(('((&''())'((!"#!""!"!##"%%$%%%"#""""!!!$$#####$#!"! $$$&''%&% ! !!!(((%&%!!!$$$'((%''"##%&%'''(((%&&$%%###&&&$%%%%%(((())$%$(((()(()('((&'&$$#$#"%&%)**,,,*++()((((&''&'')*)'('())%&&'''**)+*)+*)**)&&%%%$()(,+*TK@WMCB;4XND\RGSJ?&$"%#"$" %%$%&&!!! ! !""&'&(('10/20/+*)&&%**)-.-..-..-0/.521&$!&$!#!(&#,)&30-30-0-+.+)1.+;84=9631.97363041.630963>:7?;8C@HC>KFASNJ\WSpg`x̴а˩{zw|urwplunkvpltnkoifnhepifnheic`e_\b][hc`siedRHW@1V?1T=0R>:(!.5V/$[6(S0%P.$: 4L(_3 V1 M/ O1%L0(31& $"]5&W1#Y0$S-"  * ' *.E( S-#M#A& 069 F) 51& K(A!:@!R>5[J?]K@^KAF,$? D!D j;*}G2S/ 3& W/$Z1&_3&T,N(O'K&8I$R+&E#()) (2& 6+$6+$7,%7,%7,%8,%8,%8,%9,%:-&;/'=0)@2+C5-F6/H71I80J80NCBYVZTNPG6,N;1N;1J9/F6-F6.H7/F6.C4,B3+A2*@2+>1*=0)@2+B4,C6.C6.@4-@4,C5-E7/D7/B6.H:1O?5TB7UC8UC8UC8UC8TC8TC8RA7Q@6P@5N>4L<3J:1F7.C4+?1(:,%5'!0". %  #$#'! #   "!&!#ǰݹЮʩѰֶӴгçӷ׼ѸϷ­{|t\qh\w~|xuyn~vktzoa]UDC?-.-    (!5+#E8.QB5ZH:fSBq\JNC7SI=JA6D;2OE:ZNB\PDQF;KA6RG<^SFQG:FB>JFBKGDHD@IEAJFBLHDQLHRNJXTPTOKRMIQKGPKGUQMYTQYUQ]XU^YVXTP[VS\WS\WS[VRYTPVQMXSPXTPUPMQMIPLHRMISNJUPMWROXTQVQNUPMZVS_ZW`[X\WSYSOWQLYRNXRN\VSYTPWQN[VR]XT]WS_ZW]XTZUQUPLVPLWQMWRNXSOTOLVQNXSPXSPZUSXTQSNKQMJSOLVQOYUR[WUZWUVSPQMISOLXTQXTQZVSZVSWSOOJFJFANJFRNKTPMTQMWSP[WSZWSYUQ\XS]YU\YV[WT\XTZVRYVRYVS[YV\XU]YU\YU[XT[WSVQMTPL[WT`\Ya]Z^ZWVSOQMIJLIq]moтk~hzer\lRhLcF`B^@_A_AaC^@\?\?Y>Z@\D[EaLgQnXu_|emv~ĘǙșǗu}dlR\AQ5wG-h>$a: Z7X7Y8 [:!];!b>$c;"e="a<$\8"V4O0J.H-I/I.K.L/M/N1M.O/P/Q/O.P.O/P.Q.N+O)N,N)K'K'I%J%G&E&D&D#E$D"DEA7 Y0!aG}_|`tZjQ_GS?|K9uG8oE8c2X:0T;3YB?dMOiRQSNJMIENJFSPLXTQVSPQNKLHDKHEQNLPNKOLIJGCHEBKHFQNLPMJNKHLIFOLJMJGJGDLIFROLTPLSOJROKSPMSPMQMILHDD@#>;'0*9!5&1#0#/ 0F%^3 W1 M. O1%M1)31& $"^5'Z3%J(E% )' * .E( S-#M#A# 35:;43 $ J'B"<A"UB8\K@^LA`MCL5->D!D j;*}G2U/!3#  X/$I&I(O)O(X,"D#5M' R+&@!')) (4(!4)"6+$7,%7,%8,%8,%8,%9,%9,%9,%:-&1*>1*@2+>1*<0*<1*>1+>2+=2+?3,@4-=2+A5-E80E80D70B6/D81K<3P?5SB7SB8SB8SB7RA7P@6O?5N>5L=3K<3I:1F8/C5-?2*<.'7*$2%, +$ ))0""'#"'     !QGA۷Ϋάͭв׺ָǩؽ׽ֽȴ}~v]pfZv}ywvym}rxn^ZRBA=...  ' 5,$E8.OA4ZI;gSBoZHPD7RG;LC8D;2OE:YNA\QDRHJFBLHDGC@FB>HDAGB?MIDQMIVRNTPLRMISNIUPKXSOXSPYUQ[WTZURZUR]XU[VRYTPXSOWRNWRMWSOWSOVRNTPLQMIRMJSNKTOKTOLUPMUPLVROZUS^YV`[X_ZW_YU]WR]WSZTPZURYSPXSO[VRZUQVPLUPLVQMXSOWRMXRNWRNWRNZTQXSPYTP]YV^YV]YV\XUXTQUQNSOMWSQZVTXTRWSPVROTPMTPMVROZVS[XUXTQVRORMIQLHSOLUROTQNSOLSOKSOKSOKQMIVRMXTPYUQ[XT\XT[WSYUQWSOWTQWSP\XTYUQWRNWSOUQMUQMZWT^[Xa^[`]Z[XUWSOQROp^nm}fucr_nZhPeKcFbD`C`C\>]?[=]?\?\A\B^F^GeNkTrZxa{djs}ÕƗǗÒ|qyahNX?~L3rD+d;#W3S2N0P1N1L1P1R3R2R1S3O/K-H-F-G+J.K0M.L/N1M0M.O/P0P0O/P/N-N-N,O+O,N-M+K(L(I)I&F$D#B"A$C B@?4 T. eKb˄k}hs^bMN5aD=X81K M R#T%S&V"a)i7&tA/M;\JgTlZiX]LuJ<_;1U9/X=4]D@fOPnUTTMINJGOLHTQMXURYVSWTQROLPMJRPMQOLROLOLIKHEMJHNLINKHLIEHEAKHELIEGDADA=IFBNJFOJFPLISPLSOKPLHKGCFB>EB>B>:C@:[TGxcͶӻϷѸжԹεXJ;h[M|lwtgymb|qeymxywzwssqsv{@=;HDAFA>GC@GC@HC?JE@QLHWSPVSPRMJQMI[WSXTPSNIPLGRMIWSOWTQUROVSOURNSOLRNJQNJOLHMJFNKHOLIPMJQOKROLPMJPNKTQOUROQMJKHDLIFROLUROVSPSPMQNKIFCGC@MIERMISOKPKFOKGJEAIE@JEANIDRNISNIOIDOIDPLFOJENIDPLHTPKSOKUROXURVSPROKPMIHEBHEANKHNKHROLUROURPROLPKHPKHSNJPLH654)**,..,..+,-+,,$$#,-,+++&&& (((+,+)))%&&%%%'(()**'''$%%'''$%%%%%'('''')***++&'(""#&&&++++,,##" %'&'((%&&'))&'''('&''"###$$"##!! $$##$# $$#%%%&'&""! !!### '''())%&&&&&*+*)++#$$&'&'('((''&&$%$$%$$$$$$$#$$%&%%&&%%%&'&'''))('('%%%###!!!""!'(')**'((((''&%(('***)*)&'&&&&)*)***...//.10/-,,**)$##))(52/ZPERI?>70YOD]SHRH?(&%&$#$"!""!#$$#$$###(((000222..-''&**)..-///00011120/&$!'%"'%"'%")'$/,)3/,30-1.+52/:74;8552/97386341.963=96>:7EA>EA=GC?LIEOLIQMJPMISPLUPMSNKPLHPLHQMIUQLVQMUOJVPLTOJTOK\VQtja~ҹԹݹڷݻݾᵫ{vulhhcaa_]^mjj{wvºƾǿ~|~~{~z|y~vs{tpwolrkhlfckdbjdajdbkebhc`lfcmgegb_c^\a\Z]YX`ZW\NGR=0P;.O;.M9-K7,I6+H5*F4*D2)C1(A0'?'>=$0( .3&1$0#/$0"?!\1X1 M. T5(R4+=%6+%! _6'c8)81% ( +.C'T-#M#> &:"3? F$<#3$"H&B"=A#WD:]KA^LB`MCS=5=C!D j:)}G2V0!2$ ^2&;1L'Q)S* ;=O("Q+%9')'7'"O;3A1)8+#4)!5)"6*#7+$8,$8+$8*#7*#9+$;-&>/(@0)@2-@9:A?CDDHHHMKMTQQVG@A@2+E6/D6/F70C5.A3,>2+<1*<1*@2+@2+;0)<0*<1*=1+;1*;0*>3,@5-B6.C7/C70E81B70B70E92G:2M>5QA7RB8QA7P@6O@6N>5L=4J<3J<3I:2G90D6.A4,>1*:-&5)#/#**!%$' !' #"& #! ۷ٴҮѮήͰҵڻͯ׽ֻԼı}y`oeYu~}wz{p}r~wl[VO>=:-..  & 2)"B6+PA5]L=fSBlWEPC7QF;MD9E<2RH:7A>:GC?IEAKGCHD@B>:C?;FA=MHDOJFQMIUQMSNJTOJUPK]XU\WT\XU\XUXSQVROZVSWSOWRNWRNXSPYTPWRNUPMVQMUQMQMIRNJTOKUPLUPMWROWROZURZVS[VS]XUa\Y`[W^XT]WS\VS[VSYSPWRNXROXSOSNJRMIWRNWRNXRNZURYUQWRO\WS[VSYTQ^ZXa][^YW\XUXTQTPMSOLUQOTPMSOLOKHRNJTQNROLSPMTPMXTQWTQUROWSPYUQWSPWTQUQNROKRNJRNITPLWRNWRNYUQYUR]YU^ZV\XT[WSYUQXUQXTQYUQYUQYUQWTPVSOVROXURXUQZWS\YV\YVYVSQSQl]l؀iybr_o\fTcN`I^F^D\B[@Z>\?[>[>Z=\A\C`GcKhPlUqYv^zbgptywrir[cKT;yI0k?(`8"S0H*F*E)D)C*B*E)F,F-E+G+E*E*F+F+H+K,L0M/L/M0M0L/N0P1Q1O/O0N-O.M,N,P-O,L+L)J(I(G%E#D"C B ?>=4 G']CvYɀfŁkziiXQ?lB4_>2S:0N8.M91T@=^EAL(HJ"P&S+!S%])e5%n=-xG6TB]K`O\KyO@jC7^;2X;1Z?6_FAhQQqXXXOKPMJPMJSPMTPMTQNVTQUROROLROMQNKOLIMIFIFBJGCKHDKHEJGDHDBHEBKHDKHEDA=D@GB>HD@MIEOKGPLGLGCJFBIEBFC?><7KF=rgVu̶ĬªɯҷɰXKD=5WNC\RGMD;&%$%#"" "! #$####""!))(./....))(&&%)*),-,./.11123221/*'$)'$+(&*'%(&#/,)/,).+(.+(41.85263042.;85<9652/841<85>:7D@&=)!1) 0 5( 3&2%2%2$;Y0X1 L. U6)T6-M1)2,& W1#a7(<6# ( *.B&T.$M#>9#pD5e=1<$C P(G*!.)  B"C"<A$WE;]KA^KA_KBT?8=B Cf8'~H3_5%0 5^2&75N(L'D"@#I#P)#P*$2()&C1,VA:U@8P<5L91C2*;,$9*#5(!5(!5' 6' 7(!7*$7+(2*)3159:@<=B<<@>>BBDJIJQOKNF82B50C60G92E70B5.?2,=1+?3,B4-A3,>2+=1*=1*>2+>2+<0*<2+@5-B6/C7/B6/B6/B70A6/C81E92G91K=5QA8QA7P@7O@6M?5K=4J<3J<3J<3H;2F91C6.@3,=0)8,&3'!-!(( 81-JA<!'%*  !&!&MD?۷ԯҮٶֶѳͰʬ¤ܿѸ~fofYs~~y|}ps}vkWRL:97-..  &0' =2(N?3]L=hTCmXFPC7PE:ND9E<3UI>[OB_SFSH=OE9ZNAaTGSH=KB851-#%%#$$!"" "##!""      *'%2/,1/,2/,31.631520741852?<9C@C>:HC?KFBMHDPKFPLHWRN[VR\WSYTP\WTYTPWSPWRPXTRUQNQMIPLITOLSOKTPLSNJRMIRMISNJRMIPLHRNJTOLVRNVRNVQNSOKWRO]XU^YV\WT_ZX]XUYTP\VSa\Y^YW\WT^YV`ZW^YU_YU[VRZUQXSPVQMUPLVQMWRN\VR\WTZURZVS^ZX]XV[VSVQNTOLUQNUQOPMJQLJPMJPLJROMROLPLIRNKVROVSPTPMQNJOKHOKHPLIPLIROKSOKTOKZUR^ZV\XT]YU]ZV\YUYUQ\XU^ZW[WSZWSZWSVQMUQMVRNXTPZWTVROURNTPMTQMYVRZWTXUSJMLiXk{ew`q\kXbP_K]HXDVAV@U?U>W?V[@\B_FcJdKgNoWv^x_|d~ghj|fs]hR[DP8{H/i='W2L,C(?&=%=&=&>%@%A%B'A(D)B(B(D*F)F*H+G*I+K-M.M0M0L0N0O/O.N,O-O-P/O.P/O.N+K)I(H'G%D#C!C!B A?=9/ ~I4kOu[|dzfo^ZHpD4gB7\>3T9/R8/S:2ZB>gKHQ1*C!FH"P&O#X)`2"h:*qB2|L;9NKHNKHNKHLHEOKHSPMTPMVRNWTQUQNVRORNKLHDMIENJFJEAJEAOKGPLHLIELIDNJGKGCJEBPLHURNWTQUQNUQMTQMVSOTQNRNKPLINKGNJFMIDOKFNJFRNINKGKHEJGDKHELIEQMITQMPMIMJFJFBKGCQMITPLPLHOKGPLHLHCNJDQLGPMHLIEWTQYUROJEID@QNKZWT[XUWTQTQMSPLURNSOLTPLSOLOKHQNJTPMPLILHEKGCGC?0/.-.-())$%%())&''$#"'''-..-..'(($%$*+*+++%&%"##&&&*++**)$$#$$$%%%%&&$$$"""&''*++)*+#$%$$$***,--**)###'(''((%&&&''&''())())'(('(($%%$%%%&%&&%##"!! "!$"!(&%(('""! ###$$$ !!&'''((&''$%$%&&%&%&&&***()(&&%&&&(((()(''''''((('(($%%&&&)*))*)(((''''''''&""! %%$''&$%$&&&$#"&%$&&%######'('+++&''******--,++*)*)%$$+))951[PEPG>G?7VLBZPEJB: ### !!"!!**)./.---&'&$%$(((+,+-.-/0/00020/+(%)'$.+)-*((%#/,).+(+(&+)'20-74141.31-:73<9640-841A=:D@=HDAJFBOJGOKGNJFQMJUQMWSOWSPXTPYTPVQMPLHPKHOKGNIDRMITPLTOLSNJ^WQuj`yиۻԶַ޿Ծ<@EE5*}^Hu[elkkjfy_oXhSxYH_H7YB9]E;[C:V@6K8/E4,C3+C3+>/)0,+-,/((+-,056;9:@78<:;??AFEGNJIOM@=I:3E82I:4G92G92E70C5.E6/D6.C5.B4-A3,@2+@3+?3,=2+:0*;2+?5-A6/@5/@5/B70@6/@6/B70D81E92I=4PA8QA8O@7N?6L>4J=4J=3J=4J<3H;3F91C6.?3,<0)6*$0%+&%0'#C:5 *+1+)/   "!#"'#&ݸֱЬ״ܼٺϱؼպѷ~s}u\kbV~r|z|ssyshQMG553./.   &.&9.%H;/YI:fSBr\JTF9OD9ND9F<3WK?^QC_SERGD?;ID@LGCNIEQLGPKGVQMZUQXSOTOKVRNWROUQNUPNSOLOKHNJGNKHRNKSNKRMJOKGMHDMIDOJFPKGRMIUPLVQNVQNVQMVRNTOKWRN]XV_ZX\WT^XU]XUZTQ[VS\WT\WT`[X`[Xc]Zc]Zc^Z_ZW]XU^YV^YV[VSZUQ^XT]XU[VRYTPXTQ[WTZURZURWROUPLUQNUROVSPWSQVSQSPMROLTQNUQNWSPXURXTQUQMRNKOKHPLISOLQMISOKUQMVQMSOKXTO[WT[WT\XTZUQWRN[WT^ZW^[W\YV\YU\XT[WSXTPVSOXTQVSOUQNWSPUQNTQMWTQPOMrmgyyfwar[lWdT\M]J]IWDR@~P>|N<|M9R[A]D`GdJiPmUnUnVoWoXnXhRaKV@L5vC+k<'Y2J*@%;"<$:#<#=$?$A%A&B&?&B'A&A)D*E'G+I+G)G(J+L-M/K/J0M.N.M-L-O.O-O,N,Q0L.N*M*H'H'G&D$B"AA!>>;- U/!\BjOqXu`p]aO{L;i?1d?3^=3V9/U:0V<3\C?jNKX81B@@P' T' U'\/ c7'j>.rE6tK;qK3];2Y92T:3V>5]D>eNLpWWaRMQOKPMIPMJQMJOKHQNKSPMQNKNKHOMJOLIOLJOKHLHENKHQMJRNKROLPMIOKGQNJRNLLIFJFBLHCOKFMHDOJFPKGJFBGC?GC?D@=>;7<94ID=mcUnǯպҹoaORD7xse}}|~ywsttwzvq~pry  #! KIFQNKROLQNKPMINJGQOLROLSOLSPMQNKQMJPMILHDNKGQMJOKFJFAMHDTQMSOLROLOMIKHEMIFSOLVSPXTRVROTPKQMITQMUROUQNUROURORNJPLHRNJQNJPMHOLGLHC?:7=95HD@OLIURPWTQVRNSOKSPLVSPUROSPLPMHMIDKGBIE@FB=EA>C?83\QFLD;H@8WMCYODH@8##"'''$%%  !! ()(-.-...)))$$#&&&*+*,,,..-...320,)%(&#.+(.*')'$1.+2.+-+(.+)41.74174141.962><8741;74B>;EA>HC@GC@LHFOJGOKGMIFOKHTQMXTQYURXSPSNKNJGRMJRMIQLHTOKWSOWSOUPL[UQiaZxlѸ˳ʱ׻ܾڼҳԵݽܼǵL7)d⪁첇첉篈守ᬆݨ٥֢աҞ}̚zŕvmx^cO_H<7-* "&+CBB^ZYxqo~xusmjmfcmgdpjgtmjtmjsmjrlioiglfdicaga_b][^YX\XV[VU^YX]XWYUTVQPPMLQMLQFAL:.K8-K8-I7,H6+G5+E3*D2)B1(@/'>.&<,%;+$9*#7)"6(!6(!5(!6& 7E%M,M/ M2&R6-S5,4:& ! 6M-?#;%  ' ( /: S-#M#??$P>S@wK7U+ O$Q-#D'5.B"D$= A$VD;[I@\IB]ICYE@B&B!E H#>#5+8"N-"=&>!N(O(P*"J) K#P*%J&!))( ,Q<6T?8U@8V@8\D;^F<]E;YC9R>4L:2L:2H81A2,2-+++,)),('*11589?67<34989?@BIBDLHACI;4L=6P?8P?7P?7N=5L<3K;2J:2J91H90H8/H8/G8/E7/B5.>3,;2+>4-B7/?5.@6/C80D81A70>5/@60C81D92K>6QB9QB8OA8N@6L?5K>5K=5K=4J<4H;2E81B5.?3,:.(4)#/$)$* <3- "()/44<(&*   ""%"%%"$# 'LC=ײ̨ղٻؼҵҶĪ{rjunSi`S|p{|zzu~rvodLIC110-//    &0(!:/'H;/VF8eRBr\JVH:MC7NE9G=3WK?^QD_SETI=MB7ZM?^REQG;EA>MJGNKGKGCD@KFBLGBMHDLGCSNJXSNXRNSNJTOKXTQZVSYUSTPMMHEOKGQMJSOLTOLTOKSNJOJFNIESNJVQMYTPZVR[VSYTQWRNWSOTOLXSP]XV`\Ya\Y`[X^YV\WT^XU[VS]XT`[W_ZVb\Xc^Z`[X^YV^YV^YV^YV^YV\WT^YU]XTYSOXSNXSOXSPXSOWRNWRNTOKTOKVRNWTQXTRWSQTQOVRPXUQZVSXTPVROWSPUQNTQMUQNVRO[WS^YV]XU[VR[WRVQLUPKWRNVRNXTPZUQZUQ[WS\XT\YU\YV\XV^ZV\XTZVSWSOWTPVSOUQNTPMSPLOLILKIwoʳǗvbt_oZhUaP[NYJWFTBP?{O>|P>xK8{M8O9N8O8O8Q9T#76 9 ;"=$?%?#?%@&B&A%@%A%B'D'C(D)G+F)G)H+J*K+I)J+M.L-K+L+N,L*M+L*O.O-O+M)F'H&G%C#A!?=;<7* xE1^EhOmUnYeRUDoD5e=1a=2^=3[=2Z>3[@7`FBkOKY93?=<M(T,$Q%W,]3$b9*g?0iC4eC5^>2Z:0Y:1V81R82T<4[C:?=8A>8XPGravë׼ؾѸ|nXJB<8ID@TQNWURURPUROWSOVROUSPTQNTQNTQMRNJQMIPMINJEIEAJGCLGCNJEPKGTOKTQMSPLTQNZWT[XVZXUZWTTPNOKGMGCOJFQMISPLOLHKHEQNKMKH,,,-..,--&'&&'&###+*)"""**)---**) &'&+++&&& %&&*++,,,%%%#$$%%%&&&)))&''#$$())+,,())$%%()(./.---%&&'((&''#$$!""$%%*++*++''(&''&'''('()(((($$#%%$&'&'''&'&&&&!"!#$#$%%%&%!"!"!!$$$$$$&&&)*)'((())+,,*++)**)**'&&&&%$$$&'''''%%$$%%%&& !!$%%)))((()))()(((())('''$$#&&%(((%%%'((###&%$#"! !!)**,--%&&"##&&&***!""$%%&&%'&&@:4]SGMD;NE:8B?-%<,$:*#9)"8)"7)"7)"7'!8;F'L- E/%A+#=#-D!& " 5M.A$;. !#/8R,"M$@?"N=S@wK7U*O#P*!I*!70?!H&?!C("WE=ZH@[HB[HBXE@P<7K2+F!H#B$8 ' ;> ,D$N(P)O+"I(L%Q*%E#')'6%!R>6S>7R>6WA8]F<^F<\D;U@7O<4L:2L:3K;4E6090-,+++*.&%(--178>:5M=4L;3K:2J:1J91J91J:1J;2J:1H91E7/A6/B70?5.?4.>4.D91F:3@6/>5/B92D:3F;4NA8RC:QC9PB8NA8M@7M?6L>6K>5I;3G:3D81A5.>2+9.(3)#-"'-$ 8/* #$)119118%$'  ""%!$(%( ıֲţֹѵշȫֻ|pxrVj`R{o}{{wxsumcJGB00/.//   %0' :0'I<0WG9eRBr]JZJ4WK?]PC^REWL?MB7YL?]QDPF;MD::5/!##&''&''"$$&(( ###!""       (%#.,)0-+2/,30-30-42/641@=:FC@GC@LHEKHDJFBD@zM">!>$@#?$@%?"?!@#A%@%B&D'D(E'F(G(H)H)I*K)K.K.L-L-L*L)L*K*L*L+L)H(F&F%B"@ >=:938P9^EdLhQgT]LzL1_:0];2\=3]?5]@6^B9cHEkOLX81=9!7F$U/%L$Q)V.!Z4&^8+^<84A=9EA=KGBOKGOKHQNKWTPZWTXVSYVSYURYUQYUQZUQXTPYUQTPLOKGQNJVSOSQNJFCNJFVRNYVRVSPWTQWTQVSPWTQWTQVSPSQNOMJPMJRNKYUQVSPPMJSPMSOLSPMXUSWTQOLILHEOLIQMJMIFNKGPMIPMIRNJIEBIFBFC@(((*++,--%&&&''"#",,+"""(((-.-,,,###&&&,,,((("""()),--.//)**'(('('''&**)++*'''+++-../00,--'''*+++,+%&&&'''((&&&###$%$*,++,,())&''&&&&&&''''''%%%'('&&&&'&$%%#$#""!&&&%&&$$$!!!##"''&'('()()**'(()**-..+--)***++))(('&$$#'(()))&&&"##$%%$$$()(()()*)'((&&&()(()(%%$$$#%&%$%$***())))(&&% "##***,-,'''"""%&%(((###&&%'''B<6\RGJB9SJ@YOD[PE=60! " "! !! $%$'('"""##"#$#!! &&&..-/0/,--&&&''&--,..../.011653+($$"+)&+(%*(%/+(3/,1-+1.+740;74:74863973?=9:75@<:@<9C?GC@HDAHC?KFAMGCPKFSOJWSP\XU[WSYTPUPKSMIUPLVRNPKGSOKUQMSOJPLHTOKg_XsڼӶ(16iMȔ‘벋鰉嬆ާ٣Ӡ|ΛxȖtojcuZfNmO=H5, #545TPOlecuolrljjebf`^fa^idblfdmgenhfkecf`^a\Z]XWZUTUPOSNMTPNUPOVQPUPOSONMIHLHGOEAM:0K7,J7-I6,H6+G4*E3)C1(A0'?.&=-%;+$:*#9*#8)"8*#8(!8:B#B%?/(4",2N&) ! '6M.D':8*! ".5P*!M$A8M-'Q=6S>6R=6U@8]F<^F3/2/.++.'&))),349:ACJ?@GI?>H;5H;5I;5L=6O>6O>5N=4L<3K:2K:1J:1J:1K;2K;2L;2K;2K;2I:2E91?6/=4-;2,?6/F:2E91?70@71C:3@82G<6OB9RD:PB9PB9PB9OA8OA8N@8K>6I<4G;3D91A5.=2,8-'1'")3)%6-( ((/,,3((.#"$  "!%"%&#&# &KB<ݺֳŤٺäͮèѶëoqkRh^Qym~~{ww~rslaIFA//..//   $-%7-$I;0[J81"##)**'((#$$'(( #$$"##       $" (&#/,*20-41/31.41.631=:8?<9B?;GC@EA>FB>GC?FB>GC@MHENIEPKGPLHRMIQLGQLGQKGUPLWSPWSPVROXTQXTR[WTXTQWSPXSP^YVa[Xa\X^YU]XU_[W^YV\WTZUQ[VRZURVQMVQMXSO[VS_ZW`[Y`\Yb^[a]Y`[W_ZW[VRWROVPMYTQ\WTZUQWROXROXSPXSO^YW^YV[VR\VS^YU\WSYTPWQM[UQZUQ\WS_ZV_ZV]YU]YV\XU_[X\XUXSPYUR]YV_[X[WTVRNUQMZVR\XU[WSXTQYUQVROXSOXSPXTPYUPWRNYUPZVRXTONJELHDSNJ[WSZWSTQMWSOTPLTPLVRNWSOVRNUQNNLI[VQպyhZcVjYlZdT]N]MZJUGVESCP@yL)f:%^3 X0N+F&;65579"?$>"@!A$?">#A&A'@&A'B(B&D'F'G(G'H)I*J,J,K,I,N,L*K*K+L)N+J(G&E&E%B#@!=:98/H)S;\DaIbL^KTCpF7a;/Z8.Y:1Z<4\@6]A7^C:dJFkPLY;3=!:4?"P+ G K&O*R/"V3'W6*T6+Q4+R5-S7/S81N71Q;3YB:_IEjSSiSOJGCKHDLIELIELIEJFBGC?GC@EB?GD@IEBKHELIFPLIRNKQNKPLINKHOKHKGDMIERNKQMIOKGRNIPLHLGCHD@GC?JFBMIEJFBFC?EB>C@:6JD94C=8ID?NJENKFMIFPLIROKVROWSPYURXTPYUPWRNXSNXTPXUQSOLTPMUROTQNXUQSNJOKGVROWTQOLJQNLUROXURVTPPMJPMJNKHKHEKHEJFCNKGSPMQNKTRNYVSYURYURTQOKHEGC?KHDNJFIEBIEAHDAHD@KHDGC>E@;?;8%&&***-..&'''((!!! ! ,--###%&&.//011))(#$$*+*)))"""&''+++-..+,,)*****)))+**,,+***+,,.//123122*++())()("##%%%'((&'&%%%$$$)***++())&''&&&%%%%%%'('(('***&'&&'&$$$##"###'''''&###!!!###''')))*+++,,*++***,.-+--)**+,+**)%$#!"!'((,,,)))$$$'((!!!$%$)***+*)*)'('$$$&&&()(%%$$$#%%%$%$)))'''''&$$$ !""'((,-,)))$$$&'&)))#$#$$$$%%F?8YODA:3RH?XMBZPE<60#"!%$#" !! $$#&&&!!!""!"""$$#,,,-.../.)*)(((--,*+**+*.//653-)&%# +)&+(%*'$,)&0,*0-*2/,841;84<96;95852=:7964@<9@<9D?6R>6U?7]E<]F=XB9N<4M;4M<5L;5L<6H:5B51720++-)),'')01588>67=026248@BIBDLE@BH;6H;6C83D72F92G91I:2J:2J:2J;2J:2K;2K;2K;2K;2J;2J:2I:2K<3J<3D91?5/=4.A70C81A71@71A82>61E<5K@8QC:J?7L?7QC:QC:QC:OA9N@8L>7J=5F;3B71?4.<0*6,&+!D935,'  !++1%%*%&*! "  #"&#%'$&*'*лݺЭϭڷѰťȨϱĨϵʰ}lrlSh_Q{o||vv|pslbIFA./.-/.   #,$6,$H:/\K=hUEq\JZK=H?5ND9J?5WJ>[OBYMAXM@K@6[M@_SFRH82#$$)**())"##&(( #$$"##         !(&$/-*30.852963852:64>;8?<9A=:DA=D@-e<+f<+d<)c;)g>+g>*j>*m?*m?*j<(l=*f8'^2 X/P,L)E'?$98998::!:!#>">#>"@"A#?">#@$?#?$>#?$?$A%C%D&D&D)F)F*G*G(F(I+J*I)K,L*L)H(F(F&E%B#?!::87* X3#R;ZB]G\HXF{M=iA4]:/V6.V90Y<4[@7\A7^C:dJFjOKS70971;!L(CF#J'L+O.#P1'N2(M1)O3+Q6.R81O82O92V@8^HChSReROEB>GC?KHDLIFKHDLHDHEAFC?D@B?;>;7:73;82QJ?xjXuӽœ°oO<,tfwugzlzl{nym~shtu}vqwjzmtz  FB?TPMWSPYVSTQNOLIMJGOLJROMRNLURPVSQVTRTQPPNLJGDOKGQMJTPLUQNWTQWTQTQNQNKROMSPMSPMRNJOKFPLGSNJSOKQMIRNKTPMUQMVRNUQNXTPWSOXTOYUQWRNVQNUQNQNJQNJTQMQMJWSPXTPTOLURNRNLJGDHEBLIEOLHOLHJFBMJFLJGKIFNLJNJHOKHROLTQNRNKVSPXVR[XUYVSQNKLIENKGOLHOLHSOKNJFJGCMIFLHDNIEDB>()),--/00())***%&%/00&&&#$$-.-222...#$#((()**###(((+,,,,,+,,((((((***)))++**+*+++...012122-..&&'""""""&&&%&&$%%"$$&'''((&''%&&$%%######%%%''&**)''&%&%#####"$$$''''''""!!!!%%%'(()))*+++,,*++)**+,,+--())*+***)$##!!!'((+,+'((%%%'(("##"""())***+++)**&&&&'''''$$$$$#%&%'''*+*'((%&%"""!!!"""'''+++)))%%%'''+,+'('###!!"G@8WNC>81RI?WLAXNC83-#!  ""!$$$!!!"#"$##! %%#++*./.010---,,+10/''''('+,,321,)%%#!-+(,)&'$!(%"/,)0-*40-841962;85<:6852<:7:85B?:FA=LHDXSP[UQSNKQLIUQMYTQ[VR\XT^YV]YUZVR[WS[VRZUQZVRZVS[VSZUR[VQj`Xuǯʯϳշ׹ָݽҴٻצtSďʕœ“ﴌ벊歇ᩃݥآ}ӞzΙvǓpkhda{^w[sWjQ_HmL9J4(+"  -./OKKhcbpjijeca\Z]XV^YW`[Yb\[b\[_ZX]WUYTSVQORNMPLKPKJPKJRMLQMLQLKLHHKGFPEAN;1L8,L8-K7,J6+H4*F3)D1(A/&?.%>-%<,$<+$;+$;*#89>.'@0)B2+<*$-. Q'C)!X9.W<2O0$M-I+VD?VD?SA5[E;\F2380169;AEHPBAGF;7I<7E94C72C71@4.A5.C6/C6.C6.D6.E7/E7/E8/D6.C6.B6.@5.D80J<4M>5I<4D92A71?6/?60@71C92@71B94G=6NB:I>7A82L@8RD;RD;PB:NA9M@8I=6?60:3.:2-8/*7-(0&"NC<*#  ""'++1&',&',!"  $!#(%'(&(*(+ 'tiY޸ڴЬšֳͩάȧͭΰƩԺɱ|jsmTh_Qr~~vx}qrkbHEA/0/.//    #,$8.%G:/[K=gTDoZH\M>G>4PF;I?4VI<[OBWM@XMAI?5ZL?`SGWL@G>5>81$%%***)**!""%''!"""$$"##       &$")'%0-+630630963<96=:8=:7@=:A=:@<9=96A=9A=9@;7@;8GB?MHDQLHVQMRNJSNJUPLUPKWROWRNZUR\XUZVSXSPUPMXSPZUR^YV`[X_[X`[Wa\X_ZVYTPWSOXSOYTO]XS\VQWRMUOJVQMUPMQMIYTP]XU`\X`[Xa\Yb]Yb]Za\YZURVPLUPLXSOWROTPLUPLYTQZUQ[VSZURWQNWRN\WT]YU[VRZTPXSOTOJPJFMGCMHCPKGTOK[VR^YV_[W_[W]YUZVSXTQYVR[WTVRNXTQZVSWTPXTPZVRYUQXTPXTOVQLSNISNJWRNZUQYUQVRM\XU\XS[VRXTOVRN\XTYUQTOKSOKOKGBA>|piѹwki[kZl[kYdSbQ`NYIYJ]LXISERDzN@uJ$>#=">"@$?$?#?#@$@#?#B%C'E(G)G'H)F)G*I(J*K)J)G(D'E&D%?%="9 :64) b:(Q:WAYDWDP?pF7d>2[9/T5.S7/W<4Z?7[A8]C;cJGhNJP5.65.8H%@B!E%H(J+ J.$J/&J0(M2+O5.Q81P94N81T=6\FAgRRlVTKGBFC?HDAKHEKHDMJFLIEJFBGDAJGDMJGMJFKHDLIELIEKHEMJFMJGMIFPMJRNKPLIPLIKGCKFBMIDOJFNJFPKGOJFLGCIEAGC?EA>C@<>;896252.?:3aVHxastN;,}n_xzm`~ptgthuiz{xwuuvvvw  '&%PMJROLOKIQNKQNKHEBDA=IFBOLIPMKQNKSPMTRPQOMNKHKGDMIFQNKURNVSPVSQUROTQNRPMSPMTQNWSPUROSPLTQMWTQXUQVROXTQZVRZVRXTQUQNTPLOKGRNJVRNVRNSNKSOKRNKOLHSOKTOKUQMUQNNJFLIFOLHRNJRNJQMINJFKGCKGCMJFQMJOLINKIOLIMIFJGDROLUROTQNSPMTQNQNLMKHMJGOLIKHEDA>IFCHEB?<9FCAKIFKIF?=;$%%,,,///()))**%%%/0/'''"""*+*000./.###$$$((($$$%&%'''(((*+*&&&###&&&''')))))))))***,--.//.//%&& ###"#"!"" !!$%$%&&%%&#$$$%%"""!"!##"$$$(('%&%### ""!###&&&&&& ! !!$%$''')))+,+*++())'(()***,,())()('''""!%&&()($%$$%%'((%&%!!!&''()))*))))$%$%&%(((%&%$%$%%%()(())&&&&&&!"!!!!!"!''''(''('''''''******%%% G@8WNCB;4ULBVLAUKA/+&!!! !"!!! !!!#""##"&&%''',-,122./.-,+443+++'('+,+10/*'#%#!,)'.*'(%"%# /-*2.,40-52.740;84=:7863;96;86>;9>;8<85>:7B>;E@,%=,%=+%88?-'A1*C3,>-&-4O'E3,J:4M92R3&M-K,?#;2'*-G)!6 4-nC4UBa:-N#T&P$O%<7&4A#B& TB>UC?TB=P?:L;5H60G3,H+!="<"96]4$`9&=L%i<+g;,I%D)"F-$;!y`wZG-& 5$ Q<5M:3O;4P<4Q=5YD;[E;R?8L<5M<6N=7P@:RB4.C80H;2M?6N?7F;3?60>60?72B93A83@83B:5G>7MA:@83E;5OB:RD./..//    #-%9/&H;/WH:cQAmYG_O?E<2SI=I?4VI<]QDXMA\PDI?5WI<^RFYNAF=4@92%%&****+* !!$%%!!!!"""##    (%#*'%1.,63052/963953:74<96B?NIEQMIRMIQKGUPLYTOWQMWRNUPKXSO[VSUQMUPMVQN[VS]XU^YV`[X`[X_ZW_ZV`[WZUQWRNYTOZTO^YU`ZVZUQYTO\VS\WTWROYUQ]XUa]Yd_\fa^ea^b]Z_ZWYTQUPLTOLWRNXSPWROZUQ^YVZURYTP\WSYTPYTQ\WT\XTZUQYSOWRMTOJRLGOJEOIERMIXRNXTP[VR_ZV`\Ya]Z_[XYURYURWSPRMIVRNYVSWSPVRNYUQXTPRMITOKSOJTOKUQMWSOZVR\WS[VR]ZV[WSXTOWSOZVR\XU[WSXUPQNJLJFijӶreXhXm[lYhV_O\M[JWFVFWHVGSE~QC|O@wL$?%>$?$?#A%A%C'D'D(E'E%E%F)H'I)J*J*G*E)D'C%>#="9852& a:(P9T>UAR@wJ:iA3`<1Z:0S5.Q6/U;3Y?7Z@8]C;cKHgMJP5/54-5F$>? B#D&E(F+"F-$H/'K1*N4-P70P83M82P:3XC?dRSnVTOFAFC?FC?JFCNKGPMIOLHJFBFC?HEBKHEIEBFC?JGCNKGOMJNKIMJFMIFMIFMIEMIEPLIPLHKFBLHCNIENIFPLHPLHLGCJFBEA=C?;DA=?<874020,850TLArfTcp{wXF5{k\wj^}o{nwzx}~qru{|v  864JGDHDADA=E@=GC@FC?JFCPLIQNKLIGFCAGDAPMKURPSPMNKHKHDKGDLIFOKIOKHPLIPMJPMKROMTQOSOLPLITPMVSPWTQUROQMJSOLVROUROTPMUQNTQMPLHRNJPLHNJFNIDPLHPMJHECJGDPLGUQLTPKLGBGC>ID@NIEPLHROKSOKROKROKTPMVROVROSPLQNKOLHHEBLJGROLPNKKGCGC?EA>EC@C@>GDAGD@B?;A=9A>:>:7DA=GEBFCA654&'')**,--)**&&&"""+,,'(( !!&''+,+,--$$$ %%%"## ! ##$%&&)*)&&& !""$$%''''((&&&%&&'((*+**+*### !!"""#$$#$$"##$$$#$$#$#""!"""%%$$$#!!!  "!!$$#  ! #$#''&)*)+,,+,,'((%&&&&&%&'%''&''%%% $$$&''!!!"##'((&''!!!&'''''()()))%&%%%%&'&%%%$%$$$#''&'(''''()($$#"""#$#)*)((((('(((''')))+*)&&%!!!G@8ULB@92VMBUJ@TJ@)&#$" $$#!!!  !! $$#'&%++)++++++010/00,,+00.***'''*++320*'#&$!-+(0-*,(%&# /,)40-30-1/,52/;84=:7974;96<:7;86;85;85>;8C?:JEBQLHUPKVQLZUQ^ZW\WTYTPWRNVRNWSOVQNQKHPKGRNJQMIRNKRNLWRPa\X{qiؾԸֹڼ߿ѺmĎʔœÓꯈ䪄ߤۢ~ؠ|ԝyΗtɒpÍlhca~_|]z\wZrWnTlSiPaJyXDgI8I4)+#!"445VRQgb`e_^YTSRMLTONYSQ[VT\VU[VTYTSVQPSNMPLKNIINIIOKJQMLQMMLHHJFFPD@O:.O9.O9-M8-K7+I5*G3(D1'B0&A.&?.%?-&>-&;$<& A/(C1+E3-B0*. / ' D3.L;4L;5M7/M-L-C&:5(( .B&6 8<)#d=/UBmB3J"V'Q%P$?7* . @"A%SA=UC>RA;N=7J92F5.C2+C/'?#<":4\3$^8%<L$f:*^5)F& D+#D+#E,%gwZHB0*$>-&T?7K92M;3O<5S?7YD;XC;P>7N=7M=8O?9UD=WF@SD?RC?E960--,,0)),+*-33799?78>137238>AHBENKGLJ<6E93E92E92C70A5.@4-@4-;1+<2+<1+<2+?5.?5.>4-<3->4.>5.A70D91G;3L>6N?6F:3@70?72A94A94@94@94B;6OC;C;5?73H=7QC;PB:NA9I=6>6082-?60C92?6091+A72QE=   $#)008229,+2#"&%"$)'),),-+..,/)vk^ݷٳ׳̪ѯֶ߾Ҳŧåѷw{akaSuzwwkgbY@>;----//    ",$7.%F9.SD6]L4TG;]QDWL@]QDI?5SF:]QEYNAF=4B;3&&&((()** !!#$$ !! #$#     '%#)'%1.,641630964841630853?<9@<9?<8?;8C?{N=oE7b=1\:0X:1S70P60S:3W>6Y@9\E>cNKfNKL2-00*3G%<=?!A$B&C) D+#G.'J1*M3,O6/O71N86L71S@=`OPgONPB<@>:B?:GD@KHDNKGOKGHE@FB>IEBJGDFB?C@GC?HD@GC?C?C?JGDMJFNJFMIEJGCIEBEA>C?HD@IFBGDADA>FC?FC?EB>542'((%%%*+**++#$$ !!***((( !!#$$())+++('' ###%&&"""#$$"##$%%#$#"##%&&&'&'''&'&%&&&&&*+*+,,)** !! !! #$$%&&%&&#$$!"""""#$# ! !"!##"### !!!"""(((+++)**)**'('$%%$$$!"""##$%%#######$$ !!%&&%%%"##%&'%&&&&&'''#$#!!!!""$$$#$$"#"$$$$$#%%$''&""! """***)))((((('''&()( )''&%$&%$LEGB>MGCQKGUPMZVRZVRVRNPMJWSQ]XU\WSWSOYUQ\WTYTPVQMWRNVRNSOLSPNVRP\WTha[znūѶ̱ܿټնܾΦɓŒÒﲋ챊鮈䩄ߤ۠|םzҚv̕rǐnifb_~_|^z\vZrWqVnTkRgOcL\GtS@aD4E1'$!$<:;XTSc]\[VTRMKRMKVQOZTSZUTZUTYTSWRQSNMNIIMHHMHHPLLRNNSNNMIIHDDOB>Q;/Q:.P:.N9-L7,J5*G3)E1(C0'A/&A/&A/'A/(B1)C2+E3+F4-D2+5)  G5/M;4M;5M91M0"K,D(F0)@-') % -;!;#=%L91^:-UBqE5CV'S&P$I#8%- @"?#R@;TB=Q@:N<6I81E4-B1*B/'A%<":5Z2#_8%=K$h;*[5(B*$F-%@'!cH:mpUF8(##D1*V@7K81J81K:3O=6XD;UB:Q?9RA:P@:O@:TD>XGBUFASDAJ=:60/*+/++/)),22678=89>12702679?@CJ@?DG;7C82E92B71@5/B6/B5.B6.=3,;1+<2+=3,@5.A6/B70>4.;3,<3-B70D92F:3H<4O@7O@7G;4D;5B:5B:5B:6A:5A:6LA:D<6=62A94OB:QC;OB:G<5=60>71E;4A8192-0*&LA:A70   ##(219,,3''-)(.# !)'),*--+//-1/-1*'2ڴկǣƣƤǨ׷ҲˬʭçDz{|cmbSs}{w~thb\T=;8,--,..      *#7-%E9.PA4[J;iVDcRBC;1QF;G=3RE9\OCVJ>]QDJ@6SF:^RE\PDG?5A:2&'&&'')))#$$$%%!"" "## !         !*'%,*(31.853963:75:74:74963:74A>;?;8=96DA=FB?C?;A=9GC?TPLUQNTOLTOKVQL[UPZTPZUQ[VRYTPZUR[VSXSPVQNTOKWRN\WS_ZV]XU]XTZUP[VR\WS\WS^YV_[Wa\Y_ZV\WS\WR\VR\WS]XU[VSXRN[UR_YV_ZW[VRXSOUPLXSPWROSMJVQMYTQWSPXSPTOKXSO\WT_ZW_[X_ZW^YU]XT_ZW[VRTOJTNJWRMWRNYTP[VR]XT[VR\WSWRNTOKWSOZVRZURVROWSP^ZW]YUZVR\XTWSORNIRNIVRMXTPZUQ\XS^ZV_[WYUQWSOVRNTQMTPLTOKTPLYUQXTPROLqg`ȰѿԸk^cVhXfVaQ`P{^N|YJSGSESCQCSDSDPC~OB}OAvK=gB6_=2]:.X5'R0#K+H*E'@$>#>";";!:!;856889; :::;: ;!;!5488688 78869 :!8!9";#;"%?&64 8: < >"D&E'G)H*G)E(C'B'B&?$<":"751-! ^9(zL7|M:zM;tI9hA4^:/Y9/W91T81P71P92T>7XC>[HDbPOeNLM3-21+2H%<;= >#@%A( C*#E-&I0)K3,N5/O60N84M86N;8XED`HEWD?CA=DA=IFCKGDLIEMJFIFAGC?JGCLIFIEBGC@HEAGC@IFBMJGROLTQNQNKKGCIEAJEALGCOJFOKFNJERNJUPLUQMRNINJFLHEHEAC?;@=98621/+20+20*C>4[VBxZs|q]O=iYLqdXsyy||{{{r}o~p ?=;VROVSPTQNPMJNKHQNLSPNRPNROMTQOTQOQOLMJHIEBIEBGC?JGCNJGMIFPLISOKQMJPMJPMKOLIOLHURNZWTSPMLIFFC@IEBKGCIEAB>:B>;IEALHDLHDHD?@;7=95A=8?;7>:6A=8D?;C?;ID>LGARMGUPLTOKUQMYVRYVSVSPUROURNRNJOLHQNJPNJMIEIEAFB?KHDIFBFB=FB=GC?KGBOKGMJGNLILIFGD@HEAMJFNKGJGDJGDLIEJHDHEA210'(("""%%%'((###"""()(())!"!!!!'''((('&% ###)**())&'("##$$$$%% !!#$$(((&&&&''()))**%%%&&&*+*,,, "##%%%$%% !! !! !! !! !!!!!!  ! """&&&'('&'''))'((&''%&&"##!"""#"###  ! ### !! #$#$%%!"" "##$%%$%% #$##$#!!!""" !!###%%$!! !"")))''''('))())()*) )('&%$&%$ME;9DA>EA=ID@LGCOKGSOLRMJPLHMIFPLITPMVRNTPLWRO]YU\XU[WT\XU^YV\XUYVTWSQRNLTNJuj`|̳϶ؽؼܾܿ׹ӵڼܽ߾߼شɓƒÒﳌ魈㨄ߤڠ|՜xЙv˔qŏmida~^|]{]y[vYsXqVoTlRiQfNbL^IyWCnO/7)#%')HDD^XW_YXUPORMKUPNXSRZUTZUTYTSWRQSNMOKJLHHLHHOKKRNNSNOMIJIEEQD?S<0R;/Q:.O9-L7,J5*G3)E1(C0'B/'B/'B0(C1*D2+F4-G5-I6/H5.0 )H60N;4N;4N<5M92:#3I60D3.)!!;!K-$?%;!M6/^;/UBtH8H0)U'S&N$Q&="/A"="Q>9SA

8L;4H6/D3,B1)@/'B&<":5V0!^8%? K$g:*]5(K5,H/'=$R9.z\HZC8/ &L90WB8P<4K92K:3M<5YE41*+...2)),11588=:;A24902635:?AHACJG=3,@4-B7/C70C80C80@5.B7/I<3M?6O@7PA8SC9SC:OA9G=7B:5B:5B:6A:6B:6H>8H>8@83?72LA9PC;NB9B93<50C:3F<4=5070,0*'UIA.'"$" ,,3,,3//732:$!%%"#+),.,00/3205&޶ְΩԯЮɩŦ۽ܿŨֿƲ}zsZlbSq{ytyod]WP;:7-..-//    )"5,#C7,L>2XH9gUDaPAD;2OE:F=3QD8[NBVJ>]QDKA7QE9]QD_TFI@7B:2&''&''()($$$$%%"##"#"!!! ! !!           #!+)'30.:74:75:75<96<96:74:75>;8>;8>;7EB>IDAD@#:"8 540,\9(vJ6wK8uJ9nF7c>2Z8.W7.U80T92Q82O71P<6TB>YGC_NMbKHL3/. .*1H%=8; <">$?'A*#E-&H0)K2+M5.O70N70M83M84P;8Y@>`IFLGCHEAKHDJGCLIDMJFKHCLIENJGLIEIFBJFCHDADA=FC?MJFQNJPMINJFMHDKGBIE@MIDQMHOKFLHCOKFQMISOKPKGLHCKGCEA=A=9>;696242-21,/.(42*B?0gbHcvtfYFZK>}f[P}mwnpw{z 976URPUROTQOTQOTROROMROLSQOQOMPLJTPNXUSWUSSPNQNKROLNKHIFCIFCLHEOJFQLHPMIPMJMJGEA>B>:KGDWTRURPROKMIEIEAGC?FB=D?;D?;FA:B>:D?;C?:FB=GC?C>;C?:E@;JE@RNIWSOWSOURNURNTQNSPLRNJQNIPLHQNKRPMQNKMIFHD@KHDJGCID@EA=HD@KFBJFCHEBEB?FC@C?;GD@MJGNKHLIFMJGKHEHEB.-,&''"## $%% "##%%%'''###!!!&''&''$$$!""&'&%%%  $%%'((!""!!!&&&$$$#$$%&&'((###"""'('))) "##"## """ %&&$%%!!!###"#"!!!""" """###!!! !!! !! !! ! !""$$$!!! ! '''%%%%&&''&&&%$%$'''%%$'&$NFJE@MIEMHDOKGRNJUPLRNKTQMXTQ[XU\XV\XUZVSVRORNLNJFLFBd[TtƮջٹݻ޷ʕǑŒĒﳌ찊檆ᦂݣ؟{ӜxϘuɓpďliea~_|]y[wZuYsWpUoTlSjQgOeNdM`J~\FtT@eH7N6*,"433TPO`ZYYSQRMKSNLWRQZUTZUTXTSUQPQLLLHHKGGKGGOJJRMNTOPNKKJFFUHCT=2R;/Q:/O9-L6,J4*G2)E1(D0(C0(D0)E2*F3+G4-I5.J70L80K80L81N:3N;4O;4O<5O<5E,&C$K5.E4.*#$ S2(`;/B(7K1*V7-TA~O?XA8V,#R&M%Q$C!.A"=!O=7Q?9N<6K93F5.@/)@/(?.'C(="; 5T/!^8%A L%b7'[2$M7/C.': 00M91,,R=4WB9T@7M;4L;5O>7[G>RA:N>8Q@:UE?XGAXHCXIDVGCZIE[HCE62,,.004**-00477<;D?AHI@@J;4E93C71D81C70B70A6/B7/>3->4-@5.C80D91E91H;2I<3L=4QA7RB9SC9SC:SD:TD;UE=NA:K?9LA;MB;MB;K@:J?9NB:C:4<50H=6OB:L@8>71:4.E:3C9392-4.*<40OD<(#"$ ))022:88A77?+). '%&-,//.2327-,3cZQײֱ۷׵ͭǧʩίʬǪçк}amcR~q~{w}orh]VPJ875+,,-//!!!     & 2*!=2(F9-SE6aP@]N>E<2ND9E<2PD8XL@UI=^RELB8NB7\PDaUHKB8F=4))(%&&()($%$$%%"##!"!!"! !"!           !*(%2/-742741963>;8<96<85;85A=:C?O>N>N?L@xK?yK>rE9`>2X6,R/%P-"H(B$%=$:!7 430+ \9)sI5rH6pG7hC5^<0W7-U7.U80T92R92O71N71P;6T@;\GEbHCN50- +)2I'@!79 :"<$>'A*#D-&G0)J2+M5.O60O70O70N71Q;7ZCBeMJPIDJGBMJFMIEOKGOLHLIELHDMJFJGCIFBIFCIEADA=GC@NJGOKHMIFLGCNJEPLHMIDOKGRNJPLHNJEQMHPKGQLHPLGLHCIE@FB=A>9>;6:8342-/-(-+&.-&53)TP<{tVkpfZGH<1|n~KDHEAJGCMJENKGQNJSPMMIEGC?GC@LIGROMVSPVSOSPLSPKSOKROJQMIMIEGC?GC?KGBPLGQMIPMIOLIMIEMIEJFBGC>GB>JE@OIDSOJVRNVSOQMIQMIURNVSPUROSPLPLIOLIPMJPMJOKHC?=EB?KHELIEHD@FC?KHECA>@>;>;8B?;@=:C@;@=:@><**)%&&%&&!!!%%%##"%&&%%%%%%$$$"""$$$%&&&'&$%$$$$%%%%&%$$$#$#&&&()(&&&%&%'''%%%$%%$%%&&&%&%%%%'('()("###$##$$###"#"$%%%%%$%%%&&%&&#$#######"""""""""##""""###!"!""! ! "#"%%%######&&%'''''&%%%&'&'''%&%%&%&&&&'&'''&&&#$$$$$&&&%&%&&&$%$&&&&'&%%%$%$'''&&&&&%$$#$##$$#%%$'&&%$$$$#%%$'&&(('&%%###%&%())'''&''()(()(()( $%$((('''*)'E?8G@9<71PH?SJ@NE<""!**)---)))*****)**)+,+,,,...***121/00-,+.+(%#!*(&.+(0+(,)&.+(62/72/41.52/42/20-851<95=:741.62/742;85B>/=+#"$%GCC\VU[UTRMLQLKUPOXSRXSSVRRSOOPKKNIILHHMHHQLLSNOSOPLHIIFFWJEU>3S;/Q:/N8-L6,I4*G2)E1)D1)E1)F2*G3,H5-J6/K70L81M91N:2O;3O;4O;4O;4O<5K4,F&J1*H70,+ ' L.%_:/K-#:!P1(Q6,R@P?XB8W>6U?6T91Q%I!#* @".'E) >"; 5U/!]7%>H$U."Z/"P5,@)$;!H3,O:2L81'7'"VA7WB9XC:P>7O>7TB;]IARB0160269;AADLGDHJ<5K=6L=5L=5I:2H:2H:2H:2F91G:2I;2I<2H;2G:2G:1E91H;3P@7SB8SC9TD:TD;UFUF>RE=PD=MB;NB;QD6:4.82-E;3A8160+/*'F<66.('"!"  %%+22:44<33;/-4"%##((*11654:2ͺݺܺմѰٸݽαѹlrhWu|{x|oyocaZQIE@321*++.//"""   $0( :0&D8,PB4YJ:ZKC@EA=FA=ID?PKFTPKUPLXSOZTP`[Vb]Ye`]fa^ea^c_[d_\`[W_YV_YV_ZV_ZWb]Yb]Zb]Za\Y_ZV\WS]XT]XT\VR\WS^YU\WSZUQ[VSXSOUPLSNIQLGWQM\WS]XU]XU]XU[VS[VS\WT]XT\WS[VR]WTZTPXSPYSP[VR]XU\XUYTQXSOYUQVQLVQMZUR]WS]XT[VRTOKTNJSNIVQMWRNSNJQLHTPKZUQ[WS[WSYTPRNIPKFRMITOKTOKVQLWRMRMHQLGTOKVRNQMIRNJUQMXTPYUQ\YUYURUQNOMJʹ¯rxiveraeUbQfTfTcQ~bPx^M{RF{KArF~K>}L?|K>tE8a;1V3*O-#J)D%>!9445679: :"89:; ="< 9887777643331110/ 00234444+ _7%jNۇhu،ugqXcLVA}I8pA3nA6c;0D)B(=%>'?';#:"9 631-)[9)oG4nF5jD5c@3[:/V7.T7/T80S91S92Q92P81O71Q82U<7^D@S;6++*3K)D#69 9!;$='@)#C,&G/)J2+M4-O6/P7/O70O70T<5\D@fMJYMINKGOLHPLHROKROKPLHLHDMIELHELHELIFKGCHDAKGDNJGPLILHELHCPKGSOKRNJRNJQMIOKGMIDRMIPLGPKGOJFLHCHD?D@;@=8<9485031,/-(-+%-,&.-&@=/c]F~_gf\HB6+ul`zwjqdvhuhvh{kruvxwvu_TJ% _TJ$#"OLJUROURO[XV^\Y\YWXURUROQNKMIGMIFLIEKHEMIFQNLSQOTQOQNKNKHNJGGC?A=9D@=LHCLHDKGDOLIQNKQNJPMISPMWURWUSROLOLISPMUROTQMROKQMJRNITPLTPLOLHOLINKHMJGNKHQMJPMJKGCID?ID?OKFRNJQMIPMITPLUQMWSPVSPTROROMNJFLGDQMIROLPMJC@=EA>IFCKGCKGCJFAIFB..-)))++*+++++**)))('(&&&%$&%%((())()))&&&'('))))((*)))(((('((('(('''&&&&&%'''((()))+++---..-..-/0/00//0/..-,-,,-,,-,,,,+,++,++++)*)*******+*++++,,+,+*+**+*++**+*)*)****+*++***)()('('&&%%%%&&&%&%%%$$%$%%$%%%'''((())(***++*))((('**)++*++*)))()(+++--,--,+,+****+*,-,,-,..-/0/00/0//0/.//.10//.-/.-0/.0/./.-/.,0/-.-,.--10/10/210//.---,,,+,++++---///010111010121222011.//././/.---,,,E?9KC: ##"*+*...()(&&&''&**)--,-.-/0/++*332455--,.,)%#!*(%.+(0-*.+(.+(41-2/,1.,42/520630:73<:6?<9852742631842>:7B? ; K93N;5L:3H70E4-B1)@/'=-&E*!C%?"5U/![6#*8$S3(Z/!R1'<$<#M91R>5B0)#B0*YD:YD;ZF^JCSD>VF@YHB\KE\KFXJF[LHcQKhSMaMHM=83//016..2..256;89?89?016.0557=ACKCDJB95B71E82E92D81E81G92D70C70E91E90B6.B7/@6/@5.B80E:2I<4QB8TD:UF6=5/D:3K?6F<482,71+D91>6/2-(5/+G=6 "%  #"'#$$ -(%!  !&,-3+,201842:+'+#!!-,/65;01HD@GC?GB>LGCMHDPJFSNITOJVPLZUPc]X`[Wc^[c^[b]Yd_\ea^b^[`[W^YV^YV_ZVa]Y`[W`[Wa[Xa\Y`[X`[X^YUZUQWRNVPLUPMYTQZUSVQMSMIVPKWQL[UR_ZW]XU\XU`[Y^YV[VR]XT]WTZUQYTP^YU_ZW[VSUPLYTP\WTYTQVQMTOKTOKSMIRLHTOKWRNWRNZUQWSOQLGOJEUPKUQMQMHNIDQLGWRNWRNWRNWSOWRNTPKRMHQLGUPLZVRZUQXSOVQNQMIRMIOJFTOKVRMTOKVRNYURQOL^XSѾѾгwr}o|nqbcSdSgTcQ{`Oy^MrYIqOByJApD;tE:}I=I<}J<|HwC4i;.`7-^81_;5O0&@&?&?%<$:!9!8!62/,(  Z9)lE3jD3fB3`>1X:/T7.S7/S80S91S92R:2S;3S<4S;4T=7^EBX?:+**3N+ I'688!:$<'?)"C,&F/)I2+L4-O6/P70Q80R91U<4[A;dIF]OKRPKQNJPLHQNKQNJOLGJGBIEAKHEKGDKHEKGCMIENJFMJFNJFKGCKFBLGBNIEOKGNJFNJEPKGPKGRMHPKGPKFNIDKFBFB=A=8?<6;8342-.-'.-',*%+*$++$21'MI7vmS~dshSB6*e^T|y}{zxqpt{~zwn|krxh-("VLC=;9OLJNKHJGDGDAOKHUROROLMKGLIFNKHQNKPMINKGNKHPMKQOMTROTROPMJNKHJFBC?;B=:D@<9(((**)*+*+,++++**)''&%%$%%%&&&%%%%%%%%%&'&(((+,++,+,-,,-,,-,----.--.--.-.........-.-///010/0//0/00012122200/./....---,--...0////...--.----..-00/111/0/./..//-.-------./...-///././0//0/---.-,.-,++*++++++)))(((((((((()('''&&&%&%&&%(('))(**)))))*)+,+,,,,-,+,+***++*+++**)***.-,.-,-,+-,+-,+--++*),+)/.-/.-//./.-/-,-,+,,+///222232010///-.--.--.----..-././//////0////...-.-.../.-.--***B<7G?7  ""!++*,-,))((('%$$''&,-,...011++*11/443++*.+($" )'$.+(/-*.+)-*'30-2/,0-+31.420752<96?<9?<8853741842:74@<9FB?MIENIFPLHUQMXSOUPLRNJTOKTPLTPLTPKTOKPKGPJFNIENJFPLIOLIIEBGC@FB>JFBTPLb[Utiҹ֥čАﳌ밊筈䪅ߦ١}ԝyϙuɔqďlhfdb`}^z[wYvYuYtXqVoUnTlSiQhOgOfNbJ_H]G}ZEwVBpQ>gJ9W=/:)!''(KGG\WVWRQPLKQLLTOOVQQXSRUPPSNNOKKLHIKGHNKLQNOQNODBC?;;O=5S<0Q:/O8.L6,I4+G3*F2*F2*G3+H4,J6.K6/L7/M80N91O:2O:2P;3P;3O:3O:3L7/F'G+$K80/+&B'_:/U3)1Y8.R8/Q?R@ZB8U@7VA8WB9T1)Q(H.(G0*@!:I71M:4K92H7/E4,B1)?/'=-%>+#?+#<(6O+\5#)8%P4*[/!U1&D.'C-&M:1P<37&!#L92[F=\H>]I@\H@RB;XF@^KDWGBXICXHC]LF]LGWJFaPKjUOiTNcOJM>:1-,/15126-.266<8:@9:A027-/3138>@G=>DC:8D93H;4I<4H;4F92G:2F91C70B70C80@5.C80D81B70@60C81F:2N@7UE;VG=SE9J?9QD6<5.C91J>5D:271+70+D91>5.0+&A727/)#""'"!/*+&"+$ '!#$),-444<44;416&!" %"!1/2;:B%+?۹ĤȦӱЮȪѴͱçռͶwtjYtt|sxy~vlnh_ZUNIE@8630/.,-,*,,-//###   #+%5-#=4(G;.OB3TF7H>4LB7E=2PE9QF;RH<[PDLB8J@6WL@aVHND:L@70.+)**-.-)))*++%&&%&&$%$$%$!!!"""%&&       &$",)'-+(/,*0-+/-*/-*30-:6396396362/852;85A=9@<8B>:FB?JFBHD?MHDPKGQKGPKGPKFUOKZTPc]Ye`\c_[a]Yb\Yb^Za\Y^YV[VS[UR[VS\WSb]Zb\Y^YU]XT^YUa[Xb]Za\X_ZWYTPPKFPJFUOLVQNVQNYSP^XUa[Wc^Za\YYTPWRO[VT[URZUQ^YU]XUYTPTOLYSP[URZURRMITOKZUQYTQUPLVQMWRNYTPWRNUPLVQLVQMYSPYTPRMIPJFSMITOKQLGNIESNJVRMTOKUPLSNJUPKXSNUPKPKFWRN\WSZUQYUQXTPTOKSNIRMIQMHSNJSOJQMJNKH|sؽͻϴ|ztzjkZgUdRw]Mu\LpXIjSEiOBvI?oC;oC8vE9{H;|G:vF:uE:k>3[4*P.&E&< 94336889:= %>%=%:#:"6!5 40-)$ Y8)iD2gB2dA2^>1W:.S8.R80S91S92S:3T;3T<4U=6U>6V?8^FAW?:)+,4P-"D#78 8!9#;&>)"B-&F0)I3,L5.N7/P80R91S:2U<4X>7_EA`MHPNINKGOLHPMIOKGKHCHD?D@FC?IFCIFBKGBLHDKGCKGCJEAGC>ID?LGCOKGOKGKGBMIENIEOKFQLGQLGOKFMHDHD?D@3(RLDznywz{n|o~pvyyusqyk}n~nxh6/)SI?520JFDHDAFB?HD@FB>E@89P?7Q:/O9/M7-J5,I4+G3+G2+G3,I5-K6.L7/M80N91O:1O:2P:2P;2P;2O:2O:2M80H-&I/'L8/2 ( <#_:.X5*,R:1T<3P>SA^C8T?7U@7VA7V@6W@7WB:O92> :I70L93J81H6/E4,B1)?.&=,$;+#:*#:( 7I(\5#)8$J4+Q3(N6,L90M90N;2P<3B0)9(#T@8\G>_KBaMDaMDZHA[IB\JDZJDZJEWHD\LG[KG\MIiUOmWQiUNaOIJ<92+*.0445:./357<9:@:E=?EJ@=M?8M>7O@8QA9QA8Q@7P@7P@7N@6M?5H;2G:2F:2F:3E:3H<4M@7QC9RD;OB:K@9E<8F=8K@;TE>NB:A94?72>61?71J?6H<4;3-C91I=4C915/)60*A7/=4-70+C:4# !"!1,,/*)*"$%:1,#%%+22:01844<74<*%("$1/356A|tlܹǥƣȧɩɪغ׺̰ðsoeTym~rv|ti{tjvpfgbZVRLB?<875..,++*,-,+,,-//$$$     ("0)90%A6)K?0QD5F=3KA7F=3PE9RG;TI>\QEMD9G>4SH=`UHOE;MA72/-*++-..*++*,,&''&''$%$$%$!"!"""&&& !    ! $" $" *(%-+).+).,)0-*1.+52/963@<9?<8>:6:63<85=96?;8=84<85A=:EA>GC?JFBKFBLGCPKGQLHVQLXSN\WSb]Za]Yb]Z`[X]XU[VR\WS[VRZURYSOZUQ^YVa\Xa\X`ZVa\Xb]Y_YU^YU`ZW_ZWZTQVQNTOLTNKXSP^XU^XU^XT_YV^YVXSOVPMYTP_ZWa\Yc][^YVYTQUPMUPLYTPZURSMIQKFXSOXSOWQNWROXSP[URZURXROVQMXTPWRNTPLTOKQLHQLHTOK[VRXTPXSOZUQVRMVQMWRM\WSa\Xa\XYTP\XT_[XZUQUPLTPKWSOXTPXTPSNJPLHJHEkb\ҿμپͳ¨|s~otek[}bQy^Nu[KqXHnWHlVHiSFePCmH=mB:m@7rC8wG:{H:vE9oA6f;1X2(M*"B#6534466888;:;:!1V;/R9/R90R:1S:3S;4T<5T=6U>6U>7W?8^FAV?:))+7R0$<88 8"9#;&>*!A.%E1)I4,L6.N8/P90Q:1S;2U<4W>5\C>aJELHCJGBKHDLIDLIDLIDKHDFB>C?:GC@IFCIEAKGCNJFMIEKGCHC?JE@LGCNIEMIEJE@MHDKGBMHCOJENIENIDLGBID?FA=B>:;9353-/-'++$('!'&'&'' 31'QL//....-.-,,,***)))((('''***+++))(((')((((('''''&&&%'''&&&''',++/-,-+*))(''&('')(()((*)(,*),*)+)(-+)/.,0.-/.--,,*+*+++,,,--,--,--,--,,,+,++,,+++*,++--,..-..-.//.00.00.//,-,,,,,,+*+*))()))**)*)()('(('(((**)+++,-,-.-..-./.........----,-,,,,,,,,-,--,---,-,-.---,+,+))(**))*)((((('**),,+,,+++***)))(**)**)**)**))*))*)***)))(((()((((()(**)******()(''&&&&&&&&&&&'&''&%%%%&%&&%&&%'&%('&)('=83A:2  "#"**)+++))(,*)(&%''&..-22156622200/777..-/-*'%"*(&1/,31.1/,/,)30-5200-+0.+752863862=:6@>:<97963;86C@>HDBNJGNJFPLISNKTOLYUR[VSZVRYTQYTQWROPKGKFBLGCOJEQLHTPLOJGJEAKFBKGDGC?GB>ID@NIEcZT~sҺҴå˪ܺ޽޳ŎϏﴏ챍讉䩅ަؠ|ӛy͖uȓpĐmjgeda`}^|]{]y\wZtXqVqVpVoUmTkRiQhPeMbK`J^I]G}[FyXDtUBmO>bF6N6)2$322VQQ]WWTOOPLLTPOXSSXSSVRRSOPNKLHFHGDFHFHKIKIGI;9<<66O<4P9/N8.L7-J5-I5,I4,I5-J5.L7/M80N91O:1P:2P:2P:2Q;2Q;2P;2O:2O:2N91M91M917% ( 7!]9-[7,:&K8/Q<3O>SA^B7R>5S?5T?6VA7WA8WA8T?67 /I60L92I70H5.E3,B1)?.&<,$:*"9)!7&7G'\4#)7$F4+H6-J7.L90N:2P<3R>5T?6WB9[F>^IAbMDePGfQIcPHaNG]LF\LFZKFXJF\MHZKHaPKnYRmXQhTN]MHM?<4+)-.257<./456<9;A:EG>=I<6C82G;4K>6N?7O@7PA7QB8RC9SD9QB8N@6L?6N@7OA8PB9OB9K@8J@8H>8G>8G>9OC@MЭ˨׻ɪֹپγվƲ{pfUxnczn}ukgaXa\T[WPMKGA@>22000/,,,))),--+,-.//$%%     % -&7.#>4'F;-NB3E<2JA6E=3OD9TH=VK?]QEPF;E<3PG<_TGOF;LA741.*,,-..*++*++&''&((%%%%%%""""##&'&!!!"!)'$*(%.+(1.+1.+2/,3/-2/-41.952@<9?<8<85<96?;8@<9C?;@;8@;8A=:B>;D@6pA7wD8wD7tD8l?4^7.Q-%C$:52345569889::8:;:977743111 0. - - , + + * * * * * , , +[AӀ\tUpTiQ]IO=uB3e:/W6-P3*S6,V8.[<2iD:T4)8":#8!8!6 41-*'%   U7(gC2dB2aA3[?2V<0R:0R;1R;2R<3S<5T=6U>7U?8V?9WA:^GAU?:'(*<#M,!388 9"9$:&>*!A.%E2)I5,L7.N9/P:0Q;1S<3U>4W?5[CDA=FC?IE@JFAJGBJGCEB>EA>C?;D@;8<96A>;EA>>;9:86753+)( !!!#$$%%%#$# !!!""$%%#$$!""%%%'''""!#$$&&&%&%)*)())!""$%%()()**'()"##!!!!"""##%%%     #$#""!!!!"""  !! !! %$$..--,+:5/F?7ME=NF65N:1O9/M8/L7.K7.K6.K6.L7/M80O:1P:2Q;3Q<3Q;3Q;3R<4R<3Q<3P;2P:2O:2N91N:1:(#)=+%K6.]9.^:.Q:1O<2S=3P?R@Y>3Q=4R=4S>4U?6V@6V@7U@7?+$:%K80L91I6/G5.E3,B1)@.'=,$;*"9(!8&7E%W1!*9%F4+H5-K7.M90O<3R>5T?7UA8XC;\G@`KCeOGhSJjULiTLgSK_NH`NH\LG\MI^NJ]MIgTNoYRmWQhTNXIEK><9/,--/57=01657<;6K>6K?7H=6H=6I>7I>7K@:KA:K@:SF>ZJA\KBVG>G=6C:3?60:3->6/H<3B80:2+C80E91B8/70)2,&6/(:1*91+  !%#2,-2,+0)$,%!5,(J<7+!(##$  /07<;E==F=;E416#1ݹѮţֺťгҶϵīҺí~qgWjaVvk`jd[QLFIFAA@=998566,,,---,,,))(+,,*++.//%&&      %+%4,!>4'D:+I?/D:0JA6E=3OD9UJ=VK?\PDQG;7=:7>:7?<8B>;D@=D@=C?;B>:C?:A<8D?;HC?JEALHCPLHSNJXTP_ZW`[Xa\Y\XUZURZURYTQYTPWRNQLIRMISNJUPLZUQ]XS_YU^YUZUPYSNWQMYSOYTQUPLVPLXRNXRNYSPXRN^XT_YV]XU[UQZTQ\WS^YV_ZWZUQUOKWQM\VSXTPYTQ]XTZUQXSOYTPXSO\WT]XU]WT\WT]XUYTQZURXSOWQMVQMXTPXTPVQNWRO^YVc_\a]ZZUQTOKQLGSNITOKWSNYUQXTPXTO\WSa]Y\XTTPLSOJOKHLIFyoϴҿ{qrdiZn^m^~eV~dU{bSu\MoUFnSEmRDgNAbJ=^H;]G;YD8WA6`=4d;4i>6sB7vD8tC6j?3]6-Q.%B%4/.243458778:989<97554310 / 0 / - , + * ) ) ) ( ) ) ( ) * + mN}[oQiN^GN;xB2n>1e;/\8.Z8.Z9/[;0a@5lE:L-#6 8"7!7!41.-*& !  S6(gC2cB2`B3[@2V=1R<0Q<2R=3R=4S>5T>6U?8U?9V@9XB;^GAWA<) (*B'C$278!9#:$;'>+"A.%E2)H5,K8.M9/P;1Q<1S=3U?4WA6[EFB>GD@JGDKHDKHDMIELHCMHDNIDNIELGCID?E@;FA;GB=ID?MGCOJEOJENJEJE@C?:?;674..-&*)"(( (( ''((!((!**"21(;8-C?3/)",)%HE@ng^}q{s{zx{nrvy}eZO/' A?>SPNTRPVTRWTRVSPPMJLHEJGDJGDNKHPMKPMJMIFMJFPLHSOKTQNUQNTQNSPMTQOSPMROLSPNSPNUQOWTQ[XUYVSSPKJFAJFAJEAMIETPLVSPWTPVSOURNUROURPURPTQOUROXURWTQRMIRNJWTQZXTXVSWURXURYURVSOWSOXTOXUQWTPRNJQMJSOLROKMJENKHQNKMJGIEBIFBJGCMIFLHDID?ID?IEAFB>KHDIFBFC@GDAGDAIEBJFCIFCHDAKGDJGC332,-- $$$$%% &&&%%%"##!!!%&&&((#$$$%%())$%$$%$'((%%%)*)*++%%%%&&)***++())$%%#$$%%%$%%$%$ "#"''&$$#   "!! !!!"""!"" !!!""!"""##!!!&&&122221JB:QH>YPE_UI\QFUKASJ@KB9!!!'((-.-...--,++*&&&$$#)))//.332454121565///(&#+)'+)'2/,53064185242/6300.+,*(20-752520851=;7A?;=:7<96@=;C@>HDBJFDLIFOKHOKGPKGQMISOKUPLTOLRNJRMIPJFLFBKFAKFBIE@HC?HC?MIESOLVROUQNSOLRNKSNJbYSzníӻ׿ֽɰŬѷӸջѺ˳˳жپѵʭ¥ַۻڻ׺ոշܾٻݿѵӸ۾Ѵϱ۽պϳƪݿħʭ˰ͪŏŒ﶐촏鱎宊ߨ٤ԟ|ΘwȒrďolgdb`}^{]z]z\y[y[xZuXsWsXrXpWnUnTmTlSjQgOdMcLaK`J^I\H~[F{ZEwWCqR?eH7N7** !#B?@YTUTPPLIJOLLTQQWSTVRSQNOLIKFDGCBEECGGEHB@C114>42N91N90M80M80M80M80N91O:2Q;3Q<4R=5S>6T>6S=5S>6S=5R=4R=4R<3Q<3P;3P;3A/('=+%N80[8-_:.S:0N:2O;2|N=SA_?3P<2Q<2Q=3S>4U?5V@6V@7U?6S>5P<3M91J7/G4-D2+B0(@.'>-%<+#:)":(!8>!H()<) G3+I6-K8/N;2Q=5T@8WB:YD<[F>^IBcMFgQJkUNmXPmWOiTL_MH^MH\LH`PK_OKaPLmXRoYRlVOaOJSFCJ><:/-,+-57=13856<:@HFABOA:N@9J>7H<6I=6F;4G;3C92C91G;3F:3D92D92G<5E<6J?8K@9LA:NCXIA]MC]MC\LBUF=D;3>60=5/:3->5.F:1>4-91*C7/C8/A6.6/(/)$,&!5-(*#'&("!0**1)%1)%/'#QC=A3.,%&/)+& ! %"!,,3:9B;:D<;E85;$ngcױѬ̩Ƨϲʮĩҹ«xqgWVNFZRJPKE;95764553233233+++,,,,,,*))+++)+*/00&''   #,&3, <3%C9*H>.D:0J@6E<3PF:VK>XMA\QESI=D<2SJ?]SGPG;7@<8@<8B>:C?;B>:EA=E@TNJμн˹Ժwthk_dWeVgWdS{_Pw]MsYJpVGiPAeL>_G;\F:]F9\E9ZD7WA5U@4V:0[6/e<4n?6uC7uC7g=2Z5+O-%?#2-.0223456668:8678744320 / . . , + * * ( ' % & & ' ' ( ) ) ) J,|ZzYjM_FP;yB0o=.j<0e;0`;1]:0\;1]=3fC9gA7@%554 41.-+) % "  T7)gD3cB3_C3[A2U>1R<1Q=2R>4R?5S?6T?6T?7U@8VA9XB;]GAWB<( '(G*=: :9":$:%;'>+"A.%E2)H5,K8.M:0O;1Q<2S=3T?4WA6[E;8A?<=:8;85<85?;8EA>IEBLHEPLJTPMQLIMIENJFRNKTPLSNJQLHPKGMHDOIEQLHNIEOKGPKHPLHSOLWSPVROTPMVROXSP^XTsjƱʴʵϹѼ͸̷˵Ű©ī˱ª‹ﶏ촎鱍完ૈڥաМ{˗vǒrÏolhecb`~_|^z\xZxZxZvYtXtXsXrXpWoUnTmTkSiQfOdMdMcLbKaK`I^H]H}[FwWCmO=[@1;+$768TQRWSTLIJMJKSOPWSTUQSPMNIGIBAD@?CA@DBAD<:>/.1C75N:2N91N:1O:1P:2Q;3R<4R=5S=5T>7U?7U?7U?8U?8T?7T>6T>6S>6S=5R=4R=4J6/A/)J6/N:2Z8._:.T:0M:2N:2sJ;Q?dC6P<2Q<2P;2Q<2S>4U@5V@6U@6T>5Q<3N:1K7/G5-E2*B0(@.&?-%=+$<*#;)"9<A#+@+"H5,K7.M:1Q=4T@7WB:ZE>]H@_JCaLFfPIjTNnXQp[SoZRiUM[KG[KG]MI`PL_OLgUOp[SoZRjUN[KFTGCOB>?2/,))35;34935::@HHBCXG>VF>TD;QB:RB:QB9OA8I=5F;4F;3C82H;4G;4G<6I?8OC=G=:A# ,֯ӯ˩ɩƦȩھ¥׽ɱĭwneUF@:A=8863++),,+00/011/00)))+++,,,++*+,+)**/00'('      ",&3- ;3%C:*KA0G>3LB7E<2OD9VJ>[OCZOCTJ>E=3VMB]SGPG;8=:7;74;84=95=95=95?;8B>:@<8C?;C?;D@=GC@KGCPKFNHDKFAPKGTPLUPLUPLYUQ[VSZURWRNSNJTOKTOKQLHQLHQLGRMIUPKYSN[VQ_YU]WSYSN[TO\VQ[VR^XUa\Yd_\c^[b\Y`[X_ZW^YUa\X^XT[UR[VS^YV]XUZTQYSPWRNXSOXRNUOKSMHTNIWQMVQMZTQ_ZW`[X_YU_YU^YV]XUYTPWRMUPLTOJNIELHEKHEOKFZTO_XSja[yp~y}slxnhsibtjdtjdwnɲʹŴؾֽռīymi]cU}`Q`PaPwZJlRDeL?bI5vB6rA6c:0W4*J*#9 0,.01223554567766764420 . - , , + * ) ( & % $ $ $ $ % % & '  lB/҂_uVdJW@F3o;+i:-d8.a9/`<2^<2]=2`?5hE;^908!6!4110,*(& !   W:+gD4bC3^B3ZA2U>1R=1Q=2Q>4R?5S@6S@7T@7TA8VB9WC;\H@ZF?*%)J, >>"<$<%;&;'<(>+"A.%D2)H5,J8.M:0O;1Q<1R=2T>4U@5YD:aJAWKEKHCMIDOJEOKFLHCIE@GC?HD@IEAGD?IEAJFBJFAKGCLHDMHDNIELHCKFAKFAID?GA;KHDJGDKGEMJGOLJSQOUSPTROOLJOLIRNJOLIHFDDA?B?=B>;FB>KFCMIEQMITQOVTQVRPVSPTROTQNPMJMKHNJGQMJVSPZVSXURUQNQMJPLHVROVSPUQMVRNWTQWURXUSXVSWURURORNJQMIWSOVSOSPMTQMROLPMIKHDMIFQMIRNJQNJQNKRNKQNJPMIRNJSPLPMIOKGPMIOLJQNKSQNPNKOLIQMKJFBGC?KHDNJGNKHKHEGDAC@=EC@KIFPMJLIFGC@KGDLHE010,--!""#$#%&&!"""""%%%$%%### ###*+*)++$%%$%%&''$%%'''%&&%&&&''$%%())&&&((((((%%%""#$$$)))%&%!!! !!! #$$"## !!#$$$%%#$$ !!&'&))(%%$&&%%&%"! !!!!"""##!!!$%%$%%$%%"##  !!())-..42/QH?VMCVMBXODWMCTJ@SJ@@91"#"###())+,++,+++*''&(('-.-121333565122/00*)( (%"%# /,)52/20-53120-53031.0.+1/-42/:74<84@=9B?<:74=:7@<8@;8B>;C?B==A>=B@>B97;426I;8N:2O;3Q<4R<4S=5T>5T>6U?7U@8V@9VA:VA:VA:V@9U@9U@9U@8T?7T?7T?6S>7S>7R=6P<4W7.`:.W:0M:2M;2R<3T=4Q<2Q<2Q<2Q<2Q<2R=3U?5V@6V@5U?5R=4O;2L8/I6-F3+C1)A/'@-%>,$=+$=+#9!7@#B#L2'H6.M91Q=4T@8XC;ZF>]HA`KDbMGeOIiSMmWQpZSq\Tq\SgTM[KG[LH\MJ\MK_OLkWQoZRoZRfTLXIDTGCQC?A40/**13857<2499:@:13701557<>AHHDHXG@TD=RC6G;4J<6L?8OB;SE=ZKB]NEWIARF?UG?^MD]LCZJ@VG=L?7>5/81+7/)5.(=3+A6-:1*=3+?4,?4,=3+8/(-'!*$ !%#'" -&$0)$/(#>50`PI8.*5.0824,&&%) *!%'"$20354===G<=D ܺ׶ڸۺ̬åپؿ׿ƲzpfU;72/-,,,+%%$(((..-/0/,--'''+++,-,,,++++)**/10'('         #-'3- ;4%D;+KA0J@5ND9G>4LB7UI=ZOBVK@SI=F=3WMB]SFOF;MD;73/)***++,--+,,()))+*)*)''&###$%$'((###!""!""#$$"$" $$%% &% ''"('#('"'%!)(#+)&.,)1.,2/,2.+730;85<95<85;73:62>:6C>:E@=FB>EA=GB>IEAHD@IEAMHDMHDLFBJE@OJFQLHTOKWSO[WT[VR[WSWRNTNJUPLTNJSMITNJUOKSNITOJVPLWQL[UP^XS^XR`YT\VQZSO_YUe`]c^[^XT^XS]WT]WT\UQ^YU[UQYTP\WT_ZW_ZW\VSYTPXSOVPL[UQ[URXRNVPKXSNXSO\WSb]Ya\Y`[W^XT]WS]WTXSOPLHFB>\UPwo̵սôƸĵվк̷̷̶ɴɴ˵ϸйҺ־վѺͶʴǰíu~h^s[PoTHqTFuVGoRCcJ=^E:]D9\C8]E8]E8^G:[F9WC7TA5M;0I7-J7-K7-J/'O.'^90n@5n@5b9.T1)D(!8 0-///0/133456554555220/- , + * * ( ( ' % $ $ # # # # # % % ^Dу`pR\DM8u>-j8*c7,]5,\7.^<2^>3^?4aA6gD:R2)3 3 310.+('$    +cC3eD5bC4]B3X@2S=1Q<1P=2Q>4Q?5R@6RA7SB8TB8UC9WE;[I@ZG>)! /H*<"=&>'>)=)=(=) ?,#A/&D2)G5,J8.L:0N;1P<2Q=2R>3T?4VA7^G=SJDKHCNJDPLFOKFJF@C?9A=8C@GBGB=E@:D?9GB=ID?LGBNIDOIDMGBKF@ID>D?:<9364-..&--%-,%++#**"))!))!''*)!,+$**##!!((&:86UQJwqf}|q~ppyxvg4-'&$#IFCSOLROLPMKNKIMIGHEBIGENKIROMOMKGDCEB@EB@FC@A>;B?;GC?MHDOKGSPLPMJKGEHEBNKHPMJQMKSOLMJFJGCJFCRNKVSPURNSOLOKHOKHKHDOKHQNKNJGJFCPMJTQNTQNSPMTQNROLPLHMHDSOKROKOLIROLROLKHDFB>FB>IEALHDNJGOLHSPLQNJNJFPLHSOJPLGMHDNKGNKHLIFNKHNKHNKGNJGLHDIEBIEBKGDIGDIFCJGDFDAHFCNLISPNSQNOLIJGDFC@+++,--"##!""####$$!""$%%&&&&''$%% !!"#"()))**%&&#$#))))))'))$&&#$$&''&''*++#$$&&&'('%%%#$$$%%+,+&&& "##"##"""$%%"##!""!!!&&%'('"""%%%&&%!! $#"!!!"#"#$#$%$#$#%&&$%%$%%#$$ ! !    !"" ! "##!"" )*))**962SJAXOEULBVMBULBTKARI?>80$%% """&'&+++---,,,(('(('./.222444455344000('&)&#$"-+'53031/75221.53031.20-20-752:85;84><8A>;741=96A>:D@EA=C?;FB>JFBMIEMIELHDMHENJFPKHPLHOJFOKGPKHRNJSOKTOKWSOXTQUROSOLTPMTPMQMJSNKWRO^YUga\kd_kc\g_Xg_Ynf`ohclead^Yd^Yga]fa]fa^jd`pictkdribricvmfumfphakb[h`Ye^Wb\V_YT^WQg^Wof^ph`lcZmcZlbZ_WOXPI\TN\VQXRM`XRh`XkbZg_Wg^Wqh`tkdje_pﴎ쳎鱍富ᭌܪئԢϜ|ʘxǔuÑqnmjgfdb`}^z]wZvYwZx[wZvYuYsXqWrWqWpVoUnTkRjQjQiPhOhOhOhOgNfMeLcKaJ{[FoR?U?1)!!$'IFIVSUKHJFDFMJLQOQPNPKIKCBE=6T>7U?7U?7V@8WA9WA:XA;XB;XB;XB7W90`:.Z;1N<4O<4O<4P=4Q=5R>5R>4S>4S>4R=3T>4WA6WA6V@5T?4Q=3N:1K7.H5,F3*C1(A/'@.%?-%?,$<&;%Z6(tB.g>.L81Q=5UA9YD=\G@^IB`KDbNHePKfQLkUPoYRr\Us]Ur\TfSM\MIZLIYKJYLJaQMiUOlWPmYQcQJWHCSFBOB?C743-+.058:?35:9:@;@GBAFNA;L?9J>9H=7J>8L?8M?8N@8TE3+>3+=3+;1)7.'0)#& $& ")$".&!/'"2*%]NHH<7*$%702/))%(-"+!0()835+&(//665===F45?ld^޸ֵ߾ٻгĨ§¯siaQ84/'('+,+%%%''',-,./.+++&'&------++*+,+)*+011()(         $+&1+:2$C:+H>.J@5OE9H?5J@6SHTI>F=3VLA]RFOE;PF=<72,---...//,--+,,*++*+*&'&###$$$)**&''%&&&'''((%&%  $$%% &% &&!'&!'&!'&!*)$-+(/-*2/,64063/62/;74=:6>:7>:6?;7A<8EA=HD@HD@GC?HC?GB?FA=HD@LGCJE@JEAJEANIEQMITOLXTQZVRWQMWRNTOKRLHTOKUOKUOKVPLWQLWQLXRMXRM[UPZTO]WR_YSb[Vb\WaZVb\Xga^a[W\UQ^WSaZV`ZV\UQZTPXRNXSO\WS\WT]XU^XU\VRYTPTNJ\VSa\X^YU\VRZUPUOKXSOZUQZUQ]XTZUQUQN]XUrhb|վϾϿξƷԽйη˵ʴ̷̷̶ͷθкһйѺѹͶȲįį|unexaWpVKnRFiM@cI|D1l8)e6*^5+W2*V5,[:1]>4^@6aB8c@7K.%12 1 0.+)'$ !    T;,iH7dD5`B4[A3V>1Q<0O;0O<2P=3P>4Q?5Q@6RA7SB8TC9VD:ZH?WE<& 1<$<&>)?*?+ >* >* =*!>,#@/&D2)F5,I8.L90N;1O<2Q=2R>3S?4VA7^H=QIDFB=GC>LGBMIDKHCHC>D@;A>9B>:B>9C@;FC>HC?IEAHD?E@;F@;GA8IC>LGBMGBKFALFALFAMGAKFAD@;<8264-0/(--%-,%,+$,+$+*#*)"(( *)!-,$+*##! &%$11/B?;c]Us|{~qxjutte4.($"!DA?ROLRPMOMJJGEGDAJFCMJGPNLTQOVTSSQOEA?=96A=:GCAB?:EA:A=:@<9<:7DB?HFCGDBIFDKGDGC@A>;(((+,+ !!!$%$$%$"##!""$%%%&&())())%&&#$$"##'(()**)++%&%'((*+*+,,())$%%'((()*)++$%%$%%&''#$$"##%%%+,+$%$ !! ""#!!!"##!""!""#$$ !! !!!""%%%&&&!! $%$#$# "! """  &'&&''&''%%%#$$!""$%%"## #$$$%$ !!  !! "##"""!!!!!!)*)(**>:5WNDXPFRI@TKATKATKARI?:4,&&&!!! !!!%%%()(./.111++*((&..-/0/010121233000('&,)&(%"+)&52042075320-42/42/20-1/,863974974;96@>::73=95A=:IEBLHEKFBGC>GC?LGDNIEOJFOKGPLHOJFLHCOJFQLHOKGPLHTOKUPLPKGRLHUPLVRNSOKRNJRMIPLHTOKZUR_ZW`\Y^YUXRMOJDLFATNJ[WT[WT]YW`\Zb^[`]Z_\Y`[Xb\Xe_Zf_[e_\c^Z`[WZUQ[UO^YT_ZV_YUa\WZUPWQLYRM`ZU^YSZTOUPJMHBMGAOIDUPKVQL]XSb]X_ZUZUPYTO\WR[XUk]쳍鱌䭊ᬋު٧դџ˚|ǕwŒtpnmjhfeca}_{^x[vZvZwZwZvZuYtXsXsXsXrWrWpVnTlSlRlRkQkQkQjPiOiOhOfNeMaK|\GsUB`F76)#!@>ASPRJGJCADJHJPNPOMPIHKA@D::?88=99>99>015>78Q>7T?7U@8VA9WB:XB;YC6R?7R?7S?6T@7U@7U@6T?6VA6YC8XB7V@5T?4Q<2N:0K7.I5,F3*D1(B/'A.&A.&A.&A/'P5*pA.f?0P<4T@8YD<]HA`KDbMGcNHePJhSNiTOmXRq[Ts]Ut^Ur\TdRM^NJ[MKZLKZMKdRNbPKbQKjVNdQJVHCREAMA>G;8:0--.19;A46;8:@;8I=7QC;YI@]KA_MDaPFbQHcRHcSIZKCLA;SE=[J@XG=SC:K=4<2,4-'2+&3,&7.'=2+=2*=2+=2+<2*;1*9/(5+%-&!#*#$% +%!.&!,% SF@UGA#1*+.'($&,!)0),;46?41:(  *)/76?=4H>5QF;UK@SI>VK?F=4VMA]RFOE;RH>?:4+---...//,--011010000*+*%&%$$$)**'((%&&')(())%&% ""#!!##&% &&!&% '&!&% '&!+*%-,(/-*1.+64085163/951=95<95?;8A=9D@HDAJFCIDAGC?GC?GB>HC?ID?GB=ID@KFBLGCNIEPKGSOKWSOVQLXSOWRNRLHSNJTNJRMHSMIVPKZTO^XSZTO\VQ[UO\VP`ZUa[Ub\W`ZU`ZUb\Y\VRZSN`YUg`\ga]^WS[UQ[TPXRNWQM[UR_ZWa\Yb\Y_ZV\VR^XUa\X]XT\VR[VQUOKVPLYSOYSORNJrhbվϿпƶ׾ԼҺ̵ɳ̶θѻθͷϹйηɳȲȲyvmxd[s^UmWMkTJdLBaI?_G<\E:]G;[G:YE8XE8TB5N<1G6,D4*C3*@0(<,%=,%E*$E("[5+f;1`7-O-&<#1+-..../012312553210.,,,* ) ' & & % $ # "         ! 6"{ZwWbHM8p;*g6'a5)[4+T1*Q2*U7.Y<3]@7`C;^=6D+"010.,)'"     P:+kK9fG7aC5\A3X>1S<0O:/N:0N;1N<2O=3O>4P>4P?5Q@6RA6TB8YF)@+ @,!?+!>+!=+!=*!>,#@/&C2)F5,I7.K9/M:0N;1P=2Q>4S@6XC9\H>IE@EAIE@IFAIE@FB=B>9A=8@<7A=8D@;C>:D?;FA=B=8F@;HC=HB=ID>GAB?;B>:GC@JFCMJGROLTQNROLNJGLHDOLGRNJUQMTQNROLQNLSQNUQNSOLTQNTQNMJGKGDMJFQNJPMJQMJQMJSPLOKHGC?GC?JFBMIEPLIQNLQNLPMJQOLJGDGD@JEANJESPKSOJPLHVRNZVRXTPTQMPMINKGLIFKHEOLIQNKPLIMIEKGCJFBEA>GD@NKFLIDHEAC?;>;7;86><9C@=A>;C?1+%$%$  !! ###&'&./.344...(('--,..../..//222121.,)-*'*'$+(%5205305310.,10-52020-0.+741863753:85?=:;96?;8A>;GC@IFCJFCJEBEA=IEAOKGTPMWTQYURWSOQMIPLHSOKRMIRNJUQNXTPWRNWQMXSO\WS[WTYUQWSOUQMUQMVQMWSOWSOWSOSNJOIDNHDRLIRNKRNKYUS]YX^ZX]YWZWTXSPUOK[UPa\Wc^Z^YTVPKTNIYRL\VQ^XS^XSb\X]XSZTO[VQb]Y_[VXSNSNHTNHVQLTNITOJSNI[VR\WT\WSXSNXSOXTP[VRϚtﴋ첌鰌孋᪈ު۩צҡ͛~ȗzēvtpmkihgeca}_|^z]x\x\x[w[v[uZtYrWsXtXsXrWpUoUnUlSlRlRlRlRlRkQjPiOgOeMbK_IzZFqTBbH9?/'87;OMPHFJ@?CGEHMKNMKNFEI>>B99?88=99>77<216G;:T@8VB:XC;XC[E>[E>\E?\E?\E?[E?ZE>YD>XC=VB8Q>7Q?8R@9S@9S@8T@9VA:WB:WB9WB9ZD:[E:YC8WA6T?4Q<2N:0L8.I6-G3+E2)D1(C0'D1(E2)H4+Q9/O;2S?7XC<\G@`KDcNHePIfPJgRLjUOkWPnYRq[Ts]Uu_Vs]UcRN`PL`PN^OM\NKgTO]MI[LGbPIhTLbPHWHCPC?N@;A51.-/79?68=8:?:SC:M>5B6/6.'3+&1*$2*$8/(<2*<2*<2*<2*;1)90(6,&/&!! %%#'"-& *#G<6[LF*"("!-&%$#+ ,!3,.947C73I90H6-A/&" **032:#5׶ߺ״޻޽طӵҶежտs`YL951%%&-.-())''',-,./.*++(((111010--,./.+,,/10***        &"-(6/"?7)E=-G=1PD9F=4D<3OD:UL@TJ?XMAG>4XNC^SGPFA;4)++-..-..,--344233121+++%&&###()))**%&&())'((%&$ "!"!"!!'' )("))#'&!'&!&%&% ,+%-,'.,(/-)42.962:73=95?<8>;7<84>:6EA>GC@HDAKGCJFBIDAKGCIEAHC?GB>FA1T<0P:.M9.L:0M;1N<2N=3O>4O>5O>4O>4P>4R@5XE;J91 08"<'?*@,!?,!>+!=*!<*!;)!=+#@/&C1)F4,H7.J8/L90M:0N<1P=3R?5XB8QB;B>:B?:FC>HD?HD@GC>FB=D@;B>9C?:B>8C>9C?:@;6@<7E@;E@:GALIFMJFMIEQMIQMJQMKTQOTQOQNLSPMTQNSPLROLTQMVSPVSPURPSPMUQNQMJMJGMJGKHDIEBLIEQNKSPMTQNQNKPMJOKGMIEMJFPMJQMKPMJNKHNKIIFCFB?C@=HEAPMHUQMPLHMIEOKHTQMRNKPMIROKSPMTQNQMJHDAIFCQNKTQNOLHJGCJFBC?;FA=VRNURNOLHGD@?<9<:8;98A>GC@IFBD@<;84(((*+* !""'''%&&#$$$%$&'&'''%%%'(()**%&&"##$%%,,,/00())#$$()(*+*,..)++%&&()(****++###!""$%% $$$)**#$$$%%$%$%%%&&&'(('(()**())&'''(('))$%&#$$ !!'''%&%###)*)(((&'&$#"$#"&&%$$#&&& !!"#",,++,+*++*++'(("###$$#$$###%%%$%%!!!!""#$$"###$$$%%!"" !!  "##%&& +,+)*+E@9VMCTLBRJ@WMCXOETKAOF<-("&&&"#"##"###&%%''&//.565121))(,,+-.-...,,,./.000.,*+)&,)&-+(42/64242/0.,.-*31.20-0.+741;85853;95><8:74?;8A=:EA>GC@FC@JFBIDAKGCLHEPLIROKRNKSNKMIFHD@KFBPKFOJFTPLYUQXSOYUQYUQZUQWSPXTPZVSWSPRNKPKGQMIROLVSOXSOXRNYSOYUQUQORNLUQOWTRWSQWSPZURXSOTOJVQL[VQ`ZU`ZUZUOWQLYSNWQLYSN\VRc^Ze`]fb^fa^fb^c^Z_ZV\WQ\WR^YUXSOPKFLGCYUP[WSXSORNIVQMRRP{c챈뱋鰋残⫊ީۨئӣΞȘ{Ĕxtqoljihfdca}_|^{]y\x\x\x\x\x[vZrWqVsXrWqVoTmSnTlSkRkRjQkQkRjPiPgOfNdMaK^I{ZFtVDmQA`G:A0(015KIMGFJ=\F?\G@]G@]GA]G@]F@]FA\F@[F?YE?XD=WC6S?7R@9R?9R@9S@9S@:S@9S@:SA:UB;WC6XC;\G@`JDcNHfQKgQKhRLjUOkVPmXQoYRr[Tt^Vv_Wr\UbQNaQMcRO_PMaPLiVOZKGYJF[LFaOIgTLdRJ\LETE?E72/,,57=79?89?:;A9:@56;126238:;A?AHJBANB5F809/(/(#.("-'"1)$:0(<1*;1*;1*;1)9/(6-&2)$& $$!&!+%+%8/*XKD8.)#*#!%",!+ 6./>8;@74K=4P@6P?5P=2K7-* ('-0ܸմӴϳǭʴskcVMH>840#$$---+++'((--.011,--(((01100/--,-..+,,/00***        %!,'5.!>7(D<,E4YNB^SFQH=RI?A;5'))-..,-,,--233333121***&&&###&'')**$%%'(('((%&%"$$&$&#$ ""((!*)#**$''!))#)("**$00)21+32-53.53/961;83@=8B?:B>:A=9B>:GC@JFCJFCKGCMIFLHENIENIELGCLGCMHCLGBJE@MHDNIEKFBMHDRMIWRNWRNUPLRLHNIDLGCLGCNIERLGXRM^XS_YT^XS`YT^XR\UP[TN]WQaZUaZU`YTb[W^WR\TO_XSb[W_XSc\X^XT\VRWQMSMHTNJXRMWQLZTP\VR[UQ[UQZTP[UQ[UP]WRWSO~rjŮͽֺɭɬҶǷֻ|tkd~f^ofzouxz{xmyo}s{pukvz~s{q{qxxnve^o^Yrb\wg`qa[wf_td]paZm]Vl\Tve\n]TgVM^LCUB9S?6Q=4M:2L:2I80D4-B2+@1(=-%=.%<-$9+"9*";)"?'!>$T/'Y3*F)"8"-+++,---./1/0011211/ . * ) ( & % $ # " !        qJ6~]gLR+!<+!<*!;)!;*"=,$@/'C2)E4,G6.I8/J8/K9/L:0M:0Q=2UB8D?:=94A=9C@;IE@KGBHD@D@;A=8@<6?<6>:4B>8D@;D?:D?:D?:FAJD>JD>LF@LGALGAFA;F@;IC>EA;?<597054,11)0/'.-%,+$+*"*)"-,$-,$.-%/-&.,&%$#"!--+.-,863RNGpi^vkx|rxststx{qbSQOUSQSQOSQOTRPXVTUSRQOMMJHKHEGDAEB?GDAHEBLIFKHEGDAEB@IFCKHEOLIROLQNLKHFGC@HDANKHQNLROLSPMWTQVSQSQONKIGDAIEAJFBB?:B>:NJFOLHNKHOLHKHELHFNKHMJHMJGOKHNKGNKHKHEMJGMJGMJGKHEHEAB>:EB>NJGNKH@=:963<85B=:HD@IFCHDALHFPMKRPMLIFGC@JGDPMJOLIMIFLIEIE@DA=JGDIFCGDAEB?>;8:74:75>;8FC@KHEKHEA>::74(((+,,!"! ''''(($%% !!'('(((%&%())+,,(((%&&#$$*++.00)**#$$()))*)+-,+,,$%%'('*+*+++&&% !!#$$!""&'&())!"!%%%$$$%&&&&&'''())*,,*,,*+++,,+--(**&''$$$'''$%$%&%---+++))('&%%$#&&%$$#&'&"""###++*+,+,-,-..*++$%$%&&&''$%%$%%$$$###%&&$%%###%%%"#$#$$#$$!!! !! !! #$#'((  ! -..*,,IC;VMCSKASJ@VMCVMCSI@LD:%!%%%##"$$$###&'&(((..-344121(('))(,,,-..)**,,,.///-*'%#,)&/-*42/8646410.,,*(20-20-1/+741:74963;85=:7=:7@<:A=:D@=D@>C?JEAQMHRMISNKVRNVRM[WS]YUYTQTOKTOKZUQYURRNJOKFPKHPLIRNJVRNWROXSPXTRYVSVSPSPMQNLPMJTOLXTPXTPUQLVPLVQLTNITNIXRM]WS`ZV\VQ]WQ_YTa[Wc^Zea]c_\c_\d_\e`\`\XVQMQKGPKFTOJTOKWRNWSOTPLNJELHD\TMݢxﲈꮆ鮆诊残㬉ߩۧإԣΞșÔyvspmlkihfc~a}`|_{^z]z]y\w[w[x\x\w[tYrXsXsWqVpUnTnTlSkRkRjQiQiQhOfNeMbKaJ_I~\HyYFsUDnQBgL?]E9F4,+-1JIMGGK;;@AAEJHLJIMDDI=>D9:@::A99?45;?:=TB=XD[F?\G@^HA_HB_IB_IB_HB^HB]HB]GA[GAZE?XD=WC=WC=WC=VB84-,0388:@67=9:@9:?56;12712678>>@GIABL?:NARE?QD>QD>RC=OB5F80<0)0(#+% ,&!/("5,&:0);0):0)90(7.'4+%/'"'!!$ % +%,%0)$OC=A71&#!-#/$/''=68?63H:2M>6RB8UD9VD9YD8S>33%&'/44=նظϱ{uhoeZUPGD@863/###,,,,,,(((.//011-..'((111010--,-..+,,/10***        %",'5/"=6'C;+C:.M@6F=3G>4OE:UJ>PF;WL@F=3XL@\QDQH=SI?D=6&((./.-..,--233233010)))'(($%%&&')**%&%&''())&'&"$$&#$"#"# ! %%++$,,%.-',,&,+%,+%,,%0/(32,64/750972<94?<7DAM=7E5/G6/G6/F6.D4-@1+>0)<-'=.&?0'=.%<.%9*"<(!=$F(!Q.%D' 6!,+**++,-..0/0.110/ / - , ) ( ' % $ # " !        _EzZaGK6n;*c4']0%Y0'X2*V4,R2+O1*N1*O3-S60I0)* ,+*(&$    - bG4gK8aG6]C4X@1T5O?5P@6SB8P@6'. 7";'=*>+ =+!<* ;*!;*!;)"<+#>-&@0(C2*E4,G6.I7/J8/J8.K8/M:0T>4MA:B?:=94>;5>;5EB=HD?FB=A=7=93=93=:4=93@;6A=8A=8B>8C>9D?:D?:D?9D?9E?9GA;IC>JD>IC=JD?GB8B=7=:375-31)/.&-,$,+#*)"*)"+*",+$-,%/.&0/'-,%##+*)+*)20.B?;[VNrj_wkw}}ou{ws}pr{rKHGNLJOLJNKIIGDJGEIFDIFDKHEMJGKHFGDAGC@FC@GDADA>D@=GC@KGDIFCGDAHDAHEBC?;FC@HEBHDAIFCPMKSPNRPNOLJGC@LGCNJFEA=C?:JFBNJGPLIQNJMJFLIEOKHNKHIFCHEAJFCLIFMJGPMIMJFC@:6962?;8C?<<85:52<84<83C>:HD@JFCNKGMJGNKHQOKMJGFB?FB>IFBNJGROKNJFD@<@<8?<8B?;?<9@=:B?><:())*++!"!#$#()(&'&''''('%%%%%%'(((((&''###)))./.*,,#$$&'&'('()(*++&''&&&'''('')))$$$$%%&&&+,+())!!!%%%%%%&''%&&&''())*++*,,*+++,-+--())&''%&&'''$$$&&&-.-***''&'&%(&%('&&&&)))$$$###**)++*,-,-/.*++$%%((')**&'''((()($%$$%%$$$"""$%%$$%#$$""""##!!!"#"!""!!!   #$#())  $$$010+--LE=VNDSKAULBVMCTKBQH>JB9 "#"""!%%$""!'(',,,///455444+,+,,,-.-...)))*+*,--.,*!)&#/-*42/97586410-+)'/-*0/,0.+852;85:75;85852974>;9@=:FB?GC?FB>FA>JEBMHEMIFOKGMIDJFALHDOJENIEOJESNJUQMWRNWRNVQMYTPZVRVQMRLHQLGUPLURNSOKTPKUPLUPLTOLUQMWSPYTRZVT\XVYVTUROOKHNIFUOLZUR[VSYUQZUQWRNUOJXRM]WRb]Xd_[a[V]XS]XS]WSa\Wc^[`\Yb]Zd`]b^Z]XTXSORMHRMH\WRa\X`\X]XTWSOWRNOOMfﱆﱇ밇갇讆歇孉㬉ިڦפӢΟɚĖ}yusomlligf}`oUnUw\y]x\x\x\v[tYuZv[vZuYsXqWqWqVpVoVnUlSkRjQiQhPfOeNcMbK`J]I~[GyXFuVEqSClPAgM@aI=XB8C2+"(*.HGLIIN<?F?@G=>E9:@56\G@]HA^IB_JC`JD`JD`JD_ID_IC^IC\HB[F@ZE?XE>XD>WD=VC7R@9SA:TA;UA;UA;TA;UBYF@\HB_JDbMFcNEcMBaJ?^G<\E:YC9WA7U?5S>4Q<3P<2P<3R=4U@7XC;\F?_JBbLFeOIhRLkTOkUOmVQmWQmWQoYRpZTs]VvaYwaYp]VaQNaQMaQM^OLdSNhUNZKGZJF\LGZKFXJDZJC]LEZKCRB<>3/.05:9:@9:@67<34812656;=?FFBEL@;RE?SF@RE?RF@TG@TF@RE?PE?RFAPE@SGBbRIhWMhVLfTI_NCPB9N>5G8/=0)2)#*$*$,% 1)#7.'9/(8/(6-&2*$.'")$% ! *#,% ,% G=7B82 #"!-$ 1'"*#!601>41E91J=5N?6QA7UD9XF;[H<_I=_H;F6,'wlb޹ڸʪ׼Ȱ|}pcbYPNIC@>997131."##+,,+,,()(-...//./.'''/00010--,-..,--/00*+*      '"-(60#<5'B;+C:-K?5G>4G>5PF;UJ>ND:VK@E<2UH=ZOCPGG?8'()./..//,--01123200/()(***&''&''*++&''&'')**()(%'(*!()'( &' #$"#((!++#,,%..'0/)00)10)00)33+54,860971861;83>;6C@;D@;DA0)@2*C4+B3*@1(:,$7(!:$>$J*"A%0)()*++,,.-.././//.,- * ) ' % $ # " !         kOtV[B|F3j8(`2&Z/%X0&V1)V4+T5-Q3,N1*N2+R6/@*"' *)(& $ !    V>-fJ7aG6]D4X@2T=/O:-K7,H5+G5+G6,G7.H8/I8/I90J:0J:1K;1L<2M=3P?56*#%28$<(=* =+ <* ;*!:*!:)!;+#=-%?/'A1)C3+E5-G6.H7.I8.J8.L9/Q<2P@7C?:C@8C@:C>9B>8>:484-96/<82;72;71;71<82=93=93@;5?:5>94=94>95?<8A>:B?;6?;6?<7=:586/21)-,%++#,+$+*"+*".-&.-&0/(42+43,54.42.-+(.-*541641752><8KGB]XPph^{mx|n|nrsuqthuhr~yB?=GDBMJHOMJNKIOKIQMJPLINKHPMKPMKNKILIFIFCGC@FC@EB?HDAIEBGC?C@:B>:EB=EA:EA=JGCPMIUSPUROQNKROKTQMPMIMJFLHEIEBHEAHDAFB?>:6@<7EA=B>:@<8A>:DA>A>;FC>KGBGC>FB=LIEJGDFC?C?FB>B?HEBMIEOKGOLHJGD@><'))*+*!""!"! !!'(')**%&&%%%### ###)))%&&"##''',--+--#%%$%%)))*+*+,+*++'(('((%%%+,+)))())*+*-.-*++!""$$$$%%&''$%%%&&'((())*++*++*+,*+,&((&''%&&'''$$$%&&,--+++&&&%$#'%$'&%%%$))($%$###(((++*,-,-..*++$%%((()**$%%&''())%%%%&&&&&%%%%&%""#!"""##!"" !!"""!!! ! "#"""" #$#&''*++!"""""&''011...PI@UMCTKAWNDWOEQI?OF=IA8!!!!"!%%$!!!'('--,010444454..-./.------*+*-.-/00/-+ (%#1/,5308636411/,,+(/.,.,*-+(53075242053041.630;85=96A=:B>;GC@GC?KFBKFCJEAGB>E@>DFFLEELABI@AH?@G;SD@ZF?\G@]HA^IC`JDaLEaLFaLF`KE`JE_JD^IC]HB[GAZF@YE?XD>VC=TB;S@:Q?8P?8P>7P?7R@8SA:TA;UB;UBYF@\HB^JDcNHfPIfPGeNEcLBaJ?_H>]F5/A72!  .% 4*%)"1*+:1.B7/G;3K>5OA8RB9UD:XG<\I=`K?dM@eM?N;0&'3ɨڷȦѶ|ryl`_VNLGB?<8:9543.20-!"",,,+,+(((-.-+,,-..&&&-../0/---./.-../00+,+    &!,'3-!93%@9)A9,J>4I?5F=4OE:UJ>NE:UK@E<3PD9XL@PFHD@HD@IDAMIEMHEMHEJFBJEBMHEOJGPKGQLHQLHQLHRMIPKGNIENIEOJFPKGMGCMHDOJETNIUPKVPLYSOXSNVPK[UQ[UPZSM[TN[TNZSLZSM]VQb\Vc\Wb[VaZTb[Vd]XbZU`XSaZU`ZU^WSaZWa[W`ZW\VQYRNXQLVOJXRMTNJd]Xջ~ynxtfk^i^uj{qvitfvfxgwfscscucsbq`m\gWcU~bT}aTdUfWeV}aR|`Ox[LrVHnTFpUGwZK}]L}\KvVGnQDjNBdI>cI>_H>`KBZF>Q=6O=6Q@9M;5RA;]ME^OH]NGZKERD>M@:H;5C60.'@0(B2*D4,F5-G6.H7.I7.J8/N:0R?5G?9DA9C?:B?9@<6@<6?:484.40)62,:82==9@?=@@>BC@CCABB?==;9;9687586798:;::<;:=<;>=;>=9;:9;9:<:;<:=>;>><>?<<<:;;9<<9;:8:96A@LKFWTNf`Wph]zlqxoc|sg~uhq|xy}IFBIFBMJGQOLROMMJHLIGROMSQNQOMRPNRPNPNKPMKMJGMJGKHEIFCKGCIFAGD?FB>B>:EB>GD?EA=FB>JFCOLIQNKROLPMJJGDFCAB?A>;A>;GDAB?<@=:A>LD:@81 !"!""!$$# &'&,-,///232344..-/0/..-*+*)**,--1221/- (-5416411/--+)*)&0.,1/-/-+530641530630640852=:7A=:B>;B>;GC@HD@LHDKGCJE@E@:GB>LGCPKGPKGQMHQLHNIEOJESOKXSPYUQXSPSNJPKGOIERMIUROTPMRMISNJTOLVQNWROUQNQMJLHEOJGYUR^ZW]YVXTPPLHOIEXSO\XUZVSWRNYSO[UQ\VRZVRXSNXSNVQLXSN]WSa\Xb]Za\X]XT\WS[WR\XTYUQZUQ^YU\VSWRMQLHQLHQLHBCB}_﯂﯂쮃쮃뮃ꮄ譄欄嬃孅㬅੅ިۦ֢џΞʛƙ×~{zwurolkife~bz_w\v[v[uZv[w[w[v[tZrXpWoVoVnUmTlSkSkRkQkRjRhQeOcMaL^J\H}[HzXFvVEsTDpRCmPBkOBhNAfLAdKAaJ@]G>VA9E3-%&(,GGMGGN:;B=>DDDKBCJ>?F>?FBCK>?G79@E?BYGA\G@]HB^IC`KDaLFbLFbLFaLF`KE`JE_JE^JD]IC[GAZF@XE>WD=UB7P>7P?7R@9SA:TA;UB;UBZF@[GB]IDbNHfQKhSKhRIgQGfODdMBbKA`I@^H?\F=[E]G@_IBbLEdOHgQJiRLkTNlTNmTOnVQoWRnWQpYTs]Vt^Wv`Yw`YjXSbRN`PLZLI]MIiVOlWO^NHYJF[JE[LFZKEXJDVHBTGAQD>@40--.79>:;A8:?9:@8:?78=4593488:?BBHLC@RF@\MF`OG]MFYKD[LE_MFcPHbQI\MGXJD]OGgUKgUIbODUE;I:1=/(1'!)"'!'!*$1("4+%1)$-'"*% '#'"$  & ,%+$5-(E:4( /&!9.)*",&&7.+?3,E91I<4M?6PA8RC9SD9VE;[H=`L@dOBgPBkSDbJ<6( )ڷղֻqsdncX\TMMHCDA>?=:?=987220-#$$,-,,,,(((,-,)*)---&&%+,,.//---./..///10,,,    $ ,'3.!:4%@8)B:-J?5I?5E<3NC8SH:C?;FB>FB>EAcJ>_G<]G=[F7TE>[LEYLEPC=H=6@4.=0)=0)6*#5)"4)!2' 0 =#D'5%&'(()*+,,--..-,,**)( & # # !           9'|]mQU?sA/d6(]3'Y1'V1(U2)T3*T4+Q4+O3*M3*P6-0$ % # # !   P:*`E3[C2XA1T>0P;.L8,I7,H6,H7-G7.H8.H9/H90I:0J;1K<2L=2L>3N?4K<2%&16#:'<* ;* ;* :*!:*":+#<,%=.&?0(A2*C4,E5-F6.G7.H7.J8/L90R>4J@:B?;EA=C@<@=8?<7?<6=93;71:5061+52+0.*=>@?9<;6:8477354232232132254365354021132243231232343675787776887776343565787:;:88888799787522000.11112112112001/121222010/10354143+//',--10-10243.10143IIDvsiȾwx|{vOLINKIKGEHEBJGDFC@A>;HECIGEDBAIFEOLJSPNTRPSQNROLPMJLJGLIEOLHPMIMJGFB?FB>KHDOLHOLIPMKQNLQNKNKIKIFHEBDA>B?:EC@IGEJHFMJHOLIKHDHEAGDA><:--,***"#"$$#&&&###&''-..#$$#$$%&&%%%#$$())())())'((+,,.//'()$%%+++--,--,/..***+,++++**),,,)))+++*++$%% !!!"""##"## ####$$!!!!""#$$&'''(("###$$$%%$$$!"!$$$)**++++,,()(&&%%$#$#"'&%$$$$%%(((****+****())&''&&&$%%!""%%%%&&"##"##&''%&&'((%%%#$$ !!"""#$$### !!"###$$!!!!""$%%""""#""#####$$$"#"%%%())***%&& ! %&% !!**)120,,+F@8KD;F?7;5//+&+&"" !! ""!$$# %%$,-,...122233,,,//...-++*++++++01120. )'$0.+31.1/--+(+)')'%0/,32/0.,641531530630851852;85?;8@<8A=:FB>JEBQMIRMINJEKFAID?NJETPKWRMVQMRNJPKGQLGTOJVQMYTQ[WSWROVQMYUQZVR[VSZVSYUQYUQYTPXTOUQMRNJNJGMIEOKGUQN]YV^ZW[WTUQNPLGPJETOJVQNXTPXSNWRMYSO\XS\XSZUQXRNXSNYSNYTO_YUc^Z^ZVXSNYTOZVQZUQTOJQLGUPKPKFNIDPJETOJQMIYOG۠t﯀쮁뭂ꭁꬂ鬁笂欂媂㩁⩃᫄ߩۦ٥բО͛~ɛŘ~–}}{zwusomlied}az_x]v\uZtYtYuZuZuZtYrXpVnUmUlTkSiRiQhPdMgOgPfPdNaL_J\I}ZGyXFvVEsTDpRDmPBkNBjNBiNCgNCfMCdLBbKA]G>T@8B0*#&(,DDJBCJ89?=>EBCJABJ>?GCDMABJ<=D9:APDD[GA]HB^IC`KEbLFbLFbLFbLFaKF`KE_KE_KE^JD]IC[HBYF@WD>UC7Q>7S@9TA:TA:UA;UB;VBZF@[GA\HCaLGfQKiTMjTLjSKhQHgPGfOFdMEbLCaJB`JA_IA_IA`IBbKDdNGgQJhRLjSNkTNlUOmUPnVQnWRnWQpYTs]Vu^Wv_Xv_XkXR_PL^OK\MIaPKjVOp[QiVN^MHYIC[KE\MFYKEVICTGASF@D83/,,149;@AGRHF]NGdSJ`PHYKDUICUHC[KEcQJhUMdSKZLFZNFgUKfSH^LAP?6>0)0& (!$% '!-% 2)#.'!*$ +% )#(#'"$!#+$,%1*$B820'"-% ;1+/& ("!4,)<0)A5-E90I<3M?5OA7QB8SC9TD9XG<]J?bNAfQCiRDoVGlRCI8,l`T׳ŧrrfY[SKQLGKHDGDAC@>A?F>4G>4SG;NE:JB9G@8'''-./,--/00/00121121))(...,,,))),--./.***-..,,,')!+-#-/$,-$+,#)*!() ++#.-&0/(22)32*32+43,42+33*66-65-44,32+64-86/;93?=7B?:@=8@<7A=9C?;FA=IDAID@HC?ID@JFBKFAKFARLHUPLUPLTNJQKGKFAJE@KE@NHCRLGRLHQLHTOKPJEMGBPJEVPK[UQ[UPXQLYRM\UP_XRc[Ud\VaYS`YR`XR_XQaYSf^Yf^Yc[V]UN_WQ`YT]VQ_XT`YUe^Zd^Zc\X_YT^WRVQL~qi̴ʹk^vjwroo{lzixhufwh{mpo~n|m{lyjxhyivgrdnal_l^k]j[fV}aRz^Ox\LsWHmREkQDlRDkPCsTEnQBiM?kO@oRCmQBjPBfM@eM@cL@\G5M:3J82F60A2-?0,A1,E5/L<5N?8K>6QD=N@9K>7L?8@3-6*$0%-#* 1B&9"&&'&'')**+,,,,,,+)(&%% # !           fF4ÂbjOT>p@/c7)\4(X3(U3)T4*S5+R5,Q5,P5,P6-R8/)$ # !     #X@.ZA0W@0S=/P;.M9-I7,H6,G7-H8.H8/I:0I:0J;1K<2L=3L>4M?4N@5QB7:.'-2 7%:(;):) :*!:+":+#;,$=.&?0(@1*B4,D5-F7.G8/H8/J90L:0Q=3NB:B?;B>:C@9<<4672554888;:698354032/22/21010.0/,.-/10132132011/11021/0//0/01033223212101001/-.,--,/0/23233345466565421000.010121011021/0./0//0/010/0/121454243.10-/.,.-,.--/.-//675PNI{ouxvpJHELIGKHEHEAJGCKHDEB?GDAJGEKHELIFIGDGEBJHFMKHOLJKHEDA>D@=JFCOLIQNKPMJQMJSQMSQNLJGNLJURPVTQTROPNKLIFHEBGDBNKIPMJQOKQNKMIENJFRNJLIFKGDOMIQNKPMILIELIFJGDOLJROLOMKNLIMJGLIFLIFB?=GDAOLIROKRNKVSPXURSPMPMJSOLVROVSPXURXVRXURUROQNJJFCC@FB>IE@MJFNJFKGDFC?C@;HDAC?<:8-,+&&&&&&(((&'')**#$####$%%%%$"""&&&'((%%%$%$())*++'((%%%*+++++,,+-,,**))))))((((,,,*++)**&'' !!! !!" !!"##""# !!!"""##%%&!"""##"##%%%"""###&'''(')))%%%"""#"!#"!$#####'(')))***((('''%%%$%%%%%%%% !!#$$$$$!""!!!%&&%&%&''"##!"" ! !!!"##"#" !""###!!!"""%&&$$$  "##!!!!"""##!!!###&''())$$$ ! &'&!"",)&:5/!61,C=6<6//*%  ""!### ""!*++-.-010122++*//.--,++*.//-..0111/- +)&/-*0/,-+)*'%(&$('$21.542.-+42/30.0/,31/640974?<9B>;@<8A<8FB=JFBRMITOKQMHPJFOJFOJFOKFRMIUPLSOKRNKTPLVQMYUP]XU^ZW]YU\XT^ZV[WTXTPVQMWRNXTPXTPXTPXTPWROVROVROVROYUR]YW]YV\XUYURVRNWRNYTPYUQ\XUZVSVQMZUP^ZV[VSZUR]XT^YU_ZV_ZU`[Wc^Z^YUWRMVQLXSO\WSXSOPKFOIDRLGUOJTOISMHIIGz^}~~꬀ꬁ魁謁竁櫀嫁䪁⨁ীਂީۦףԡџ͜ș|ė|}|zxvtsrolkhe|bz`x^w\v[u[tYsYsYsYrXqWqWpWoVnVmUiReOhQhQfOeNdNcNbM`L]I~ZH{XGwVEsTDpRDnQDkOCjOCiOCiODiODhODfNDdMCaKA[G>R>6=-' ')-BBI@AH<=D?@GBCJ?@H>@G=?F@BJ<>FCAGXGD\HA]IC`KEbLFbLFbMGbMGbLFaKE`KE`KE_KE^JD\IBZGAXE?VC=TA;R@9R@9Q?8Q?8S@9TA:TA;UA;UAH<7721,.3;3+B6.F90J<3M?5OA7QB8SC9UD:VF;ZH<_K@dOChRDkTFqWHw\K_J;%׾԰ֽrqfXYQIID>HDAIFCHFCEC@DB>@=:75230-++*...+,,()),,,)*),-,---...-..,-,,-,---./.,-,   &".)60#=6(B;+C;.KA7J@6E<3PF;OD8G>4SI>H?5D;1QE:PF;KB9JC;))(./0,--233233343443+,+/0////*+*-...//**)./.-.-')!+-".0%,-#+,")* ((,,$/.'00(10(32*22*32+11(21)65,43+54,55-86.:81:81=;4DA;DA:B?9B>9D?;HC?KFBLGCJEAID?LGBKFBKE@PKFSNJRMIQLGNIEMHDNIDNHCRLGUOJRLHOJERLHRLHPJEPIDTNIXRNZTOWQLWPKZSNaZTe]We]WbZTbZTaYS\UO]UOc[Uf^Xd]W_VP[SM^VQbZUd]Xc]X`ZU]VQ_XS_XTXSO~uévhpbuh}nsvtp|l{jzjntxvtrtssr~nzkxjwgvfrbk\fX}bTu[NoUHiPDgMBjPCoSEkPCnQBnQBmPAqSDtVFrVEoSDkQCjQCfNA^I7J;5D60?0+@0+B2,B4,J<4J;3K=6M@9I;5B5/:.(4)$2'"."7!@%*#%%%&&)))**++**))&$ $ # "            oTÂchOT>nA/a9+[6*W5)T5*S5+R6,R7-Q7.Q8/S:1U;2&# !      /!X?.V>.S=.P;-M9,J7,G6,G7-G7.H8/I90I:0J;1K=3L>3M?4N@5OB6QD8N@6&04"8&9(9)9) 9*":+#;,$<.&>/(@2*B3+D5-F7.G8/I90J:1L;1O=2VC:GB=>;8<95?<8>;7<9596174/0-( ''%>??8::356255367366133/10/21023022122/10+.--/.021021/00.0//10.//-.-./.01000//0./0./0.,,+,-+...01023223244355400/01/010232132010-/..0/.0/010010/0/131243/21-/.,-,+-,,.--/./00=<:a^W|wrtuMJGNLINLINKHPLIROLPMIMJGJGDHEAGDAFC@D@=C@=GC@KHEJGEKHEOLHQNJMKHKHEOLISPMTRNQNKLIFOLIRPMOMJQOLQNLNLIHEBDA>HEBNKHNKHHEBJFCRNKUQNQNJMIFMJFNKHMJGKHDJGDJFCOLIPMKMJHGDAHDAHEAIFB@=9@=:GD@GDADA=IFBKHEFC@C?EA>GECJHFJHFHEBHDAC>;C@=KHEGD@B?<=:8,+*&&&(((***())$$$ !!!!!"""###"##$%%(((&&&###%&%$$$#$$%%%)*))*)''&%%%'(')***+***)))())))*)())!!! !!"#####!!!$%%$$%!!!#$$#$$"#####!!!"##"""%%$""!#$#%%%%%%&''!!! ! """!! !! (((((()))'(('''&&&%&&"##### !""  #$$###!"" !! !"!!"" "##### !""!"""""$$$"""###%&&&&& !!'('"##62-HA91,(>82KC;A:32-( !! ##"$$$"!!!! ()(,--/0/011***//./-,+*)111122121++),*'/-*0.+.,)+(&(&$'&$10.5410/,641741.,*0.,641;96A=;EA>D@E?@H>?G<>EACKACL;=ELBB[GA]IB`KDbMFcMGbLFbMFbMGbLFaKE`KD_KE^JD]IC[HAYF@WD>UBK>:=65*,/:78=9:?=@FYOLfTKgULhVMiVMfTL[MGYLF]OIgVMlZOfUL[MEeTHbODL<3-##!!!$)"(!""% % '!*#$(",%,% 90+2*%( 5,',$&2*&8.'<1*A5-D8/G:1K=4M@6OA7QB8SD9UE:VF;YG<\J>aNAfQDjTFnVGsYJ|aOuZH@1't׶к}lpfZaZQXSLPKENJFLIEKHEFDBCA>@>;:8431..../0/./.***---+,,----.....-..+,,,,,,--,-,+,,    %!-(71$>7)C<,E=/H>4J@6D<2QF;PD9H?5QH=F>4@80MB8QG;JA8KC;++*011.//344344555554..-011221---011122---121121+,$-/$-/#+-"+,!(*'(,,#/.'0/(11)44+33+43+44*11(21(22(66-77.;:1=<4>=5@?7DB;EC;CA9DA;GC>KFBLHDMHDMHCMHCNIDMHCIC>KEAMGCKFBOJFOJFNIDPKFRMHTOKTNIQKFNIDOIDRLGVOKTNIUNJXQMXRMVPKSMHVOJ^WQaYT`XR_WP`XR_WQ\TN^UOaYSbYT`XSZRLXPKYRL]UP`XT_XSYRMVOJZSN[UQ}qj~qxkzn`sdwiykqus|mxgwfxhouxwxvxxxwtssp{kvfrbo]hW{`PsYKoTHmSGoTGnRDhOAhNAmQBmQBqUEpTDpTDjO@fM?fN@cL?^H/);-'=0*=0*;/)$1 !##$%''))**)('&&%$ # "          ^Hѐn}_gNS>lA0`9,Z7+V6+T6+R6+R6,R8-R9/S:0V=3V=3$        >, W>-S<-P;-M9,J7,H6,G6,G7-G8.H9/I:0I:1J<2K=3M?4N@5OA6PC8UF;D80,16#8'9(8( 9)!:+#:+$<-&=/(@1*B3+D5-F7/G8/H90J:1K;1N<3UA7PE>><8:73973;85:7485052-52-%# $" $$":;:799577477266266244021021033123132022-//,...00/0/.0/./..//-..---,----,-.-..-./-//.-.-..-././0/010/0/120443110/0.010122021./.+,+,--/0/011010-.--/./10/10/10+-,+---/.-/.,..122FFCpmdMJHJGEHFDKHFNKGSPMUSPTROQNLMJFMJGLIFKGDIEALHDPMIPMJOMJNKHGDAGDAEB>FC?MIFTPMVROSPMMIFIEAHDALIFOMJOLJFCAB?D@=C@=D@=HDAOLHNKGKHEIFBHDAIEBJFCKHEMJGQNKROLPMINKGJFBEB>B>:@=9A=9B>;EB=EB?HEAHD@HD@FB?JFBOLHOMIOLIOLHROKQMJOLHQNKSPLURNPLHIFBB?;@<8B?:;85=:8=:7641632)('"""&&&(('())"##!""!"##$$$%%""""""####$#"""###!!!#$#$$$#$$###""""""$$$#$$### !!  ! %%% ! 83-:4."3/)B;4>81+&" %%$&&%'''$##!! ''&---00/./.**)..-/-,*('/0/232011**)-+)20-0.,0-+,)')'%&%#/.,4201/-752=:71/-.-*530;96@>;GDAIEBKGDLHDPKHQLIQMITOKVRNWSPVRNUPLRNJSNJWRNZUQ\XT_ZVa]Xa]Z_\X\XU]ZV_[W`\X_[X^[W_\Y^[X[WTTPLSOKZVS]ZX]ZX]ZW]ZW[XT]XU`[Yb^\a]Z[VS\WTYURRNJPKGSNJUPLWQMZUP\WRZUPXSNVQLVQMYTPXSO\WR^YU\XSYUPYTOXRNZUQ\WR\VRXSNWRMSQNq\z{|||||}~~~~ާݦܦڦ֢~ў|͜|ɚ{Ɨzwsrqrssssromkj~gzbw_u]t[sZrYrXqWqVpVoVnUmUnUnUnUmUlTjSgPdNeOeOdOdObM_K^K~\J|ZIxXGtUFpRDnQClPCjODjPEkQFkQFkQFkQGjPFiPFgOFdMD_JAWDE?AH=?FACK@AJ=?GA?EVGC\HB_KDbMFcMGbLFbMFbMGbMGbMG`KE`KD^KD]IC\HBZGAXD>VC=UCD:;@9:?9:@9:@89>9:@3("#  !#' & !!#% (!+#' & +$+$6.)6-(!0($*#!0($8.'<1)@5,C7/F:0H;2K=4M@6PA7QB8SD9UE;VF;XG<[I>_L@cOCgRElUGpXIu\LdQ}aNv\ްʬvzpbc[QVPHTOIZVPZUPTPLNJFMJGHEBDB>B@==:71/-//..///00-.-000011122./////-.-++++++,--++++,,      $ ,(71$?8)D<-G?0I>4I?5C:1QF;PE9JA7PF4>6.I@5QGF@;D>:KFBNIDNIDNIDPJETOJUPKSNIPIDOIDPJESLHSMHSMHWPLTNITNIUNIWPK^WQaYS`XR`XQ_WQ`XR`XQd[Td[U`WQ^VPUMHWOIZRM\TO\UOZSMUMHOIC\UOzqqrcsugo`pbseyiquqyiqaq`sbvdzh|kotrorvyyyxurq}ludl\eVy_Pw]NsZMqXJmTFmSEqWHsXHx[Iw[JkQBeL>]E9[D9ZD9UA7S@6R?6Q?6O=4P=4N;2O<3O=3M<3J91K:2L;4N>8M>8F82A3.A4/=2,3(#0% 2&"6+%7+'5,(7)$5  !!#%''((((''%$ $ " !           jL:Ԗsϐox\dK~Q4J4+      I4&U=-Q;,N9,K8+H7+G6,G7-G7.G8/H90H:0I:1J;2K=3L?4N@5OB7QD8VG<5,%#/3 6$8'8(8( 9*":+#;-%=/'?1)A3+C5-E7/G80H90I:1K;1M<3Q>5TB9A=8;9486175075196263.41-31,! #!! %%"7864656877::366255355243233244022022022-..+...///1//0//0/010/0/-.----,-,-.-./.././/.-.-/0//0/./../.-.--.-00/00/./.000/0////./.,--+,,/0/232111,-,-.,-.--/./10-/.,...00-0/,..+-.243TRM{n|}{{MJGMKHNKHPMINKGKHEHFCKHFMJGMJGOMJUROXURXURXURURPPMJLIFLIFJFBKHDHFCFC@HEBSPMYVS[XVUROJFCC@=@=;A>JGCJGDMJFNKGMJFKHDKHDNJGMJFIEBEB>IFBNJGUROWTQUROTQNTQNROKLIEA>;<96>;9A>A>:>;7;84962:63<9642/42075353053052/)(%"!#" %#!     !!!"#""#""#""##"##$$$#$$"##!!!   $%$%%$''&%$$%%%--,000---))(..-.-,)'&.-,00/./.)(',+)64153031.,)'+)''&$/.,5411/-32/9641/-/-+641:86@=:FB?HDAMIFNJFRMJTPLVROWSPVSOVRNWRNWSNWRNTOJVRM\XS^ZV_[W`\X`]Y`\Y`]Y`\YZWTWSPWTQ[XU_\Y`\Y_\X]ZV[WS[WTZWUZWT[WT\YV\YVYURYUR]YV[XUUPMQLIPKFNIDQLGVQLWSNTOJVQL[VR]YU^YU\XTZVQZUQXSN[UQ]XT^YT^ZU]XTXSN^XT`[V[VQXSNUPLNLIhzzzz{{{|}~~~ަ|ݥ|ܥ~ڤ~ؤ~֢~ўz͛yʚzƘy•wuqpooqqqqpnlj~h{dx`u]s[qYpXoWoVnUnUoUoUnUlTkSjSkTkTjSiRhQgPfPdObNaM`L]J~\J|[IzYIwWGsUEpRDmPCkOCjODjPEkQFkQGlRGlRGkRHjQGiQGfOFcMD]H@SA9E3-0#027ABI>?F;?G?AI@BJ=?F?@I=?GJBE[GA^JC`KEbLEaLEbMFcMGcNHbMGaLF`LE^KD]JC\ICZGAYE?XE>WD=UCXD>XD=XC[F@\GA]IB`KEcNGfQJhSLkUOmVQnWPnWPnWPmVOlVNkUNkTMjTLjSLjSLjRLjRLkRLkSMlTNmUOmUNmWPmVOmVPnWPpYSqZSq[Sq[Sq[RlWO_NIZJF^MH^NJgTNr\Sq\Rp[RmXO[LFYID\KE`OGaPG`OGZJBJ>:124138>@F<=D;4M?5OA7QC8TD:UE;VF;XG<[I>^K?aNAfQDjUGnXIr[Kw_N~dRt^طԼ~nogZ]WNZVNZVOZVP\XTYURSOLPMIOMJMKHHFCGEBA><10-000././00-../00011233/00///---,-,++*,-,)**,,,      $!-(60#?8)D=-H@0J@5J@6C:1QF;PE:LC8QG=G?5=6.H>4QG4@@6?>5A?7DB9B@8A?7DB;IFAKGBMHDLHCJE@HC>GA6Q=5N;3M:3N;3N;3N;2M91L:2K:3K;4H93D71D72C619.)0%".# + )('0%  "$%&&&&&$$# !                S<-̑oۚwgsW`GvL8d>.[9,W7,T6,R6,P6-P6-O7.O7.P9/V=3;)"        P9)S<,O:,L8+I6+G6+F6,G7-G8.G9/H90H:1H:1I;2J<3L>4M@5OB7RE:PC8&014"6%7'7(8)!9+#:,$<.&>0(A3+C5-E7.F8/H90I:1K;2L<3O>4VB8NB;<:5=;6=;7;95973:8453/2/*0.*! !! %%"242354354698345123133243455455011/10022-//,..-..///././/.010/0/-.-+-,+,,,-,,-,,-,..-./.121120-/.,-,,-,,-,---./....///./........//....../0/010..--.,+,++-,,--,..,.--//,..+.-*,,+--??;je\rz}}OLJQNLQOMMJFKHDKGCJFBOKHTPNTQOPMKQNLTQNUQOVTQTROQNKQNJPLIPLHNJGLJGLIGGDBFCAKIFROMOMJLIFLIEHDAEA>FB>D@;@<7@<8B?;IEBIFBKHDD@;7C@=C@=A?<64175285320..,),*''%#"!    %%$))(+**,,+++*++*,,+--,,--,,,,-,,--,--+++''%""!  ! ! " !%")%!($ *%!(#,($(%!##"##"''&%%%&&%//.221...*+*////.-*('0.-320/0/)(' *)&752863641/-+.+)*(&//,54120.10-20-.-*0/,530863<96>;8>:7D@=HDANJFQMITPMTOLRMJQLIQMIRMIWRMYTP[VQ^ZU_ZV_[V_[W_[X`\Yb^Z_[WYUQTPLSOKXTPYVSZWSXURXUQ[XT[XTWUQSQMVSPWTQXURXUQWSPWSPTPMNJFKFAMGBQLFWRMVQMUPKTPKVQMYUP[WSZVR[WS]YU\XTZUQ\WS\XSYTP_ZV_ZVWRN[VQ^ZU[WR[VRWTQm^Sٞrxyyyyyyzߦ{ߦ|ަ}ݤ|ۣ{٢{آ|֡|ա|ҟ|͛yʚxǘx•wutponnoooonlj|gzdxau^r\pYmVlUkSlSkSkRkRmTlSkSjRhQhRiRiRgQfQePePdObN`M^K}[I{ZHzYHwXGuVGrTEoRDmPCjNBjODjPEjPFkQGlRHlSHlSHkRHjRHhQGeOEaKBYE=N<5>-'*!57@H@@GVHF]IB_JD`KDaKDaLEcMGcMGbMFaLE`LE^JD]IC]IC[HAYF?YE?XE>WD=VCZF?\HA]IB_JCaLEdOIgQKiTMlVPnWRoXRoXQoXQnWPmVOlVOkUNkUMkTMkTMjSLkRLkSLlTMlUNmUNlUNlUNkTMlUOmVOoXQpYRpZRpYQoYQlWO_MH[JF\KG\LHfSLq[Rq\Sp[RoZP`OHYIDVHCTGBSFAVHA\KCOA<124+,.<=C?@G=>D<=C<=C:@FHHNdVPgWN`QKaRLhWOkYQ`RL]PJcTLlZOiVK^MB\J?4)#!$"#(!' )#+$.'"3+'"2)%2*%",-';1)>4,A6.C90E:1G;2I<2K>4M@5OA7QB8SD9UF;VG7)E=-IA1J@5KA7C;2QF:NC8LB8RH>H@6?7/I?5QF;I@7KC:/-+1210105544549:9887444332554221333565000//.34301+46*9:.78,45)23'23(11'32)54+66,99/;:0<<1<;0::/88-77,77,77+77,>>4@@6@?5B@7DB9BA8A?6B@8FC=HD>IE?HD>FA;B=8B<7B=7E?:HB=KFAID?KFANIDJE@ID?NHCRLGRLFOICLE@JC=MF@RKEQKFRKFUNHTMHSLFQJDTMGXQJ]UN\TM[SL`WQaXQf\Ve\V`WR[RL`WQaXRZRLVNIvjcį´y{joscreiYhY~bTdUiYp`sbjZhXgUiViVgVs[MmVI{bSfWfX}eWhZk\rb|kptsvvspnxgral[dT~cSv^Pw_Pv]Nw\LsXHkQBjP@lRBlRChPBeM@`J>]H=ZF;WC9T@7R>6O<4M:3P=5O<4M:3J81H6/D3-B1+C3-E70B4.>1+:-(5*&3)%+"$""&  !#$$$##"!                    |_ݜyƊky]iOX@mG4_<-X8,U7,R6,Q6-O6-N6-M5,L5,O7.Q9/)  ,U=,R;,O9,K8+H6+F6+F6,G7.G9/H90H:0H:1H:1I;2J=3L>4N@5PC7TG;H:1. 4 14"6%6'7( 8*"9+$;-&=0(@2*B4,D7.F8/G90I:1J;2L<3N>4R@6YG=JE@EB>@>:;9597375163031-0-)-,'%# $# /1/354132132/01122133254476344.//,..-0/-/.-..-..-/.-..-.-./.-..-.-+-,*,++,+*,++,+--,/0/110010-.-,,,+,++,+,,,,,+,-,---,,+,-,././00000./.--,-.-././1//0/./.+-,+-,+,,*,+)++)**(**(++453XUOysgwMKHHECJGDLIFNKHPMIRNKTQOTQOTPNOMJKHFJGDKHENKHTPMVSPWTQUQNSOLOLINKGLIFDA??;9>:8A>;EB?FC?IEBKHDKHEOKHNJGIFBGC@KHEOKHHD@C@<@=9>:7EB>FC?EA=HDAQNJTPLQMJIEBFC@LIFMJHKHEKHDJGCPMJURNQNKROKTPMSPMPMIIEBMIEPMHLHDFB?HEAOLHTPMVTPVSPROLKGDNIFLHDPLHRNJOLHB?<=:6=:6;8452.41-:62@<9B>:B?;GDA?=;.-,###"""!!!       ++*,+*,+*,+**)(*((+**-,,...///111010.0/,+*#! ###&&%(('.+(*'$&#!"" $!" !$ &#$!'$ ,(#,'!.)#+& 5/),'"  ""!!! '''''&''%/.-//.---++*//..-,)(&/-+20/.-,&%$ &%#53053053020-1.+/-+32075332/31/20-/-*1/-31.641=:7?;8=:6A<8D@?G=>F@AJ>@H=?G>@G<>FIBE\IB^JC_KD`KDaLEbMFbMFbMFaLE`KD^JD]JC]JC\IB[G@ZF@ZF@YF?XD=WD=XE>YF?[G@\HA[GA[G@\HA]JB_KC`LDbMFePIhRKjTMlVOnXRoXRpXRpXQoWPnWPmVOlUNlUMkTMkTMkSLkSLlSLlTMlUNlUNkTMkTMjSLjSMlUNnWPoWPoYQoXPnXOkVM^MG\KF[KFZJFbPJpZQq[Rp[QoZQfRJ\KEXJEQFBPD@SE@[KCSD>434()+569CDJBCHABGAAG@AF??E@AGCFMYRSdUNZNIaRLfUOkYQaRM]PKcTLlYNhUJ^LBRA7"#$&'!+$,%3,'& 1($3*%!,%#6-':0(>3+A6.C8/E:1F;2H<2I=3K?4M@6OA7QB7SD9TE:VG;XH.IA2H>5JA7B:1NC9LA7JA6RH=I@7@8/K@6SG>4A@6BA7A?6@>5?=4?=4@?6B@8C@8D@9EA:EA:B>7@;5B<6D>9GAKD?MFAOHCPIDPIDRKETMGTMGVNHYQJWNGSJDbYRtjdlc]g^Yg^Yd[UcZUh_ZznfԼ̼Ƹn_~lxhm`k]fU~aRtZLw^OfViX}eUyaQ{aPx^My_M|aOu\KaK?_J>oWIlTHiSGkUIlUIlUIsZNj[sd~nqvzywtyin`m^}eX|cU{aR~cScRz_NrXGoUErVFsWFqVEiQBdM@`J>\H6U@7R>5P<4N;3I70C2,?/*>/*=/);.(9,'9-(6,'1'",#$     !""!!                    `H؛vȌlz]jP\DsL7d@.[:+U7+R6+Q6+O6,N6,M6-L6-K5,N7-:(      >, W?.R<-N9,J7,G6+F6,F7-G8.G9/H:0H:1I;1I;2J<2K=3L?5NA6QD8UG;A*#65 24#6%6'7(!9+#:,%<.'?1)A4,C6-E8/G90H:1J;2K<3M>4P?5WD9TG@EC?EC?C@<:8464031-1/,0.*-+'*($&% )'!*'"&$%"%$!./.244021/10-.-.0/.00.00032133.0/+--,.-,..,..,..,..,..,.-,.-,--,--,-,*++*++*,++,+,-,././0/./.-.-,-,+,+++++,+,-,,-,,-,+,++-,-.-..../../.,-,,-,-/-/0/-/.+,,(*)(*))+*)+*)**(**'))'))-/.FEAgbZqtrvSPMPMJPMJQNKRPMPMJKHELHFPMKVSPSPMLIFIEBHD@KHDOLIQNLROMQNKROLROLSOLLHDHEAFC@EA>EB>B@=@=:B?;IFBNKHSPMUROSPMPMJOLINJGMIEMIEKGCEAJGBEB=DA=KHENKHKIFGDAEA>HEBOLIOLHIFBB>:D@;>;8C@9GB>RNISOKQMHPLHSNJSOKUPLSNJPKGPKGRMIRMINIELHCPKFRNJRNILHCNJDUQLXTPYVRSPLJFBJGBHEAJF@NJEVSO\YU[XTZWR^\Xa_[_\X\YVXUQVRMUPKUQLVSNWSO[WRYUOZVQ[WRYURVROSOKQMHSMHUPKSOJRMHXSN[WRYUQVQMRMHQLGPKFSNIZUPb^Yid_ȓntޢuޣvޤwݣvܡvۡvڢw١v١wءwנx՞wӜvќvМwϜx̚wɘvƖvÕvuspnlmlkljjj~j{hyewct_p\mXkVhSfQeOdOdNeOeNeMfOgPfOdNeOfOgPfPeOdNcNbNaM`L~^K|]Jz[IwXGtUErTDqSDpSEnQDlPDjOCiNChOCiOEjPEkRGlSHmSImTIlSIkRHhQGfOEbLC[G>R?8D3,5% $&*?@GBDL<=D=?G@AJ?@H>?F=>F==DUFD^JB_JC`KD`KDaLEaMFaMFaLE_KD^JD^JC^JC]IC\HB[G@[G@[GAZF?YF?ZF?[G@\HA]IB]IC]IB^JC_KD`LEbMFdOHfPIiSKkUNmVOoXRpYSpYSpXRoXQnXQnVOmVNmUNlTMlTMkTLlTMlTMlUNlUNkTMjRKiQJiRKiRKkTMmVOmVNmWNnXOmWNkUM]LFYJE[KG\LG^MHmXPqZQoYPoZQjUMZJEVIDQFBQFAQE@XICVF@;66&)-()+9:?>?F>>D>>D??D??D?@EBCIIIP[QO[NIhXQlZSlZScTN_RKeTLlXMgTH^LA>1* #!!$!% *#/'#(! 0'#4,'#*$!5,&9/'<2*?4,B7.D90F:1G;2I<3J=3K?5M@6NA6PB7RC8TE:UF;WH=3?=4>=3><3=;1=;2=;2><3><2=;2<91>:3@<5?;4B=7B<6C=7A<6C=8D?:C>9C=8FAJD>NGBNHBKE?JD?NGBPIDPICMFAPICVOIWPJYQJQIBULFc^_QMOSOQTPRicbӻǸŵԺʰ̳yranvel_jYfTrXJjREqXIrZKrZKpYJnVFnVEkSBiQ@lSBhO@bK>[F9^H5S=4P;3M:2J81I6/H5.D3,@1+>/*<.(9,'7+%4(#1&!,")&"                    2$iˑn|^kQ\EwN9gB0];+W7*S5*P5*N5*L4*K3*I3)H2)J4*D/&          N8)V>/Q<.M9,J7,G6,F6,F7.G9/H:0H:1I;2I;2J<2J=3L>4M@5OB7RE9SB7> :43 5#5%6'7)"9+$;.&=0(@3+B5-D7.F90H:1I;2K<2M=4O?5SA7ZH>KD@C@:A>:=:653/1/+/-*.,(+*%(&"#"&#(% &$,*%32.775244.00-/.,.--..-//,/.-//.10-/.+-,+.-,..-//.00.00-/.,--+--,--*++*++****++*+*+,++,+..-..--.-,--,--,-,+,++,,,--,,,,,,+,+,,,..-..---,,--+,++,+-.-+,+)*)())'(('))(**(*)()))++(**'*))++565VSM|ui~sgththXURUROROLSPMURPVTRROLNKHOLISPMMJFIEAJFBLIFQNKPMJLIFMIFKGDIFCIFCMJGQNJROLPNKJGDEC?DB?B?;A>;DA>HEBGC@EA>HD@PMJURNOLHIEAHD@SOKZWSROLNJGQNJTPMTPMVSPXURUQNQMIMIDOJFQMJSOLVTQXURROKOLIOKHNJFLHDLIDHEBEC?IFBDA>-,+#$$$%% !"  !!!###$%%%&%$%% """%&&###"##()))**###"""$%%&&&$%%&&&'''"## &&&$$$%&&&&&##"$$#$$#%$#'%$&%$&$#+*)(('&'&+,,,--*++)**''')*),,,,,,,-,010000,,-*++*++())...+,,())+,,,-,)**'(),--)**((((((--,-..#$$""!(('**(++****,,,***())%&&'((*+*++++,,,*(,)%%$"/+'($ #   "$!%"'$+'"+'"1,'1,&0+%1,&0*%($ +&"60*/*%&" !! $%$'''!! %%$,,+./.--,))(-.----(('+*)-+*('& .,).,)/-*/,)/-*/-*32/764542430420-,).-*/-+31.852=95?;7D?;HD@SOKVRNUPLRNIRMIUPLVRNRNIOJEOIEOJEQLGPLHPKFTPKTPKPLGJFAIE?OKFSPLWTPURNNKFKHCMIDPMHOLGUQM\XU[XSWTOWTP\ZV^[XZWSWSOTPLQLHRMHUQMWSOYTO[WR\WRZVQTPLQMISNIVQLXSMWRLVQLXSMWRMSNIRMHTOJSNISOJUPKWRMYTOVTQjZ۞q۟r۠tۡtۢuڡu٠u؟uןuןu֟v՞vԜuћuϚuΙu̙uʘuȖuŔt“tssqnigklkj}h|g|h{gxdvcuaq]mZjWhTdOcNaNaMaLbMbLaKcMdNcMbLbLcMdNdNdNbMaMaL`L~^K}]Kz\JyZIvXGtVFqSDoRCnRDmQDlPDjOCiNChNBhNCiPEkQFlSHmTImTImTJlSIjRHgPFdNE_JAXE=M;4?.'0",.2ACK>?G=>E@AI@AI>?F<>E;=EHCG]JC^JC_JC_KCaLEaLE`LE`KD_KD_JC^JB_JC_JC^IC\HA\HA]IB[GAZF@ZF@\HA]IB^IC^JC^JC_KC`LDaMEcNFeOHgQJiSKkUNmWPoXRpYSqYSqYRpXQoWPnWOnWPnVPmUNlTMkSKlTLlTMlTMlUMkSLiRKiRKhSKhSKjTLlVNlVNkUMmWNmWNlVMbOH\LG[LG_NH^MHkVNpZPoYPpZQmXO]MGWIDSGBQEAPE@SF@VF@C;9*.2!#&+-1;AHLJO\PMgWQm\TjZScTNaRKhVLkVKeQFZH=) !"   !,%!*#  .&!3+&%("4+%8.';1)>3+A6-C8/E90G;2H<2I=3J>4L?5M@6NA6PB7QC8SD9TE:VG;XH=[J>^K?aNAdPCgSEjVHmXJp[Ls^Nw`PzcR~eTiWo[lYi^RVUMZWP\YTYWTYWTWUQUROOLIHEBHEAMIEIFAC?:>;70.+)****)/00-..*++,--.//////0/****+*)*)******---   %".* 92'@9,H@1H@1D;2H?6@90LB8KA7J@6QG:2>:2?;4?:4@;6?:5A<6?94A<6B=7D>9E?:IC>JD>JD>KD?JD?KE?JD>JC>NGBMFAIBjRDlTFjSEgPCaI>cLAgPE|aSn^wewe}kqnyisdscn_pbo`j[dT~bPoVHpWIqVHlRCcK>`I=bK>`I=ZE:WB8U?6U>5W?5X@6XA7S>5P<3M:1H5-G5-E4-A2+=/):-'9,&7+%6*$4)$2'#3($4+'4+(/'$)"#                        vV@˒n`nR^FyO:hB0^;+W7)R4)O3)M3)L3)J3)I3)H3)I3*L6,-       9)Y@0U>/Q;.L9-I7,G6,F6-G8.H90H;1I<2J<2J=3K>3K>4L?5NA6PC7TF;O:091 04!6$6%6' 8*":,$1)A4,C6.E8/G:1I;2J<3L=3N>4P@6WE:YKCIFBEA=@=9@=8=:66401/+/-)-,'+)%(&"#"!# " &$ -,(452254/11-0/-/.-/.,..*--*,,+--*,,)++*,,+---/./11/10-/.+-,,.-.0/-..+,,*++*++*+*+,++,+--,-.-./.-.-+,,*++*+**+*+,,,,,,,,+,+,-,-.---,,-,,-,,-,+,+,,,*+*&('&('')('((&('&('%''(*))+*)++*,+,.-CB?nh^zn|pymVSPQNJQNJQNKNLIROMWURWURVSQSPMNKHNKGMJGKHEMIGOLIKGDJFBHEAJGDNKHSPMVSQUROROLMJGFC?JGCLIENKHKHEHFBDA>DA>GDAKHENKHQNKSPMROLROLROMNKILIFJGDIEAKHDOLIRNKNKGLHDNKGPMITRNSPLPMISOKWTPXUQQNKOLHPMITPMVSPTQNTQOYVSWSPUQMSOLTQNVSPWURUROLIFD@NKGQNJPMINLHJGDIGDDB@(('&''(**#$$"## !! !"! $%%#$$#$$$%%%&&$$$#$$#$$#$####()(+,,"#"%%%###%%%%&&%&&&&&"""'''%%%&''&&&#$#$$$$$$&&&)((+*))'&+)(+)()((,-,.//-..***'((+++--,)*)))(...///,,,+,,+,,)**-//***)))+,,*+++++)*++,,)*****))(,-,-..#$$%%$**),,+++*)*)+++***)**%&&&'')))*++*++,*(+)&+)&3/*2.*1-)3/+51,50+4/*61,72,72,:3-=70B;4F>6G@7G?7E>6D<4E>6E>6D=4A91>701,&%&%()(#""##")))-.-++*''&./.000++*..,0.-('& +)&-+(.,)0-+0-*.,)20-54142010-20..,*.,*.-*31/852A=9C?;D@;ID?QLGQMHRMITOKTOJSOJSOKTOKTOKTPKPKGNJFQMIUQLZVQXTOTPKRMHMJDOKFYUPXUQVSOVRNROKQNIURNVSOXUQZWSWTPURMSPKWTP\ZU\XSYUPWSOTPKTOJUPLXSOXTOYTOXTPXTOWRMUQLTOJUPKWSNVRMVQLXSNZVQWSMTOITOJQMHQLHVQMUPLVQMOOMy^ܞq؝q؞r؟s؟sמs֞t՝sԜsӝtӝuҜtϚt͘s̘sʗsǖsŔsÔsrqppnmkghh~i}h{gyfyfxeubsaq_n\kYiVfRbN~aN|`M|_L|^J}_J~`J~_J`KaLaL~_J~`JaKbLbLaLaL`K~_K}^J|]Jz\IxZHvXGtWFsVFpTDnRCmRClRDkQDjPCiNBhMBgMBhNCjQEkRGmTImUImTIlSHkRHhQGfOEbLC]I@TA9H6/;*$*239=>F<=C>?GABK>@H<=E<=E<UF?E;8'*.!#'$&(78>:;A9:?99>99>78=78=;=CBELULM\OLcUQcUP_RL`QJjWMiUIdPEP?6     #$ ("/&!3*%#& 2*%6-&:0)=3+@4,B7.D9/E:0G;2H<3J=4K>4L?5M@6NA6OB7QB8RD9TE:UF;WG0IA2I@3JA4=6+=6-=5,<5,B:0B:1=6-D<2J@5H?5JB861,//.22021/3318864313200/-0/-10.22065322///,55244-66*99-::-<:.98,66*43(10&32(64*97-:8.98-97,76*76*64)75*76*33'22&44(65)54)65*76+86,86,86+98-97,64*74+86,:7.:6.=82@;5@;5D>9@:4>93?:4B=7A;5?94B<6GAdNBoVI|bTl\xg{jwguetdrcyhucgYyaTw_PbNClUHqWIiQDlSEoUFjRDcL?]G;WA8V@6W@6W@5YA6YB7T@5P=3L:1F5-G5-E4,@1*>0)=/)?0*?0*>/*=/);.(=1,@50C95G>9F=8@8481-%                             wXdpS`G{Q0O;/L8-H7,G6-F7.G8/H:1I;2J<3K=4K>4L?4L?5M@6OB7QC8TF;=*"./26#6%6&7(!8*#:-%=0(@3+B5-E7/G90I;2J<2K=4M>5O@6RB7[I?SKEJFBFB>C?;@=8=:68511/*,*&-,(,+')'#$# # $!%#*($22/133/22/11,..,.-*-,*--+--+--)+*(**(**)++),,,//-..*,,)**(*)+-,-.-+--*++*+*)*)*,++,+++++++,,++,+*,+*+**+**+**,++,,,-,,-,-.--.-,,,+,++,++,++,+)**)*)'((&''&''&''$%%%'&$%%%&&&(()+++--,.-231PMF}shxm~tiUROTQMSOLQNKRNKSOMVTQXVSURPROMROLPMIMIFMJGOKHLIFLIFNKGROKVSPVTQXUSWUSOMKKHFPMJNKHMJGQOLROLOLILIFJGCJGDPMKSQNSQNSPMSPMRPMSPMTQORPMMJGMJGOLIRPMVTQYWTXVSTQNOLHKHDJGDLIFPLIROLRNKPMIOLHQNJQMISPLTQNRNKQMJTPMVRNZVSVSOROLQNKMJHOKIMJGLIEJGCNJGSPMRNKROLIFCGDA@>;&'&%&%'(("##!"" !!#$$ !!!"""#"$$$&''%&&$%%%%%%&&$%% &''$%%$$$###(((+,+!"!&&%%&&$%%$%%#$$%&&$$$%%%%%%&'&&'&$$#%%%(((**)+++....-,,*)+('('',--,..+,,)**()(,,+..-)))))(----.-+,,)*+**+))),--&'''''+,,*+++,,+,,*++***)**''&*++,--###%%$((')))((()*)***''''('$$$&'&'''(((*++,,,--,B=7E?8D>7D>7F@9F?8@:3=70>70>70?92A92C;4C<5E=5F>6E=5C;3A:2E=5H@8E=5?80<5./*%%%%(((###""!''&**)**)(('/0/232---..-1/.,*)"!)'%,*(+)'.,)0-+/,*1/,53121//.+10-.-*-,)/.+641752A=:FB>FB=LGCQLHOJFNIETOKXSOYUPYTPXTPWRNUPLSNIOJFOKFQLGSPKSOJRNJQMHNJEMHDSOKWSOXUQ[WSYVQURMURNWTPXUQYVRWTOWTOXUPXUQZWR^[U^ZUZVRVROXTPZUP^YT_[WYVQYUQYVQWTOXUPURMQLGRMHTPKVRMVRMYUPYUPRNIPLGQMHQLGUQLRNJVQM^XRh؜p՛p՜q՜qԜqӛqҚqЙpКqМrЛsΚr˗qɖqǕpŔqÓqpooonljjjg}f{ezeydwcubuctbsap^m[kXiXfTdQbO|`Mz^Ky]Jx\Hy\Hz]Iz]H{]I|^J|^J{]I{]I|^J}`K}`K}_K|_J|^J{]Jz\Iy[Hy[HwYGuXGtWFrUEpSDnRCmRDlRDkQDjQDiOChNBgNCgNChODjQFlSHmUImTIlSHlSHjQGgPEdND`KBYE=O<5A0*5% " "%:;B=>E;F<=E9;DD?B\JC]JB^JB_KC`KC_JC`KD`LEaLEaLDaMEaLF`JD^IB_JC_JD^IC]HB]IB^JC_JC_KD_KD_KC`LDaLEbNFcNFePHgQIiSKkTLmVOoXQpXQqZRrZRrYRqYQpXPoWOnVNnVOmUNmUMmUNmVNmUNkSLiRKiSKhRJgQJgQIiSKjUMkUMkULkVMlWNnXOgSKZJEXID]MG]MGfTKp[Qp[QoZQnYPiUMYJERFBMC?NC?KAH<8%'* !$!#237<4L?5M@6N@6OA7PB7QC8SD9UF:VG;XH`NAbPCeRDhTFlWIoZKr\Lt^Nw`PzbR~eThWmZq\ydSWQHKJCOLEURMWTOPMIEB>C@;A>;A>;1.,'''$%%,--,--()),--.//011//.,,++++()))))***--,   #!*'1,#82'A:-D=/H@1IA1>7*3.#3.#1,!/*1,!4/$3-"3-"2,!3-"92&0.'..)*)$((#(($''"''#))%))%*)&,,(--)/0+/1+45.6709:2>>6??7@?8??8=>6;<5<<7@A?9AA;CC>EE@FGCGHDFGCGHDIJFIJFFGCCD@BB>AA9?=8A=8?;6A<7@;5?:4;6152-51-63/;96DEBIKJFHGCEC>?>587EDB~ui=41{syu QHB}zltizmk^naobfZt\Qrgy^Ok\xaSnWKgZlRB`I<[F;\F:[E8\G9]H:YF7UB4WC5\G8ZF7M;.J8,H6*E3(F3(I6*T@2ZE7[E8WA5L9/K80M91T?6XC9lSFy_P|cT~gYl^xcVwbVn_scygr`v`RmYNhUK\KBmWLy]Oz_O}bQx^MmTEcL?\F;ZE:YC8T?5S=4WA6T?4M:1K90G6.C2+C1+B2+>/)@1*=/*=/)?/)?/)=.(8+&8*&7*%5)%7,'7.)5,(0(%)#                               2$^wXeJU>oG4a<,Y6)T4(P3(N3)L4*L5+K5+J5,J6-K7-N90A/(    +4$J5(^C2^C3XA2S=0N:.J8-H7-F6-G7/H90I:1J<3K=4K>4L?5L?5M@6NA7PB8SD:O@61235!8%8'7( 8)"9+$<.'>1)A4,D6.F90H:2J<3K=4M>5N?6QA7UD:\KBLHDJGCFC?C@<@=9<:69731/++)$,*&+*&('"%# " %#&#)'#21.133.00/11-//*,+),++--,..+--)++)**)**(**'))(***,,*,,)++())')()+*+-,+-,*+*)*)))))*)*+**+*+,+*+**+**+**++*,+*,++,,,-,+,++,++,+,-++,+*+*)*)*,+)**)*)'('&''%'&%&&$%%"$$!##"###%%'))*,,,..+--984zqg|qznUQNSOKQNKNKGRNKUROQOLOMKQNLTPMTPNQNKOLIROLUROMJGGDAMIFUROXVTXVTYVTXVTROLKHEMJGQNKPMKRPMQOLKHFJGDMJGPMKTRPVTRVTRURPROMROMRPMUROROKJGCJGCNKHPMKNKIROMXURYVSVSPROLNKGNKHQNKTQNVSPTQNNKGMJGOLIROLSOLVSOXTPTQMMIFVRNTQMLHDLHEIFBJGCNJGQNJPMIQMJTQNGEB>=;210*)(#""#$$$%$&'&###"""!!!#$$!""""# !!#$##$$&''&''%&&&''&''$%% %&&#$$"#" !!&''())$$$&&&#####$"##&&&'(("""%%$&&%(('%%$&&%(((+,+---,,,++*(&%*'&)('-..*++)***++)*)++*..-*+*+++--,+++*++)**))))*)+,,())%&&))**+*,,,+,,)*****)**###'((*++"""$$#$$$%%%%&%((()**%%%&&&$%$()(&&&$$$())+-,,,,E?8F?8F?8F@9E>7B<4C=5D=5@92?81@:3A:2B;3A:3D<4F>6H@8F>6G?6IA8JB:D=5=6.93,-(# &&&*+*)*)$$#&&%(('((''('/0/232.....-20/,*)#!+)&*(&'%#,*(0.+.+)0.+6524301/,10-.-*-+(-,)641641=:7EA>HD@OJFQMHQLHPKFRMHTOKWSOZUR[WS[VRYTPWRMUQLRNIOJEQMHUQMUQMQMIQMHQMHOKFTPLZWR\YU]ZU\YTZVR[WS\YU[XS[XT\YT_\X]ZU[XS^ZVb_[_\XVSPTPLXSOZUR^[W[XSYVQXUOURMTRMRPLRNIUPKXSOYUPTPKPLGPLGOKEMHCMIDNIDRMHVRMUSPo]ԙnәnӚoҚoњpљoЙoΗn͖n͘p͙p̘qʗpǔoŒnÒnnnlkllkjhf}e{dybxbwbt`s_q_p_o]n\lZiXhWfUdRbP|`Mz^Lw\Jv[IuYGuYFuYFuYFvYFwZGw[HwZGwZGx\Hy]Iy]Iy]Iy\Ix[HxZGwZGwYGwZHvYGuYGsWFrVFoTDmRClQClRDkQDjQDiPDhNCgNCgNCgNChPDjRFlSHmTHmTIlSIkRHhPFfOEbLC]H@VB;J81<+%/!*,0<=D:;A>?GBDL>@H;=D;9*'(,.1<=C:;@;;A9:?78=56;78=:4,@6-B7.D80E:1F;2H<2I<3I=3J>4K?5L?5M@6NA6OB7PC8RD9SE:UF;XH^M@aOBcQCfSEiUGlWHoZKr\Lt^Nw`PzbR}eThVmYr]nZdYMPOHQOHROJOLGLIDJGCHDAA>;A>;EB?20.())%%%,---..*+++,,-..011110//.,--))))))***,,,   !"!(('++)/.+20-52.52.42-41,51,:5/<81?:2@:2>90;6.=7/;6-72)94*:4)<5)=5(80#F=1WQGWWSKLJBCABCBDEDFGEEGFGJHHJHHJIIKJJLJJMKKONLPOJNMILKLNMNPPMPPPSSQVURWWRWVSWVRUTPTSOSRNQPKMLJMMJNNGKKHLLJNNHKKEIHEIHJMLLNMHKJEHHEHHEHGEGFEGEDFEDFEDGFFHHFIHFIHEIHFIHGHGGGFEECCB?996+,*))&..+775BDBHLJDFEEHG5=>wmfζݾ|fWe\XxƷrkiG;2ynuhgZg[m_tfugocy`UnVLzdYqYKv_QoZMpXJzcVcK<_I0I9,O=0E5*D3(J8+F3(?-#A/%N:.P<0L8.L8.N9/M80L80T?6UA7ZE:mUGt[MqZMwaTp\Pr]R|fY|eWiZwaSmYLoZNq\PoZPu_UeWfV|bRnVHbM@`J?[GaJ=ZD9ZC7YB7Q<2N:1P=3M;2K90M:1L:1E5.E6.D5.C4-B3,A1+?0*<-(;-(7*%4($0%!-"+!*!.&#.'%("                            P:+~]kNZBqJ6d>.Z7*U4)Q3)O3*N4*M5+L6,K6-J6-J6-J7.N903% 0"C/"P9*Z?/\A0aE3^D3ZB3V?1Q5M?6M@6N@7OA8QB9TE5N?6P@7RB8YF<9686264020,.,(+)%+)%)($&$  $"&$ )'#0/-244.11.00.00+-,)++*,,*,,*++())')((*)(**'))'))'**(+*(**(**'))()))+**++*+*)*)()()*)*+****++*+-,*,+*+**+**+*)*)*++,-,+,+*+**+*,,++,,)**()(()(())())')(&''%'&$&%#%%!#"! !!"$$%''')))*+*,,+-+a[Rzpe|rgURNPLGHD?FB=HD@KGDJGDIFCNKHURPROLMJFKGDHDAGDAFC@FB?HDANJGMJGJGDKHEOLJNKHMJGNLISPNUSQXVTVTQSQNSQMOMJHFDJGEOLJSQOTQOTROVSPURPVSPTQNNKGJFBIEAJGCIEAGC?JFCQNKUSPQOLKHEKHDPMJTQNVTQWTRSPLNKGMJGLIFPLISPMSPMQNKNJGMIFKHEFA>KGCLHDNJFOLHQNJTQMTPMROL221!"" #$$"##%%%"##!""   #$$"##"##$%%"##  ! $%%#$$'((&''&'''(('''$%$ ! """"##"#"$%%()( ###%&&#$$$%%$%%%&&'((###''&'&&(''('&(''''&))),-,+++***&&%&%$(((.//,-.*++*++)**))),,,+++,,,,,+)))&''&'')))****++())$%%'''(((('''((%&&)**()) !!%&&()*"""##"""!"#"$$$'''())$$$%%%''')**$$$ ()(*++++*E>8E>7F@9G@9F?8C<5C=5A;3>81?81@92>81?81@91E=5G?7JB:G@7H@7IA8H@8C<4<5.71+,'"!"""""'((,--...''&&&%'(''('&&&./.222-..--,1/..,+'%"+*'+)''&$,+)1/,-*(.,)5415311/-10-/-+-+),*(530530;74D@F;B[IC^JB_KC`KDaLDbMEcNFdNFdNFeOGeOHcNGbMFbMFbMEaLDaKD`KD_JC_JBaLDaMEbMEbMEbLEdNFePHgQIhRJjTLlUMnVOpXQqYRrZRsZSt[SsZRsZRqYQpXQpXQoWPoWOoWOnVNnVNlUMjTLiSKgQJgQIgQIiSKjULjTLjTKkVMlWNlWMjUL]LEYICYJDXJD^MFmXNnYPnYPmXOlWNeSKUGAOC?LA=J@;J@;M?9.&$(*,<=B:56;57<8:@LIMiYT`SOcUNiXNmYNjVJfRFTC9       ")""#".'#3*#7.':1)=3+?5-A6.C8/E91F:1G;2H<2I<3I=3J>4K?5L?6M@6NA7OA7PB8QC8RD9TF:VG;XI\L?_N@aPBdRDgTEjUGlWHoYJr[Lt]Nw_PzbR}eThVlYr]s]pbUVUMWTNXUPSPMNKGIFBD@=EB>GDA20-)))''&//./01.//-../0024323200/---))))**)*)+++"""   "!(%".*%50*94-;5.>80A;3D>6GA9HB:LE@??AACEEDGFCFFCGFCFFDGGDGGDGGAEEAFFDHHEIIFHHCFFADCADCACCBEEAED=@@;>>=?@=??=@?;>=9;;:=<;==;=<<><<=<:<<9<;:;;:<<:==;=<;==;><>A@?AA?AA;=<..,,,*686:;9;=<:@@ulֻбp>0($"#ƷYSQA0"hP:p^viobk_k^vg|mykocu\QjSHr\PnVHfRFcOCgOAlUIcL<]H;XE8S@4VC6Q@2M=0O>0N=/H8+D4(F6+I7+H6+I6*B0%;*!<+"E2(G4*G4+F3*Q;1S=2N:0P<2R>4Q>4_I=v\LsZLs\Ot_Rv`Tt^Rt^Qj[l]o_m]waTp[Pr]Qi\jZzaQq[KjTGgRFiTGpVGjQB]F:[D8T>4P:1Q<3T?5UA6VB7XC8R?5J90G70G70H80H7/F6.I70I80H81D5/=0+9,(7+'7+(7,):0-:0-8/,-&#                          aF4xY`FyQ;gB0\9*V5)R4)P3*N4+M5+L5,K6-J6-I6-I6-I6-K7/', C1#T=,[A0^C2^D2^C2_D3_E4[C3W@2S=0N:/J8.H6-F6-F6.G80I:2J<3K=4L>5M>6M?6N@7OA7PA8QB9TD0)@3,C6.E80H;2J<3L>5M?6O@7QA8TC9\I@RJENJGNJGNJGGC@<96:8485152.1.*-+'+*&)(#%$  #"%#'%!.-*122/11.00.00-..+,+*++(*))*)')(()()***,++-,)++'((&(('))(**)**(**())(*)()('(''(')))*+***)**)+,++,+)**)*))*)()()*)*++)**()(()(*+**++)*)'('%'&&'&()(()('((%''$&%$&%"$# !!! "$$$&&%''&(('))')(RMEwlauj`WTQTQMLHCID?IE@JGCNJFNKGMIFOLHROKQNKOLHJGBHEAHEBFB?GD@PLHLHDC?;C>;GD@KHEOLJPMKNLJMKIRPNTQOSOMSPMROMNLILJGPMJTQOURPSPMUSQXVSUSPXUSYVSVSPPMINJGMIEMIELIEMKHURPROLMJFJGDNKHPMJXUS\ZYZXUPMIMIEOKHOKHJFCHD@GD@HDAFB>IEAID@MIEPMHPLGNJFOKHROKNKHGDA..-&''"##!""%&%$%%"##!!! """ #$#%&&$%%#$$""" "#"!"""###$$)**&'''''())&''#$#!!!"##"## $%%&''""""#"$%%"##$%%&((#$$&'' $##''&%%$%$#(&%('&''&''&******(((((()))*++.//.00,--*++())'''(((++*--,,,,***%&&%&&&''%&&&''%&&"##%%%'''&%%%%%$$$())((("""&''''(!! ""!""!$%%&&&"#"$$$%&&''("""'((*++.-,F?8F?7G@9F@8F@9E>7D=5A:2@92B;3C<4?80<6.>70D=5F?7H@8E=6F>6H@8H@8D=5=6/71+)% ""!"""&''+,,//.('&%%$''&***)))///455011//.//.00/)(& *)&.,)*(&-,)420.,)-,)21/5410/,1/,.-*,*(+*'420430;84E@=JFBTPKUQMVRMTPKPLHVRMYUQYUQTPLRMHPKGLHDOKFQMIPLGPLGQNIRNISPLURNTQMXTO]ZUc`\a^Z\YU\YU\YUXUQZVR\YU_]Y^\XXVQURMVSNXUPYVRVSNSPKOKENICOJDOJFOKGSOJYVPYWRUSOUSNSPKRNHUQLROJNKFMJDLHCPLFVRLVRMQMGQMHQOKiXЖlΕk͖l͖m˕l˕lʕlɔmȓlǓlƔmœmÒlkjiiigffedd|bzbxau^r]p[nZlXiVhVhVfTeScRbR}`O|_O{_Oy]Mv[KuZJsYIqWFoUEnUEnVEnUDnUDnTCnTBnTBnUCoUDpVEqWEqWEqWEqWEqWEpUDpUDqVErWErWFrWFrWFqVFpUEnTEmRCkQCjQDiPChPChOCgNCgNCgNCgNCgODiPEjQElRGlSHlTIkSHiRGfOEcMC]I@WD-'1""$&::@:;A>?GACK>@H;=E:KADcTOp^Vn\So\QnYNiTIdPDF7/      & %!+$ 2)"6-%9/(<2*>4,?5-A7.C8/E:1F:1F;1G;2H<2I=3J>4K?5L?6M@6NA7NA7OB8PC8QD9SE9TF:VH;XI=[K>]M?_OAbQBeRDgTEjUGlWHoYJq[Lt]Mv_OybQ}eSgVkXq\v_mZ[YRVTPYVSTQNOLHLIFMJFIFC1/-())(''00/011011////00455343110-.-)))***())*+*"#"   $!*&!1+%5/(71)92*>7/A:2B;3D=4G@6IA7KC8NE:UK@]SFbXJdYLbWKg[Ng\OeZMaXLJKHCFE>>AAADDBEDCFFAED?BC>AB?BB=@@;>>=@@>@@=@?>A@>A@=@?=@@?BA?BA=@?;>>=@@:==9;<8;;9;;9;;9<;8::9;;:<<8:97:98:99;;;==:<;8;::<;:=<:;;:<;:<;8:99;:8;:7::899-.-''%454/43FEBԶp,$LGEöĶUMJgP;dKp`whugnan`yj|mxjobt[OfNCkUJjRD^J>ZG;[E8bMB^G:VB5VC7R@4UD6QA4RB4P@1G8+A2'@0&D4)J8,>/%;,#D2'E2&9(@.$F3)I6,H6,L9/L8.Q<1U@4S?4R>3Q>3_H;]G;bMAu^PgWwaSxaRm]xfyfl\{cTs]Pw`Sq`q_iX{cRs]Mp[Ls\NnVH`J>XB7ZD8U@5T?5ZC9[E:VB7S@5TA5Q?4M;2J80I81K:1L;2J91K:2L:3M;4L;4G71E60B3.A3/=0,8,(3($/$!'                       A/#sVwW[BqK6a=-W6)R3(O3)M3)L4*L4+K5,J5,I5-H5,G4,I5-O9/O:*ZB0]D2^E3_E4`F6`F6_E5^E4\D4X@2T>1P;/L8.H6-F5-F5.F6/G81I:2J<4L=5L>6M>6M>6N?6N@7O@8RB:Q@8<*#;(!;)"<*";*";*":*"9*#:,%1*A4-D7/F91I;3K=4M>5N?7P@8RA9VD;^LDNIELHDKGCLHEGC@>;7=:6<957401.*-,'+*&'&"#" #!&$ ,+(010.00032/22.//-.-./.*++')(())())())*+*+,,)++'))&((&((()))***++'))())'('%&&&'&()(*+***)++*)*))*)()((('()''('()()*)'((')(()))*))*)(*)'((%'&$%%&'''('')('((%'&$&&$%%!"!! !###%%%'''))'))#&%E@:k_Ti]RNKHKHDHD@JFAJFBIEAJFCOLHOLIJGCGC@HD@GDAJFCLIFKIEKHCNJFSOKOLGJFAMIEOKGLIFKHFKHFGDBFCAMJHPMKOLIOLIQNLQOMLIFOKHVSPWURXUSYVTZWUWURXVSXURRPMROLRNKPLHNKFLIEPMJTROROLPLIMIFOKHPLIOLJQPPTRQQNJPLHPMIQNJRNKQNJMIEJFBKGCOKGOJGQMJSPMPMIJFBHEAMIFOLHLIE..-''' !! !!&'&$&&"##!""   !! !!&''%''"##%%%%%%###"#"#$$"## !!###())#$$&&&)))%&& !!&''%&&&''&''$%%###!""$%%!"""##&((#$$$%%"""%%$%%%####""(&%('%'&%$##''')*)'''())*+*,--/00012-//*++())%&&&&&*+*-,+******&''%&&#$$""""##$%%!""%%%'''%&%&&&%&&''(&''##$''(&'' !!!"#"%%%$$$%%%&&&$$$$$$&&&&''"""()()**0.,HA:F@8C=6C=6GA9B<5@92A:2B;3A:2@91?80B;3E>6G?7F>6IA9F?7H@8IB9IB9D=5?8050*'#$##$%%&&&)**-.-&&&$$#%%$))))*)...565010//.,-,****(% &$"-+(+)'-+)7520.+.-*21.6421/-0/,.,*-,)+)'21.42/<95A=9D@S@8G6/:*$*//39:@:;A@AJ?AI<=F;s`Wr^Tp\QmYMhSHbMB8,%       "& !*$!0'!4+$7.':1)<3*>4,@6.B7/D80E:1F:1G;2H<2I=3I=4J>4K?5L@6M@6MA7NA7OB7PC8QC8RD9SE:UG:WH]M?`O@bPBeRDgSEiUFkVHnXIqZKs]Mv_OybQ|dSgUkXp[w`n]`YRWUSSQNOLINJGNKGIFC20-'('(''00/011133/0/.//132333/0/---(((*++)**+,,$$$   !'#,'!1+%5/(:3,=6.@91C<3G?6IA8MD:OF;QGZOC_TG`UI^SGaUH_TG_TF[RHCDB>A@;>=:<<9<<6995876884662443556989<;:=<@BA@CB>A@<@?;>=8;;7;;9<<8::;==;>=:<;9;;9;::<<;>=>@?=@?;>=:=<;>>9<<8::7996996988:97998::9;;9::8;:7997988:98995777998<<8::9:99;9688698699588577-/.YTOȱ®̪~m h`][TRkS?~dMk]~nyipcpbxiwitfi\kUI_I>ePD_I=XE9TA5M;/ZG>VA6WB5TA4P>2Q@3O?2Kv^OybRpYKw_PnXJoXJgX~fWybSr\Nr\Mu_Pq[LnXIiREhPBgOAdL?bJ?_G5N<4N;4M:3L:3K:3I82F60@1,=.):,'6)%2&",!$                    F4'aƑmsUX@iF3Z9*S4(O2(L2)K2)J3*J4+I4+H4,G4+G4+G4,I6.V?2\D2]E4^E5_F6_F6_F7_F8^E6[C4WA2S=0P;/L8.I6-G5-F5-F6.G70H81I:3J<4L=5L=6M>6M>6M>6M>6O?7SC;J92;*#;*#;*";)":*"9*"9*"9+$;-&=0)?2+B5.E70G:2J<4L=5N>6O?7P@8RA9ZF>[LFLIEIEAGC>IEAFC?D@=<:686230,/,(,+&*($&% "!" &$ +*&./.,/..11-00.0///.01/-.-(*)'))(*)()))*))+*(**'))&((%''&((())*++)**(*)'('%&%%&%'''**)++*++*))(()()*)))('('()('((()(')'(*)*+*+,++,+*+*)**)*)'(''(('((&'''('&((%''&''#$# !! !!!##$&&&(((*)$'&-,)TI?gYMHEBFC@FC?IEAJGCGDAHDAMJGMKHLIFJGDKHDKIEJGDJGEIFCEA=EA=LHDOKGNJFLHELIEPMJROLROMOLILIFOLJSPNSQNTROTRPVSRTPNOKHROLRPMROLUROXVSVSQQNKNLIUROYWTYWSWTPTPKSOKTQNYVSURORPMQNKSPLQNJKHEJGDOLIOLHPLHOLHPMJPMJOLHQNKSOLSPMQMJKHEHEBKHEJGCIEAC?;@<8B?;B?<''''(( !!&''#$% !!  !! !!!"!'))(**#$$%%%%%$###"""#$#$$$"##"""%&&!"#$%%&''$$$ !! '))'((*++)++#$$"## ! !""%&&#$$"##"#"$$$%%$###"""&&%%%$"!!! %%$(((&'&%%%$%%*++.00/11-./))))**%&&%&&))()('%%%&&&$%%%&&%&&"##  "##&'''''$%%$%%$%%'((&&&"##&&&&&&"#"!!!!!!%%%"#"###$%$$$$$$$&&&&''"##*+*+,,0.,E?8D=6@92A:3B<5>81>70?81@81@91B:2C;3D<5D=5F>6H@7KC;F>6F>6IA9IB9C<4=703-'$! %$#'''&'&)))---''&%%$**),-,+,+..-555011./.---()(+)& $" ,*'*)&-+)8642/--,)21/75221.21.0.,.-++)'10-31.=96@<7@<7HD?KGCLHDNKGWTPYUQVQMUQLZUP\WS[VRYUQSOKQNJURMTQLXUQ[XUXVSWURUSOQNJOLHNKFQNIQMHUQL\YT\YUXUQXTPWTPURMTQLURMXUPZWSXUPUQLSNITOJUQKUQLUQLTPKSPKSQLRPLVTP^\W`]Y^[VZWQ[WQ^[U`\W]ZTXUPYVQ[XSYVPVSN`XPg˓iǑhǑiƑiŐiĐiÐiihhiihhfeddcc}b{ay`w^u]r[oYnYkXhTfSdRcRaP|`N{_Ny^Mx]Mw\LuZKrXIoUFnTEmTElSDjRCiQChQBgPAfO@fO?fO?fO@gP@gQ@gQ@gP@gP@hQAiQAhPAgO@gO@gO@gO?gO?hO@jPAkRBlSCmTDmTEmTElSDlRDkRDjQDiPChPChODgNCgNCgNCfNCgPDhPEiPEkRGlTHlTIjRGgPEdNC`KA\H?WD<>F?AJ<>F;=E:9D:5D822)%""&++0+*.*(*%$' !$ "%#%)+-1*+/D;9r`Wr^Tp[PlXMgSG]I>+   &!)# .& 2)#6,&9/(;1)=2*?5,A6.C8/D90E:0F;1G;2H<2I=3I=3J>4K?5L@6L@6M@6NA7NA7OB8PC8QD8RE9SF:UG;WH]M?_N@bPAdQCgSDiTFkVGmWHoYJr\Lu^Nw`P{cR~gUjWoZv_s^i]TNMKMJGKHDJGCJGD530'('('&0///00244/00-../00121..-,--'''*++***+,,%%%   $!)% /)#4.'93+=7/@80E=4KB8LD:QGSI=SI=WMA\QD^SFZPD\QE\QEZOBZQFACA>AA9<<6994761432543552440331445888<;:=<;>=:>=8<;9<<8;:6885776776888;;8;;8;;9;;8;:9<;;=<>?=?A?=??:=<9;;7::7:97::8;::;;;<;9:98::9;;9;:8::7:96885764653555777::8::8999::577587688577.22GDAֽټȦ˧ƥťp`& rjg~VNJnVA}dO|dX|mugnan`teqcm`xbVeQF\G<_J?YC8[F9S@4H6,P?6UA7YB4R>1K9-F6,E7+:.$.$/%0%0%6)!=/&;.%5(!2&1%0#2#9)!>/'G7.I9/R?3S?2S>1O;0S>2J7-K9.YD7^I;[H:^J<]H:UA4S?2lSEfQC\H;w^OmVHfPCw^P~eUfWu^Ov_P{dUr\Mt\Ms[LqYJoVGgOB_I=XB8P<3N;2P=3O;2N:1O;2T@6T?6R>5P<4R=5Q=5L92J81J92G70E5.@0+;-(7)%0$!-")%$##"               G4'^FfؠxjnRyT>cB0U6)N2'L1'J1(I2)H2*H3*G3+F3+F3+F3+F4,J7.ZC4]E5]E5]E6]D6\C5[C5ZB4XA3U?1R7RA:?.':)!:)!9) 9)!8)!8)!8*#:,%<.(>0*@3,C5.E81H:3K<4M=6N>7P?7Q@8TB:\H@XMHOKGKFBKGBNJFHD@B?<:8475042-0-(/,(*($&% $#!%#)(%./.-//+./+../22011110-.-)++'**(**)**)**(**(*)'))&((%''%''&('()))**()(&'&%&%%%%%&%**)++*++*))()*)*+*))(&'&&'&&'&'('(*)*+*+-,-..,--*+*()(())()('((&('%&&%&&&('&'''((%&&#$$!"#!##$&%&(((*)'((,+)f\Rth\IFCB@=FC@IFBLHEPMJPMJLIFJFCKHEKHEMJFNKGOKHSPMROLJFBD@;LGCTQMVRNTPMQNJQOKWUQVTQQNLOMKPNLQOMROMRPNSQOSPNVSPUROURNROLSOLWTQYWTXURWTQVTQ[XU[XVXUSYWTYVRXURWTQUSPQNLLIGHECHDAJFBMIENJFIFBFC@JGCHEBFB?GC?FC?NKGQNKSPNPMKJFCEA=IFBNJGLIEHD@D@;D@7C=6@:3=70<6/=70?91D=5D=5B;3A:2B;3D=5E=6G?6IB9JC;E>6F?6IA9F>6@91;5.1,'" #""&&%$$$'('+,,&'&$$#*+*/0/...010566011,-,,-,**)-+'#!/,)+)',+(7520.+,+(32054142032//-+.,*+*(20-20-<95EAJFBJFAIEAKFBQLHRNIRMHRNIUQLWSOYUQZVRWSOTQLURNSPLNKGOLIUQNXUQVSORNINJEKGBNKEUQL\XT`]Y`\XZWRVSOURNVSNURNYVQ]YT`\W\XTYUPUPKPKFPLGSNITOJTPKURLUQLWSM\YT_\W_[Va]X_\V_[V_[V]YTYWRQOJSOJXTOURMMMHhT̓iƏgďgÏgŽgghggffgffdccba|`{_y^w^u]s[pYnWlViUgSdQbP~aO|_Nz^Nw\Kv[JuZJsYIqXHoVGmUFkSCjQBhPBgOAeN@eN@dN@cM?cM?bL?bL>bM>bN>cN>cM>bM>bM?dN?dN?dM?cL>bK=bK=bK=bK=cK=dL>fN@gOAhPAjQBkRCkRCkRCjQCjRDjQDhPChPCgOCfNCgOCfNCgODgPDgODiQEkSGlSHjRGgPEdNCaKA]I?YF=SA9J92<,&. ++/67=9:A>@H>?H;=E:4K?5L?5L@6M@6M@6NA7OB7OB8PC8QD9RE9SF:UG;VH;XJ_M?aOAcPBfRDhTEjUGlWHnYJp[Ks\Mv`OycR}fTiWnZu^v`r`SPMJNLIMJGMJG863&'&%%%...///233/00-.-./////--,,,,&'&*++*++*++%%%    $!($.)#3.'92+=6.?80D<3H@6JB8LC9OF;QG?A@;>=9;;7::7998;;:<<<=<<=<:<;9;:9;:9;:6985886997:97985766888;;8:98:98:9033!()#$$++^ZWǪ~nàshTH/'#yro|tSICnVCx`LoZPqfj_i]i[n`l^|gZvaUlWJ]H3P?4I8-D3)E3)H5*R<0Q<1F5+M;0XD7[G9[G9ZE7[E8ZD6jQBiRCfPA}cRy_OhQCpXJx`QhWzbRv_PxaRs]MzbRu]NnXIkUGgPCdM@fOA_J>[F;\F:XC8UA6VB7[F:XC8WC9ZD:[E:XB9R=5N;3K92E5/E4.B2,=/)8*%3&"/$ -",".#.# -"-# +!&$          B1%dKbɓnؠxҜvefLrO:^>.P4(J0&I0'H1(G1)G2)F2*F2*F3+E2+D2+E2+N90ZC5ZC5ZB4YA3W?2V>1U=1T=0Q;.N9-L7,J6+H4+E3+D3,D4-D5.E5/G71H82I93J:4J:4J:3J93J93J93K:4O>7K:46'7'6'6'6' 6(!7(!8*#:,&=/)?1+A3-C5/F81H:3K<5M=6N>7O>7Q?8TA:[HBSNJQMIOJFPLHOLHIEAB?;:7353/31-20+1.*,*%&$ #"!%"'&#./--00+..*...11/11/0/--,)+*)++(++)++)**())&((&((&'(%''%''&''&('())'((%'&%&%%&&%&%(('))(**)))(***,,,***'(('((')()*)*++*+**,+-..-.-*+*'(''('''''(('('%'&$%%$&&&''())'((%&&#%%#$$#%$&(()++(**$%%tkavFB?B>;HDAMIFPLIXURWURQNLLIFOLIPNKPMJQMJSPMXVTWVTPNKFB?HD@PMJUROYVSYVSVSPQMJPMKQOMPMKNLJPNLTROSQNQOLMJGKHEKHEPMIUQNVSPYVT]ZX\YW[YV\YW\ZXYVTUROVSPVTQSPNQNKQNLOLJLIFJFCHEAKHDOLHROKNJFKGCIEAFB>D@;GC>IEANKHNKHPMJROLROJQMIROLTROSPMNLHIEAD@=?=:%&&$$$ !""$%%!""""""""!!!&''"##)**())"##$%%"""  !!!"#" !!!$%$#$$"#####"######$$"#"'((()))**'(( !!"""$%%$%%!"" ###%%$$%$%%$!!!!! "!!!!!!!!!"!''')**)*+%&'##$%&&!!" !!%%%&'&&&&''&%&&$%%#$$ !!!""#$%%&&'"##$$%#$%%&&$%%"#"###!!! %$$##" "#"$$$##""""$$$###!!! ***+,,630HA9D>7>71<5.>70?91A:2D<4F?6JB9LD;JB:H@8F>6D<5F?7HA9F?7H@8IB:E>6@91;5.1,&""!$$#%%%)))+++'''%%$(('+,+./.232555/00-.--.-)*)-+'2/,.+)+)'42//,**(&21.64242021..-*/-+-,)10-20.;85GD?LHDLHDJGBKFBMIDPKFNICPJEQMHRNIRNIVROYVRXUQWTOYVRXUQNKFJFALHDUQMZWRZWSWTPVSNZWR_\W^\X^[W]ZVWTPROIQMHTQLURM[WS`]Ya]Y]YUZVQYUPRNIOKFSNIXSNYVQ\XS_[V^ZU_\W`\X`]Xb_Z]YU[WRYVQWTOTQLQMHSOIWSOVTOPQL}_ɑhŒeefeeeeeddddcba~_|_{_y]w\t[sZqYoXlVjThSfRdQaO}`Oz^Mw[Jv[JtYIsXIqWHoVGmUFlTEiRChQCgPCeOBcM@aL>aK>`K>`K>_K=_J=_J=_K=_K=_K=_K=_J<_K=_K=`K=`J=_J<^H;]H;]G:\F9]F9^H:`JeM?fOAgOAhOBhPBiQCiQChPChPCgPCgNCgOCfNCfNCgODgODhPDjRGjRGjRGgPEdMCaKA]I?ZG>VC;O>6D4-7'"$33988>;=D>@H<=E;PC>^MEeSJgTKgVLgVLeTJaPG[LDOD>F>:B:6B94>4.:79`^`pklldb_VSTKHF=;SJGod`_Z[SPPjXPq\RnYNjUJdODPA9#     '! $*".& 1)"4,%7.':0)<2*>3+?4,A6-B7.D80E90F:1G;2G<2H=3I=3J>4J>5K?5L?6L@6M@6M@7NA7OB8OB8PC8QD9RE9SF:UG:VH;XI^L?`N@bOBdQCgSEiUFjVGlXIoZJr\Lu`OxbR|eThVlYs]w`hXOMJONKPMK:86''&$$#/.-/0/122/0/-.-./../.--,,-,'((()))**)**%&&    %")& 1,&71*:3,=6.>7/C;2G?6F?5H?6OE:QG;PF;QI=SJ?UL@XNB[QEXNBSI=WNB=><9<<7::034/11.00/11/11.01.00/112553664664764764665775875873651432445876986983774777:::==>@??A@>?>>@?<>=8;;7::9;;:==<>>=?>=>=;=;;=<:<<9;:687465365466688588267277.//,,+KEBkd_ξҵosb{hygpn_lXK=0(unkQHClUDw_Mp[Orfk_j]zcV}gZydWvbUu_RpZLaK=WB7XB5[F7K9-;,"E4)TC:I6+P=0C3)8+"6*!+!( ,"0&4'2&0%4( 5)!2'/$1%."4'C3*J:0G8.@1(C4*E5*J7+L8,L8,B1(C3)J:.SB4dO?^J:TA3F6*M;/gP@jSBmUDqXHhPAmVF~dSp]v_OkVHxaQjX~fUlWIjUGmWIoYKr[KoXJiSEfPCbL?\G;YE9XC8XC8XB7ZC8XC8VA6V?5R=3O;2L91C3-?0+=/);.(;-'>/)=/)<-(<.);-(9+'4'$2&"-# * ($"    pU>~]ÓmΚtӝvҝvluY[DkI6Y;,M2'G/&F.&E/'E0(E1)E1)E2*E2+D1*C1*F3,R<2WA3U?2T>0R;/P:-O8,M7+K6*I4)G3(E2)D1(C1)B0*B1+C3-D4.E50F71H82I93I:4I:4I:3I93I92I82J93O>8>0)2#3%3%3%4&5'!6("8*$:-'=/*@2,B4-D6/F81H:3J;4L<5M<5M;5O<5T?8UHCNKGNIEOKFQMIMJFGD@@=997341-0.)0.)/-(+)$&$"!!$"%$ +,**--),,),,-00.01-//-.-*,+)++*,+)++(*)'(('(('))'))'))')))**(*)(*)'('%'&%&&%&&'('((()*)*+*)*)())+,++++)***,+*,+)+**+**+**,+,.--.-+,+()(&(''('(*))**())&'&$%%#$%&((')(%''$&&#%%#%%'((*,+)++"#wndKGDMIEOKGTPLSOLROLSPNUSPVTRUSQSQOQOMMKIIFDIFEOLKSQOMJHJGDKIGLIGNKIPNLTRPTQONLIKHFJHFOMKRPNSQOOMKIGDEA=EA=HDAHD@QNJSPMQNLQNLUROXURZXU\ZW\YW[XU\YVYVSUROSPMQNLMJGGCAGC@HDALHEOKHROKUROWUQWTQURNSPLQNJPMIPNJNKHKHEOMISQMSQMPMJPMJQOLMJHGDAC@<<:7"""$$$ !!!"" !! !!""""""#" $%%!""'))$%%!""%%% ! "##!!!!!!$%$$%%!""%%%###!"""##!""%&&&''$%%#$$ !""$$$%&&###!!! ! !!!   ###&''())#$$"##&''"##"""%%%%&&%%$%%%&&&%%%#$$  !!#$$%&& !!!"$%%$$$"#""""$##"!!!!!$$$###"""$##!!! +,++,,41.D>7D=6B<5@:3>81>81B;3D=5G@7H@7H@8G@8F?7E>6C<4B;4E>6F?7HA9IB:F?7>8171+,(#  ! ""!###$$$''&&'&$$$&&%((()*)./.443343////0/121)))+(%20-/-*+)'0.+-+(('$10-76364221.-,).,*.-+32/541974C@_I<^I<^I<^I=]I<]I<]I<\I<\H<\H;\I;[H;\H;\I<]I<\G;[G:ZF:ZF9YD8XC7XC6YD7ZF9\G:]G:_IdL?dL?fM@fOBgOBgOCgPChPDgOCgODfNCfNCfODgPDhPEjQFjRGiRGgPEdMCbKA^I@[H>XEF<=E;94         #( ,#/'!2*#5,%7.&:0(<1*>3+?4,A6-B7.D8/E90F:1G;2G<2H=3I=4J>4J>5K?5L?5L@6M@6M@6MA6NA7OB7OB8PC8QD8RD9SE9TF:UF:WG;YI<[J=]L?_M@aOAcQCeREgTFiVGkWHmXIp[Lt_OwbQzdSgUkXp\v_~gWXRMLKJ;97(('%%$0/.000012010....//.//--,+,,)**'((())())%&%     %"+'!2-'60)82*:4,<6.D<4IA7H@6H@6OE:QGUK@WMBZOD[QEUL@QG;YOB>>;9<<689/22-00-00.10-//,//,/.-//0332553665886995885675775782552543656886884764675999;;;===@?BED>@?;=<9;:7:97:::==:==<>==?>=?>;>=;=<:<<8:9798586254(./788WPL\RLWHAнsnl\~cR}eUn]r]O_L@;,#ga^]VRhSCt]Kr[Mtem`|fZw`SwaSnZMr]PkUHgQC_I:U@4VA4WB3A1%6)?/$O?6L:/P>0=/%5( >/%B4)B4)B3(B2';,"8*!A0&I7+F5):,#5( ,"%$,!3(!9,%0*=/)=/)@1+I81L:3J92I92E5/@1,:-(4($-# * )%$#!! "$"fO;vWgĕp͝vҠyΚtl}_gNuQ-&>.'@/)A1+B2,C3.E50F71G83H93I:4I:3I93H93H82H82K:4H821$0#0#0#1$2%4&!6(#8*%;-(=0*@2,B4.D60F82H93J:4K;5K;5L:4N;4SB;763/1.*-+'-+&,*%)'"$"!!$!%# ++*),,)+,(*++.--//,..,--+--)++)+*)+*()('(('))'*)),,),+)++)+*)+*)**())'))())&((&'''''()()*)()((((*+*+,,*,++,+)+*()(()))*))***+++,++,+)*)'(('('())()()*)'('$%% """##%&&$&&$%%"$$$%%&(')++*,,!"g`X}SOLQMJURNXURUROPMJMJGOMJWUSZXVVTRPNLIFCC@=A=;A>;DA?FDAEB@B?=?;9A=:EB?JGDOLHNJFOKHROMTQOURPPNLHECFC@GDAKHDNKHB>;@<9EB?GDAIFCNKISPMSPMUROWTQVROTPLQNKQOKPMJMJGMJFJFBFA=E@<9 !!&&& !! ### !!!""!  "$$!""'('#$$!""!""!!!$%%!"""""%&%$%% &&&"##!""#$$%&&%&%%&%#$$!""!!!"""$$$%&&  "##$%%'(($%%"##%&&!"""##%%&$%%$%$%%$$%$&''&'' !! """&''### "###$$"""  !  %%$$$$###&&%""" "#"-.-,--740D>7C=6A;4B;4B<5C=5C<4B;3D<4F?6H@8H@8F>6C<5@92<6/5/*1,'.*%.*%4/)%"  ! ##"%%$'('***(((&&%))(***)*)-.-333110---/0/121**),)&/-*.,*,+(1/-.,)'�/,764642531/-+-,*.-*420753974@=9EB>JGCKHDKGCKGBQLGTNIUPLWRNWSNUPLSOJTOJTOKRNJNJFTPLZVQZVQWSN\ZVa^Zb_\`]Y^[VYVRXUQXUQUQMXSO]YU^[VXVQROKQNIOLGKHBKGAMICPLGPLGPLFRMGRMHTPKXTOYVQYVQ[XSZXU\ZV^\X_\X\YU\XT\YUXVSURNSOKTQLURMRRNyeVƏgcbbcbbcbaa`_~^~^}^z\w[uZsXqXpWnWmVkTiSeQbMaN~aN{_My]Lv[JtYIsYIqXHoVGmUFkTEjSDhQCfOAdNAcNAbM@`L>_J=]I<\H<\H<[H<[H;[G;ZG;ZG;YG;YG:YG:YF:YF:YG:YG:YF:XE9WE9VD8UB6UA6TB6UB6VC7WD8XD8YE9\G;_I<`J=bK>cL@dMAeMAeNBgOCgOCgPDfOCfNCeNCgODhPEiQFiRFhQFfPEeNDcLC_J@\H>YF_NFdSJeTJeTKeTKbRI_OF[LCTE?F<7>637.+#346?@DGGKCBFDCGIHMJJOGFK>>AKMSk``q\QnYMhSHbNCfaZgd][XQ+%"      !   &*!-$0(!3*#5,%7.':0(<2*>3+@5,A6-B7.C7.D90E:1F;2G<2H<3I=3I>4J>4K>5K?5L?5L@6M@6M@6MA6NA7NA7OB7PB8QC8QC8RD9SE9UE:VG;XHSI?WMBWMBXOCUL@QH;8::466/11,..,..,/.,..+--+-,,../211333555675775775886886996995873645655763543557999;;9;:7999<;;=<9;:7:96996999;;8;:7::8::8:98:9687044044+11(./WPLpgrhp_Uunúٴyg~nu]OiPBaM?iTEaM@N<17) SLH}f^[aM>pZJmVIiZk\u_Rs\NoYKlWImWIcN@aK=aI:S=2S>2H5)3&7*>0$E6,H8.A2'8*!F4)K8-?1',#") 2&5( 7*!4( .#*/#0%,#.$;/&/%XC5lSBgP@bL=cO@`K>`K>]I<_K?fPCoXJqZLoXJkVIhSGcOCcNCfQDfREdOBbM@bL?\F:XC8S?5P;2K7.F2+C2*@0*B3,F60N=5UB9XD;UB:O<5L:3I70B3,=/)6*%0&"-#+!(''%#" E:4K=6 6* jOhkĕoǙsǘsǗqi}^lQZCjG5Y:,N2'G.%C,%B-&B-&B.'B.(B/)B/)B/)B.(D0*L6.K7+J6*H5)G3(E2'C0&A.%@-$>,#<+#;*";*#;+$<,&>.(?0*@1+B3-D5/E61F82G93G93G82G82F71F71H82K:48*%.!/#/#0#0#2$3&!6(#8+&;-(=/*?1,A3-D5/F71G82H93I93J93K82O=7QIESOLSOLPLHNIEMJFMIEJFBEA=<9553.52.1/*-+'+)$)'"%## %#+*)),+(**)++),,+..,..+--+--*,,)++)**)))()(())'))(***,+*-,)++)+*(*)())'))(*)'))&'''('()()))()('('()()*)*+*())&((&)('((())')(')(()(+++()(&('&''&''&'&()(&('%&&"#$ ""#$$$%%#%$!##"##$&&(***-,"&'\UO{ROLQMJVROUROPMJMIFNJGNKHOMJVSQRPMNLJLIFGDAC@=B>;D@>FC@GDAIFCGD@C@KHCJGDIEAMJEQNJPLHNJEOKFOLHOLHQNKROKROKROKWUQUTPRPMNLHNLHONJOMIJIEDB>HFAMKGRQMLJGIFCIFC;:8!!"%%% !!  !!$%$!"" ! "## %&&#$$""" !!!!!#$$&''$%%#$#"##!!! !!$%%!!!!!!&'')**)**'((%&%!"" #$$$$$!"" !!#$$"##"##"## !!"""#$$#$$######!""%&&%&&  $$$"""""#$$$ ##""""!!!$## "#"-.-.00:72B;5A;4B<5B<5A:3B<4>81<6/82,<6/82,71,-)%)&"# #  4.(&" "!!%$$(('*+*()(''&*+*,+**))--,010...+++///110**)+(&0.,/-++)'1/,0.+'&$.-*65253153110-0/,/.,21.652863B@^J>]J=\I<[HaK?aK?cLAeNBfNCfOCfOCfNCeNCfOChPEhQEhQEgPEfOEeOEdNDaLB]I?ZF9:A;3+?5,A6-B6.C7.D9/E:1F;2G;2H<3H=3I=4J>4J>4K>5K>5K?5L?5M@6M@6M@6NA6NA7OA7OB7PB7QC8RC8SD9TE9VF:WH;YI=\K>^M?`NAaPBcRDeSEgUFiWHlYIo[Kr]Mt^NxaQ|eThWlYs^r]^MB$)*'''0//011-..011-..121011-.---.011***)**())'((   '$/*%2,&1+$2-&50)5/(;4-C;3E=4H@6MD:QG=RI>TJ?TJ?UK@RI?TL@TK?RI=VL@?=9687244.10,--*,,)++*,,*,+)+**,,-//0113555774664765886986885984864655765653543557889;:7985775877::8::7:96986998::8::798688/34(+CA>~pgbZT\RM˯ym[QLƟq~l|llVKVA5Q?3WD7_J=B2)4( =50|v{q|rh`\ZG:jUEgRDu^N|eViTGlVGlUFiRCeOAcN?fP?aI9R<0O;0E3(;,":,"9,!:,"A4,9,#H5+<-$ *6*"4(!,"0& *"!"'* 8*"?1'7+":.$C4(I9,L;-G6*J9,G6*:-#;.$C4*O3L8/F4,E3,N<3XD;^J@dNCaK@\F=T@8R?7Q=5J81E5.?0*7+&4)%3)%1'$/%".$!,","$J?:uaW'N=.bƙsoklkgc{[kP\EqL9_>/S5*K0'F-&C-&B-'B.'B.(A-(@-'@,'@-'A.(G2,H4+E2'C1&B0%A/%?.$>,#<+#;*"9)"8(!8(!8(":*$;,&=.(>/)?0+A2-C4/D60E71E71F71E61E60D5/E50I82?0+/#/#/#/#0#0$2% 4'"6(#8*%9,'<.)>0+@1,B3-D4/E5/F50F50G4/L93TKGVRNQMIMIELHDLHDJFBFB>EA=B?:;8474063/31-/-(+)$(&"%#"#!"!((&(**')))++)++*--,..+--*,+*++*,,*,,*,,)++)++(**'))'*)*,,*++)+*)**(*)')('(('))')(()())()*)')'&''(('((')))()('((&((&('&((&('%'&'(')**(**&('&''%'&$&%&('%&&$&%#%%!##!"""$$#$$"#$"$#$&&')((**%((B?;ulOKHOLHTPNUROTQOVSPWURTRONKINKHNKIPMKPNKKIFGDAD@=D@=FC@IFCFC?HD@OKHTPNWUSWUSWURVTRTRPTRPUSRQOMNMKJIGFCAEA>B?GC?HD@HD?KFBIEBFC?IEANJFPMJPMJOLHKHEHFCGDAJGCIFBGD@PMIVTPVTQRPLQOLOMILJFLJFNLGPNIRPKUTPOMJIFCJHF976#$$$%% ! !""  !!"#"  "##""" !!""""###$$"#####"""!""!"" !!$%%$%%&'&#$$!"""#$!""#$$!!"###"#""##"""!!!!"""###$$#$$"##!!!#$$#$$ !!! ! """!!! !!####$$### !! !  !!!##"&%$"!!###*++*,,52/83.73.2/+1-)+'#1,'&$ (%!)&"93-:4-72,0+&4/*,(#+&"%!!5/)&" ! $$#(('()(''''(',-,..-++*---110...++*00/110,,++)&/-+20..,*42/1/,)'%.-*76364253120.0/,.-+10-541531@>;GD@JGDLHEKGCNJFMIDMHDQLGTOKXSO[VRZUQWSNXSNZVQ\XS]YU\XTZVSWTQSPLQMIVSN^[WZWRWTOWSNXUPXTNWSNWSOVTPURNURNSQLRPKPNIQMHRNIUQL[VR[WR[WR_[W^[W[XSXUOVSMUQLVSOWUQ\YV^[W]YTYUPWSMWSNZWS\YUYVRVSNTRMac`___^^^^^}]|\yZwYwYvYsWqVpVnTkSjSiRhSfRdQbO}`Nz\Jw[IvZHtZIsYIqXHnVFlTEkSDjSEiSEgQCePCdOAbM@`L@_K>]J=\I=[I=[H4M=2M=2N>3O?4P?4P?4R@5UB7WD9YE:[G<]I=^I>`J?bLAdNBeNCfOCfOCeNCeNCgPEgPEfPEfODeOCeODdODbMC_K@\H>ZG=XF=VD:NA4J>4J=4K=4K>4L?5M@6M@6M@6N@6NA7OA7OA7PB7PB8QC8SD9TE9UF:WG;YI<[J=]L?_N@`PBbQCdSDfTFhVGkXInZKp[Ls^NwaQ{dTgVkYr]q[iSE&'&*,,010.00243/00121011-..,--/00*++*++())())  $ *%/)#.("0+$50)60*:4-?80D=3HA7LD:PH=QI>QH=SI>RH>PG=SJ?UL@UK?XNA@=8243032/21-/.,.-*,,*,+)++)+**,+.//1323555775774765876995773663665766775663654767878:86985775886885885875775887::577'-/'*]UPıҿշвåaPG|snȺududk]hTHQ>3J9.A3(K:-5(9,#8.&ynixz}te\XM>4aM?cO@gPAlVG_K=cM>jRA`J;TA3S@2VB3T?1N:-K8-E4);,"/#/$0%:.&J9/8*" ( ( #$!/$,#,#:-#B3'M;.G6*?0%D4(H7+F6*D4)9+!B1%O;-WB3^I;bM?]H;fRCq[KaL?WC8_K@gRElVHcOBcPEr]Qu`RoZMjVIkVGcNA^J=\H3Q=2O;0O;0S=3]F[E9H>9F<8D:6A73J?:rhiUKJ:*k̟xĘsia_}\wXqTeKYApL8a?0V7*O2(I/'F.'D.'C.(C/(C/)B.(A.(@-'@-'B.)F2+B0&@.$>-#=,#<+#;+":*"8)!7)!6(!6'!6'!7("9*$;,'<.)=/*>0+?1,A3-B5/C50D60D50D50D50D50F61A2-1%/$0$0$0$0$1% 3&!5(#6)$7*%9+&:,'<.)>/*@1,B2-C3-D3-D1,I71QHDRNJQLHLGCHD?JFBNJEMIEGC?D@9;7396153.31-1.*+*%)'"'&!#"%#'$ !''%)++(**(**(*++...00,..(+*)***++*,,),,(**)+*)+*())'(((*)(**())(*))**())'(('(('))()(()(()('('%&&&'&'('()('''&''%'&%'&%'&%''&'''(''((&('$&%$%%$&%$&%%&&$%%$&%&('$&%!#"!##"$$!##"$$#%$%'&'))&()DA=zOLHKHDKGCPMITQOURPURPTRPROMROLUROVTQUSPROMQNJNKHNLHOMJNKIKHDKHDNJGOLIPNLNLJNKIRPNQOMPOMKIHEBA@=;?=;A>;B>;B?;HEAHEANKHNKHHEAGD?EB>DA=EB>EB>C?LIESPLUSPUSPTQMPNJNLHKHCJGCHEAB?;DA=PNJVTQUTPXVSXVRUSOSQMRQLUSOSQMPNKKJGEC@GEB=;943232131/,*( !!!!! !!! !!  ######"##!""!"""#"%&%&&&&''&&&'('&'&%&&%&%&''&'&%&&&''&''())())'('%&&%%%'((())*++*+++,,+,,+,,*++)*)*+++,,+,,+--,--+,,*,+*++)++*++*++())'(((*))**())())'(('(('((())())()()***++))))))***+,,-../00///./.----.-././//010010/0////-.-,,,++++++,,,)*))))))))))++*,-,./.-.-------*+*((('((&''())()*740/*%1,'.*%3.)50*;5.<5.:4-4/)72,3.(3.(0+%*%!5/)$  """&&&$%%%%%'('-.-///,,,-.-00/--,,,+00/210,+*/,( -,)31/0.,53031.,*(.-*54153143031/1/-.-*/-+31.31/@>:HDAFC?FC?HD@LGCLGCNIDSMIWRN[VR^ZV_[W]XT[VR\XS\XTYUQVQMRNJQMIQMHSOIRNH[VQ_\W]ZUWTOURLWRMXTOUQMSPKSQLURMURNSPKQMIQNIQNIRNJZVQ^ZV^ZV]YV^ZV\YT\XR^[U]ZU\XT^[W`]Z`]Ya]X_\W]ZU[WS\YU[XSURMROJbWNca^^]\~\~]}\|\|\{[xZvXtWsWrVoUnTmTkSiRgPfPfQdPbO}`M{_Mz^My^Nv\LsZIqXGoWGmUFkTEkTEiSEgQDePBdOAcNAaM@`L@^J>]J>\I=ZH3N=3N=3P?5SA7UC8WD9YE;[G=\H>_J?bLAdNBeNCfNCfODeNCfODfPEfODdOCcNBcOCcOCbMC`LA^J@]I@[H?ZG>UC;J92;+$%%'*9:@9:A9;B:SGEhRIiSIjTJlULlVMlULlULlVMlVMlVMlUMkTLjRJjSKjRJjRJiQJiRJjSKkTLkTLlTLlTLmUNnVNpXPqYQs[Rt\Su\Tv]Uw^Vx_Wx_Vx^Vx^Vx^Vv]Uu\TsZRpXPnVNmVNmVNmVNmWNmXOlVMjTLgRJeQIaNF^KC\JA\JB[JB[JB[KBZJAQC=I>9L@;NB=WIBbRIaQH`PGaPH`OG]MEYIBVF?RD=J>87.+&'+6679;>BCGEDGA@B?=@B@CGFJJJNHGKMNUj]ZmXLeQEcVMgd]eb[fc[ge[je[uk^$!       !%( +#.%0'!2)"4+$7-&9/';0)<2*>3+@5-A6.B7.C8/D90E:1F:1G;2H<3H<3I=3J=4J>4J>4K>4K>5L?5L?6M@6M@6M@6N@6NA6NA7OA7OB7PB8QC8RD9SE9UF:VG;XI^N@_OAaPBbQCdSEgUFjWHmYJo[Lr]Nv`QzbSfUjXq\t]v]K<51*.//11344010011010-.-+,,,--*+*+,,)**())   % ,'!1,%1,&50)93->80C<4F?6IA7KC9NF;NF;NF;QH=QG8/11.00.00-/.-.-,.-)++(**)++*,,./.021243455465243354476365244144355466466265476698798688688587365476476255&-/(,BA?~pgκdzǧsfvĻýľɼµm_q_~eW^L@TB6E5*9-#D4)@1&;.$-#ridsjeB5-XF8[I;WC6]H:\G9UA3ZD5L9,B1&C3&H6)N;,M:,F5*?/'4'+!'(8-%C70!"+"9,#:-#;.$H8+L:-C3'E4(8* 4&F4'VA2[F7aL=]I;ZF8^J_K>YF:UB6S@4R>2XB6`HWC:R?7N<5I93I93H82J:5QC=WIDXLFWLGWLGogqhK;5kQʞxØsj_tUnPiLbG~ZBtP;jG4`>.W7*Q2(L0'H.'F/(E/(D/)D0*C0*B/)A.(@-'@-'D0)B0'>-#;+"9*!9)!8)!7)!6(!6(!6("5("5(!5("6(#8*$:,'1+>1,>1,?2,@2-A3-A3-A2-A2-A3.B3.<.)1% 0$0% 1& 1& 1&!1&!2&!3'"5($7*%8+'9+'9+&:+'<-(>.)?/*@.)B0+I;6RJFTPLPLHLGCID?E@MIDNJFKGCHD@D@<>:6<9474031,1/*.,'*(#'&!$#$"'% !((%,.-(*+'))(**-00/22.00),+(**)***+,'**&(('(('))')((**)+*(*)')(')((*)()(')(&(('(('(''(''('&'&#$$$$$%&%''''''&'&%&&%&&%&&%&&%'&'('&''&''%&&#$$#%$$&&%''%&&$&%&('&('#%%"$$$&&#%%!###$$$%%&))(*+21/zURPROLROLUROVSQPNKNKHPMKTRPWTRWURVTQRNKOLHQNKROMQNLTROTQNQNKQNKRPMHECC?=GDAJGDOMJMKIIHFA><<96952;74C?;EB>FC>IFBFC>B?;C@DAHEAJHDLIEJGCFC>FC>KHDKHDOKGPMJOLIROLTROPMJOLIMJGNLHMJGLIEHEAB?:GD@OLIOMJNKHPNKTSOSRNQOKOMILJGJHDHFBFC@=;8/.-,,+,++.-,++*&''&'''''(((()('((%&&%&&"##"##%&&())+,,,.-+-,+,,*++())*++*++-.-...-..-...//+,,+,,+,,*++)))()(*+**+++,,+,,)*)())*+*+,,+,,+,,,-,-.--.--...//-..-./-./,..,--+,,*++*++()*'(('))())&''&''()(())())()))**()))**)**()('''())++++,,,,,,---.-.//011121000.//.//./../../.,-,,-,....//-.-+++******))))))(('(((****+*+++++*,,+,,+**)))())))*)*+++,,<72-(#50*61+72,:4-=7/>7/;5.93-<6/60+5/)3-'.)$%!4/)#  ##"'''!""###&'&./.121...,-,---))(**)00/210**))'% '&$0/--+)1/-420.,*10.5420/-0/-0/-.,*-,)-,)31.20.;96A>;?;8=:6@<8JEAMHDPKFUPLYTP\XUa]Yea^d`\`\X\YT]ZU]YU\XS[WRZWRXUPZVPZUP]XS]ZV]ZU^ZU\XS\XRYUQTPKROJURMYVR\YU[YUYVRXUQSQLOKGRMIZVR]ZV\XT_[X_\W\YTc`\ec_c`]c`\_]YZWS]YT]ZU\XT[XS]ZU\YTWTORQMvaRc_]]~\|Z|[|[zZyZyZwYuXsWrVpTnSlSkRjRiQfPdNdNcNaM}`M{_My]Kw\Ju[IsZIqXHpWGnVGmUFkTEjTFhRDfPCdOAbN@bN@`M?^K>]J=[I=ZI4O?5QA7SB8TB8UC9WE;YG<]I>`KAbLAcMCeNCfODeNDeNCfODeNDdNCbMAaMA`LA`LA`LA`LB`LB_KA]J@ZG?RA9E5.5& 2399;B89@:;B:;B:;B:;B79?;:>^LGiSIjTJkULlULmVMmVNmVNmVNlVMmVNlUMkTLkTLkSLkSLkSLjSKkTLlUMlTMmTMlTLnUNoWOqYQrZRs[Rt\Sv]Uv]Uw]Ux^Vx^Vy_Wy_Xx_Wv]Vt[TsZRpXQnVOmVNmVNmVNnWNnXOlVNjUMhTKfSJbPG^LC[IAZJAZJAZJB[JBZJAVG?K?:H>:K@^OF`PG_OF`OF^ME\KDXIAVF?TE>PB;B720032478:=BCGEDGBAD>=??>@ECFIHMGFJKLRd[\mWLePDeZRgd^fc[c`WecYoj`}zm^zd]QB  !    #&( +#-%/' 2("4*#6,%8.':0(;1)=2*?4,@5-B7.C8/D90E90F:1F;2G;2H<3H<3I=3J>4J>4K>4K>5K?5L?5L?6M@6M@6M@6N@6NA7NA7OA7OB8PB8QC8RD9SD9TE:UG;WH\L?]M@_NAaPCcRDeTFhVGkXJnZLq\Mu^Py`R}dTiWnZu^jVPD<&,.133/00000/00...+,+*++())+++)))'((   $ *% 1,%2-&5/(<5.?80F>5JB8LD:NF;QH>OFRI>PG=RI>VMAUL@WM@A=7-//-/.,..-..-..,..*++(**)+++-,,.-.00022022022/00/110321431430331332443652542555987:9788798366 )*044SMIc[Tul°ȵΰ|qc~m{ƴĶƾɹŶľ˿masZIgRDM<2K;/?0&6+!?2'B3(8+"*sjfA96M=/TC5P>2O;.P=0K:,M;-G6)?0$?/#G5(F4'D3&B1'<.&;-#4)(/%@2'0& #4)!>1'?1'3(4(0%,!7(M9+YB3YD5WC5M;.S@4K:/D4*Q?4[H;\H;_K>gRDjUG]J?dQEt^Or\MdPC`M@bNA]J=WE9UC7VC7bK>lSFsXKnTIdMCbKA^I@_J@`J@`I@[F1,>1+>1,>1,?1,>0+>/*>/*8*%0$0$1% 1&!1&!1'!2&!2&!3'!4'"5($7*%9+':,':,':+&:*%;*%=+&E51KA=PKGQMISOKRNJPLGOJFJFAID@NIEQMHPKGMIDGC?D?;<9485041-1/*.,'*(#&% $#"!%#'$ # %$!+-,*,,)+,)+,-00/11-//*,,(**(**)++(**&'''((')(&('()))++(**'((')(())'('&''&'&&'&%&%%&%'('%&%#$#####$#%&%&'&&'&&''&''&'&&'''(''('%&&&'&&''&''%&&%''&''&((&'(%''$&&%''$%%#%$$&&"$$#%$$%%&))*,,..-xURPVTRXURXUSWURVTQURPURPUSQSQOMJHMJGJGCLHDPLIPMJLHFKHEOLJPNLMKHJHECA>A>:B?;HEBMJHFCADA?B?;A>:?;8A=:HEAHFCHFBMJGMJFGC?C?;B?;A>9C?;IFBMJFOLIQOKPMIMJFLIENKGPMISPMOKHLHEQNKSPLURNURNSQMROLPMJNKGKHCHE@KHDLJGLJGPNJRPMONJQPLONIMLGGD@FD?CA=--,$%%$%%$%%%%%&''()('((()(*+**++((($%%$%%"##!""#$$'((*++,--+,,*,,+,,+,,,--.00011/11/00.//.//+,,+--,--,--+-,,.../0/00.00/11011/11/00/00-..+,,+,++,+*++*++*,,*++*++*++)**())'))()))**'((''('(('(('(('((())())((()**+++*+**+*******)*)*++,-,----.....,--+,,.//011-..,--,--++++,,---,-----,--,--,--,,,***'''&''%&%%%%&&&)))+++++*++*++**)))('((')))*+++++-..=72,'#<6/<6/<6/>81?81?81<5.;5.?81;5.71*5/(.(#&#3.(#   "  $$#)*)!!!!!!&&&00/232///-.-.//'('()(//.10//.-+)' $#!.-+)(&/.+5301.,10.54132032/31/.-+-+),*(20.31.:85?<9@<9A=8A=9LGCOKGRMIUQMYUR[WT[WT]YV^ZW\XTYVQ\XT`\Xa^Za^Z_\X\YTZVQ[WR[XS]ZV_\W[WRXUOYTOYUPYUQYUP[XT^\X_]Y_]Y^[W]ZV[XU[XTVSNUQMZVR[WS\XT\YU[XU_\Ya_[^[WWTPROJQMIVRNTQMOKGPLGSOJXUP\XTWWSnXa]\}[{ZyXzYyYwXvXuWsVrUpUnSlQjQjQhPgPfOdOcMaM~`L|_L{_My^Lw]Lv\Jt[Js[KqXIoWHnWGlUFkTFiSEgRCeOAbM?aL>`M?`M?^L?]K>[I=ZI=ZH5M>4L=3K<2K<2K;2L<3M>4N?5QA7RA7R@7SA8VD:XF<[H>^K@`LAbLBcMBdNCeODeNCeNCdMCbLB`L@_K?]J>^J?`LAaMBbMCbMCaMB]JAWE=N=6?.()"$(79?89?8:@:@eQJkTKkULkUKmVMnWNnWOnWOmVNmWNmVNmUMmUMlUMlTMkTMkSKlUMmVNmUNmUNmTLnVNoWPpXPrYQt[Su\Tv^Uw^Vw]Ux^Wy_Wy_Wy_Xx_Ww^Wu\TrZSqYRoWPnVOmVNnWOnWOmXOlWNkUMiULgTKdRI`NE\KBZJAYIAZIAZJBZJAZJARD=K?;MB=K@<>B@BGFJEDHKLRc\_lWLdODcZSfc\fc\caXcaWrmbѸʩװaUF"   !#&( *",$/& 0(!3)#4+$7-&9/';0)<2*>3+@5-A6.B7.C8/D90E:1F:1G;2G;2H<3H<3I=4J>4J>4K>4K?5K?5L?5L?6M@6M@6M@6N@6NA7NA7OA7OB7PB8PC8QC8RC8SE9UF:VH;WHPH=RJ>RI>OH=OG=RJ>TK?VL@@<6,/.-/.-..,..,.-+--*,,)+*)++)++*,,,...00.00.//-//-/0.00/11/21022133133143022022466366.23255#+,tjӹǵ˸λ˹ȵֹũuwto`nvy~öƹƕ~aI7[G:>0';-#8+"0&4*!;.%8,"5*!zqmPKIB3'J;.K<0H7,K9,J9+D4'@1%8* >/$D3':+ 3%9*!<-%>0&7* 7+!?2'.%"""%$%6'E3&D3'I7*F5)K:-I8,A2(J9.R?3R?3UB5\H<_K>\I<^J>jUGiTFaM@`N@dPC]J>QA6RB7YFiK6_B/Y<+T6'O2$M/#K.#I.$H-%G-%E-&D.'C.(B.(A.(@-'@,'@,'@,&>,$9*"7)!6( 4'4& 3' 4'!4(!4)"5)#5)#5*$5*$6*$6*$7+%8-'9.(;/);0*<0*<0*;/);/);.);-(7*$2&!.$/$0% 1& 1'!2'!2'"2'"3'"3'"4'"5(#6)$7*%8*%8(#;*%?0+E;7F>:MHDNJFNIEOKGQMIPLHNJEOJFOKGOKFOJFOJFKGBIEAEA:C@:C@=DA>HEAKHDIFAEB>EB>EB=D@;JGCLHDJGCOKHROLSPLROKSOLUQNTQMRNJOLHMJGKHEJFCPLITQNUROUROUSOSQMNKGJHDGEAHFBMJGNMIKIFLJFLJFJHDFD?HE@<;7&''%&&$$$$$$$%%$%$$%%$%%''')***++'(($%$#$##$##$$$%%()(+,,+,,*++*++*,,+,,+--/00/00.//.//.//-//*++())'((())()),---./-..,--,--,--,--,..-..,--+++*++*++)***++*++)**)**())&''%&&%&&'((())'''&''&&&&'&&'''(()**+++,,,,-,,-,-.-...-..,,,*+++,,-......//-..,-,+++,--.//.//-//+,,*++*+++,,+,,,--+,,*+++,,-.----***)*)''''''((())(*)()(())())((('***+++*+++,,+,,///<61.)$A:3?92>70>80?92A:3>70=6/>81<6/71*70)/)#&#1+&!  ##"**)""" &'%121443/0/...000()))))010332443.-+!'%#*)'('$.-*52/1.,1/-54132032/43110..-+*(&/-+20.974?=9B?;IFBKGDUPLXTPXTPXTQVSOSNJRMIRMIUPLSOKSOJUQMXUQ[XU_\Xa^Z^[VXTPURMUQLVSNYVQVRMTPKXSN\YT^[V^[Wa^Z_]Y[YT\XS]ZU[XS\XT_[X\YUYVR_[Xb^[\XUXTQXVRZVR[XTZWRVRMURMTPKRNIQMHOLFPLFRNHXTO^[V[ZWu[_\}Z{ZxXvVwWvWsVrUpTnSnSlRjPhNgNgOeNdNdMcMaL}`L|_Kz^Lx]Kw\Kv\Kt[IsZIqYHoWGnWGmWHkUFjTEhSEgRCdOAbM@aM@`L?_L?^L>\K>[I=ZI=YI=XH4L=3K<3L<3L=3M>4N>5QA7RB8RA8SA8UC9WE;YG=]J@_LAaLBcMBdNCeODeNCeNCdLBaK@`K@]I>[H=\I>_K@aMBbMCcNDbND_KAYF=UC;J928)#.049:@89@:;B;128MDCiTLkULkUKlVLmWNmWNnWOnWOnWOmUMmUMmVNmVNmUNmUNlTMmVNmVNmVNnWOnVNnVNpWOpXPrZRt\Tu]Tv^Vw^Vw^Vx^Wy^Wy_Xy_Wy_Xx_Xv]Vs[TrZSpXPoXPnWOnWOnXOmWOlVNkVMiULgTKeSJbQG^MD[JBYH@YIA[JA[JB[JBXG?NA@><>@?AEDGFFIMNTf\\lWLcOC_WOc`Yhf_ge\ge[wrgͯƂsb   "#%( )",#.%/& 1("3*#6,%8.':/(;1)=2*?4,@5-A6.C7/D8/D90E:1F:1G;2H;2H<3I<3I=4J=4J>4K>4K?5L?5L?6L?6M@6M@6M@6N@7NA7OA7OA7OA7OA7PA7PB7QC8RE9TF:UF;VG;WG;YI=[K?\L@^MA`NBbPCeREhTGkWJoYLr[Mu^OyaQeTiWq[u]x_O./.),,---,-,,,,+++&&&(((())&''  !&#+'"/*$3.'60);4,B:1G>5MC9OF;RI>TJ?PH=RI>TJ?RI?PI?PH>RJ>SJ>WM@@<6-//.//.//-//-/.+-,+,,*,+)++)+*+-,,...0/-//,..,..-./-//,..,---/..00/10,//$&!%898]UOaVOm`XVKCIJ̰ǪzĦvq~luvw}ϮM7&I8,5( 1&7*!2'1'3) 7+!7-$sjezv{_YW6) A3(C5*C4)J8+E4';-!@1$6(7*:,!2%/"5'6)!;-%B2'A3(+" 2%6(:,":,"<.$B3(D4)?0&<-#@0&K9-TA5\H;_J=XD8aL?gRCiTEdQC[IiUHv_Rw`SoZNkUJgQGfQHmXNpZQv^Ru]Qs[PsZNtZMuYKnSFdKA[D;R=6K71F1)gUMtj\G@WC=D5/eN:pTfMyZBnP:bF3W<+N4&H/"F, E+ D) C) C+"C,%C-&C-&A,&@,&?+%>+%=*%=*$?+%:(!4&3&3&2&2&2' 3'!3(!4)"4)#5*#5*$6+%6+%6,%7,&7,&8-'8-'9.(:/):/)9.(9-(8,'6*$1& -#-#.$/%0%1& 1& 1'!2'!2'!3'"3'"4'"5'"5'!7'!<-(E94NFBQLHRMIJE@HC?KGBLFBQLHOKGOKGPLHPLHOKGPLHMIEMIEKGBGC?D@;A=9<94:7252-30,/-)+)$'% $"!$"%#&#&$,+'/0/+--'**%'('))+--.00+,+&''#%%$&&&''&('&(((*)(*)&((%&&%'''))'(('('&'&&'%&'&'(''('((()*)*+*)*)')(&('&'&)*)()('('''&&'&'('(*))+*()('(('((&''(((()(&'''(('((&''$&%"$$$&&%&&()('))%('&((())(**"&'pg_TQNVSQVRPVSPXUSYWUWUSUSQROMSQOVSQXUSYVTWTQXUSUSPNKHJGEHFELIGFC@EA>EA>MIENKGIFCHEBGDAHEBIFCEB@B?:FB?OKHRPMQNKQNLROLPNJKIEFC?FD?HFBFEAFD@FD@IFBGD@DB=HEA442'()())'(('((())'((&''&'&'(()**)**())())())()))**+,++,,+,,***)**)**)***++,--.00-//,--,--+-,+,,'))'(('((*++*++-..-..,--+,,,,,,--,--,-----,,,+++*+*())())())()))**)**'((&&&&&&'''((('((&''''''('()(()(()((((()(,-,-.-,,,+++,--/00-./+,,,,,+,,**+)**)**)**)**)**)++*+++,,+,,+++)**())()(((('((%%%%%%%&%$%%###"###$#$$$&&&))),,+,-,,,,*+*'((,,**)(,+*--+.-,31.=700+&B;4@92>70?91A:2C<5?81;5.=7/<6/70)71*/)$'$ 0+%"  ! (('$$$"! &&$110343.....-/00))))**232565344--," )'&'%#&$",*'30-2.+/-+43132021/32/32/420,*(.,*0/-974A>:@=9FC?KHDUPMXTPWSOUQMXTPXTOVQMQLHQMHROJQNIQNISPKVSN[WS`]Yb^Z]YTZWQZVQYUPURMQNJQNIVQMZVQZVR\XT^[XYVRURLUQKVRLWTOYVRYVRYUQVROXTR[WUZVS\YU_\X\ZUZWR]ZU^[V_\WZWRSPJOLGPMHQMHSPJZVR]ZV]ZV{]]}ZzYxXuVsTsUrToSnRlQlQkQiOfNeMdLdMbLbLaK}`J|_Jz^Jy]Jw\IuZGuZHt[IrYHqXGoWFnUElUEkTEjTEjUGiTFgSEeQDdPCbOB`NA^L?]K>\J>[J>ZI=XH5L=4L=4L=4M=4N=4P@6RB8SC9TC:UD:VE;XF<[I?^JA`LBcMCdNDdODeOCeNCdMBaK@_J?\H=ZG<[H=]J?_LAaMBbNDcNDaLC\I?YG>RA9E4-/# "%56<9:A9:A;MA\MD]MD[KC[KC[KCZKCYJCVHAM@:=65/13;<>98:BACDCF?>@>=?@?ADCFHHLNOVeXUlWLbOD_XQa^Xgd]hf^ig^vqgϳ񹤌    "#%' )!+#-$/& 1(!3)#5+$7-&9/':0(<1*>3+?4,@5-B6.C7/D80E90E:1F:1G;2H<3H<3I=3I=4J>4J>4K>4K?5K?5L?5L?6M?6M@6N@6NA7NA7OA7O@7OA7OA7PB7PC8QD9RD9SE:TE:UF;VG[K?]K@_MAaOCdQEgSGjUImXKp[Mt]Ox`Q|cShVoZt]x_M>72#(*,,,++++++%%%&'''(('((  '#-(#.*$3-'50)82*@80F>4KB7OE;RH=QH=OGQH=PH=OG=PG=SJ?RI>UK?@<6,/.-/.-..././0/,-,*++)**)*)(***,,,.-,.-+--+-,,---..,..+--"&' %)*LGCbYSxn}m`D5*NEAƶt|nse}m|ltf˩~~{uyyq~mtv{âƧN>4?0%3'.#5) 0'3( 4) 3) 7-$k`Zrgatpe^[-%!9-#;/%;/%?0%;,!0%8*6)0$/#-!,!."0$C4*@1'# '&) 4(;.$9,#8+!4'8) ?/%D3)I7,O<0WC6UB5]I;Q@4E6+I8.Q@6gTHs^Qt_St_Ss]RoYNnXNp[QydZi^l^k]h[hZdVv]QlUJbLBZD;Q<3M7-gRIur]TR=6R=6L90C2&xYCrU?gK7\A0R8)J1$C+ @)?(>'>'>'>(!?*#?+$?+$>*$=*$<)#;(#;(">*$8&!-.!/#0$1%1& 2'!3("3)"4)#5*#5+$6+$6,%6,&7,&7-&7-&7-'7-'8-'8-'8-'7,&6*%2'"-#,",#-#.$.$/%/%0% 0& 1& 2& 2& 3%4%9)#A4.G=8QJFRMISNJVQMQMIJE@GB=JE@QLGVQMRMIQMIOKGMIDOJEPKGOKFPKGOKGIEAFB=B>9>:5:7263-41-0.*+*%'% $#! #!$"%#%#,*'/0/+--'**$'(&((*-,022,--')(#%$#$$$%%&'''(('(('))&((%&&%&&'))'))')('(''('&'&'('()(*+**+*+,++,+(*)')('(')*))*)'('$%$%%$&''()))+*)**')(()('((()))**&''%&&&('&('%'&"$$!"""##$%%&((')((+**,,*,, %&^WOROLSOLRNKSOLWTSYWUXVTYVU[XV\YWYVTXVTXVTUSQYVTXVTSQOJGFECAGECGEBLIEKHDPMJROMNKHMKHNLINLIMJGHECC@=@=9EB>FC?GD?HE@IEAHD@GC?LHDPNJROKROKTPLOLGOKHQNKROLQNJSPMUROUROPLIIEAGC?B?:B>9?;7A=:B>;A>;KIFQOLQOKMJFHEAFC>FD?CA:=;8*,+)**)**)***+++,,*++***)***++*++()*'(('(('((&&&&''())())'(($%%#$$#$$"###$$$%%%&&&''&''&''%&%$%%!!!!!!"##$%%#$$"#""###$$"#####$$$  50+,($94.@93A;4A;4?800+&C=5A:3?92@92B;3E>6@92<6/=70=7092+;3,.(#*&".)$!  #"!(('%%%""!%%$-.-010,,,++**++((()))122455021++*&$"&$"*)'3/-30-/-+21/21/21/420420530-*(/.,32/975B?;A>:EA=LHDTPLWSOXSOUPLTPLUPLVRMTPKTOKVRMXTPXTOXTPZVQYUQ\XT`]Y`]ZZWSYUQVSOPLHNJFPMHVRMYUQYUQYUQXUQSPKOKENKERNHVSNZWRZVRYTPWSOVRNYUQ\XT^ZV_\X]ZVZXT\ZV^ZWa_[`^ZYVQSOJSPKTQLURLYVQ[XTb[T~\~[{YxXvVsTpRpSnRkPjOiOhOgNeMdLbLbKaK`K~`K|_Jz\Hx[Gx\Iw\IuZHsXFrXGrYHqYIpYIpYJnWHlUFjSDiSChSDgSDfRDeRDcQCbOB`NA^L?]K?\J?[J?ZI=XG;WG;VG;UF:UF:TE:SE9SD9SD9SD9SD9SD9RC9RC8QB8PA6P@6QA7QB7RC9RC9RB8Q@7O?6N?5M>5M=4M=4M=4O?5QA7SB8UD:UE;VE\J@_KAcNDdOEePEeODeODdNCaK@_J?\H=ZG<[H=\I>^J?_K@aMBbNDbND_LB\I@XF>O>6=-&$)+/9:@9:A:;B:;B9:@89@78=77;66:WKGmWMmWMmWNmWNmWNmWNnWOnVNnVNoWOoXPoWOnVNmUMnVNoXPpXQpXPpXPqYRrYRrZSs\Tt\Tu]Uv^Vw_Wx`Wy`Xy`XzaZ{bZzaZy`Yx`Xv^Wt\Tr[RqZQoYPoXPnXPmXOmXOjVMiULgULeTJcRHbQG`OF]MD[KBZKBZJBZJBZJBYIAQC=L@;NB=NC=WIB\LC[KC[KC\LD\LD[LDWIBL?9954247??C878B@CFEIBAD@?ABACFDHIHLNNUcXUkWKaNDa[Ub_Ydb[ge]hf]tofд3-(    "$%')!*",#.%0'!2("4*$6,%7.&9/(;0)=2*>3+?4,A5-B6.C8/D80E90F:1F:2G;2H<3H<3I=3I=4J>4J>4K>5K?5L?5L?5L?6M@6M@6N@6NA7NA7NA7OA7OB7OB8PC8PC9QC9QD9RD:SE:TE;UF\K@^MA`NCcQDfSFiUIlWJoZMs]Ow`P{cRhUmXs\jUOB9 %'**)+++$%$%&&'(('('  %"+'"/*$2,&70);4,B;2G?5H?5ND9RH=SI>PGPH>QI>RI>PG6U>3:,"U=-_D2W=-N6'G0#A* =';&;&;';';' ;( ;)"<)#<)#<)$<*$<*$<)$>+%6&!$*,!.#0%1'!2("3)#4*#4*$5+$6,%6,%7,&7-&6-&6,&6,&7-'6,'6,&6,&5+%3("-$*"*"+",#,#-#-$.$.$/%0%0$2$8,&?4/G>:PIDUOKPJESNJQKGPJEVPLRMILGBIC>KFARMHUPLTPKTOKPJFKE@MHCOJFOKFRNISNJOJFID@D@;B>:=:585063.31,/-(+)$&$ " ! " $!*)%010,.-()*')*')*+--.00)*)'((&''$%%#$$%&&()('()'))')(&''&'''(((*))++)**)+*'(('(''(()*)*+*+,,+++)*))*)()(()(()(&'&#$##$#&''()))**)+*())())()(()(())&''%&&$&%$&%%'&"$$!#" !!$&&&(('*)),+)+*"&'VPJTPMUQNROLSPNVTRXUTZWV[YW[XWWUSSPNOLJNKIMKINKIOLJQNLLIGDB?B>;B>;JGDNLIQOMRPMPNKKIFLIFMKHJGEGDAB@=>;7EB>C@:EB>MJFLIEJFBMJFJFCFC@IEBNJGOKHMJGOKIROLQNKMJFMIEIEAGD?EA=C?;C?;B?;DA=IGCOMILJFIFBIE@JHCGE?EC=EC=FD>EC?A>9B@;=;8;96<:8:97:96763#$# !!   !! ! !! 61+,($<60A:3A;4C<4<6/2-'E>6B<4A;3@92D=5E>7@92?81>80=70:3,<5.+'"+'"-)$   !"! $#"''&%%%""!&&%..-/00..-*)(%%$'''***122455,-,'&%&%"%#!+*(6416300.,0/-10.31/42021/31.-*(0/,320642CA=GD@HD@MIFVRNYUQYUQYUQWSOVQMVQMWSNXTP\XT^ZV]YUYUQXTPYUP[WS^ZV^[XVSONJFPLHTPLROKSOJYTP\YT_\X_\W\YUZWRYVPXUPYWR\YU\YU^ZV^ZV^ZW_[Wb^[^ZWXUQUQMZWS^[X^[X[XT_\X_\XZWRYUOYUPXUPVSMXTOZWRi\S}[{YyXwVsTqSnQmQkPhMfMeLdLcKbJ`I_I~_I}^I{]Hz]Hy\Hw[GuYFuZGtZHsYHrYIpWFoVFoWFnVFmVGmWHlWIjUGiTFgRDfRCeQCcQBbOA`OA_N@^L?]L?[K>ZJ>YI=XG5M>5N?5P@7RB8UD;VE;WE[I@^KBbNDePFfQFfPFfPEdNDbLA_J?]I>[G=[H=\I>]J?^K@`LBbNDcOE`MC]JAZH?WE=K:34'" "349:;A:;B:;B89@89?::?;;?77<87XJB\KC\LD]ME]NF\MEWIBL?987768;DDI:9;BACHHKHGJDCEEDGGFIJINNNT`[_kXNaNC`[Va^Yc`YdbZfd[toeԸsb  "$%'(!*"+#-$/& 1(!3)#5+$6,%8.':/(;1)=2*>3+@4,A6-B7.C8/D80E90F:1G:2G;2H;3H<3I=3I=4J>4J>4K>5K?5L?5L?5M@6M@6M@6M@7NA7NA7NA7OA8OB8OB8PB8PC9PC9QC9QC9RD:SE:TE;VF;WG[J?]LA_NCbPDeRFhTHkWJnZLr]Ov`PzcRfTjVqZlVQA7!%&*++$$$%&&())&''   $!)% -("2,&:3+?8/D<3F>4F>4MC9SI=TI>QGRI?QH=PG@;5*,++,++,+-.-132.0/*++)**)**)+**+**++,---..-/.,..!')nc[ֹdzӿٽsO=2[TQї{lopux|utd~nxktforbfV~cTdS{irie3$0%,#-$5+"/' 0( 7,#;3.g[S_TNtli}}ur\QJ61-' +!,#,$2&+ %#!*4'B1&C2',!&&+ 4'=.#9+!8*!?/%G6*R?2S@3YF9aM@iUGjUHlWJu_QiZj[i[h]kaxl{n~o{kn`xcXt_Uu_SnWKkTGw]Otg|rjSJYC:R=4K91O;1<-"4%J2%H1$C-!>)<(9&8%8&9':' :(!:)!;)";*$<+%=+%=,&>,&>,&6'! &*-#/& 1'"2)#4*$4+$5+%5,%6,&6-&6-&6,&6,&6,&6,&5,%5+%5+%2("+"'' )!*"*"+"+",",#-#-"/#5*$=3/H@:584/63.42-0.),*%)'""  !" '%"./-+--)+++..)+,*,,,--()(&'''((%&&$%$%&%'((')('*)'))())())'))()))**()))**)**())'(()*)****+*)**())+,++,+)*)'('&&%$$##$"&'&()))**)+*())()(')(&''&''%&&$&&#%$#$$$&&#&%"$# "##$''%'(&((&''#&&ID@OLHQMJQNKTQOTRPSPNTRPYVU[YWWUSTQOROMPMKPMJMJGPMJQNLPMKMKHIGDC@=A=;FCANKIROMSQNQNKNKGOLINKHLIEKHEHDAHD@EA=FB>IFBKHDKHEHEALIEROKQNJMIELHDIFBFC?GC@JFCMIGKHELIFMKHMJGLHENJGMJFLIEKGDJFBGD?GD@GD?DA?=9<95>;8=:7=;8;96"#"!""!"!"##   !""!""   ! "! ""!61+-)%?82@92B;4D=5=6/71+E>5C<5B<4A;3F>7E>6?81>70>70<6/81*;4-&"-)$-)$  "! !! """###""!''&...010100.,+&%$(((--,455899./.,+) '%#&%#,*(7538643200/-0/-20.21.1/-0.,,*(20.874531B?\K>[K?ZK>YJ=XI=WG5N?5O@6RA8UD;WF=YG>YG>ZG>[I@]KAaMDeQGgRHgRGgQFdODbMB`K@^J?\I>[H=\I>]J?]J@_LBbNDcPFaMD]KA[I@ZH?UD;C3,!'(,9:@:;B:;A9:@9:@;;@==B::@56=IBCkVNmXOnXOmXOnXOoYQpYQpZQpZQqZQqZRpXPoVNpXOqYQqZRrZRrYQrZRsZRt\Tu]Uu]Uu]Uv^Vw^Vy`XzaZ{bZ{c[{b[{aZzaZyaYw_Wu^Vt]Us\Tq[Sp[RoZQnZPmYOkWNhTKfSJeRIcRHbQGbPGaPG`OF_NE]MD[LC[KB\LC]NEWIBPD>LBACADHGJLKOGFIHFJJHLMLQQPVXW^hWOaND_ZU_\Wa_XcaYdbYrmbӶɯ,'" "#%&( )!+",$.%0' 1("3*#5+$7-&8.':0(;1)=2*>3+@4,A6-B7.C8/D8/E90F:1G;2G;2H<3H<3I=4J=4J=4K>4K>5K?5L?5L?6M@6M@6M@6M@7NA7NA7NA8OA8OB8OB8PB8PB8PB8PC8QC9RC9SD:TE:UF;VGZI?\KA^MBaODdQEgTHjVJmYLp\Nt_PxbR|dShVnYlW^L@*+,!$$%&&())&&& #($,("2,%:3+@8/C:1>5,:3)F=3RH=TJ>PF:4)*))*)()(++*010020-.-+,++,++,+*++)+**--,..-//?=;sȪͮ˷βj\+:53߮w||xtwgZmVJg[~{lueomjXkSDaL=lTEp`t|psjfvqp~xvskh0#,#+"*"'!*$&!,$<62e[VaWSnhf|vt{tr`YWOFAD@>(&'&'' (# -!=,"@/$/$#((,!0$0$1%>/%G6*G6*WC6ePAmVGpYJx`Q}dUjZl]l_pcuh}orvgg[h\j]m_|cU~eWoax_TkTJ`H>R>5O;2D2*9*#'3#;&:&9&8&7&6%6&7' 9(!:)":*#;+$;+%<,%<,%=,&=,&/"   !'+".% 1("2)$4+%5,&5,&6-&6-&6-&6-&6,&6,&6,&6,&5+%1("&"%' )!*"+",","-"3)$<3.E>;LGEMIFQLIRMJUOLVPLTNIUPKSMHRLFSMHQKEPJEOIDSMHPJEMHCOIDSMHWQMQLGOJESLGOHCRLGUPKSNITOIRLGPKEJE?C>9@<795085/64.1/*/-(-*%%#! !" '&"-.,)+++...11*,-)++)+*&'&$&%&''$%%$%%&'&())(**(*)(**())())'))')(')('((()))**())()(()())))*)*+*()(+,+--,*+*'''%%%$$###"%&%'(('))()('(('(''('&'&%&%%&&%'&$&%%&&$&&$&&"## !  "#!$$$&&$&&$&&&''430NJGOLIPMJROMTQOTQOSPNVTQYWUURPROMROMSPNTQNQNKPMJPMKURQSPNOMJJGEA>;A>NKHLIFHEBFC@JGDOLIPMJNJFJFBGD?KGCLIENKGNJFKHCHEAIFBOMIRPLPNIJHCIGAIGADB>GFBJHDCA==;7>;6=:6:73<:6:85!""!!!#$# !! ! !"""## !!  !! !"""#$!""  "! " ! !!!%$#72,+'$A:3@:3B<4E>6=6/83,C<4C<4B;4A:3F?7D=6>80=7/?81<6/71*92+# /+&,'#      ! ###""!'''./.233110+*)$$$&''--,555899///1/, &%")(&-,*753;9798632010.10.21.10-.-**)'31/=<9753B?YJ>YJ=XI=WH5O?6QA8TC:XG=ZI@[I@[I@\I@^KB_MCdPFhSHhSHhRGePDbMB`LA_K@]J?\I>\I>]J@^KA`LBbNDcPFbOE^LB\JA\KB[IAO?70'%"138:9TF?]ME_PG_QH^PGXJCG=8568;=AIINDCGBACFDGLKPKIMHFIKJNONSSRXUU]dXVaODa\V`]W_\Ub`Wb_Voi^гҹ "#%&( )!*",#-%/& 1'!2)"4*#5+$7-&9.':0(<1)=2*?3+@4,A6-B7.C8/D90E91F:1G:2G;2H<3I<3I=3J=4J=4K>4K>5L?5L?6L?6M@6M@6M@6N@7NA7NA7NA7OA8OA8OB8OB8PB8PA8PB8QC9QC9RD:SD:TE;VF[K@]LA_NCbQEeSGhUIkXKn[Mr^OvaQ{dSgUlXnYoXI&&&"$%'((%%%  !&")$/*#92)?7.A8/7/&6/%C;0ND9PG;NE:OF;OF;OF:SI=UJ?OF;LD9PG<;71&''***++++,+./.010./.+,+*++(***,+?:7@94<51rc[{qĥïiSG' ǻ~nug{~pydXVB9fQF}nyt^PkYkY`L=J9.K9-WB4qYJk\j]wf_d][hcbe^\.%%&' !'!$ 951e]Yb[Xe_^hcbga^SMKGA>HED/03""## )2%4&*  (&!(:,"D3(S?2T@4YE8^I;bL?nVGfUkZfXj\m`zj}kgY~dWm^m_p`iZn`ufqWKfNC_G.&&$*3"5$4%4%4%4&5' 6(!8)"9*#:+$:+%;+%;,%:*$*    ") -$0'"2)$4+%4,&5,&5-&5-&6-&6-&5,&5,&5,&1("& "$'*!,"-"1'$B;7KGDMJGMIGNJGQLIUPMVQMXRNVPLQKFTNIWQLTNHRLFOHBOICRKFQKFMGBLE@QJEQJESMHTOJUOJWQLSMHQKFSMHRMGPJENHCPJEMGBE@:E@;A=7>;596030+1.)-+&&$  !"!(&"/0.)+++---//,..,..*,,'((%&&%''%'&%&&&''())())')(')('))'))'(('((&(''('(((())())')('(()*)))))*))*)**),,+*+*'('%&%$$#"#"%%$'((&('&'&&''&''&'&%&&$%%%'&'('&''%&%$&%#%%"$#"#" !! ""!##%''%''%''%''))(SPMSPNROMROMUSQXVUZXVWTRVSQTQOPLJPMKOLJMIFNJHOLJLIHQNLOKIMJGMKHHFCIFCIEBLHENKHMJHOLIQOLROLPLILHENKGPMJOLIOLHOLHJGDFC@GDAFC@A=9?;7B>:GC?JGDMJFJGCB>;EB?EC@DA>EA>IFCNKHRPLSPMROKPMIOMIOLIOMINLILJFLJGMKHONKRPMTSOMLHLKFMLGIHCKIEMKHGEB@>:@=9@=9@>:CA>=;8!"! !! !!   ####$$ !! !!"## !!  "##!!!"""!!!  !""#$%"##""!! !! $%$((&72,(%"A:3@:3B<4C<5:4-82,C<4C<5A:3@:3E>7D>7>70>70?91<6.71*92+# 0,'+'#!! !! !!! !!!""!(('-.-444111((($$$%%%**)332666...30. #" ('%*)'21.:97<;:76432043021/21./-+*(&0/,:96531?=:HEBJGDSOLVROXTQXTQVQOYURYUQZUR\YU_\X_\X_\X_\X_\X`]Y`\X_[W\WSZVQ[WQ]ZT]YTZVQYUQ\XT\XTXTOUQMSOJVRM_\X`]Y]ZU^[V_]Y[XUWRNVQMTOKRMIQLGTPKYUQYVRZWT]ZW`^[da_`]ZXTOTPJSOISNIWRMXTOYUPTSOdQwUsSrRnPjNhMeKdKbJ`H_H|]Fz[ExYEvYDtWCsWCrWDqVCpVCoUCnTBnUCnUDmUDlUDlUDkTDjTCjSCiSDiSDgQBgQBfQCePBcOAbN@bO@aOA`OA_NA^N@^MA]MA[K>YI=XI[J@\JA]JA]JA^LB_LCbOEgSHiTIhSHgQFcMBaMB`LA^J?]J?]K@_LAaMBbMCcOEdPFcPF_MD]LB^LC]KCWF>C5."!"%'*68>89?::@==B==B<E;=EHBF^IClUMnXOnXPoXOpZQq[Sr[Sr[Rr[Rr[Ss\Ss\Tr[SrYQrZRs[Ss[St\Tu]Uu]Uv]Uv^Vw_Wy`XyaZzb[{c\{b[zaZzaZzb[yaZw`Yv`Xu_Ws]Tr\Sq\Rp[QoZPmYOlXOjWMhUKeSIcQHbQGaPGaPHaPHaPG`NF_NF`PG`PG_OF_OF[LCNB4K>5L>5L?5L?6M@6M@6M@6N@7NA7NA7NA7OA8OA8OB8OA7OA7PB8PB9QC9QC9RD:SD:TE;UFZJ?\LA_NCaPDdRGgUHjWJmZLp]Nt`PybR~fTjWlXgRD2-* $&#$$  !%!($0*#92*=6->6-5.$91(F>3MC9KB8MD9QFPG74TG@VIC6.,_QKxsoȨڻS=/JC@½x{u{np\RVD9UB5t_Qw|miTGYE8\HB>;@<8@<8@<8C?;GC?IEAIFAD@=FC?IFCKGCLHDMJFQNKSQMUROUROTQNSQNPMJNKHPMJOMINMINLIKIFKJFQPLRQMPOJPNJMKGLJFLJFHFCDB?CA=@>;@>7<6/>70@:2;5-81*:3,# 0,'+'#!#"!##"##" #$#)*)+,+232010(('''&''''''000343+++/-+ &$"'&$0/-::7>=;87643165321/21/0.,*)'.-*54120-=;7FC@IFCPLISOLSOLSOLUQNZWT\XU\XT\XU]ZV\YUYVQXTPXTOZVR^ZV^ZV`\W^ZU[WS[WRZVQVSNVRMXTPWSOUQMSPKPLGPLFVRMWTNXUO\YTa^[^[XTQLNIDNIDRMHTPKWSOXTPYVR`]Zb_\b_\b_]]ZVYUOVRLVRMVRLURLVSMWSNRPLfOtSpQoPkNhMeKbIaI_H}]F{]Fy[EvYDsVBrVBqUBoUBnUBmTBmSAlSBkRAkSBjSBjSBjSCiSCiSCiSChRCgQBgRBgRDfRDeQCdPBbNAaM@`N@`N@_N@^M@]M?\L?[K>ZJ=YI=YJ>XJ?WI=VG;UG;UG;TG;TG;TF;TE:TE:TE;UF;UF>C??C==C<=D?@H?AI>@GOBBiRInXOoYPpZQpZRq[Sr\Sr\Sr[Rs[St\Ut\Ts[SrZRs[St\Tt\Su^Uu]Uu\Tv^Uw_Wx`XyaZzb[{b[{c\{c[zbZzaYyaZx`Yw`Xv`Xu_Ws]Tr]Tq\Rp[QoYPmXOmXOkXNiVLeRIcPHbPGaPFbPHbQHaPH`OF`OFaQG`PG_NE^ME]MEUH@H?:C;7E<8MA>AIHMLLQJINCACGFIMLQKIMLJOQPVVU\UV^YY`_QKc^Xfc]b_Xb_Vb_VhdZtũ޿veW!"$&'(!*"+#,$.%/& 0'!2)"3*#5+$6,%8.':/(;0)<2*>3+?4,@5,B6-C7.D8/D90E91F:1G:2G;2H<3I<3I=3J=4J=4K>5K>5L?5L?6L?6M@6M@6M@6NA7NA7NA7NA8OA8OA8OB8OB8PB8PB9PC9QC9QC9RD:RD:SE;TE;UF;WH=ZJ?\LA^MB`ODcRFeTGhVIkYKo[Ms^OwaQ{dShVlWz_N>50!   "%!*&!2,&93*=6->6-4.%70'E=3KB7H@6I@6LC9NE9JB6OF:RI=OE:KB8OF;850'(')*)------+++ $$---@83J<6B513,*XLFupkå~oO8,ga^ɽܹͬp||wr}opdzdViTE;-#E6-t_RycUI9/@1(D4);-$;,$;-$5)!9,"P?2UB5S@4I>95-'& !%!GA>VPMOIGGBAB@@:89744+*+++-,.1.15" !"! !&&'+,++-,)*)$%%)3'?1%G7+U@3ZD6\F7ZD6K8-Q=3^I=lTEpUF`H;`H;cK>aL?rZJ~eSx`Pv_Qu\NbJ=_H:P<0:,#%!*/#1$2& 2' 3'!4("5)#7*$9+$8*$'         "#',$/'"1)$2*$3+%3+%4,%4,%2*%"#!#1.0D@@JFCJEBGB?GC@JGDMIGKGCPKGWPLVOJSLFRKEOHCQJDUNHTMGSLGUNHPICOHBMFAPICOHCLF@MGBRKFRLFNHCOICOICPJDMGAIC>HBHBC@>FDADA?B>;C?KGCNJGNJGOLHTQMWTQWTQTQNPMJOLJPMJKHFLIFLIENJGQNKPNKPNJPOKLKGIHDJHDLJFLJFJIEJIDHFBDB>@>;@>;A?<9>;8542!"" !""#$$"## ! !"!"""!"! !! !! !!  """ !"!$%% !!#$$#$$$$$!!!"## !!***&&&!""!"!$%%"##!""!!!!!!!! !!!"""%%%&''  !! !&$#$$$##"$%%&&%('&)''.+):4.,($A;4@:3B<4C=571+61+A:3C<5C=5B;4D>7B;4>7/?80@:2<5-93,93,!0,'*'# ! ######!! !"!%&%()()*)011.//''''''))))))111343++*,+)$#!&%#0.,<;8?>;:874317546527530/,+*',+)21.20-?<9GD@HDAMIFPLISOLTPMWSOWSPXTQYTQWSPWSOYUQZUQZUQZUP[WR^ZV^ZV`\X`]Y_[W\XTXUPUQMVQLUQLTPJSOJUQLTPKRNIQMGSOIXUO[XS`^Z_[WWSNUQKUPKVRMTPKXTO[XT\YU_\Ya_\_\Y`]Z]ZU[VQ\XR]YTZWRYVQYVPYUPUSNgPqQmOlNhLeKbI`G_G|]FyZDwZDuXCrVBoT@nS@mTAlS@kR@jR@iQ@hP@hP@gPAgPAgPAgQAgRBgRCfQBePAdO@dP@dPAdPAcPBbOAaNAaOB`NA^M@^M@]M@\L?[J>ZJ=YJ>YJ>XJ=XI=WI[JA]KB^KB_LB`ND`MC`MCdPFhSHiTIiSHePEdODdPEcOEdPFdPEdOEgRGhSIhSHgRHeQGcPFaOEaOEbPGaPFZIAJ;4(%&#&*,179>=>C??D>?E=>F@BJCEMACKB?CePHoYPoYPp[Rq[Qq[Rr\Sr\Sr\Ss\St]Ut\Ts\Ss\St\Tt\Tu]Uv_Wv_Wv^Vv_Wx`XxaYxaYyaY{b[{d\{d\{d\zb[zb[xaYw`Xu_Xt^Vs]Tr\Sp[QoZQoZPmYOmXOlXNiVMgSJdRIcQHbPGbPHbQHaPG`PF`OF`PG`PG_OF^NE^NE]NESF?E<7B:6E<8PE?\NF\NFTF?B<9235@?CFFJJJONNSDBEFDGLKOMLQLJNQPVVU\VV^TV_^WXb]Veb[ebZcaWc`Vc_Uyg̵߿}k\ "#%&( )!*",#-%.& 0'!1("3)#4*$5+%7-&8.':/(;1)=2*>3+?4+@5,B6-C7.D8/D80E90F:1G;2G;2H<3I<3I=4J=4J>4K>5K>5L?5L?6L?6M@6M@6M@6NA7NA7NA7NA8OA8OB7OB7OB8PC8PC9PC9QC9QD9RD:RD:SE:TE:VF5IA7NE:MD9SI=RI=ND9H?5LC7740'('()(+,+(**!%&KD?}kaYIA2+)! SF@vqko}yk`K@A;8Ⱥ|Ȩ޺ͪ{zeWtg|sstfoZL_L>Q@5=/&/$:-%?1(F7->/&:,#8+"A2(A3(0&A3)%"%!JECSONHED743+**))*((*%%'(*,*+./37*,/ ""  ""#''(*+,,.-.00133465354,.-''''&% .$?1&B2'A0%B0%H5)?.%=.%K9.^G9[E8R>1WA4VA5XC6mTCrZHpXHdN@aJ=YB6O:/>.%'&+!.$1& 3'!4)#5*#6*$1& &   !#$( ,$.&!0("1)#0(")"($$1/.>;:D@>HDBKGDJFCGC@FB?FC@IEBJFBNHDLGBGB=B>9?;7851630852862974;96:85;:7:96:96985985984985;96;96;96;:6<:7=;8<:7:8576364143043043075265143/0/,)(&*,,*,,*--+..*--),,*,,(**%''%&%%&%%&&&'&'((&''%''&((&''%&&%&&&''&('%&&%&%%&%&'&&''&('&('&'&%&%'(''''&&&#$#!! ! !"!#$##$$#%$$&%%%%%&&%&&%&&%''')(()(()(')('((&('$&%!"""##'(((*)()))**())')) $%QNMROMROMOLJJGDKGDMJHOLIROMTRPURPUSQVSQTQOPMJLIFFC@DA>EB?D?D@=JGCOLHPMJMJGNKHNKGOLHKHDKGDJFCKHEPMJQNKPMJSOLUROPMJIFCFB?GD@NJFRNJQNJKIEMKHOMJPNKKJEGFADB=GFAJHDEC?ED?A?;?<9<:7=;7@>;B@=A?<><810. "" ! !!!%&&"## """"""!!!!""!"" !!###!"!""" !!!!"!"!$$$%&&"#"""""##"##$%% !!"#$!##    !! ! ***((( ###"""!"!!!!"##### ! !!"##$%%!!!!! #""  ! !$#"&'&#$####%%%((')((2.+=60-*%B;4@:3B<4D=550*94-A:2B;4E>7A:3B<5A:4?81@81@:2<5.:4,82,1-()&" " #"!&&%$$$!!!""!''')))*+*011011,-,(((()()))111454+++''& %$"'&$0/,:96;:865343175476476410--,*,+)10-0.,<:6HDAHD@LHDNJFRNKUQNYUQYURZURYTQXTPWSOYTP[WR\XS[WR]XT_[W`\X_[W]YU\XT[WSYVQXTO[VQYUOUQKTPKTPLSOJVQLUQJTPIVSLZVQa]X\XSWRMZVQ[WR[VRXTO[VQ]YU][W^\Y_]Z_\Ya^Z^ZU^YT]ZTYUPXTOYVQWTPTQLTRMfNmNjMiLfJcI`G~]F|]ExZDuXCsWBqVBnT@lR?jQ?jQ?hQ?gP?gP?fO?eO?eN>eO?dO@dO@dO@dP@dPAdPAdPBdOAcOAbN@aN?aO@aNA`NA_M@^L?]K?\K>\L?[K?ZJ>ZK>YK>XI=WI=VH[J@^LC^LB_MB`ND`NCaMDdPFgRGiSIiSHfQFfQFfRGfRGfRHgRIgRGiSIkVLjTJiSJgSIeQHdQGdQHeSIeRI_NEUD=>2-#%("%)+.289><=C=?E?@HBDMFHQDFN?@GOA3+?4+@5-B6.C7/D8/E90E91F:1G;2G;2H<3I<3I=4J=4J>4K>5K>5L?5L?6L@6M@6M@6MA7NA7NA7NA7NA8OB8OB8OC8PC8PD8PD8PD9QD9QD9RD:RE:SE:TF;UG@,,-%%&%%&'()&')*-0-04038149%$% "! !""###$'&(++,,-,+,+,-,-/.132365244/11432<968520.,*)(  $&') 4';+!C1&:*!8)!K8-^G8XB4V@2YB4S=0V?1]F6dMFB?EA>FB?IEBA=:-,)00-664AB@?A?9:8:;9;<:>?=??>?@?BB@AA?AA@??==><<=::;9:;:9:99:99:88979:8:;:;<:9:8665443553453565564443342120''&  *,+,./*-.*--(++&**'))&''%&&$&%$&&$&&$%$$&%%&&$&&%'&%''%&&%&&%&&&'''('&&&$%%''''(('('&''%'&&'&')'(((&'&$$$!"!""!$%$&('&'&%&&%&%$%%$%%$%%#%$#%$%&&'((')(&''%'&%'&$&&"$#"$#(*))++()(*+**+*)+*#'(OLJSPNTRPSPNNKIKHELIGPMKTQOXUSWTRVSRTQOQNLOLJMJHLIGKIFKHEHDADA>DA>LJGMJGIFCDA>JFCMJGNKHMJGMJGMJHLHFJGDIFCHEADA>C@JGDNKHROLOLIMJFNKGMJFIEBGDAJGCKGDKGDIEBIFBKGCMJGLHEJGCJFBKGCNJGNJGKHEA>:DB>LJGPNKNLHIHCEC=DB=FE@EC?GEABA=?>;@>;A?;B@=CA??=;;96//.#%%%&%$$$!"!"""&(($%%  !"!"###$# "" !!"## !!####$#"""!!!!"!###%&&%%%%&%#$$###%&%""" !!"## "###$$  !!!  !""!"! !!!())())!""!"!$$$!!! !!""""##!!!!!! !!"## """""""#"##"!  !!! """&&%)))$%%"#"$%%(((&'&1.+<6/.*%@:2@92B<4C<55/*>81B;4B;4C=6@:3A;4A;4?81@92B;4=6.:3,71+1,((%!"#"!&&%%%$""""""&'&'('+,+344233110))(&&&(('/0/333+++((' '&#*(&10.65365310.4309858747631/--+),+)21.0/-863FC?HDANIFOKGPLHRNKXTQZURYTQXSPZUQZVR[VRZUQ[WS\XS[WT[XT]YU\XT\XT[WRYUPXTOXSOYUQXTNVRLWSOZVRYUPZVPVRLVSLVSMURL[VRZUP[VPb]Yb^Z^ZV]XSa\Wc_[b`\a^\`]Ya]Y^ZVWSNWSMWSNWSNYUPZWSYVQVRMZTNgMjLgKfJcI`G~]F{[DxZDuXBrVApT@mS@kQ?hP>gO=fN=eN=dN=cM=cM=cM=bL=bL>aM>bM>bM?bN?aM?bN?bO@bOAaN@`M?`M?`NA_N@^M@]L?\K>\K>[J>[K>ZK?YI=XIXH>XH>XH>WG=WG=VF<>E@BIDFOIKUGIRACK/++dRKpZQpZQq[Rr\Ss\Ss]St]Tu^Uu^Ut]Uu^Vu^Vu^Vu^Vv_WwaYxbYw`WxaXycYycZzd[zc[{c[{d\|d]|e]{d\zc\xbZwaYu_Xt^Vr\TpZRoYPnYPnYPmYOmYPlXOkWNiVMgULeTKdRIcRHcQHcQHbQHaPGaPG`OF^NE^OF_PG_PF]NEYKBQE>I?9H>9I@;RGAQE??<<78;EEJGFKDCGQQWKJODBEHFJONSONSPOUTT[VV^TU^WYcdaafb[ebYebYdaWeaWnԼӸڽH=6  "#%&( )!*",#-%/& 0'!1("2)"3*#5+$6,%7-&9.':0(<1)=2*>3+?4,A5-B6.C7/D8/E90E91F:1G;2H;2H<3I<3I=4J=4K>4K>5K>5L?5L?6M@6M@6M@7MA7NA7NA7NA7OB8OB8OC8OC8PD9PD8PD9QD9QD9QD9RD9RE:SF:TG;UHZL@[MA]OC`PDbRFeTGgVIjXKmZLp\Nt_OxaQeT}bPI8-   #&"-)#1,%2-&71*:3+81(:3*D<2G?5F?5H@7KC9IA7KB8KB8KB8I@5E=2JA6IC=OGBRIEsjtf/'$ @;9naZvm}{tsxxyeQC^XVȹŷy̪ġ|kRD:o\Q}g[mZOr_Svho`zdVmYK]J=WE8L:0Q>2L;/8+"-#&#'/$,#*"'!(!"$3'+"++,9;@148)+-((*()*()+*,.-04/26037048,/3 !"!  ##$%$&*)+..../.,-,+,+,.-,/./00132133021764B>;B>;A>;GC@C?=975.-+$#"# #."3%3&E2(YA2Q;-L7)N8*N7)E1$D2&M;,S>/F4'7))!!!$"!%##  #%!% #&"!'#"(''976HDBNJHOLIOLIPLJLHEIECC?;8B?;D@=HEAJGDLHFKHEKHERPMQOKMIFKGDHEADA>EB@GEBJGCMJGQNLROLOLINKHJGCFB?FC@IFBFC?FB>D@B@DC?B@=A?;:74:73A>;<:730-**)&''&''&&&#$$"#"&''#$$ !! !! """"## !! !!"##"## !! ""!"#""""$$$&&&%&%'(($%%$%%#$$$$$%%% ### !!"###$$ !" "! !!!#$$$$$!! !! """!"!""!"""&'&)((##"!!!&''### !! !! !! """""""""!!!!!! !!!!!!"!### !!!""$$$$$#!  ######&&&''&''&$%$###'((+,+)**52.<601-(>81>81B<4C<53.(>92B<5A;4A;4@:4A:4A;4=70@92D=6=6/:3,5/)1-((%! "!!&'&%%$""""#"%&%&'&-.-565333211*))$$$&&&---222./.+** *)&+*'430542320.-+32/98687598620.,+)-,*32010.652DA=HD@JFBLHDMIEOKGVQMXSPWSOVQMVQMVRNYUQYTPXTP[VRZVRYTP\XT`\X_[W\XTYUPWSNUQLWRMXTOYUP[VR[WRXTOVRMVRM[XR\YTXUPROJQMHWSN_[Wd_\d`]d_\c^Zea^b_\][XZVS[WR\XSYUPXTOYUPZVR[WR\XS\XS\XS^YSeKfIdHcH`G~^E{[DwXCtWBqVAoT@lR?jQ>gO=eN_M?_M?_M?^L>_M?^M@^M?]L?\K>[J=[J>[J>YI=YIXI>XI>XI>XI>XH>WH>WG>WG=VF\LA^MB`NCaODaNCbNDcOEeQFgRGhSHhSHiTIjVKjWLjVKjULlWMnXNoYOmWNkULiTKgSJgSJhTKjVMiVLeSJ_NFYHAG94((*%(,#&*.05::=<=:;>HHMIINA@CMMRPOUFDGGEHMLQQPVOOTTT\VW_TU^UW`cbghc\gd\gdZfbXc_Tzgɳ޾շαūϵ~qh]U91- !#$%'( *"+#,$.%/& 0'!2("3)#4*#5+$6,%8-&9.':0(<1)=2*>3+@4,A5-B6.C7/D8/E90E91F:1G;2H<2H<3I=3I=4J=4J>4K>5K>5L?5L?6M@6M@6M@7MA7NA7NA7NB7OB8OC8OC8OD8PD8PD9PD9QD9QD9QE:RE:RF:SF:TG;UHYK?[LA]NB_OCaQEcSFeUHhWJkYKnZLq]Nu_O|cRz_NM:/   &#+&"/+%3.'4/(82*<6-<5,A:1G>5H?6JB7ME:OFJFCHEBJGDNJGMIFHEB>;:10.!!) 0$=-#A/#A.">+ >, <*/"0$3'3&*  &%'547" !#  *)*A=:6A=9B=:D?C@B=9B>;DA>EB?JFCJGDGEBKHDGDAB?;@=9@=8A?:C@;8963()(&&&'('&''#$$"##%&&""" !! !!!!!!"""""#$$$%%"##"""""""""!""$$$&&%'''$%%$%%"###$$"##$%%###!!!  !!"#""## !! $"!#"!"#"#$$%%%"! !!!#########""!%%%%%%!! !!!((('''!"# !!! $$$####$$#$$ !! !!$$$"##"##$$$"""!""&'' &&%$#""""$$$%&%,+*,+*)(''('&''())*+*)**940:4.4/*@:3@92C=5D=62-(>92D=6C=6B<5B<5B<5A:3<6/?92D=5<5.:3,3.(!1,''$  ! #""&&%##"!!!"#"%&%''',-,454111,,,%%%$$#'''-.-343122//- " -,)*)'4315424310/-4209757648754310.,..+541320541DAHC?PKGTOKUPMRNJSNJTPKVRNXSOXTOYTPZUQYUQZVR]YU^ZV\XT[VQXTOVRMWRNWSOXTOWSOUQLTPKTQLZWR`^Y^\XYWRTPKVRMZWR\XU]XT_[X_[X^ZVc_\b_\\ZVVSNYTO[WRZVRYVQYVQZWS\XT]YT]YT_[Va\WcJbF`F_E~^E{[DwXBsVAqU@nT@lR?iP>gN=dL;bL;aL;`K;^J;^I:]I:]I:]I;]I;]J<\I<\I<\J<]J<]K=]K=]K=]L>]K=]K=]L>\L>\K>[J>ZIXI>XI>YI?YI?YI?XI>XH>XH?XH>VF7.+%)-&(,!$'35:?AIEGPOR\QRZVIF?75=:3+@4,A5-B6.C7/D8/E90F91F:1G;2H<2H<3I=3I=4J=4J>4K>5K>5L?5L?6L@6M@6M@6MA7NA7NB7NB8OB8OC9OD9OD9PD9PD9PD9QE9QE:QE:QE:RF:SF;TG;UHXJ?ZK@\MA]NC_PDaQFdSGfUHhVIkXKnZLr\Mx`O|`OZD6  '#,("0+%4/(71+71*93+>7.D<3E=4F=4H@6JA7ND:ME:JB8C<2G?4[NDobgWM,&%xkXK61/Ŷ}ѭŦĥzk3*&ſ}~{iu^OA5,ydUq\O[I>' B>2O>2K;0G8-;DA>IFCGDBEC@DB?EB@LHFLIFIFCMJGPNKPMKROMSQOROLRNLQNKQNKQNKNJFNKGKGDHEBNLHPMJMJHMJGJGDFB>NLHMKGMJFLIFGDAHEBKHFIECHDAC@=DA=JGCNLGOMHMKGLJGJHDFD@HFBJICDC=EC=JICKIDJIEFEACB>A?<97330-630;85><9))(%%%'('&''"##"##$%%""" !!!!! ""!"""!!!#$$#$$%%&!""$$$$%%###!"!$$$%&%'''%%%!""!""##$!""$%%"## "##!"!$%$$%% !!! !$! "! ""!$$$((($$###"######$%$"##$$$$%$"""#$$'(('(' !!"""%&&"##!!!%%%####$$$%%  #$$#$#$$$'(''''  &'& """'''&%% ! #$#'''(((-,+.,++)('''()))**()()**;6171,62,C<5B<4D>6C=51-'A;4E>7C=6C=6B<5C<5@:3<6/@:2C<5;4-82+0+%# 1,''$  !"! $$$""!##"##"%%%()(-.-454233,,,%%%##"'''+,+232111//.  .-+,+)76465387443132/64243186465210.//,652652541DAiP>fN=dMXJ?YJ>YI?YJ?ZJ@YJ?YI>XH>XH>WG=UF78:BBFJJPKJPCBEFDGRRXPOTFEHJHLRQWSSYSRYWW`WX`ST]X[ejjmebYfcZfcYb_Tyhůӵѵ{vlne_`ZVZTQYTPUPL:31 #$%&( )!+",$-%/& 0'!1("3)"4*#4+$6,%7-&8-&9/';0)<1*=2+?3+@4,A5-B6.C7/D8/E80E90F:1G;2H<2H<3I<3I=4J=4J=4K>5K>5L?5L?6L@6M@6MA7MA7NA7NB8NB8OC8OC9OD9PD9PD9PD9PD9PD9QD9QE:QE:RF:SF;SG;TGYK?ZL@\MB^NC`PEbQFdSGfUHiVIkXJoZLu^N}aO`H: $ +'"1,&4.(71+93,:4->8/C;2C;2C<2D<3H@6KB7IA6IA7wko]R0*(sr]ONHEɻ˾έִ}åƧj\RKHźǼtqs_iUGePCA4+iUG\J>TB7,#OIFPIEGA=@72EA>C?IFCQNKSPNQOMSQOROMSPMQNLQNKOMJKGCIFBHEBFC@IFBLIFNKHPNKKIFHEBKHEKHENJGNKHHEBDA>EB?HDAHEBHDAJGCNLIRPMTRNSRNRPMONJLJFKJEKKEEE>CB:97331-30,630:85%&%$%$%%%### !""$%%"## !!"#"###%%$$$#!!! !!###!""$%%#$$$$%!"""""##"#$##$#&&&'''#$$"##!"" !!$%%"##!!!#$##$$"##$%%%&% !!!""!!! !!!"" #""(&%'%$%$#%%%&'''('##"$%$%%%%&%&&&#$$###'('())&&&$%%&''!""!"""##"##$$$%&&!""!!!###"""!"!&&&'(("##!""&&&$$$ %&%$$$'''%&%!"!%%%'('***,,+-+*('%&%$****++())*+*;7172-=82F?7D=6E>6C<51-(B<4E>7D>6D=6B<5A;4@:3=71A;3B<5:3,71*/*%"/+&&#   $$$!! ##"##"#$#&'&-.-121233//.*)($$#'(',,,33300010/  31/20.:9787598642010.320432:9676410-.-+420642531C@kQ>hP=fN=cM;aK:_I:]I9\H9[H9ZG9YF9XF9XF8XF9XF9XF:XF:XG:XG:XG:XH;YH;YIWI=UG;UF:UH;UHXJ?YJ?YJ?ZJ?ZK@ZK@YJ?XH>XH>WG=UE;SD;RC9RC9RD:TE;UFYH=[J?^KA_MB`MBaNC`LA_KA_LAbNCeQFhSHkWKlYMlYNlYOmYOq\Rt_Ut^Ts^Tp\SmYPkVNkVNkWOlYPmZQkYPhVMdRJ^MERC<6.,%)-*(*24:FHQTT\H83C:5ECCGHKTSZo_[r\Ss]Tt\Su^Uu^Tv`Vv`Vv_VwaWxaWxaXyaYx`XyaXyaXzcZzc[zd[{d[{d[|e\|e]}e]|d]|e]{d]zc[zc[yb[xb[waYt^Vq[SoYQlXOkWNjVNiVMiVMjWNjWNjWNiWMiWMiWLhVLhVLgTKfTKcSI`PG`PFaQHdTJfVLdUKaQH^OF]OF[NEXKCPD>A?>779CBFLLQJJODCGEDGPOTWW^LJOJHLQPUUU[SSYVW^XYbST\UWajltfcZdaXa^Ta]Rxhݸ۾ѷ}qwmeib\^YT[VS^XU^XT_ZV\VS>63!"$%'( *!+#,$.%/& 1(!2)"3)#4*#5+$6,%7-&9.':/(;0)<2*>3+?3,@4-A5-B6.C7/D8/D80E90F:1G;2H;2H<3I<3I=3J=4J=4K>5K>5L?5L?5L@6M@6MA7MA7NB8NB8NC8OC8OC8OD9OD9PD9PD9PD9PD9QE:QE:QE:RF:RF:SF;TG;UHXJ?ZJ@[LA]MB^ND`PEbRFdSGfTHiVImXKs\L}aOaK= %!*&!.)$3-'50)61*82,=6.A91C<3E>5G?5D=2@9/\QF{չw1*'uin`UOM¼׶ήwŦgUH_YV}¸}hs_lWGH9/[H;?2(]I=VD9O=2-$^XVkdaib`_XULEA3+&,"2'4) -$)!  ""&$$*-1-15.15+.2+-1)+/&'*%')#%(#$'$&)#%((+/.16&%'!#$ &"%!!"!#&%'*)+-..-..*,++,,,-,,-,+,+)**)***+*,-,,-,-...///00011010:75:63=:8FC@HDAHD@IEAOKGVROQNJRMISOKTPMUQNVQNUQMSOKLIE=:7*('*()202$$%%$%!!#976OLITPMQLIOJGPKHNJGMHEPKHSNKRMJQLISNKRNKOKILHEIDAEA=B>;B>;B>;B>;@;952.$"'%!*($00-554/0///.010/0/./../-/0/12122234355411/./-./.././0/01001//10./.././/.+,+()(&'&'''**))*))*)**)()((('&&%  ()(+,,)**()((*))++())&((&''&(((**')(&((&'''(('((&''&'&&''%'&%'&%&%%&&&'''(('((&''%'&&'&&'&'((()((('&&%#$#$$#$%$$%%%&%%&%$%%#$$"$#"##"#"#$$#$$#%$"##!#"#$##%%#$$!""    !###$%&((()) URPWTSYVUWUSVTRWTRVTRWTRUSPTQOPMKLHFIFEJGEKHFHEBDA>EA>EA?HEBLIFKHEGDAIFCLIFMJGHEBB>:IEBQNKSPNRNLPMKNKHOKINKHLHFKHEKHDEB>C?<@=9B?;C?9372-=82E>7D=5D=6C<41,'A;4D=6E>7C=6A<5A;4@:3>82A;4B;3:3,60*/*%$!.*&&#  $%$"""######$%$%&%---111233..-.,+&%$((',,,343/0/11/!32121/764653764531541764664:97653/.,.-+21.53121.C@;IE@HC?E@=C>;IDAMIEPLIRNJRMISNJTOKSOJTOJSNJQLHQLGQLGOJFNJEOKFPLGRNITQLRNJPMGPMGQNHPMGOLFQMHSOJTQKWTNZWR[XTZWS\XU[WTZVRZVRZVR]YU]ZV]ZU]YU]YU`]XZWSXTO[WR^ZV\XTZWS\YU]ZV]YU[WS^XRxXBzW?xW?uV@sV?pT?mR>kQ=hOYJ?YK@ZK@ZJ?[K@[K@ZK@YJ?XI>WG=UE;SD:RC9RC9SD:TE;UE\J@^LA_LA`MB`MB^J@\I>^J?aLAdODgRGkVKlXMlYNlYNmZPp\Rt`Vu`Vt_Uq]SmZQkWOlYQmYQmZQmZQlZQjXOfTKaOGZJCD72&(+*(* %'+EHPLFIA1*@:7LJJHHKJLR^X\q]Us]Tt]Tv_Uv_VwaWwaWwaWxaWxaXxaXyaXyaXzcZzcZzcZ{cZ{d[|e\|d\|e]|e\}e]|d]|e]{d\zd\zd\yc[yc[xbZu_Wr]UoZRmXPkWNiUMhULhULiVMiVMiWMiVMiWMiWMiWMhVMgUKeTJcSIaQGaQGbQHdSJfWMfWMcTK`QH^PG[MEVIAMC><;<<3+?4,@5,A6-B7.C7/D8/E90E90F:1G;2G;2H<3I<3I<4J=4J=4K>5K?5L?5L?5L@6MA6MA7NB7NB7NB8NB8OC8OC8OC9OC9OD9PD9PD:PE:QE:QE:QE:RE:RF:SF;SF;TGXJ?ZK@\MB]NC_ODaPEbRFdRGgTHjVIqZK|`OaK<( $!)% .)#2,&4.(4/(60);5-@90D=4G?6G?5;5+_RHxϵRB8wcZyw7,&843˿ϯuʪWF:e_\ø½ĺ~bOaL=L=1G9/ZF:5*!VC7UC7K://'!kfdyw{usmfc^VRSKF@:7*"*!.%$ !"'(**-1(+.),/$&) !#$&)%'*&(+'*..16**,"$ &"'#%! ! "''(+++-.-./.-/.+-,+-,,.-,.-,.-+-,*,+*,*+,+*+*,-,-../00233021;86@=:A>;DA?KHEMIFMHDMIESOLQMIPKGQLHTPLVRNUQNWTPXTQZVQZUPTOKPKHC@=31/"! #! 98;0/1$$%"!",+,?<:OJFRMIOJGOJGNJFNJFPLIPLIRMJRNJQMJQLJQMJRNKNJGKGDFB?C?:C?;@<9852#!%#(&"..+232-.---,./.-.-,-,,,+,-,,-,--,..-11000.--,-.-.//010121010/00-/.,-,-.-+++'((%&%$%%'('()(()('(')*)**)((' "#"(**)*)'((')(*,,()*&()&((')))+*(*)'(('(('(('((')('((&('%''%&&$%%%&%&'&'('&''&''&('%'&%'&()(*+*(((%&%""""#""##"#"#$##$##$#"##!#"!#"!"""##"#"!"" !  !!!"#"!""!"" "" "" ""!##"$$%''&((!"PLITQOUSQQNLOLJOLJNKIOLJLJGHEBJFCKHFKHFJFELIGLIGFC@FB>A=;A>;EB?EB?FC@KHENJHMJGIEB@=9E@=MIFNKILHFJGDNJGOKHOKIJFDLHEMJFKHEIEBC@A>:?;8GC@KHEOLIOMKLJGEB?FC@FC@EB?JHEFCAB?FD@ED?FEALKFQQLRRMQQLNNILLGED?>=8;:686220,20-863=<89741/-&&&%&&%&&!!!"##$$$#$$%''#$$#$#%&&)*)'(($$$$%%%&&###%&&%&&#$$!""##"%%$!"! ###%%%###"##$$$#$$&'' !!!""$%%%%% ! '('*++&''$%&$%%####$$%%%$$$!!!%%$%%$%$###"###%%%###!! &&%&'&%%%&'&&''!""&&&*+*+,,$%%%&&)**(**%''%&&())'('&''$%% &'&!""&'&+,+*++&'''(()**'('%%$ ! $$#)))&''"""%%%&&&)*)+++-,+&%$'&%,,++,+*+*)))?:42.*=81E>7E>7D>6D=5/+&@:3C=5E>7D>7B=6A;4@:3?93A;4@:2;4-71*-)$)&".*&'$   $$$####$#"#"%%%&'&---010233/0/0/.(('))(-.-454111221! 00/00.10.542875753652985986;:7653-,*-,*10-5310.,@=9C?uToS=lR=jQ=hOXJ?YJ?ZK@ZK@[K@[LA[K@[K@ZK@YI?WG=TD:TD:SD:SC9TD;TE;TE;UD:WG=ZJ?\J@_MB_LA_LA_LA_K@\H>ZG=\H=_J?bNCfRFjVKlXMlYNlYNlZPo\Rs_Ut`Vs_Up]SmZQlYPmYQmZRn[Rn[Rm[RkZPhVMcRJ^NGPA;/*) !%BCJE;:;.)B?=PNOLLPGGLRRYj^^s]St^Uv`Ww`WwaWxaXxbXxbXybYybXzcYzcZ{e\|e\{d[{d[|e\}e\}e\}f]}e]}f^}e]|e]{d\zd\zc\yb[yc[yc[u`Xr^Vp[SmYPkWOiVMhULhULhULhULhVLiVLiVMiWMhVMhVLgUKeSJcSIbRHbRHcRIeUKgWMgXNeVMbTJ_RH[NETG@HA>;;<@AELKQMMRIHLJIMLJMHFIUU[XX_NLQONSVU\VV]TT\WXaWXaUV_osnnodcX_]Q`]R|se®Ѱζ}rih`Zb\Wb]Yb]Zb\Y^XU[VR[VQ]XT^YU`[Wd^ZLFC&"%&') *",#-$.&0'!1("3)#4*#5+$6,%7-&8.':/(;0(<1)=2*>3+?4,@5,A6-B7.C7/D80D90E91F:1G;2G;2H<3I<3I=4J=4J=5K>5K?5L?5L@6L@6MA7MA7NB7NB7NB8NB8OB8OC8OC8OC9OC9PD9PD:PE:PE:QE:QE:QE:RE:RF:SF;TF;TG7/D>5G?6?8/od|~׻vgmZP|nm[P{|rxq{QA5mgcvn~wmTCH8,?3(QA5YE8,#L:/M<0F6+( hcbywunlh`]WMGTJDZSPE=91*&"!  !"# %&)&(,#%( "#%("$'$&)"$'%'+139--1(&% "$ %!&!&!#"!"**/./4#$$$%%)*)+,+-.--.--.-./--/.-/.,.-+.-,..-/.-.--.-,-,+,+*+**++,-,./.021.//:85B>;C?;?;8<8563/# $"'%!/.,231-.-++*,,+,,+++******)))()*(*+*--,./--.--.-./.110343443232/10-.-,-,+,+')(%&&$%$$%%$%$$%$%%$&'&)*(((' (*)*+*)*))+*,..)++&((%''&(()**())())(*)'))&(((*)()('('%'&$&&$%%$%%%&%&&%%&&%'&%''$&%$%%''&))((((&'&#$#"""!""!"!"#""#""#" !!!"!"##"###$####!"" ! !!!"#""$#!##"$$#%%&((%&&#%%%&&%''"#OKHOKIPMKKHEIECGDAEA>GDAHEBJFDMIGMJHNLJOLJMJHIFDFB?EA>B?JGDLIFMJGKGDGD@B?:D@=GDADA>@=:D@=EB>DA>EA=JFBLHEEB@IFCIECEB?B?<@>:DA=JFDOLJOLICA><96C?;LHDNKHNLIPMKOMJMKGKHEEC?=:5:72=;5DB=GE@IGBNMHLLGLLGLLGLKFFE@?>9;:497242.32.31.752530.,*%&&$%%"## !!#$$$%%%&&'(($%%$%%'''()('('"##$$$$%%"##$$$""#""""""!!!%%$"#"##"$$#%%%$%%#$$#$$%%%'(($%%!""$$%&&&"#""""'((*++&''%&&%%%$$#$$$&''%%%##"&&%$$$""!!! """%&%##" ##"%%$%&%'((())$%%###)))./.'(''((,--+--'))"""%&&$%%&'')**%&&&''$%%'((***())#$$#$$'(('('&&& !! ###((((((%%%&&&"""&'&)*),++%$$('&.-,0/..-,**)@;42.*@:3E>7F?8F?8F>6/+&B<5D=6D>6D>7C=6@:3?93A;4A;4?91:4-60*)%!+'#.+&'%!  "! '''%&%$$$"""&'&)))-.-/0/344011...))))*)...343110332! #!110210/.-2203200/.10.653;:8<;8875.-+.-*31.7530.,;85A>;=96A=9C?;IEBLHEPLHRMJRMIQLHQKFPKFVRM\XS]YUXSNTOJRMHQMGPLGSOJXTOXUPXUOXUPWUPTQLROIRNHQNHRPJUSNWUOTRMTQLVRNZVQ\XS]YU^YV\YUZVSZVRZWS_[Wc_[d`[a]Y]YU]ZV\XTZVRYUQXTOVSMWSNVRMYTMmP=pP:nP:mP;kP;iO;gO;eM:bK:`J9^I9\G8YF7XE7VD7UC6TC6SC6SC6RB6RB6RB7RC7RC7RC7RC7RC8SC8SD9TD9TD8TE9TE9TF:TF:TF:TF:TE:TF;TF;UF;UGXJ?YJ?ZK@ZLA[MA\MA\LA[LA[LAZK@XH>UE;UE;UE;UE;UE`MBeQFiUJjWLkXMkXNkYNn[Qq^Sr^Tq]Sp\SmZRmZRmZRn[Ro\Tn\Sm[RlZQiWOfUM`PIWGAA50 "%=:=>1-?85ROOYW[PPVKLQOOU_]dr_Yt^Uv`Vv`VwaWxaXybXycYzcYzcZ{d[{e[|f\}f]|e\|e\}f]}f]}f]}f]}f]~g_}f_}f^|d]{d\{d\zc[zc\xb[u`Xr^Vp[SnZRlXOjWMhULgTLgULhULhVLhVMhVLgULhVLhVLgUKeSJdSJcSIcTJdTJeUKfWMgXNfXNdVLaSJ[NFQD=EA@=>@GHMOOVMLRDCFKJNOMQIGIPOT[ZbSRWPNSVV]XY`TU\VW_Y[dVXalozoqw^]Q^]P`^SxpcӴħx}shnf^ga\e_Zc]Ya[X]XT^YU^YU]WS^XTb]Yd_\`[Xb]Ye`]OIE*"%&()!*",#-%/& 0'!2("3)#4*$5+$6,%8-&9/':0(;0)<1)=2*>3+?4,@5,A6-B6.C7/D8/D90E91F:1G;2G;2H;3I<3I<4I=4J=4J>5K?5L?5L@6M@6MA7MA7MA7NA7NB7NB8NB8NC8OC8OC8OD9OD9PD9PE:PE:QE:QE:QE:RE:RE:SF:SF;TFXJ@ZLA[MB\MC^NC_OD`ODcPDhSEpWH~`NxZHD3( $!'#)%*& .)"1,%50):4,=6/?9082)wg\~|zmŨqZMxjqq'ga^Ӿƹwtqy~wsnB4)qjfz||u`I99-#@2(L;.I8,+"L:/J9-:-$#d_]uomlebbZWUKEYPJ_YVWOLRJFA95-'"!!  "" " !$"$'"#&"#&#%(%(+,/355:88;435-*+)'',*,.-0/.1+*-2289;@246')'()(+,++-,+-,+-,.0./0//10021021-/.,.-.//...-.-,--*++*****)*,+-.-/0/-/.975C?=C@>C@>JGDJGCKGCRMJTOLXSOYTOVQMXSOXTPXSOVRMSNJUQLXTP\XT[WSZVRZVRVSOTPMSPMTPMVROSOLIFC?<:742+)(  %#"87:=B>;C?:7;7462/# "%#.-+00/--,**)**)*+**+*)*)))(''&'(')*)-.-./../../../-00/110221232./.+,+)*)(((%&&$%$"#""#""""""""#"$%$&'&&&% ')(*,+*+**,+,--*,,()*%'(&''(*)())'(('((&((%''&''&'&%&%%&&$&%#%$#$$#$$$%$%%%$%%$&%%&%$%$$%$&&%&'&&'&$%$!"! !!!"!#$##$##$#"#"!""%%%$%%#$#"#""""!"! !   ! #$$$%%!""!##"$$%''%''$%%#%%#%%"#HDBEB?JGEKGEJGDJFCHEAHEAFC@JGDPMKQNLMJHJFDJGFIFCEB?EB?C@=C@:@;7B>:FC@FCAGC@HEAGC@IEBGDAFDAGEAGC@EB>B>:?:6>95?;7?;7GDAMJHMJHJGEHEBGC@GC@FC@EA>>;7951951D@GE@IHCFE@JIEIHCGFAJIDKJEFE@A@;>=7;9486275242.53/9730/,$%%$$$###!!!#$$#$#$%%())$%%#$$&'&&&&'('#$$$$$"##"###$$!""""""## ######&&%%%%$$$!""!""%&&'''(((%&&!""$%%'&&"###$$'))*++'()'((%%%###$%%%&&"""""!%%$$$$""!!! !!!$$$!!! !!!&''***,--)++%&&*++---&&&'((+,+,--+--$$$)***++)**())%&&%%%%&%)))***)))&''$%%&&&%&&!!!%$#%&%'('(((&'&&&&!""$%%***,-,''&+*)10/0/.,,+-,*A;53/*C=5F?8G@8G@8D=50,'D>6C=5D>6E?7C>7?93@:3A;4A:3=7093,4/(# +(#.+''%!  $#")))(('%&%$$#++*,,++,+000344010***'(''('*++/00///343! !! .-,0/.,+)0/-/.,--,10.542986:97753.-+0/-4306521.-741@<9=96B>;C?;IDAKGCNJGQMJRMJRLHRMHSNIVRM[WS]YUZVRYUPZUPZVQXTNWTOZVQYVQWTOSPKSPKVSMVRMVRMVRMXUOYWQWTOWTOYVQZWR\XT`[W^ZV\XT\XTYUQWTOXUP[WR[XR]YU_[W^ZV^[V\XTZVRXTOYTOWTNWSMXTNZVPhM;kL7jM8iM9hM:fM:dL:bK9`J9^I9\G8ZF7XE7VD6UC6SB5RB5RB6QB6QA5PA5PB6PB6PA6QB7QB7QB7QB7RC8RD8RC8SD8SD8SD9SE9SE:SD9SE:SE:TF;TF;TF;TG;TG;TG;TG;SG;SG;SG;SG;SF;SF;SF;SF;SF:SG;THXJ?YK?YK@ZL@[MA\NB\MA\MA\MB[LAYJ?XH>WG=WG=VF\K@`NCbOCaNC]J?[H=VC9UC9WD:ZG<^K@cODfRGhTIiVKjXMjXMlZOo\Qo\Qo[Qo\RmZQlZQm[Sn[So\Tn\Sm[SlZRjXOgVNbQJ[LDQB;5-*3*)A72SNMa^a^]cSSZOOVPPVWYalbcu_Uu`Vv`Vw`WxaWxaXybYzdZzcZ{dZ|e\}f]}f]|e\}e\}f]~f^~g^~f^~g_~g_~g_}f_|e]{e]{e]zd\yc\w`Yt^Vr]Up[SoZRmYPkWNiVMhTLgTKgUKhULhVMhULgULgULgULgUKeTJdTJdTIcTJcTJdTKeVLfXNfXNeWMaTKZMEOE@BAA?@CMMSPPWJINCBEKJNOMRKILKJMVV]VU[ONSUU\YZbWW_TU]XZc[]gjmxtw\\P\\O^]Rqk^txjjcZ`ZTa[Vd_[e_\d^[c]Y_YU_YU_YU^XS\VQ]XSa\Y^ZV\WS`[Wa\XMFB-"#%'()!+",#-%/& 0'!2("3)#4*$6,%7-&8.'9/':0(<1)=2*>2*?3+?4,@5-A5-B6.C7/D8/D90E91F:1G;2G;2H;3H<3I<4I=4J=4K>5K?5L?5L@6M@6MA7MA7MA7NA7NB8NB8NB8NB8OC8OC9OD9OD9PD9PE9PE:QE:QE9QE:QE:RE:RE:SE;SF;UGXJ?YK@ZLA[LA\LB]LB_LBaNBgQDpVH`NbMS>1#!)% *&!,("1,%61*93+5/&IC;}oe|nqlbypk]yswdX#"#ȹ½Źwnxf{jnwfntc?2'c]X{zofz|sn|snwqUA42'I7+F4(:,".#A2'?0&5)!QLJib`e^[^VRXPKYQM_ZX\WUVQOJDAA;8943'$"    !    !#"$&$&)%'+%'*&(,%(+)+0,.2--1..2127016+,/*+,*++)*))*()*))*),--./.-/.-/./0../..0/010242/00-.-,--+,+*,+*,+*+**+***)*+*,-,/00.//:86D@>FB?EB?HDAHD@GC>MHDQMIZUQ_YU^ZUZVRXSOTPKUPKTOKSNIWSNZVRWSOVRNXTPVSOXURSOLSOLVRNUQMROKPLINJFLHDHEAEB?=:81/-&$$  !".-/>=@214%%&211422643=:8C@>KGDSOKWSOUPMRMJTOLSNKSNJTOKXSOYTQUPLVQMUOKQLHQLIVQNUQNPKHNHDPKGKGCKGEIECIECEA>A=;B>;A=;>:8;74841%"!$!-,)..-++*()()*)*+**+***)**)'(''(''((*++,-,,-,--,--,--,+,*--,110..-**)'''%&%$%$$%$"""!!! ! ! !!!!"!#####" %&%'((()())()*))++)++&((&'')*)(*)&('%&&%''%'&$&%#%$#$$$&%%&&$%%$%%#%$$%$%&%$%$$%$$%%$%$$%$&'&&'&'('%&&"#""#"#$#$%$$%$$&%$&%#%$%&&&''&'&$%$#$###"""!!"! !!!"""## "!!""!##$&&&((%''#%%"$$!##?;8A=9A=:D@>JGDMIFPLIQNKNJHKHFLIGJGEGDBDA>A>;B?C@<@=9C@9?;7C?KHEMKHMJGIFCIEAGC?C@<@=8:62?;7B>;C?IFCMJGKIEJHDIGCJHDKJFKIELKGHGCDC>FE@IHCFE@DC>CB=@?:A?:?=8?>:=<8:95:85?>:210##$$$$$%$#$#%''%&&%'''((#$$"#"(((&&&&'&$$$%&%#$$"##$%%#$%!""!"" !"!#$#''&&&&&&&"##!""#$$###%&&&''#$$%%%&&&"##%&&)**(**&(('((&&&##"##"$$$"""!! $$#%%$$##$######$#  &''()),--,--'((*++---&&&)***++,-,-..%&&()),--+,,&''#$$#$$$%%()()**)*)*+*'((&'&%%%%%$#$##$#%%%%%%#$#!!!#$$)**+++%%$))(10/..-)*),+*@:32.*D>7F?8F@8E>7B;42.(E?7C=5C=5D>7D>7A;4A:4B<5@:3<6/82,4/)"+'#.+&(%"  %%$*+*))(''&&'&..-./.(((111455.//''&&'&()(+++...///454#! !$" '%#)&$*('0/-)(&.-+.-+-,+21/874764874652.,*/.,4206411.,20-962:74A=:D@YJ?YK@ZL@[MA\NB]NB\NB]NB\MA[LAZJ@YI?XI?XG>WG=VF_LAbODeRGgTIiWKjXMkYMlZNmZOmZOm[QlZPlZQn\So\So]To]Um[Sl[RjYPhWNdSK_OHYJCN@9A61# (#%QMMb`ba_d]\cVW^RSZRRYTU]a]bs_Vu_Vv`Vw`Vw`Vx`VxaWzcYzbX{cY|e[}f]}f]}f\}e]~f]~g^~g_~g_~g_~g_~g_~f_}f^|e^|f^ze]yc[v`Xs^Vq]Up[RnZQmYOkWNiVMhULgTKgTKgULhULgULgULgTKgUKgULfTKeTJdSIcSJcTJcTJdUKeWMeWMcVL_RIWJBMGD@@BDEIOOUPOUGFJDCFJHLONRNMQKILRQVXW^POUSSYXY`YYaTU\WXa_akknxy{^^T\\P\[OhdXvf~lm~ugibX^XP^YSe`[ic`f`]d_[f`]c]Y`[V`ZUa[V`ZU^XT^YU\WT[UQZTPXSOUOJJB=0'""&'()!+",#-%/& 0'!2("3*#5+$6,%7-&9/':/(;0)<1*=2*>3+?3+@4,A5-B6.B6.C7/D8/E90E91F:1G:2G;2H;3I<3I<4J=4J>4K>5K?5L?5L?6L@6M@6MA7MA7NA7NA8NB8NB8NC8OC9OD9OD9OD9PE9PE:PE9PD9QD9QD9QD9QD:RD:RE:SF;TGWI?XJ?YI?YI?ZI?]J@aLAgPCpVGaNePoSA;0( ,'".)#2-&2-&=6/zsdvit`Ty}{kyrsM@7_ZXɿ½·ƻuq`p_p`qaiYsajZB4)_YV~xukdzpk{so{sppgctkf|wJ9/8+!J8+>/"7) 3'9,";.%.%>97`ZV\TPTLHXQMUNKYUTXUUROOEAA;76854534'%&  !!!   !! "$'"$&!#%#%($'*$'*#$'$%(&&*/-0100'(&**)*+*+,+++*,,+,,,--,././0/.0//0/.0/-.-././0/./.-/.,-,*,+*,+*,++,+,-,)**)*)+,+.//-..:85FB@FB?FB?JFBOKGLGCLGCQLI[VR\XS]XT]YU[WSVQMWRMXSNRMHRNIWSNTPKPLHRNJRNIURMQNIPMHQMISOKTQMSPLQNJOKGRNJPMIPMIPLHOKHJHE@><20/$##     !&$$87:769  0./NKI[VSWSORMIQLHUPLVQNWROWRNTPLSMJUOLUPMSNJRMITOKUOLUPMZTQZUQVROTOLUPNWRPSNKLFBLGDHD@HDAFC@FC@A>;>:7?<9?<9=97<85:63&# # -,)--,*+*(('((')))))())('(&%&%&'%&'&()(()(()(++*,,+**)%%$&&$,,+,,+))(%&%"#""""#$#"#"!!   ! !! ! !!!!!! '((&''&''(('&''&(((**())'(()*))*)'((%&&%&&$&&#%%#$$#$$$%%%&&$%%$%%$&%$%$%&%#%$#%$%&%%&%%&%&'&'('(('&'&$%$$%$$&%%&%$%%$&$$&%$%%$%%%&%&'&&&%%%$$%$#$#"##"#"!"! !!! !!!""#$$&('&('%&&"%$#%%@<9GDAB?<>;8GDAOMKTQOURPTQOPMKKIGGDADA>B>DA=GDAKHEJFCLIFMJHIFCFC>EB>C@IEBJGDPMKRPMQNLOMJOMJLIFIEAD@=GC@GDAB>;GCAMJGQNKQNKNJGGC@B>;FB>HD@HD@EA=?;7=95B?EE?FFAHHCFFABA;A?:A?:CA<9=<9?>;110$%%&''%&%###%&&%&&$%%&''$%%###&'&$%%%%$"##%%%$%%$%%%&&%&'"##"## #$#))(''''''&&&$%%$%%#$$$$$%&&#$$%%%####$#%&&)**)**&'''((&''#$###"$$#"""##"%%$''&'&&'&%$$#"#"  $$$(((,,,/00)**'((+,,(((*++)**+,+-.-'''&''*++)**%&&$%%$%%#$$%&%())'''%&%''''(($%$ ! $%$###"#"$$$'('&'&$%%%&&)))+,+&&%((',+*++*'''*)'?932.*D=6E?7E?7D=6A:33/*E?7C<5B<5D>7D>7B<5A:4@:4>81<6/93-5/)#!,($-)%'$!  ('&+,,**)(('(('-.-./.(((011344,,,$$$%%%)))+,,-..111777%$"!! )'%21/)(&-,*0/-10.541:96:97;:7753.-+/.,21/31//,+1/,;73<85A>:GB?PKGPKGQLHUPMVRNUPLTOKYTO[VR^ZV`[X^ZVYTPTOJRNIVSMZVQ\XS]ZU]ZU[XSXUOWTOURLTQKVSMVSMVTNWTOYVP]YU]YU[WS^YVd_[fa\a\XYUPWRNURMUQLVRMXTOYUQWSOWTOYVQXUPVRMUQLXTO[WR]YTWTO\G:aD1aF3aG5`H6`H7_H7]G7[G7ZF7XE6VD6TC6SB5RA5QA5PA5OA5O@5O@5N@5N@5N@5N@6N@6N@6OA6O@6PA7PA6PB7PB7QC8QC8RD9RD9RD9RD9RD:RD9RD9RD9SE:SF;SF;SF;SG;SG;SF;SF;RE:RF;SF;SF;RE:SE:SF;SF;TG;TGXI>YJ@ZK@[MA\NB]OB]OC]OC]NB]MB[LA[KAZJ@YI?XH>VF=VE`NCcPD_MBYG5P>4Q>5TB8WE;[I>_LAbODeRGgUJiXLiXLiXLjXMkYNlZPlYPm[Qo]So]So]So]Tm\Sl[RjZQhXOeVMbSK\NFSE>L>87.*  ;:3+?4,@4,A5-B6.B7.C7/D80E90E91F:1G:2G;2H<3I<3I=4J=4J>4K>5K>5L?5L?6L@6M@6MA7MA7MA7NB8NB8NB8NC8OD9OD9OD9PD9PD9PE9PD9PD9PD9PD9QD9QD9QD:RE:SF:SF;TGaK@hPBrWFaMnUjQR@3##)'#/*$>7/}İpa}mfSJvfrrtwiug ~źwm}gWkZzdUjZ|fVs]Nu^OJ:/QKHof`pgbh_Zd\Wngdyrowok|}ysjeH909+ =."3',"-"5) :.$(!$-)&LEAKD?IB;FB>NJFPKHSNJUPMYTPVQLVQLXTOYTPXSOYTPYTOWRNRMHQLGQMHOKFQLHPLGPLGTPLTPLNIELHDUQMZVRVROQMJRNJOKGMIEJGCLIFROLTQNRNKLIGKHFDB@654('' !/.0558'')##$;98QMJXTPYUQWRNRMISNJVQMWRNVQMUPLRMIQKGUOLXSPVPMRMIPJFQLHSMJUPLUQNTPMSNKQLJSOLTOLPKGPKHOKHHDAB?;>:7<86=96>:7;85<84;74)&"",+(..-,-,)*)&'&'(''('()('('%%%%&%&'&'('&'&%&%'(&))(''& !!''&(('&'&%%$"#"!"!""!"#!!!   !!   &''')(%&&'('&''%''')))**())())''''('&''%&&#$$"$$#$$$%$#%$$&%$&&$%%$%%$%%%'&%'&%&%&'&&'''(''(')*)()(&''%&%%&%&('%&&$%%$%$$&%$%%$%$#$$#$#$$##$#$$$%&%$%%$%$#$$"##!"" !!!"""$#&(''(((((%'&$&&EB>IEBGDAD@>FB@IECNKIQNMQNMOMKJHEEB?EB?IFCIFCKHEKIFMJGLIFIFBJGDNLINKHLIFLIFGDAA=:EA=D@:HDAFC@HDAKHEIFDKHEOLINLIIFCDA=B?9A?:CA6E?7E>6?810,(D=6C<5C=6D>7D>7B<5@:4=82<60;5.93-3.(" +(#,($&#   ('&)**(((''&))(-.-...(((/00455000'''&&%**)*+**++011777'%#!$" #! *(&642+*(-,*0/-10.320986>=;><:541.-*/.,32/0.,,+).,*:63<95B>;KGCUQNXSPXTPYURXTQXSPXSNWRNWRNYUQ[WS\WS\WSZVQXTOYUP[WR\XSZVQZWR[WRVSNSPKSPITQJWTNYVP[XRZXRYUP[WR_[X_[X^YUb]Yd_Z`[VXSNQMHNKERNIURMYUQ[XSYUPWTNZVQ\XS[WR[WR^ZUb^Y`]XZWRYG;Z>+\B1]D2]E4\F5\F6ZF6YE6WD5VC5TC5SB5QA5P@4P@5O@5N@5N@5N@5N@5M@5M@5NA6N@6N@6N@6N@6OA6OA6PA7PA7PB7PB8QC8QD9QD9RD9RD9QC8QB8RC9RD:SF:SF:SF;SF;SF;SF;RF;RE:RE:RF;RF;RF;RF;RF;SF;SF;TGWH>XJ?ZK@[MA\NB]OB]OC^OD^OC]NC]MB\LB[JAZI?YI?WF=VE^LAbPEeTHgVJgVJhWKhWLjXMkYNkYOm[Qn]Rn\Rm[Rm\Sm\RkZQjYPhXOfWOcTL^OGVHAN@:A5/'$'" #;>CSU]WX`WW_WW_ST[TU\Z[embas^Tu_VwaWxbXxaWyaW{eZ|e[|e[|dZ|dZ}e\~f\~f]~f]~g^~g_~g^~f^~g_~g_~g`}f^{e]ze]zd\xc[vaYt_Wq]Up\SnZQkWOiVMhULhULgTKgUKgULhULhVLhVMhVLhULgULfUKeTKdSJbRIaRHbSIcTJcUKbUK_RIYLDNFA@@@BCHPQXTU\LKOA?AFDFIGJNMQSRWRQUOMQTSYWW]RQWUU\WX`VV^QRZ]_hlozsu{]^O^_Q[\NYXL]ZRb_W`\T^[S]YRa]Wd^Z`ZVa\Xa\Xb\Xf`\gb]gb]e`[c^Yb]Yc^Z`\Wa[We`\e`\_[WZUP\WRZUQUPM;41%%'(*!+",#.%/& 1'!2)"4*#5,%7-&8.':/(;0)<1*=2*>3+?3+?4,@5,A5-B6.B7.C7/D80E90E:1F:1G:2G;2H;3I<3I=4J=4J>4K>5K>5L?5L?5L@6M@6MA7MA7NB7NB8NB8NC8OC9OD9OD9OD9PD9PD9PD9PD9PD9PD9PD9PD9QD9QE:RE:RE:RE:SF;SE;SE;SD:SD:TD:VD:XE;\GjQAuYFbLqVy[jP[F5LB:}y}lykj^Wv|m}mysewdX1/.ɾriu`P|fVs^Oq\MzdTlXIhSEJ:/82.YPI]UOZQK\UQf`]rliohe|z|yridf\VD7.1%1&0%(%-#3( *!&"<51D=:B;7C>;=98<;=79<68<014.02014-.0$## "!! %!"3.1545...,-,+-,*+***)))(((''('**),,+,,,-..010/0//0/./-,-,+,+-.-./.-.-+,+)*)()(()(..-./--.-..-010/0/753EA>B>;A=9EA=NIEPKGSOJTOKUQLVQLYTOYTOXSNZUP^YU]XS^YUZUPVQLTOJUPKUPKTOJRNJSOKVROUQMQLHUQLYVRWTPQNJNJFKHCLHDIFBIFBLIEMIFMIFPMJTQNYVSYVSXUSPNLECA10.""!*)*113'')##$$$$;98MJGSOKRMIQMHTOKVQMTOKVQMXSOXSOWRNTOKSNIQLHUOLWROXROWROTOLUPMQKHRLISNKSNKUPMUPMRMITPMSNJQLIPLIHDAA=:@<9>:7>;8<85>;7<85;74<86+(%!+*'..-,,+++*))(((((('()((('%%$$%$$%$%%$%&%%&%%%$&&%$%#$$#$%$#$#$$###"""!!"!!"!!! !     "#"())&''&'''((&'''(((*))**(((&''&'&&''%'&$%%#$$$%$%&%%&&%'&%''%'&%%%$%%&'&&('%'&&'&&'&&('&'&()'(('&'&%&%$%$&''&''%&&%&%$&%$%$$$$#$#"#""#"""!##"$&%%&%$%$$%$#%$"$$ "! !!"##%&&&'&((('('&''IFCIFCJGDLHEOKHOKHLIGJGEKGEOLJNKIKHFMJHMKHHEBGDAIFBMJFJFCGC?IEBJHFLJGNKHNKHJGDHD@MJFLIEEA=EA=FB>FB>IEBIFBHEAJGCJGDJGCKHDJGCJGDOLINKILJGFC@B>;C?B@;EC>ED@CA>BA>;:7541641741(((#$$$%%%&%#$$$%%%&&%&&'(($%%"""!! """!""#$$$%%&'''(('()$%%%&&$%% !!$%%''&&'&'('&&&'''(()$$$"""%%%!""&&&'('())%&&#$$%&&$%%"##!"""""#$#"""##"%$$%%$''&##" ! !!""""#"!!!!!!'((&'&,--,--&((&&&())'(()**'(('('&''((('''(((%%%"##%&%'('''')**'((%&%&&&())())%%%'''(('&%$!! $%$()('''***'((%&&*++()(((''&&**)''(0-*C<550+C<5D>6F?7F?7=701-(C<5C=6D>6D>7D>7B<6@:3<71=70;5.93,2-(" +(#+($$!   '&%())(('(('**)---,,,(((...233444--,(('**))))(((/00566'&$" %#"%#"$#!531.-+0/-10.21/431975>=:=<9652/-+,+)10..-+*('-,*;84A=:EA>KGDOKHSOLUQNTPMSOLVRNYTPYUQWRNTOKTOKUPLZVR^ZV]YT]YT[WSYUPVRLVRLZVQZVQVSMUQKURKVSMZWQ\ZU[YTUSMUQL[VS^ZV`[X_ZV[VQVQLUPKSOJQNHSOJTQLWSOYUQXUPWSNVQL]YT^ZU]YS^[Vb_Zb_[`]XZMET9'W>.X@0YB2YC4XD4XD5WD5UC5TB4SB5RA4P@4O?4O?4N?4M?4M?4M@5M@5M@5M@5M@6M@6MA6NA6N@6NA6OA6OB7PB7PB7PB7PC8QD9QD9QD9QD9QB8QC8QD9RD9RE:RE:RE:RF;RF;RF;RF;RF;RF;RF;RF;RF;RF;RF;SF;SF;TGYJ?ZL@[MA\NB]OC^PD^PD^OD^NC]MC\KA[J@ZI?WF=VF5RA7VD9ZH=_MBcQFdSHeTHgVJgVKiWLjYMkYOm[PlZPlZPlZPlZPkZQiXOhWNhWNgWOdUL_PHYJCQC=B5/&%'" %%(+DFMUW_VV^UV]UU]UU]Z\eicfr]St_UvaWwbXxaWybX{e[|f[|f\|eZ|dZ}f\~g]~g]~g^~g_h_h_g_~g_~g`~g`}g_|f^ze]zd\xc[vaZt`Wr^Vp\TnZQkWOiVMhULgTKgTLgULgULhULhVLhVMiVMhULgUKfTJeTJdRIbRHaQGaRHbSIbTJ`SJ\OFUIALGE>>AIJOQRYQRXJILDBDGDFHFILKNRRVTSXPNRQOSWV\SRXSSYVW_VW_RSZWYbnp{rtz\]M\]NXZKVUIXUL[XP\XP[XPZUN[VP]XS^YT^XT]WS]WSb\Xe`[_ZU_YTc]Xb]Ya[W]XT_ZVd_[_[WXTPUPLWRNVQNYUQXSPC=9)$'(*!+",#.%/& 1'!2)"4*$6,%7-&9.':0(;1)<1*=2*>3+?3+@4,@5-A6-B6.B7.C8/D80E90E91F:1G;2G;2H<3I<3I=4J=4J>4K>4K?5K?5L@6L@6MA6MA7MB7NB7NB8NC8NC9OD9OD9OD9OD9PD9PD9PD9PD9PD9PD9PD9PD9PD9QD9QD9QD9QD9QC9QC9QB9QB8RA8SB8UB9XD9^H;eM>nTB{]HiPx[enƷu{nZP}stzk{j|nsug]LBYUSƽviagSCq\LeRDUD7fSDdQCcOAJ;//*&SJDQJDRJESKGSMId][icaupnzus{usxuvolja\i`ZE;4&)!*!%#''( #0*'82/40.310223/03/15.15+-1/26149+-0#"!  !!!% +%$1+*2,,0+,0,-;7::8:..-./../.,,,+++)*)(('&'&&'&()'***+,+,-,///00//0//0//0/..-,-,-.--/.,,,)**'((''',-,/0/110110111/00210D?:B>:D?;KFBNIDPKGUPKUPKUPKXSNYTPXSOYUP]XT^YU\WRZUPWRMUPKVQLUPKUQMUQNSOKQMISOLUQMUQMTPLQMINKGKGCHD@JGCJGCHEALIFPLINJGSPMTQNUROWTQZWU\YV\YVXURSPMKHFA?=,++%$&.-/##% ! "! "!"'&'10/B?=MJGTQNVROQMJRNJUPLVRMVRMUPKUPKVQMVQMUPLTOKRMHRLHSNKTOLXSPZURXSPUPMOJFNIEPKGRMJSOLOJFJFBOJGQLHRMJQMJIEBFB?EA=C?:7=:6=96=971.+ +)&00/*+))*())(()((('''&''&#$#""!$$#$%$%%%%&%$$$#$"##"""!#$#######"#""#"!"!""!!" !"!""!  ""!""!   (**'))&(('))'))'((()))**'((&''%&%%&&%'&$%%"$$#%$%('&((&(($&%%&%$%%$%$&'&'((&''%&&&'&&(''('()(((('('&'&$$#$%$&''&'&&'&%&%#$$"#""#"!"!!" ! !"!$%$%&%$%%$$$#$$"$# !!!! !!#$#$%$'('&''&''HECIFDLIFMIGNJHLIFJFDFCAGDALIFLIGIGDIFCJGDIFCIFCKGDPMJKHEJGDNLIMKHNKIQMKQNKPMJPLIROKPLIIFB>;7:62?;8FC?LIFKHEGDAGDAJFCKGDKGDJGCOKGJFCFCAB?;EA=KHDJGDC?9BA=CB?A?<@?<98632/20-530''&$$$%%%&'&$%%%&%'((&''&''#$$#$$!!! !""!!!$%%%&&&'''((()*%&&&&'$%& !!$$$'(''''((('''&''%&&!!" !!!#$$#$$%&&&'''()$%%"###$$"## !! #$#"#"##"$$###"&&&%%$"#""##$$$#$#!!!!""())$%%)***,+&''%&&*+*)++)**%&&&''())%&&!""%%%###"##&&&)))())())&''$%%!"!$$$&'&$$$'(''('###"#"'(''((---*++&''***()(''&&%%**)***3/,D<561,B<5D=6E>7D>6=704/*B<5C>7C=6C=6E@9C=6@93=71<60<6/:4-3.(,($+($$!  $"!%#!)('*++*+*+++++*--,,-,)))--,121566432,+***)((('''./.555)'&!$" $" " 631/-+10-320653764<:8><:=<98630.,+*'0/--,*)(&+*(963?<9D@=MHEJEBJEALHDPKGRMITOJSMIPKGOKFQLHVRM[VQ]YU^ZV[WS]YU]YT\YSZWQYUOXUOWTNURLSPIQNGPMGQNHUSMWVPSPKSOIVQMWSNXTPTOKOJEMHBPKESOJTPKTPKTQLVRMYVQ[WS\XT\XS]YT`\W^[V^ZV_[W`]X[YTUMGO5%R:*T=-U?0UA2VB3UB4UB4SB4RA4QA4PA4O@4N?3N?4M?4L>3L>3L?4L@5L?5L?5L@5M@6M@6MA6M@6N@6NA7OA7OA7OB7OB7PB7QD9QD9QE9QD9QC8QB8QC8QD9RE:RE:RE:RE:RF;RE;RF;SF;SF;RF;RF;SG;SF;SF;SF;SF;TGQ>5H7.D3+C2*C4+E6-H8/J;1M=3R@6VE;[J?_NCaQEcRFdTHfUJhWKiWLjXMjXMjXNjXNkYOjXOiWNhWMgVMgWNgWOeUMaRJ\MFTG@G:4+)*#"' 148LNUTU\TT[VV^VV_\]fbain^Xs]Tu_VwaWxbXycY{eZ|f[|f\|eZ}e[~g]h^h^~g^~g^~g^h_h_g_~g_~h`~g_|f^{e]zd\xc[vaZt_Wr^Vp\TmZQkWOiVMhULgTKgUKgULgULhULhVLhVMiVMhVLgUKfTJeSIcRHbRHaQG`QG`RH`RI^QHXLCRHCHFFBCGPPWRSZMMSGEIDBDFCEGEHJHKPOSTSXPOSNLOTSXTTYQPVTU]UV^ST\SU]lnxuw_`R^_P]_P\\OZVN\YQ[WOWSKWSKZUO[VQZUPYSO[UQ_YTb\Wb]X\VP]VPd^Yfa]c^Y]XS[UQ^YUYTPWQLVQLVQMWRNXTPYTPXSOKEA-"$') *!+",#.%/& 1(!3)"4+$6,%8.&9/':0(;1)<2*=2*>3+?4,@5,A5-A6-B6.C7.C8/D80E90F91F:1G;2H;2H<3I<3I=4J=4J>4K>5K?5L@5L@6L@6MA7MB7NB7NB8NC8NC8OC8OD8OD8OD9OD9OD9OD9PD9PD9PD9PD9PD9PD9PD9PD9PC8PC8OB7OA7OA7O@6P@6P?6R@6VB7[E9bJ;kR@x\FhNvXhxuf\Vr|m}msfykqb=0(vqoy|wuje^JQA4+&!KC>NFALE@KD>JC>UOL]XWd_^ojhohengci`\_UOd\WLC>"#!#$( "!% )%$&$#))*+,.+,.,.1-/3,.204926;-/3"!"!"$#(%$,*+858<;=...+,+-..-..,-,*+*)*)))('(''('()(*+*,,+./--/-/0/110120332121./-..--.-,-,*+*(*)%&&'''*+*00/34323211111/GA=IC?FA9KD?OIDQJEUOJUOJXRMYSN[UP[UP\VP\WQ\VQWQKWRLXSNZUP[VQZUPYUPXTPVSOOLHMIESOKTQMQMJKGCGC?GD@HEAIFBHD@IFCROLVTQURORNKQNKROLUSPWTRYVSWSPURNWTQZWT]ZWYVTQOMDA?0., ''(;88KGDKHELIFIEBFB?D@=C@D?:B>:?<9>:7@<9@<9?;92/,+)&332*+*))(()()*)))(&'&&'%%%$""!$$#%%$$%$%&%###!"!!"!!! !!""!$%$$$$#$##$#$$$#$#$%$$%#$$###""#! ! !! !" !!   (**'))'))(*)()*())())()(()((*)'((')(&((&((%'&%''&(''((&('$%%$%%%&%%&%&'&&('&'&&'''((()(()()))()())('('$$#"##$&%%&&%&&%&%#$$!"! !!!! !" !! "#"$%$$&%$%%$%$#$$"$# "!  ! "$#$&%'('())&((MIGKHEJGEKHFLIGJGFHECFC@D@=GC?HEBIFDJGDLIFIFDHEBJFCLIFPMJQOLSQNQNLPMJNJGNJFMIEOJFNJFNJFNJGFC@DA=IFCJFCGDAIFCEA>A=:FB?HDAD@=A=9GB>JFBHDAD@=FC?KHDKHEIFCD@=C?;C?;FB=IE@GB>HD?LGBLIDIGCFD@B@;<:5@>9BA=A@HFAFE@;:6750983;:6<;8=<975242/31-1/,$$$$%%$%%$%$#$$$%%&''&&&%&&"##$$$ !! ""!"""""""##&&&())())$$%%&&%&&"##%&%(((&'&((''''%&&$$$ !! "##"##$$$%&&'(('(('((%&&#$$ "#""#"%$$&&%&&%&&&&&%"#""###$$$$$!"!!"!&''$%%%&&'(('(($%%'('*++)**$%%'((*++&''"##%&%"##!""%&&)*)()(&''%&&%&&$##""!"## ! $%%&&&""" $$$(((())+,,())())-.-,,,++*,*)**))**40-B;4;50C=6B<5C=5C<5=7072,B<5D>7B<6B<6F@9B<5@:3<60;5.<6/:4-3.(+'#+($%" " #! (''+,,++*--,**)++*-.-------011565543-,+)))&'&%&%,-,454&&%5300.,10-541986865;:8>=;=<9741/-+*)&0/-,+)*)',+*852?;8B>;LHDLGDLGCLGCPKGUPLVPLQKGPKFQLHUQL[WR`[Wb^Za]Y]XT\YT_[V_\W\YSZWQZVPYUOZVOXUNXTNVSMTQJTRLUSMSQKTPKTOKQLGPLGNIDMHCNIDRMHVRMXTOWTOVSNVRNZWR^ZVa]Y_[W[WRYVQWTOVSNVSN[WRZWRUOHH/"L5'O9+Q<.R>0S?1S@3RA3RA3Q@3P?3O?3N?3M>3M>3L>4K>3K>3K?4K?4K?4K?4L@5L@5L@6M@6M@6M@6N@6NA7OA6OA7OA7OA7PC8QE:QE:QD9QC8QC8QC8QD9RD:RE:RE:RE:RE:RE:RF;RF;RF;RE:RF:SF;SG;SF;SF;SGYJ?ZJ?[L@\MA]OC^PD^OD^OC^OD^NC]LB\KAZI?XG=XG=XH>UD:SC9VF;VC9G5-A0(>.'>/'@1(A3*C5+F7.I:0N>4RB8WG<[K@^NB`OCbQEdTHfUIgVJhVKhVKiWLiXMiWMiWMgVLgVLgWMgWMgWNeVMbSK^PHXJCM?82--"%)#&)>@EQRYTU\WX`[\e\\eXZbc^cq]Vs]Su`WwbXycYzdY{eZ|f[|eZ}f[~g]h]h^~g^~g^~g^g_h_g_~g_~g_~g_}f^|f]zd\yc\vaZt_Wr^Vo[SmYPkXOjVMhULgTKgTKgUKgULgULgULhVLhVLhVLgUKfTJdRIcRIbRHaQG`QG_QG^PG[NFUIAKEB@@BJKQST[QQXJINGEIDBDECEGEHIGKMLPSSXRQVNLPPNRTSXQPVRSYTU^TU]RS[fisux`bV^`Q_aS^^R^ZR^ZSYUNXTKWRKWRLYSNYTO\VR^XT_YUa\Wga\ib]ib]hb^d_[^YU]XS]WS[VQYTN[UP[VQZUP]WS\XS[WS[WR]XSSLH5-)$') *!+",#.%/& 1(!3)#5+$6,%8.&9/':0(;1)<2*=2*>3+?4,@5,A6-A6-B7.C7/D8/D80E90F:1F:1G;2G;2H<3I<3I=4J=4J>4K?5K@5L@6LA6MA6MB7MB7NB8NC8NC8NC8NC8OC8OD9OD9OD9OD9OD9OD9PC8PC8OC9OD9OD9OC8OC8OB7NA7N@6N?5N?5N>4O>4Q?4T@5YD7bJ:lR@z]GkPxZv}m~fWtib{pwgnwbUt^QnYL) |yrkyojZG8\K2H8.M<1SA4TB4M>0(#A;7JC>HA9D?:C>9FAIE@MHCMIDMIDPKFOKFOKFNJEMIEKGBNIEPLGPLHQMISOKSOKPMIROLVSOTPLROKPLIOLGMIEJGCKHEJGCFB?EA>LIFTROURPROLLHELIFKHEPMJURPTQNWTPVSOXURXURXTQXURZWT]YVZVQNJF@=;0/.$$# $$%0//EB?QLISOKUQLWRNTPLQMIPKGOJFPLHSOKPLIRNJTPMQMJPLHQMJSPLSOKRNJTPLVQMWRMWRNUPLSNISNITOJWQLWQMTOJTOKVQNVQNVQNTOLRLHOJFNIEMHEQLIOJFMIENJFLGCID@KGCLHDIDAFB>C?;8@=:B>:GC?JFCNJFNJFNJGOLIMJGKHFJGDMJGMJFLIEHDAFB>IFCIFCA=:>95C?:GB?LHEGC@B>:GB>HD@JFCNKGNJFJFBA=9HC?LHCIEAEB=C@:><7@?:ED@GFBCC>@?:?=8;9565/10*0.*32.:85<;954142/641420#$#$$$#$$"##"""$%%$%%#$$$$$#$$"""!!!##""""!""!"!$$$''(())$%%'((%%&$%%%&&&''$%%&&%%%$&&&'''!!"  !!###%%%'((()))**())%&&%&&"""#$$"""%&%''&''&'''%%$!!!###$$$###"""!"!%&%"#####)**-//&((&'&+,,-..)**())())'(("#$"##"##!!"#$$'(''''$%%"##$$$''&$##""" ! %&%((($$$!"!&&&(((())+,,''')*).//---,,+.-,-,++++73/A:3;60E>6C=6B;4@9283-72-C=6F@9D>7C=6E?8B<5@93;5/:4-;5.93-1,'+'"*&#$!  #!&%%---.-,//.++*++*...-..,,,00034310/)('''&&&%%%%*+*343&%$  20-.,*.-+320986764986:9776430..,**)'31//.,,+)/.,852@<8A=:HDAJFBKFCLHDNIFRNJSNJRMIUPLWRNYUQ[WS\XT^ZW^ZV]YU]YU`\X`\W]ZT^[T_\V_\V^ZT]ZT][U^\V][TYWQXVOZWQ[WR\XSYTOXTOUPKTPJVRMUQLVSMWTOURMUQLURLWSN\WS_\W_[W[XSXTOWSMXTNZUP^YU^[V\YSF2)F0#J6(M9+O<.P=0P>1P?2P@3O?3N>2N?3M?3L>3L>3K=3K=3K=3K>4K?4K?4K>4K?5K?5L@5L@6M@6M@6M@6NA7OA7OB7OB7OA7PC9QE:QE:QD9QD9QD9QD9QD9QD9RE:RE:RE:RE:RD:RE:RF;RF;RF:RF:SG;SG;SG;SG;SF;SF;TF;TF;UGXI>YI>ZK@\MA]NB^PD^PD^OD^OD^OD]MC\LB[KAYI?XH>XH>VF<30&)-&$)!148KLRVW^YZbabkYYaSSZVW_g]_q\St_VvaWxbXycYzdZ{eZ|e[}f\}f\~g]h^h^h^h^~g^~g_~g_~g_~g_~g_}g_|f^zd\yc[vaZt_Wq]Uo[SlYPkXOjVMiULgUKgTKgULgULgUKgUKgVLgULgUKfTKeTJeSJcSIbRHaQH_QG^PF\OFXLCQGADBA:;>NOVST[OOUGGKGFICACC@BFDFHGJJIMPOTQQVONRNMQSRWRQWPPVTU]UV_RS\cfouwceZ_aSacU]]Q]YQ[XQWTLUQIUQJTOIWQMYTP]WS^XT]XSa\Wje`lhckfbid`d_Z_YT`ZUc^Yd^Yb]Xa\Wa\W_ZU^YUVRMUPKYSOa\Xb^ZWSO<52$') *!+",#.%0& 1(!3)#5+$6,%8.&9/':0(;1)<2*>3+>4+?5,@5-A6-B7.B7.C8/D80D90E90F:1F:2G;2G;2H<3I<3I=4J>4J?5K?5K@6LA6LA6MB7MB7NB7NC8NC8NC8NC8NC9OC8OD8OD9OD9OD8OD8OC8OC8OC8OD9OD9OC8OC8NA7NA6M@5M?5M>4M=3N=3P>3T@4ZE7dL;qVBdLoTjyltcdRG~ndw{jp`{i^LAdPDiTH4-)z{u}rl|ywzqmZH:K<0>0'M<0K;/M=0J:-D6*+$83/D>9B<8?:6941:53@;8KFDYTRZTQUOLVOMSLIOGC?61*$  !! !!!# $$%''()*++,.)*,)+-,.225;37<.15)*.$%' !"$!"$"#%  !!!!! ! %%&$#%*)+.-.++++,*,-+//./0/-..-.--.-+-+*+**+*--,,-,,,,,-,--,-.--.--.--.-,-,./-00/./.-.--.-+,+&(&%'&'('&&&()(+,*00/232232//.//-11/331564675786997897786898::9;<;;<:;<:<=;;<;887786998:<:=><>?=>?=AA?QNJURNVSOSPLMIELHDPLITQMUQOQNKLIEIEBKHETQOTQNSPMPLIMJGMJGPMKUSPTQOTPMQMJTQNWTQTQMROKSOLWSOWSOSOKTPMSPMQMJLHD@=:632-,+(''%%%%$%'&'+**310=:8IEBNJFQLHQLHNJFOJFQMIQMJQMIOJFOJFPKGQMIQMIUQNUQNTPLUQMRNKRNKQMIOKGPKGTOJWRNWRNXSOUPKSMHUPKVPKVPLWRNWRNWROUPMSNKUPNTOKPKGOJFPKGQLIPKHNIFQLHNIEJEALGDLGDHDAEA>B>:8=:7?<:<9730-%#110)*)&'%&'%&'&'('(('(('()(((''('''''(''''&'&%&%$%$$%$%&%&&%$$#""!##"$%$$%$$$##$#$%%%&%%%$"#"!"!!! ""!!"! (**)++)++)+*),++--,--*++(*)())())')(&((&('%&&%'&$&&%'&$&&%&&&(''((&''&''%'''('()(((('''%&%%&%%&%()''('#$#!"!!"!"##$%%%&&$%$!"! ! "##$%%$%%#$#"$#$%$%&&&''$%$#$##$#!""!""$&%'((')()**(*)MJGMKHKGEJGEIFCJGDLIFLIGIFDFC@IFCKGEIEBEA>C@=IFDKIFLIFOLJPNKOMKLIGEA>:63840>96C?:6?;7EA:ED@IHDBA:?>986143-42-43.64198566321.31.641430###%%%###"#"###%&&$%%#$$%&&$%% !!##"$$$#$$!!!!!!###%&&))*%%%&'(#$$#$$%%%%&&$$$$%$"##&''')) !! !!!! !!$%%%&&&'''(('((&''$%%%&&###"#"#$#&''$%$'(()))())'''%&%""!$$$&&&$%$""""""'(($%$"##)**-//$&&$%$)**+-,)++&'''('())#$$ !""#$$'((((($%%#$$%&&'('&&%$##&&&)*)&''"""'('((()))+,,&&&()(,--+++**),++..,,++94/?81<71F?7D>6A:3?9261+94.E>7GA9D>7C=6D?8A;4>82:5/:4-:4.82,0+& *&")%"$!!$#"+,+,,,+++''')*)---+,++++010454110)((&&%%%%#$#'('122&&%  0.,,+(+*(/.,53243176565342020./-++*(21/0/--,*.-+530=96=96D@=JFCMHFKGDLHEPKGPKGQLHVRMZUQXSOUPLVRNZVRZUQYUPZWR^ZU_\V_\V_\W`]W^[U]ZS[XR[XR]ZU\ZTYWQZXQ]ZUa]Yc_[_ZVZVRVRMUQKYUPWSNVSNWTOURMURLVRMWSNWTP[XT\YT^[V]ZUXUPURLYUP_[Wb^[`\XI;5?)E1%H5)K9,M;.M<0N=1N>2M?2M>2L>2L>3L>3K=3K=3J<2J<3J>4J>4K>4K>4K?4K?4L@5L@6L@5M?5M@6NA7OB7OB8OB7OB8PD9QE:QE:QE:QD:QE:QD9QC9QC8QD9RE:RE:RE:RD9RD:RF;SG;SF;SF;SG;SG;SG;TG;SF;TG;TF;TF;UFXJ?YJ?ZJ?[L@\MA^OC^PD^PD_PD^OD^MC]LB[KAZI?XH>XH>XH>UE;UE:B3+5(!6(!6)"7*#8+#:-%<.&?1(B4+F8.K=3PB7UF;XI=[K@]MA`OCbQFcRFcRGeTIfUJfUJeTIeTIeTJeTJfUKfVLfULfVMdUL`QI\NGVHBE93+,.(*/""'*-1CEJVW_]_gabkSSZQQWSSZWW_j^]s^Ut_VwbXxcYycYzdZ|f[|f[|e[}f\~g]~g]~g^~g^~g^~g^~g^~g_~g_}g_}g^|f^zd\yc[wbZt_Wr]Uo[RkXPkXOjWNiVLhUKgUKhULgULgUKgUKgUKgUKgTKfTJeTJeSJcSIbRHaQG_QG]PF[NETH@LEB>>?@AEOPWOPVGFJHGKHGKDCFB@AECEIGJJJMONSRRXRRWONSPPUSRXPPVST\VW`SU^`bkvxgjb`cUadV^_T^[S[XPYUNUQIUQKWRM[VR_ZV`ZW`[W_YUa[Wfa]c_Zb]Xd^Zb\Xb]Xe`[id`hd_gc^gb^fa]a\X]XS[UQ[VQ\VR`[Wa]Zb^[]YVC=:%&)*!+",#.%0& 1(!3)#5+$6,%8.&9/':0(<1)=2*>3+?4,@5,A6-A6.B7.C8/C8/D90E90E90F:1F:2G;2G;2H<3I=4I>4J?5K?5K@5L@6LA6LA6MB7MB7MB7NB8NC8NC8NC8NC8NC8OC8OC8OC8OD8OD8OC8OC8OC8OC8OC8NB7NA7MA6M@5L?5L>3L=3M=2P>3UB5^H8iQ>y^GjOy`w{ǨvkZRE1I9-G8,D5)A4',$0+'>95=84;6272.50-831EBBFDDGDCJEDPKKNJIE@?:520,+!! !""$$%)*,+,.+,/**,()++-104915:.27(+.%&)#$'"#%##&!!#!"% !# #$'%')(*-%&)!#####$ #'%%.-/,+-+*+''&''%+,+..-//../.-.---,-.-+,,*++*+*,,+--,,-,,,,,-,-.-,-,,-,,-,,-,,-+-.-/0//0/..-,-,**))*))*)''&'(&)*),-,./.00///.**)**))*)+,,---..-/0//0.01/121232565554342343343010//.110011010221343887MJGMIFKGDMIELHDMJFQNKTQNSPNTQOSPMNKGNKHUSPUSPWTQUROPMJPMJQOLQNKROLOLIKGDOKHQNJQNJOLHMJFPLHOKGMIDNJFQMIUPLWRMXSNWRMWSNWSOWROQMIMIDNIEPKGQLGSNJQLHLGCKFBKGBNIEOJFNJGPLHPKGOJFRNJVROVROVROWSPWSPWSOQMIOJGOKFOJFQLHUPLWRNVQLVQMUPLRMHUOJUOJUOKVQMTOKUPLVQNTOLUPMVROQLHPKGSNKRMKPKHQLISNJQLHPKHOJGNJGKGDFA>A=:@<9A=;?<9=97=979631.+" 110--,()($%$#$#$%$%&%'''()(((''(''(''''''&%&%$%$$$$$%$%&%%&%$%$!" !"!!"!!"!!!!####$##$#!" !"!!! !"!!"! ')((++(**(**)+++..*++())'(('((')(&((&((&('%&&%&&%'&%&&$%%$%%&'''(('('&''&'''(()*)'((%&%$%%%&&%&%(('(*)%&&"##!""!"!"$##%$#$#"##"#"$%$%&&&''%&&$%%$%%$&%&'&%&&%&%$&%#$$"$#$%%%&&')()+*)**OLINKIMJGMIGLIGMJHOMJPMKMKHKGENKIPMJMJGHDAFC@HEBFC@B><@<9EA>IFDJGDGC@>;7=95@<9B>:C>;HD@IFBJFCPMJPMJNKHNKHOKINJHKGEKGED@;7=95A>:DB>FD@HFAHFBEC?BA@@;>=8;:6:94:93;:5:8397364142/31-53076210. !$%%"###$####&''$%%#$$$%%#$$!!! $$#%%%$%%!""#$$%&&$%%'(($%%%&&""""##$$$%%%$%%$%$!""&&&&'' !!"""!!!%%%&'&&''%&&&''%''%&&$%%!"!%%%&&&&'&$%$'(()*+'))%&&$$$ ! ###&''%&% !! ())&'&###()(+-,#$$$%%()(*++)**###&'&()(###!"! &''((('('$$$###%&%'''&&%%$$"""(((+++)*)$$$''''(('((+++'(')*))**)))**)+**-,+,,+;61?81A;5F?8D=6@:3?9251+94.D>7GA:F@8E?8D>8?93>8294.93-93-60*-)$! )%!(%"$!! ##"***--,++*'''+++322//.+,,000565443.-,++*))("#"&&%000('&0.,-,)*)'+*)0/-0/-54331020.763541,+)/.,0/./.,/.-42/<84;63?:6D@=IDAIDANIEOJFMHDMHDOKGRNJSOJUQLVQMVRMVQMTPKUQLYUP^[U]ZTXUNWSLYUN\YR\XR\XR[XRXVOWUNYWP^ZU`\X\XTUQMRNJQMHQMGTOKRNJUQMXTPXUPXTOWSNUQLPMHPLHUPK[WR]ZVZWRVQLVQM[WS_\X]ZUPGB:"@-"D2&G6*I9,J:.K;/K<0L=1K=2K=2K=2K=2J=3J<2I<2I<2J>4J>4J>3J>3K?4K?5L@5L@6L?5L?5M@6N@6NA7OB7OA7OB7PC9PD9QD9QE:QE:QE:QD9QC8QC9QD:RD:RD9RE:RE:RE:SF;SG;SG;SG;SG;SG;SG;TGXJ?YJ@ZK@[LA\MB^OD^PD_PD_PE_PD^NC\LA[J@YH>WG=WG=WG=VE;TD:=0(1%2&3' 4(!6)"8+#9-%[K@^NB`PEbQFbQFcRGbQFaPEcSHdSIdTIdTIeTJfVLfVLeVLdTKaQI^PHYLDOA;60.(,0"$((,/;=BWX``ajYZaQPWRQWRRYRS[ZY`m_[r]TuaWwcXxcXzdY{eZ|f[|e[}f[}f\}f\}f]}f]}f]}f]~f^~g^}g^}g^}g^|f^zd]yd\wbZu`Xs_Vo\SlYPjWOiVMhULgTKgUKhULgULgTKfTJfUKfTJfTJfTJeTJdTIcSIbRH`PG^PF\OEWJBPF?FDC<<@GHMNOUJJOCBFHGJGFJFEHA?AB@BHFIJIMNNSRSXTU[RQWQQVTT[RRXQRZVXaUW`Z]frt~eha]aS]`R\\Q]ZS^ZS\XRYUNYTO\XS`\Yc^[c^Za[X^XT^YT_ZU[VP[UO_YSb\Wc^Yb]Yc^Zd_[gb^kgcjebe`\a\Wc]Yd_[c^Zb]Xa\X_[X\XUYTQF?<* %)*!+",#.%0& 1(!3)"5+$6,%8.&9/':0(<1)=3*>4+?5,@5-A6-B7.B7.C8/D8/D90E90E91F:1F:1G;2H<3I=3I>4J?4J?4K@5K@5LA6LA6LA6MB6MB7MB7MB7MB8NB8NB8NC8NC8NC8OC8OD8OD8OD9OD9OD8OC8NC8NB7MA7MA6L@5L?5L>3L=3M>2Q?3WD6bL;qYDfMuZ{ͭmzaSZOH|qnj[yaPu_P8,$P>3H9.-($pf`upyojyqnzrpzsp|zyw~wuVIAF6)C4)F6)A2&B3'>1%8,"*#(#62/72/72.71-0,*-**556889<;=@?@EDECBC;99312.,-  "''(*+-+,.,.0+,.+,/,-0/26/27-05(*.%'*(*.%'+%'*$%(%'+!#& "#%&(+&(+%')&(+'*-$%(!###$$% $$!"202758101()(((&((&)*(,-,--,,-,+,+*+**+*+,+*++*+++,++,+,,+,,+-.-./..//...//.01001/00/010/0//0.00/01/-.--.-+,+)*)*+)*+**+*,-+..-&'&$$#%%$'('()))*),,+--,..-//./0/221231010/0/00/./.--,/0//0//0/010232342EB@KGCJGCKHDKGDMJGROLPMJOLINLIQOLNLIMKHURPTROTQNPMJOKGMIFMJGMJGOLIMIFKHDKHENJGSPMRNKLIELHDJE@MICNJEQLGTOKVQLUPLUPKVQMYTPYUQTOKRMISNJQMHQMHTPLQMHMHDKGBMHDPKGPKGOKGQMISOKRNJRNKTPMSOKRNKTPMRNKSOKPLHMIEOKGOJFOJFSNJUQMUPLTOJTOJTOJTNJRMHRLHSMIQKGSNJXTQUQMQLIPKIMHENIFPKHPKHOJGQLITOLUPMUPMSOLRNKPLJMIFFB?EA>A>;>:7<96;85852/,)!//--.-+,+''&$$$$%$%&%'('))(*+*))('('&'&$%$##"""""""#$##$$#$###"##"!! ! ! ! ! #$#$%$$%$"#"!!   !!  &('(**'))'))(**),,)++'))&''&'&&''%''&('%''%'&%&&%''%'&#%%#%$%'&')(')((((')(')((*)'('%&&$%%&'&&'&((')*)')(%&&#$$###$%$%&&$&%$%$#$#%%%&'&'(''''&''&'&%&&%&&%'&%&&%&&$&%#$$$%%$%%'(()+*)**MIENKHOLJMJHKHELIGNKIOLIPNKOLJNKINKILIGFCAIFCJGEFCAC?<@<9@=9A=:DA=C?:B=9HDAJFCIFCHD@JEAJFCMIEOKHMIEKHDGC?EA=HD@JFCD@=FC?LIEFB>ID@MHELGDKGCIEAD@<=96@;8@<8=95A>9HEAJHEGEAFD@HGBIGCCA=BAA@;=<7?>9A?;?>:><8;9553042/752531864/., "## !!#$$"""$%%######""" !!!!!!!!$$#''''''#$$$%%%&&#$$%&%$$$%%&!"" """$$$%%%%%%###(((''' !"! $%$%&&%&&&&&())'))%&&#$#"""%%$&&&&'&%%%&'''((&''%&%$%$ """$%%$$$'((&''"##&&&)**$&&#$$%&%&'''((%&%&'&'''&&%""""""#$$&''$$$''''('&&&&&&&&&$$$%$##$#(((*++)**&&&&'&&&&&''***()()**''''('**)+*),+)*+*<72;5/@:4D>7B;4?92?9272,=71E?8GA:E?8F@9D>8>81?9294.83,82,5/)+'#" )%!)&"#!!!$#"***--,++*''&+*)432100*++/0/6776552000/..-,$$$'('121('%.,)/-*,+)+*(-,*.,*32021/43/=;9<;8/.,-,+0/-//-/.-530>:6?;7A=9D@=GC@IC@JEAID?ID?ID@MHDQLHPLGQLGQMHPLGSOIVRLXTNZVQ\YSYVOTPITOGVRJ]YR`\V_]W^[UZWPVTMURJXUO\XTVRNRMHSNHSOJSNISOJTOKUQLVRNUQMUPLWRNVRMQLGOJESNIZUQ_[W^ZV[WSXTPZUQ[WR]XRZTN<';(?.#C2'F6*G8,H9.I:/J<0J<1J<1J<2J<2J<2I<2I<2I<3I=4J>4J>4J>3K?4K@5L@5L@6L@5L?5M@6MA6NA7NA7NA7OB7OC8PD9PD9QE9QE:QE:QD9QD9QD9RD:RD:RE:RE;RF;SF;SG;SGWI>XI>XJ?YK@ZK@[K@\LA]OC^OD_PD_PD_PD^OD]MBZI?WG=VF1(A4+E8.J=2OA6SD9VGLEB??AABGLMSLLREEIEDHGFJFEHGFIB@CA?@FDGJIMNMRQRWUV\VV]UU[VV]TU\QQXTV^VXaZ\enq{figX[M[^Q[[PZWQ\XR\XR^YTb]Yc^[b]Zb]Yb\Y_YU]XS^YT^XS\VP\VP_ZTb]Y`\W_ZU`ZVc\Xhb^kgckgdea]a\Xd_[hc_hd`ea]a]Y\XTYUQ]XT^YVPKH/% $)*!+",#.%/& 1'!3)"4+$6,%8.&9/':0)<1*=3+>4+?5,@5-A6-B7.C7/C8/D8/D90E90E91F:1G;2G;2H<3I=3I>4J?4J?5K@5K@5K@5LA6LA6LA6LA6MA6MB7MB7MB7NB8NC8NC8NC8NC8OD9OD9ND8ND8NC8NC8NB7MA7MA6L@5L?5K>4L>3N>3SA4ZG7gQ>v^HlRp~t{q|ȧsblWKj`Z~sudybTkTElXJ.%K;0@4*.("`TLshcskgmfcqkhtmkzwzy|wv_WR>/">0%D4(<.#8,!5* -$+#'!/*'5/,3.+-*('&&&&',.1037/14/0256978;112**+$""  ('(.03.03026.03,.1*,.,.1-04049-05*-1*-1,/3+.2&(+%'+#%(#%($&)#%(%'*'),#$'$%'$%'#$&#$&"#%"#$ !!#$$# # -,.112001,-,+,**+)**)()(()()*)+,++,++++**))*)))()*)*+*+,+,-,,-,./.././0/./....00/110/0.//../--.,/0.010-.-+-+--,./-./-,-,+,*,-+..-'('&&&&'&%&%''''('**),,++,*++*,-,010231110010010./.+,,-.-./.././0/010010<:8GC@IFBJGDLIFMIFOLIOLHOKHQNLURPQOLNLITROURPSPNOLHNKGMIFMJGOLIPLINJFPLHSOKROLUROVSQSPNQMIOKFOKFOJFOJESNIWRMVQLRMHRMIUPLUPLQMHQLHSNKUPMSNJRNIPLHOJFMIDOJFQMHQLGPKFQMISNJQLHOJGQMIRMJQMIRNKNJFNJFQMINIEOJFQLHOKFPKGRMISNJUPKSNHSMISNIRLGQKGQLGQKGTOKVQNUPNOJGLGEJECMIFNIFMHEOJFOJFSMJSNJRMIRMJPKHOJGLHEFB@DA>C@=@<9?;8<869530-* ,,)+,+*+*))('''%&&&'&&'&&'&((''('&'&%&%#$#!"! ! !!!"#"$$$#$##$#$$###" !  !! ! """$%$$%$#$#"""   !! (*)(**'))')(&(('))'))&((&((&('&''&''%''%''&'&&''&''%'&$&&#%$%'&'))())')(())(*))**'('(((()(')(&'&()(*+*())&''$&%%&%%&%'('&''&'&&&&''&()()*)())'((&''&'&%&&%&&$%%#%$#%$"$$#%$#%$&('(**)+*E@C?;A=9DA=FC@C?@<8C?:DA=B?:B?;C@;FD@EC@A>;A?;DB>EC?ED?DC>CB=A@;=<7;:5874763:85;96974:85763763,,*!"""## !!#$$"#"$%%####$$"##!""###""""""&&&&''"##$$$%%%$$$&&&%&&&''"## "##$%%&&&(((&''((($$$!!!$$$#$$ !!$%%%&&%&&$%%&((&((#$%#$#"#"%%$'(''''"#"##"%%%&&%&&&%&% ! !"!#$$###&&&%&%!"!$%$')(%''"##$%%'''(((&''$%%###%%%$$$$$$'((())$$$'''()('('&&&$%%""!! ###((()**())'''&'&$%$'((*++)))+,,((('('+++-,+0/.0/.?93:4.@;5D>7A;4?92?924/*=71E?8F@9C=6E?8E?8<60?9382-82,82,4.)*&"$")%!(%" ##"***..-+**(('**(2101//))).//788555//.0/.1/.&&%()(011+*' .,)20-/-+.-+0.,.,*10-10.541<;9:97-,+++)/.-0/./.,641A>:B>;EA=GC?IEBJEBLGBLGBMHCMHCPLGRMIOKFPLGSOJTOJUQLWSMWTNXTO\XR^[T_[S`[T`\Ua]W`]X\YTYVQXVOYWPXVNVSLWSMUPKVQKYTNXSNWRMWRMZUP[VQ[WRZVQYUP[VR[VRYTOZTPXTPWROYVRYVRXTPZUQ]WS\WS^YT_ZUE825!;+!?/%B3(D6+F7,G8.H:/H;0H;1I<1I<2I<2I<2I<2I<3I=4I=4J>4J>4J?4K@5K?5L?5L@6L?5M@6M@6M@6NA7NA7OB8OB8PC9PD9PD9QD9QD:QD9QD9QD9RE:RE:RE:RF;SF;SG;SGVI>WI>WI>XI>XI>YJ@ZK@ZK@[K@\MB^OC_PD_OD^OD_PE^NCZJ@WG=UE;TD;SD:SC:TD:E7.-!/#0$1&3' 5)"7+$9-%<0'?3*C6-H;0L>4OA7SD:WH=ZJ?\LA\MA]MB^NC_OD_OD`QEaRFbSHcTIdUJeVKeUKdTJcTKbTJ_QH\NFWJCJ=71--679+.2<>CY[dXX`OOUOOTPPVQQXOPVTU]SU^a^dqa[t`UvbWwcXxbXzcYzdZ{eZ{eZ|dZ|e[|f\}f\|e\|e[|e\|e]|e]{e]{e]ze\xc[wbZvaYt_Wp\TmYQkXOiVNiVMhULhULgUKgUKfTJeTJeTJeTJeSIdSIcSIcRHaRH`QG_PF\NEWJAULFHFF<>AHJPNNUGHMCCFEDHFEHEDGFEHDCEA?@BACHGJKKOOPUTU\UV]UV]WW_VW_PQXQS[UWa[]gkmxikkWZK[^QYYOYVO^ZT^ZU_ZUb]Yb]Z]XU_ZW^YU\WR_YU_ZU^YT]WQ_YSa\Va]X]XS`ZVc]Xc]Zc^Zc^Zgb_c^[b\Xd^[ieahd`fb^d`\a]Y^YU_ZV`\Xa\YWQM6.*"(*!+",#.$/&1'!2)"4+$6,%7-&9/':0)<1*=3+>4+?5,@6-A6.B7.C7/C8/D80D90E90E:1F;2G;2H<2H=3I>3J?4J?4J@5K@5K@5K@5K@5K@5L@5LA6LA6MA7MB7MB7NC7NC8NC8NC8NC8NC8NC8ND8NC8NC8MB7MA7LA6L@6L?5K?4L?3O@4TC6]J:kUB{cLs^}r}lal`qg}cUbPEyojzpl\xaRkTEoZL.%H8-=1'/(#XKCkb]unljeclgfxrq|{~}}}}yy{wvf`]:+:-"=/$4),#2'.$&'!)%!0.,,**(&&$##'')-/3-03*,0)*-.15359+,.$%& % .03.14/15,.1,-0)*-*+-,.1/2615:/26,/3,/4,/4(+/%'+%'*&),'*-&(+')-'*.$&)""$""$!"$!"$!"$$&)#%(#$'#%' !#""#**,)((''&(('***+++*+*+,+,-,-.,--++,*)*)()()*(+,+,-++,*()(*+**+))*(()(*+*,,+,-,---+,+,-,..----,,++,**+)--+./---+--,/0.-.-+,+,,+//-010-.-,-+..-./-''&%&%%&%#$#$%$&&%**),,*)*(*+*-.-232232010/0////,,,()('((+-,+,+,-,././0/;:8KGDNKHMJFPMJSPMTPMQMJLIEMJFROMQOLOLJROLVSQTQOTQNVROQMJPMIQNKSOLSPLUQMYVRYVSZWTYVTVSPLHEMIDQLGTOKPKFSNJWRMUPKSNISNJSOJSNJRNIUPLTPKVRNXSOXSOSNJNIENIEQLHQLGPKFOJFRNJTOKSNJQLHRNJUQNUQNTPLMHDLHDQMJQMIQLHRMHRMHQLHQLHRNISOJRMHSMIUOKVPLTOJQLGPKGSNJQMJOJGNIGOKIMHFKFCKFCJEAKFCMHDPJGQMIOKGOKGOJGOJGMIGHDAC?;A=:>:7;853/,*)&+++()('('''&%&%%&%&'&&'&&&%&'&'('&'&$%$"#"!!!!!!!"!""""#""#""#""#"!"! ! !"!!"!"""$$$$%$$%$"## !    !!##")*)(**(**())&''&''%''$&&%'&')(')(')(&((&(''(''(''''&''%''%'''())+**++)+*+,,,.-+,,)*)*+**+**,*)*(**),,+*+*())'('&('&'&&('%&&%&%&''&''()()*)())&('%&&%&&%&&%&&$&&$%%#%%#$$#$$#$$%'&')(*++C>9HD@LIFLIFMIFNJGOLIPMKOKIOLIPMJPMJQNJPMKMKHKHFMJHQNLROLPMJNKILIFLIFNKHJHEIGDGDAFB?EA>HD@MIGKGDIEAFB>?<9A=:LGDNIELHDNIFOLHMJFIFBC@:6;94973851=:6B@:CA>BA=BA=@?;?>9><7>;675143/31.20.20-31.42/42/**)#$$"##"""$$$#$$%&&%&&%&&&''$%%"##!!! #$$&''"## !!#$#$$$"#"#$$&''$$%"""$$$'''''''''(('***$$$"""%%%&&&###"##$%%%&&%&&$%%'))&''#$$%&&%%%%%$'''%&%!!!!! ###%%%&&&%&%  "#"!!!''''''###%%%)**')) !!$$$&&&'(')**'''$$$&&&&''%&&'(''((%%%(('()())('''%%%""" ###'((())'('''&&&%%%%)**+++(((()(()))*)-..//.10/0//>8394.C>7F?8A;4@:3@:30,'<60D>7D>7B<5E?8E?9:4.?9351+93-82,3-('$ &# (%!(%! #! #! &%$***...***''&))(21/20/)))./.666444...0/.321))))))/0/+*(  /-+53121.0/-/.,-,+-,*1/-642<;8:97+*)**(21/4310/.21.?<7B>:D@HC?JE@ID@IEANIEOKFRMHUPKWSNVRMTQKWSMYUO_[Uda[fc]eb\ca[b_Z`]X[XRWSMVSLYVO]ZS^ZT^YS]XR]XS^XS^YT]XS]XS]XTWRNRMIRMISNJYTP`[Wa]Y^[WZVRYTQ\WT\XT\XT_ZVa\X^YU_ZU_ZUMD?26';,">0&A3)C5+D7-F9.G:0H;1H<1H<2H<2I<2H<2I<3I=3I=3J>4J?4J?5K?5K?5K?5L@6L@6M@6M@6M@6NA7NA7OB8OB8PC8PC9PC8PC9QD9PC9PC8QD:RE:RE:RE:RE;SF;SG;SG;SHVI>WJ>XJ?XJ?XJ?YJ?ZJ@ZK@[K@\LA]NC^OD^OD^OD^OD]NCZK@WG=TE;SD:QB9QB8RC9I:1,".#/$1&2' 4)"6+#8-%;/'>2)A5+E9/I;1L>4PB7TE:VG=XI>YJ?ZK@\LA]MB]NB^NC_PDaRFbSGbSHcTIcSIcSIdUKcTK`RI\OFWKCMA;=6357:+/2?AGYZbUV]POUNNSOOTQQXNNSQRXTU^RT]`\`sc\t`UvcXwbXxbXycYzcY{dY{dZ{dZ|e[|e\|e[{e[{d[{d\{e\{e\zd\yd[xcZvaYuaXt`Wq]TnZQkXOjWNiVMhULgUKgUKfTJeTIeSIdSIdSIcRHcSHcSHaRGaQG`QG^PFZMDTH@SNLABDCEKMNULMSCCGBBEDCGEDHDDGEDGEDGB@BCADGFIJJOOPUUV]UV^WX`WX`WYaQRZOQYTV_[]ghkvqswSVGY[OXXNYUO_[V`\W`\X`[X]XUZUR\WSXSOWQMZUP\WR\WQ_ZUd_Zc_Zc_Za\Wa\W^YU_ZV[VRWQM]XSc]Yhc_ea]d`]`\Y`\Xc_\d`\c_[c^Zc^[d_\e`\[VQ:30#&) +",#-$/%0' 2)"4*#6,%7-&9/':0(<2*=3*>4+?5,@6-A6.B7.C7/C8/D80E90E90F:1F;2G<2H=3H>3I>4I>4J?4J?4J?4K?5K@5K@5K@5L@5LA6LA6MA6MB7MB7MB8NC8NC8NC8NC8NC8NC8NC8NB8MB7LA7LA6L@5K?5K?4M?4PA4VE7`MFB?LHEJFCD@=>:7630# )'$+,+'('$%$%&%%'&%'&&'&&'''('&'&&''&''$%$##""""!"! !  !"!!"!!"!!"! ! ! !"!"""#$#$%$#%$"##"#"!! !"!  "" ()((**)*+(*)&((%''#%%#$%$&%&''&(''(('((')('((&'&&''')(()))***,,+,,+-,,-,-/../.-.-+,+,-,,.-,-,*+*)*))*)()('(''((')('((&('%&%$%%'((&'''('()(()('((%'&%'&%''&''&((%'&$%%#$$"$$#$$%&&&''*++EAEA?KHEPMJROMQOLNKIGDBDB?><8@<9DA=DA=@=9>:7B>;HDAFC?EA=C?;@;7E@:;74:62;7495172.<73B=9C?<8@>:><8><8?>:?>:?>:>=9=<7;:5:8375175165121-0-*2/,53/530))(#$$"#####$$$%&&())())'(('()$%&"""!""!""%&&###!!!### !!"""$%%$$%$%%$$$$%%&&&(((()('((#####"((()))!!!$%%&''%&&'((%'&'('%&&"##%&&#$####%&%##""!!%%$)))'(( !""&'''((%&&&&&)+**,,"##&''))(*)))))''''('&'&&'&&'&'(''(('''))))))**)(((&&&%%%!"!!! %&&(((&&&''&&%$&&%*++*+*((())(+++*++-.---,//.0.-=8283-E?8D>7A;4@93@:3/+&=81C=6D>7C=6E?8D>882-?923.)93-71+1,&%"'$ &#&$  " (&%&$#*)()**-..)))'&&(('1/.20/)))-..455444./...-332,,+()(...+*)!%#! ,*(75242020.0/-21//.,431652:97:97+*)**(22054221/21/B?;EB=FB>D@=D@1'@4*B6,D7-E9/F:0G;1G;1H;2H;2H<2H<3I=3I=3I=3J>4J?5K?5K>4K>4L@6L@6L@6M@6M@6NA7NA7NB8OC8OC9PC9PC9PC9PC9PC9PC8QD:QE:QD:QE:RE;SG;SG;SG;SHVI>WJ?XJ?XJ?XJ?YJ?YJ?ZK@[K@[LA\MB]OC]NC]NC^OD]NC[KAWH>TE;RC:OA7N@6PA7K<3.$.#/$0&2'!4)"6+#8-%:/'=1(@4+C7-F9/I<2M?5PB8SD9TE:VGZJ?ZK@[LA]NB_PE`QFaRGaRGaQGbRGcTJbTJ`RH\OFWKCOC4+?5,@6-A6.B7.C7/C8/D80E90E90F:1F;1G<2H=3H=3I>3I>3I>4J?4J?4J?4J?4K?5K@5K@5L@6LA6MA6MB7MB7MB8NC8NC8NC8NC8NC8MB8MB7MA7LA6LA6K@5K?4K?4M@4QB5XG8bO>oZHzdRvf\l]S~nd{yveoYLRD;ynhtd[jUHfQC^J;XF9*#7*"2(,&!QHC`YVd^]njjdaa^ZYWRPa\[ga`e`_a]][WW:1+2'.%(!'%*!$%& $! '&&''(##""""&')(*,-/3)+.*,/,/3')+   $(# .04038+.1*,0)*-%&'+-104937=26<37<26<26<049/38/38/38.26*-1')-')-$'*%(+'*.%'+#%(!#& ""#%%&''('((&++*--,,-,)*)()(******((()*),,,-.---,*+*,,+,-+++*''&$$"&&$))')*(*+*++*+,++,++,++-,++*))())(+**''&%%$%%$**)..---,++*,,+--+,,+,,+*+*+,*--,//.01/11/(('"#""#" !"!&'&'('(('++*--,221120--,*+*()(&''$%%&'&&'&'(')**,.-543LIFPLIOKHSPLPLHPLILHDJFCJGDLIFMKHLJGLJGLIFLIFPMJQNJQNJRNKOLHSPMSPNTQNVTQVSPURNUQNQMIOJFOKFSOJXSOVQLSMIPKFRMIVQLXTOWRNWRNYTPYTQWRNTPLQMIPLHSNJUPLTNJUPLTOKTOKTPKSNJPKGNIEPKGTOLTPMVROVROUQMWSPWSPWSPZURZVRXSOSNJRMITOKTPLTOKVQMXSOUPLRMHPKFPJFPKGNIFOJGOKINJGMIFLGDLGDNIFMHELGBNIEOJFLHDJEBMIEPKGOJFOKHJFBIDAKGDJFCEA>A=9962&$!)'#--,()(%%$$$$%&%%&&&'&&'&'(('('&'&&'&$%$"#"""!""! ! !! !! ! ! ! ! !!!!"!#$##$$#$#"""!"!!! ""!   ')()++())'((&''%''#$%#$%$&&%'&%''&''&(('))'))'(('((()))+**++,--./.-/.-...0/./.-.-+-,-.-./.,-,*+**++*+*)*)'((())(*)())&('%&%%'&'((&'&&'&&'&'''&''$&&$&&&'''(('(($&&#%$#$$"##"##$&%&'')**EA=:7=97@<:HDALIFHECFC@@=:@=9?<8<83840951740;72?;7FB>HD@FB>EA=HD@EA=FA>C?<<85:64630:63;8573/3/+3/,3/+0,(3.*62.<84>;7@=8C?:@=8<94:83<;5=;6=<8>=9=;7=;7<;6><8@?;==876164/862<:6=<898464142.42/53042/''&"""#$$$%$%%%&'')**)**())'))&((#$$#$$ &&&$$$!!!"## ! $%$&&&#$#"##"##$%%%&%'''())%&&#$$((()**!!!%&&&''%&&'((&'''('&''#$$%&%"""!"!"#"""! ""!%%$(((%&% !!''')**%&&%&&)***++$%%())**)+****)((('''&&&((('''$%$###%&&(((((('(''(('(('''""!%%$&'&$$$%&%$##('&+**)**()(++++,,'''+++***,,+0/-=8240+D>7C=6@:3?82@:31-(@:3C=6C>7B<6D?8B=782-=713.):4-60*0+&# %"%"&# !" '&%'''--,(((&&%'&&/.-310**),--111343000--,332...)))-.---, " %#" )(%86464142//.,431420875985=;8<:8-+**)(10.21010..-+?<8EB=GD@GC@HDAHD@ID@GC?IEALHCNKFROKXUQYVRYUQYVQYUQWTNWTNWTNYVQXVPTQJSOHURKXUNYVO\YR\YS][T_]Wb`Za_Yb^Yd_[fb^hd`gb^d_Za[W]WS^YT_ZV`[W`[V_ZU`ZV_[Va\Y_[X\YVZVSXSPVQMUPKTPKXSN\VQYTPVQLA4/.3%7*";.%>2(@4+B6,D8.E9/F:0F:1G;1G;2H<2H<2H=3I=3I=4I>4J?4K?5K>4K>4K?5L?5L?5M@6MA6NA7NA7NA7OC8OC9PC9PC9OB8PC9PD9PC9QD9QD:QD9QD9RF;SGVI>WJ>XJ>XJ?XJ?YI?YI>ZJ@ZKA[KA\MB]NC]ND]NC]NC\MC[LAXI?TF4M?5N>54)"-#.$0&2' 3)"5+#7,$9.&<0(>2*A5,C7-F90I<2L?5OA6QB8RD9TE:UF;VH=WH=YJ?ZL@\NB^PD_PE_PE_PE`PFaSIaSI_QH\OFWJCMA:>::.2636:FHOST\ST[PPWLKPMMRPPVQQWLLQOPWSU]QSZTW`eaeue_s^Tu`Vv`VwaWxcXycYycYzdYzdZzdZzdZzcZycZzd[ydZycZxbZwbZvaYt`Ws_Vq^Uo[RlYPkXOjWNhULgULfTKfTJeSIdSIcRHbQGaQGaPF`PF_PF^PE\NDXJAVKDUQP?@BDFKNOWKLRDEIDEIBBEDDHFFJEEIDDGEDHEDHBACDCFGGLKLPOPVTV]TV^UW_WZcUW`OPXQT\Y\ffisvx\]PXZM\[R]YT]YT`\Wb]Ya\Xd`\a\Y\VRXSNYTOZUOXRM]XSa\WYTORMGTOJ]XSe`\d`\c^Zb]Y^YU[VQ^YT^YUb]X`ZU[VQZUPa[Whc`mifnjglhee`]d_[fa]b\X]WRLFA,"#(*!+"-$.%0& 1(!3*#5,$7-&8.':0(;1)=2*>3+?4,@5-A6.B7.C7/C8/D80D90E:1F;1G<2G<2H=2H=3I=3I>3I>4J>4J>4J>4J?4K?4K?5L@5LA6LA6MB7MB7MB7MB8MC8MC8MC8MC8MB7MA7MA7LA6L@6K@5K?4L?4N@4RC6YH9cP@mYHo\Oj\SobZzsazbSeQEG<5pe_jZQ^L>WE8ZG8P?3(!2'/&/*'WROb][^YWb`aTRTLIJJGFQMLXSRYUUPMMPMLA952')"& &"%#$(!$$#"$$#$#"#""')+(*,-04-/3+-1+-1)+.#$&!##'!-+-048/26/26-/3)+.-/326<5:@6:@37<038/27049/38/38.27,04+.2(+.')-$&*%'+#%)"$'$&)&(,-/4+-/(((''&&'&''&(('++)++*))(()(+,++,++,+*+*+,+*+**+**,+-.--.,))(#$!!"%%"++*+,++,+,-+./../.,-,*+**+*,,+++*++***)''&%%$(('..-..-,-+,-,,,++,+)*))*)++*--+00//0/./-&&%!"!##"  """&'&(('))())('(&--+00/,-,()(&'&&'&%&%%&%%&%'''()()**210GC@KGDNJGRNKNJFOKHMIFMIFHD@C?EB>IFBKHDKHCHD@EA=HD@IEBIEBJFCOLIQNKSOLQNKGDAFDAGDBEB?EB@FC@EC?FC@GC?FC>DA<>;7<85962=95<95=95>96?;8@<9EB?FC@D@=>;740-0,)3/,74163/40,51-41-62.62.73/951<84=:6>;6=95961<:5?=8?=9><8><8CB=CA=@>:@>9A@;@?:>=8:83;94;9597475164121-/.+/-*20-42/(((#$$$%%%%%%%%'''+,,+--)**()*%&&"""#$$ $%$$$$"""$$$"## !!$$$'''%%$$##$$$$%$#$#'''*++())$%%&'')**$$$$$$%&%$$$%''&''&''&''$%%%&%!""!!!"""#$#  " %#")('%%$ ! ''')**'((%&%'(''''%&&)*))))'''''&(((((('''''''''%&&"##$%%((((('((('((()((('""" $$#%%%$%$'''$$#'&%'&&$$$%%%+++,--$%%'''(((+++1/.=7173-C=6B<5?92>81?81/+'@:4C=6A<5A;5D>7B<683-<602-(;4.5/).*%%"$!&#  "! ('&(('./.++*(('&&&+++000)*),,,111454221..-333000)))---..." ! '%#6416425310.,32031/753;:7A?<@>;/.,*)(0/-20/10.-,*>;7DAFC?GC?HD@KGCKGCOKGSOKTQMVRNVSOVSOWSOYUPVRMTPJURLVRLVRLVSLTPISOHVRJYUN[XR^\V\YSZXQYWPYVO\XR`[Vfa]jeakgchd`d`\a]Ya[Wb]Xc^Ze`\fa]ea]a\X`[W^ZWZVRXTP[VR]XT]XT[VRYUP\WR^YT\VQ\WRULG00"4' 8,#;0'>3*@5+B6-D8/E:0E:0F:1G;1G;2H<2H<3H=3I=4I=4J>4J?5K?5K>4K>4K?5L?5L@6M@6MA6NA7NA7OB8OC9OC9OC8OB8OB8PC9PD9QD:QD:QC9QD9RF;SGUI>VI>WI>WI>XJ?XJ?XI?XI>YI?ZJ@ZKA[LA\MC]ND]NC\MB[LB[LBXI?TF5<0(,".$/%1' 3)!5*#7,$9.&;/'=1)?3*A5,C7.F90I<2K>4M@5OB7QC9SE:TF;UF;VH=XI>YK@[MB]OC]NC^ND^OD_PF_QG^QG[NEWJCK@9889-04583+?4,@5-A6-B7.B7.C8/D8/D90E:1F;1G;2G<2H<2H=3I=3I=3I=4J>4J>4J>4J>4K?5K@5L@6LA6LB7LB7MB7MB7MB7MB7MB8MB7MB7MA7LA6L@6K@5K?5K?4L?4OA5SC6ZI:bO@hUEk]Spe^shbtv`Pr[McOCB93pgaeWNSA5I9.P?2F7+' +",#.*'[WV\XVSOOUTULKMDBDGDDB>>FBASPQKHHDBB@;91((!$%""$$%#"!###$$$$$$)+.,.1038/26,/2*,/&') !!$ %)$ .04.16/38038/16.1515:48>7;B37=26;26;26;15:039.27+.3*-1*-1(*.$%)"#&!#&$&).05-/2)*+%&%'(&))(()''(')*(+,***))))++*./.,-,-.-,-,+,+*++)***++--,//.+,*$$" "" ++)//.00//0.//./0/,--*,+**)**)**)**)++*++*()(()'-.-/0/./../...-+++**)+,*//-00.110/0...-%%$ ###!!! !"!$%$%%$'(&''%"" ''%,,+*+*(('%&$%%$%&$$%$%&%&'&'('(((..,DA=HEAOKGPLHOKHOLHPMJNJGKHDGC@D@=B?;D@JFAOKFRMHUPKWRNVQLVQLXTOUQLWRMZUQYUPVRNUPLTPKUPLRNIMIDNIDOJEOJEQLHSNJUPLWSNUPLTOKTOKSNJRMJPKGTOLSNKPKHPLHRNJTOKTPLTPLUQMQLHPKGPKGMHCOJFQLHPKGRMIRNJSNJRMHSNJTOLQMJQLISNKSOLRNKRNKOJGNIFNIEMHDMHDNHENIFOJFSNKTOLQLHOKGJEBIDAIEAGC@E@=A<9;73,)&&#./.*++')(%&%$%$$%$%&%%&%$&%%'&'(''('&'&$%$$%$#$#!"! ! !! ##"$%$!"!   ! ! ! !!!$$#%&%$%$#$##$#$$###" %&%(++(+*'(''((&((%&'%''(**)++)++(++)+++,--//.//+-,)++(**(**+,,-/..00/10011/11./.+-,,.-.0/,.-+,,,,,,,,+,,*++)**())(*)()('(('('&'&&'&&'&&'&%&&%&%#$$#$$$&&%&&%&&#$$!"" !#""$$%&&)**OLHNKGOKHOLHNJFLGCKFBJFBMIFQMJQMJOKGPLISOMTQOLIGC@=A>;A=:B?;GD@LIENKHMIFHEAFC?FB>D@:@<8@=9=:6<8495151.51.8418418513/,0-)0,)30,51-73/;84=95>;6>;7>;7=:6<95;8385153-52-:83?=9@?:@>:?>9B@DA=?=9A@9?=8<:6:8453/20,20,1/,1.+31.42/(('#$$%&&&''&''((()***++)**())$%%!""#$$ ###&''###!!!%%$"#" %&%)))%%$"""#$#$$$"""&&&)**'((#$$&'&***&&&#$$"## !!!""$$$&&&&&&$%%$%%""""#"####$#  ! ##"&&%""! !"!())()))))&''&&&%&&()(+,+*++$$$#$#'((()((('&&%''''''#$$$%$(((((')))&''((((('###!!!$$$&''###&'&#$#&%%%%$!!!#$$+++-..%&&$$$%&%)*).-+=7172-A;4A;4?92=70=71/+'A;4C>6A;5A;4@;4?9393.;5//+&93,4.).)%&##!%"!" $#"*(('('./.,,+(('%%$*+*---(((+,,121344010+++...,,-&&&***//.  !   21/6427520/,10.10.542:97A?<@?<21/+*)0/-21/21/-,+;95C@GD@IEALHDNKFPLHTQMXTQWSPURNWSOXUQYTPWSNUQLVRLXTNYUPXTNVRKVQJVRKWSL[WQ\YSYWQXUOYVO\YR^[T_[U_ZUc^Zfa]gb_iead_\\XT\VR^YUe`\hc_id`jfbgb_c_[b]Z]YTYTOZUQ]XT`[W^ZW]XT]XT^YT_ZVb]Xd]YA3.-2%5*"9.%<1(>3*@5,B7.D9/D90E:0F:1G;2G;2H<3H=3I=4I>4I=4J>4K?5K?5K>4K?5L?6L@6M@6M@6M@6NA7NB7OB8OC8OC8OB8OB7PC8PD9QD:QD:QE:QE:RF;SF;SG;SG;SF;SG;TGXI>XJ?XI>YI?YJ?YK@ZKA[LB\MC\MC\LBZKAZJ@XI?UF4*@5,C7.E9/H;1J=3M@5OA7PC8QC9RD9TE;UG9136-1479>KMTPQWOOUNOUKKQKKPLLQOOUOOULLROPVTU]TV_SU^SV_jfkufar]Rt_Uu`UvaVwaWwbWxbXxcXxcYxbXxbXxbYxbYwbYwbYvaYu`Xs_Vr^Up]Tn[RlYPjWNiVMgULgUKfTJdSIdSIbQHaPF`OE_OE^OE]ND\NDYKBTG>ZPKTQQ@BFFHNIKQGINGHMHINEFJBBFAAEDEIEEJEFKDDHEFJCCGBBEDDGHHMKLRPRZSU]UX`WYbY\eRU]NPWRU]ehsz|de`WXMQQHRNHXTNWSMRMHWQL]XS_YUb]Xa[W^XS`[Va\Wb]X^YT\VQ\WQ]WR\WRYTNZUPYTPUQMSNJVQLZTP\VQZTP^YTd`\fb^fa^d_\b^Z^ZV]XTa]Y^YUa[Wc^Zd_[c^YZUPRLG<40%%) +",#-$/&0'!2)"4*#6,%7.&9/':0(<2*=3*>4+?5,@6-A6.B7.C8/D8/E90E:1F:1G;2G<2H<3H=3I=3I=3I>4J>4J>4J>4J?4K?5K@5LA6LA6LA7LB7MB7MB7MB7LB7MA7MA7LA6LA6K@5K@5K?4K?4L?4OA5SD7YH:_M>l]Rxmhh_Y`TNvr{{eUePBkUGZG;=50qje]QKD5*=0&H8,@2''%,#'"MIIOLLMJJJIJ??B:9:<::-**732GDDECC<;<744+%%$$#!$%##!##$&&&)+-,/2-0415:048,/2)+.%') !! "$,))-04/2726;26;03725:49>9>D7:HEAJFBFB>GD@KHEMIFIFBIEBIEBGD@EA>HDAOLIQMJSOLPLIQNJQNKOKHOLIQNKPMJNKHNKHMIFGC?IE@MIDPKFQLGTOJUPKVQMXTOVRMUPLTOKSNJSOKTOKVRNUPLQLHLGCNHDOJFSNISNIVQLWRNXSNSNITNJUPLSMIQLIMHDRNJQMJNJFPKGPKGPKHOJFPKGSNJPKGOJFMHCID?LGBOJFQLGRMIQLGPKGPKGSNJTOKSNKPLHPKHRMJSOLQMJKGCIDALGDMHDLGBOJFOJGPLIQMIPKHPKHNJFKGDIEBHDAGC?FB?B>:;73.+'$"./-)+*())'((&'&%&%%&%%&%$%%%&%&'&&'&&('&''&'&%&&$$$"#"##"#$"$$#"#" "!  ! !! !!!"!"#"#$##$###"$$###"""! #$#(**)+*)*)')))**(**(*+*+++-,+--*--,--.//.//./.,--)++)**)+*+--,...0/021011021.00,.--/..0/,--*++*++---,-,)++)**())'(('('&''%&&%&%%%%$%$$&%$&%$%$####$$%&&&(''((%''"$$ !! !!!#"$&%&((),,PMJKHEGDBLHEPLHOJEOJEQMIQMJKGDHD@GC?FB?JFDNKIKHE@=:>:7>:6@<8C?;HDAMJGNKHMJGLHDIFBFC?EB>?<8<8484195195173/51-51-3/+51-63/:74:74962951<95><8=:7?<7?<7?<9>;785163.41,53.65/:93:94=;7@?;@?;A?;A?;@>;><8A?:BA<><9:849738738635300.+-+(.,(20-64120.&&%$$$&''$%%%%%&&&%&&&&&&''%&&#$$ ##$ ""!)))%%%###""" %&&***%&&"##$$$%%%"""#$#())())"##$%%)*)%%$###"#""""%%%%&&#$$#$$"##"#""#"""! !"!$%$'''##"!!!!!!###%%%())&''&''()())))*)*++'&&%%$$%%&'''''$$####### $%$())'('(((&''%&&&&&$%%""!!"!$$$!"!&'&$%%''&'&%! ###*+*,--&''"""%%%)*)/,*>8283.B<5@:4>92<60<6/+($B<5C=6A<5@:4=82=82:4.:4.-)%82,3.).*%%""%# " ! #!!" #"!(&%'''./.---)))%%$***())(((...344333...))(**)))($$$()(..- 0/.542642.-+/.-0/-543986@@=?>;31/+*(20.652431/.,751<:5=:6DA=FC?KHDOKGQMITPMVSPSPLPLHRNJVSORNJQMHSOJVSNXTOWTNXTNWSLXTN[WP\XR^ZU^[VXUOXUO[XQ\YR]ZS_[V_[W[VSXSO[VR_[W_ZV`[Vc^Zc^Zhc`jfbea^c^[b^[c_\d`\e`]b^Za\X_ZV^ZVa\Yb^Zb]Y`[V`[W_ZW`[WPGC,0#3(!7,$:0'=2)?4+A6-C8/D9/E90E:1F;1G;2G<3H=3H=4I>4I=4J>4K?5K?5K?5L@6L@6L@6M@6M@6M@6M@6NA7OB8OC8OB8OB7OA7OB8PC9QD:QE:QE:RF;RF;RF;SG;SF;SF;SGWH>WH=WH>XI>XI?XI?YJ?YJ@YJ@ZKA[LB[LB\LBZKAYJ@XI?UF=RD:N@7I=3F:1G:1G901'!-$.%0& 2(!3*"5+$7,%9.&:/'<1(=2)?4+@6,C7.E90H<2J>4L@5MA6NA6PB7QC9RD9TF;VH=WJ>XI?YK@YLAZLB[NDZMDXKBRF>C>=-04.149;@IKQKLRKLQMMSKKQJJOJJONNTOOVNNTNOUSU]UW`QS[QSZQT]hejsd^r^Ss^Tt_Uu`UvaVvaVwaWwaWwaWwaWvaWvaXvaXuaXt`Ws_Wr^Vq]Uo\Sm[RkXPiWNhVLgUKfTJeSIdRIcRHaQG`OF_OE^NE]ND\MCYKBUH?THAUPN@AC@BGJLSHIOEEJIJOGHMDEIABE?@CBCGEFKFGLEFKEFKDEIBAECCFEFJHIOLNTRT[TW_UX`VYcSV^MOVOQY[_hsvhigTVIQPGRNHUPKTPJQLFVQK[VQ\WS_ZV`[V`[V_ZV\WR[VQ\VR^YTa\Wd^Zb]Y]XS[VRZUPWQLXRM[UQ^XT]XT\WR\WS\WSb^Zd`\`[X^ZV^ZV\WS`[W^XT\VRb\Xb]Y^YTXRMXRLYSNIB=*#(*!,#-$/&0' 1(!3*#5+$7-&8/':0(;1)=3*>4+?5,@5-A6-B7.C8/D8/D90E:1F;1G;2G<2H<3H=3I=3I=4I>4J>4J>4J?4J?5K@5K@6LA6LA6LA6LA6LA6LA6LA6LA7LA6LA6L@6K@5K?5J?4K?4L?4OA5SD7XH:]L>l`Xja\VNIkb_}vs~vriUF[H:`L?TB770,rkh]TP=.$:-$B3)=/%'")!&!B??MKKGFG@@C89<,,/++,$##*'%2//767113''(&"#% $"!#$$#$&'('(),.1-/303825:36<.15)+/(*-%&( !"'!-,/,/314948=59>7C?;D@;EA?EB??<9>:8@<8B>:?;7>96?;7D@=MJGLIFIFDIFCGDAD@=D@<@=9>;6A>:A>9?<7>;6;84740840=96A>:@=9>;7<95;85862751752753.-+751=;697176054.760871<;6><8><8;95973;94;94?=8@?:=;787297386331./.+,*'-+(.+)31.75231/$%%"##%&&"""$$$%%%"##"##$$%#$$"## "##!""$#"!!!'('%$$$$$###$%%+++'''######%%%%&&"""&'''(("###$#())%%%"##!""  !!%&&'((#$$##$!!! ! $$#$$#"""#$#$%$$$$#$$  !!! !!######$%$&''$%%&''*++())&''((('&&''&###&''()(%&%"""#$$#$$'('&&&&'&$%%#$#%&%%&%""! !!! %&%&&&((''&% !""(((+,+)*)$$$'''*++2/,@93;60C=6?:3?93<6/<6/,)%C=6B=6A;4?:4>93>93;5/72--)$72+2-(,'## !$" #"!%#"(&%$#")'&%#"%#"('&&&&+,+-.-+++''&++*&&&())/00343343000**)******''&**)00.#! 0/-431530-+)-,+/.,654986A@>>=:420)('0/-753753210752<:5<:6DB>FD@LIFROKSPLSPLRNJPLHOKGQMISOKPKFMHCQMGSOITQKTQKUQKXTM[WQ]ZT\XS[WR]YT_[U_\V_\V[YRZXQ[XR[WRUPLRLHWQL]WSa\Wd_Zgb^_[WZURZUQYUQ[VQ_ZVb^Za]Za]Zb^Zc_[e`\gb^e`]d`\b]Y]XTXSOSMISMIWPL5'"-1&5*#9.&;1)>3+@6-B7.C9/D90E:0F:1G;2G<3H=3H=3I=4I=4J>4J?5K?5K?5L@6L@6L@6MA6M@6M?6M@6M@7NB8NB7NB7NA7N@6OA7OC8PD:QE:QE:QF;RF;RG;SG;SF;SF;SGXI>XI?XI?XI?XI?XI?YJ@YK@ZKAZKAZKAYJ@XJ@UG>RD:NA7I<3D8/D8/F908,%,#.$/&1' 3)"4*#6,$8-&9/';0(<1)=2)?4+A6,C8.E:0H<2I=3J>3K>4M?5M@6NA6PB7RE:TGWJ?XK@YLBXKBUI@OD=888-03-03;=AGIOHIOIINLLRJKPJJOIJNMMSOPVOPVPQXRS[UW`QS[OQXPRZSV_dagqc]q]Rr^Tt_Tt`Uu`Uu`Uu`Vu`Vu`Vu`Vu`Vu`Wt`Ws`Wr^Vq^Uo\Sn[RmZQkXOiVMgULfTJeSIcRHbRHbQG`PF_OE^ND]ND\MCYKBVI?QD;UOKFFG:<@CEKIJQCDIEEJFGLFGKDEIABE>?B?@CCDIEFKEFJEFKEEJAAEBBECCGGHMIJPOQXQT\SU]UXaTV_NPWLNVUXaor}gihVWKTSJQMGOKEUQKRNHVQL[VQXSOWRMYTP\WS]XS[VQ\WR]WRa[V`[Va]Xc_[b^Z_[W^ZU\WR]XS^YT`[V^YU\WR]XTZUP_YU_ZW]XT^YU`[X`ZVb]Xd^Za\Wd_Z`[WZUPXRMXRM[VQ\WRMGC1)&"&) +"-$.%/& 1(!2)"4+#6-%8.&:0(;1)<2*>3+?4,@5,A6-B6.C7/C8/D90E:0F;1G;2G<2H<3H=3I=3I=4I>4J>4J>4J?5K?5K@5K@6LA6LA6LA6LA6LA6LA6L@6L@6K@6K@5K?5J?5J?4J>4L?4OA5RC7VF:XH;`UPc]Z]XVvomxrpwnkZG8TB5WE8SA62+'lfd[TP?0%5*!7,"7*!) "%% 988EEGDCE<;HEAHD@EB?DA>EB>HEBKHELIEKHEGD@EB>GD@LIFPMJLIEJFBLIEPLISPMTQOTQOSOLPMJNKHQMJPLHRNISOJRNJPLHSOJUPLXSOVRNXSOVQMTOKSOKRMITOKUPLVQMQLHNIEQLHRMIOJEPKGXSO\WS\WRYTOWQLUOJRLGOJFQLHQLIRMJQMJPKGOKGOJFRMIRMITOKSNJOJFMGCPKGQLHPKGRMIRMIQLHQLHPJFUPLWRNTPLRMJPLHNJFMIFLHELHDMHEKFCIDAFA=KEALGCLHDLGCKFBLGCMIEKGDEA>FB?FB?D@=@<9<853/,!,,*,.-*,+')(%'&%&&&''&('&'&&'&((('(()*))*)()(()('('$%%#$#"#"!"! !    !!!!""!"!!!! !   ! "#"+--+,,*,,(**(**(++*,,+--,..-//.00021232/0/./.*+*))))++)++)++*,,*,++-,,..-..-/.,--.//.0/-/.+-,*,+*,+*+*())'))())(*)')('((%'&&('&'''('&''(*))*)'((')(&('%'&%&&&((%&&$%%$%%%''&('())*++KGBIEAEA=HD@IE@KGBMIEOKHNKHIEBJFBKGDOLIJGDFB?FC@FCAC@>DA>C@<@<8=95>:6EA>LIFHECA>;EA>HEAJGCIFBDA=>;7@<8D@;EA=C@:;85:73:73@>:A?<<:8864653764432**) 984DB=A@:??8<;4982992972=<6BA=8>=9=<85411/,,*&-*'0-*52/63/0.,#$$"##%&'!!!#$$$$$!!!!"""""!""""# !! !!"""%$$"#"(((''' %%%$%%!""'((+,,())$$$"""###%%%"""%&&())'(("##%&&!!!!"""""!"! ! """())())$%%"## !! ###$$#%%%$$$$$$%%%### ###%%%"#" &&&''''((())'''''',--*,,()))**(''##" %&&***&&&!!!$%%!""%&&%&%%&&#$#!!!####$$!!!!"!###"##&'&%&&&&&#$# ! #$#()(,-,***%%%'('+,,40-@92=82C=6?93?:3<60;5/.+&C=6A<5?:3?93?93>93;6051+.*%71+1,')%!#   %%%,,,.//---(('*+*%%%())/00122344111)*)***)*)&'&)*)00/ # %#!)'%#! 0.,21/20.*)())'-,+543764?><=;941/)(&0/.652753420641><7?=9DA>GDANKGOMIOLHROKWSOWSOVRMRNIOKFOJEPKFQLFPLFNJDPMGTQJWSMYUOVSMPMHNJDPLF[VQa]X`]W`_Xb_Ya^Y\XTWRNVPLXSNXSO_ZUb]Xc^Z`[WZTOYRMYSOXRNYTP^YUa\Ye`]jeblhelhemhegc_a]Yb]Yb]Y]XSXRMUOIWRMG>:+/$3)!7-%:0(=3*?5,A6-B8/C90D90E:1F;2G<3H<3H=3I=4I>4J>4J>5K?5K?5L@6L@6L@6MA7MA7M@6M@6M@7NA7M@6N@6NA7NA6OB7OB8PC9QD:QD:QE:QF;RF;RG;SF;SF;SF;SG;SGWI>WI>WH>WH>WI?XI?XI?YJ@YJ@YJ@ZK@YJ@XJ@UH>RE;NA8I<3D8/B6-D7/=1),#-$/%0' 2("4*#5+$7,%8.&9/':/'<1(=3*?5+A6-C7.E9/F:0G;1H<2I=3J=3K>4L?5OB7QD9RF;SF?DEFLFGLGGLJKPJKPKKPJJOLLRPQWOPVPQXSU\UX`TV_RT[SU]TV^QS\cafufap\Rr]Ss_Ts_Ts^Ts^Ts^Tt_Ut_Ut_Us_Us^Ur_Vq]Tp\Sn[RmZQlYPjXOhVLfTKdRIcRHbPGaPF`OF^ND^ND\MC[LBYKAVI@QD?AFEFLEFK@AEABFBCGCDICDHAAE>?C=>BBCGCEJCDHEFKEFKBBGAADBBEDEIGINMOVORZPS[SV_SW`ORZLNVQT]koznptWYLZXPVRMMICOKEPKFSNIXSNUPKSNISNJVQM[VQ]XS`\X]YT[VQUPKXRM]XT`\X\XS[WSWSOVRMZUQa\Xc^Yb]Yb]Ya\Xa\X^YU]XS]YU_[Wc^Zc^Ze`[_ZV_ZU`[WZVQYTOYSOWRNXSOXSNSNJ81-$%(*",#.%/&0' 2)"3*#5,$7.&90(;1)<2)=3*>4+?5,@5-A6.B7.C8/D90E:0F;1G<2G<2H=3H=3I=3I=3I>4J>4J?4J?5K@5K@6K@6L@6LA6L@6L@6K@6K@6K@6K@6K@5J?5J?4J>4J>3L?4NA5RC7TE8YKAd]Z`[ZYUTqkijed~zzld`VB3L;/N=1M<1*$ c_]ZUT;.%*"2(3( ( $"#224??B;7;A5:?37=149-/3(*-&(+&(+$&(%'*,/3&'*     !%.+,,.2,/4,.3/2737<48>48>26;14:/38,.3-05.27/3826<59?349/00-.-+,+)+**,+,--,--,-,))(&'&'''(('()'**(,-+-.,++*++*)*))*),-,..-00/121564::877511/))'((%-,*22033244244223100/-.-././0/./.-.-./../../-*+*)*)*+)+,+./--.-,-,*+*+,+)*)''&,,+01000/..-$$#   !"!"#"  !"#"#$#$%%%&%&'&%&%$%$%%%%&%;97EA>C?;>;7=:6?<8EA>GD@JGDLHEIEBEA=JGCPMJOLIJGCIEALHDMIENJGQNKSPMTQNURPTQOSPMQMIRNJQMHQLHSOKSOJTPKVRNUQMVRNWSOTPLTOLUQMTPLTOKUPLTOKQLHSNJQLHPKFSMHUOKZTPYTPXSNUOJSMHVPKSMISNJUPMRNKOJFNHDRMIQLHQLHSNJTOJSNJQLHPKGRMIRMIOJFRLHSNIPKGPKGQKGUOKTNJQLHMHEJEBJEBLHDMIFLHEMIENIFMIFLGCOJFNIELGCKFBKFBKFBLGDJFCD?:6=96730! ,+(+-,+,,)**'('()()*)(*)'((&'''(''(()))())(((()(()(%&&%&&$%%"##!"! !! !! ! !!!"! !   $%$-..+,,+,,*++)++'**)+++,-+--,.-.//010010./.+,+())&((()))***+,,..*,,+-,+-,+,,+-,,---..-/..0/,.-,--,.-+-,),+)++)**(*))**())'(((*))*)()))***,++-,*++(*)')(&((%''%''%&&$$$$%$&('()()***,+IE@ID?IE@GC>C?;EA=FC?HEBJFDHDAJGDIFDMKHKHFKGDMJGOLIJFCHEAFC?D@=A>:@=9IGCKHFC@>;85=95C?;EB>EB>DA>@<9=95=95>:7?<8<:7863531321543654664664221++* 751@>8?>7?>8?>7==6>=6=<6>=8CA:?<8B?;EB>MJFPMHOLGQNJVSOXUQWSOSOJQMHPLGQMHRNHRMGQMFSOHYUO]YSZVQRNHLHBMIBOKESOI\YSa_Ya_Y\ZT^[Vb^Ya]Y]YTYTPWRMZUQXTOXSO_ZVb\W`ZU\WRZTO[UQ_ZVf`]hc`kgdlhfiebhdaea^b]Ye`\gb^d_[a\W]WRYTOWQL5(#- 1'5+#8/&;2)>4+@5,A7.C9/D90E:1F;2G;2G<3H=3I=4I=4J>4J?5K?5K?5K@6L@6LA6LA7MA7MA7M@6M@6NA7M@6NA6NB7NB7OB8OB8OC8PC8PC8PD9QE:RF;RF;RF;RE;RE:SE;SF;SGWH>WI>XI?XJ?YJ?YI?YJ?WI?UH=RE;NA8J=4E90B6-B6-B6-0'!-%/%0' 2(!3)"4*#6,$7-%8.&:/';0(<2)=3*>4+@5,B6-C7.D8/E90F:1H;2I<2J=3L@5NB7PD9QD9RD:SG=TH>SG>PE?C=>A?AEACGABGCDIDEJCDH@ADABEBCGEFKKMSOQXPRZRU]RU^ORZKMUPR[dgqvyZ[QZYQXTORNHRMGSNIPKFRLHSNJTOJUPKVQM[VRYUPXTO[VQ^XS\WR`ZUb]Xe`]`[W[VRVQLUOJWRMZUPYTP^YUa\Ye`]c_[d_[d_Z_[W`ZVfa\gb^e`[\VQXRN\XS\WRZUPVQMSNIVQLWRNSNJKHB;6/'$')!,#-$.%0' 1(!3*#5+$7-%9/':0(<2)=2*>3+?4,@5-A6-B7.C8/D90E:0F;1G<2G<2H<3H=3I=3I=4I>4J>4J?5J?5K@5K@6K@6K@6K@6K@6K@6K@6K@6K@6K?5J?5J>4I>3J>3L?4N@5PB6SD7`VO^YWMIHMHGfa^^ZZ~|gde_WUJ8+=0&F7,F6,!QMLROP5+%%,$,#""""../9;>459037026-/2%%'  !#$&#$%" #$#!!"$%'%$-.125:6:?7149037.15*,/*-0*-0(+.&(+'*-(*- "!   #*$",*,%'*)+/04937<25:-/4,/3.16,.3(*.*.2-166:A47=./2---,-,...-..)+*)*)*,+*+++,+(*)%'&&&&'('((())(++*,-,,,,,,+*+*)*(++*..-11022145399789766422011/342443332231442332221010120232010,.-*,++,*,,++,+,,+--,--,01///./0/-.-,-,+,+))(,-,01000///.#$" ""!  ! "#"$%$$%%%&%%&%$%$$%$%&%;97HDAFB=A=9A=9D@=IEBJFCMJGOLHPMILHDOKGTQNURORNKQNJQNJMJFMJFOKHTQNXVSYVTWURUQORNJSOJPLHPLHPLHQLHPKGPKGPLHRNJQMHMIDPLHRMIRMHRMIUPKVQLSNIUPKSNIPKFNHCQKFVQLUPKVQLVPKUPKXSOXSOXSOWSPUPMRMJPKFTOLSMJOKGPKHRMIRMHPKGOJFPKFOJFPKFPKFQLGPKFNIEPKGTOKSMINIEIC?HC?MHDQLIQMJQMJPLINIFLGDPKHPKHPKHPKHPKHKFCHC?KFCJFCD?<@<8@<8=95:62:62730#  +)&+-,*,+)**()(()))*)()('('%&&%'&'''(('(((''&'(')*)&''%&&%&%"#" ! ! !"! !     !     !  ##",--+,,+,,*,+*,+&((&))(**)+++,,,-,---..--.-*++')(%''%''&((*++-..*,+)++)++*+++-,-/..0/.00/1/.0/-..-.--/.,.-+-,*,+*++)++(*)')()+**++*+++,,,--+-,)++'))'))'))'((&('%&&#$$#$#%&%()(*+**++HD?HD?FB>EA=@<8?:6@<8EA>HDBD@:C?>7==6=<6<;5;94=;6@>:@?:@?:?>:=;7:8475142.1/,1/,0/,20.20./,*.+(,)&'&$"##"""%&&%&&$%%$$$ !!$$$!!!  ! ###!""$$$'('!""'((---&&&"""%&% %&&(((&''#$$###"#"""""""###&''*++&''!""!!!#$####"##!""%&&#$$"##### !!##"$%$()((((&&%#$#!!!"""$$$%%%""!"##((()*)+,+*+*()('(')***++'((&''&&% #$$%&&!""!!!"""!!!#$$&&&'''$%% !! ! $%$""!!!!###''')))))))*)$%$$$$#$#'(''''(('))((('())840<71<71A<5<71?93>8193--)%@:4?93?93=71<71;60:5/1-(.*%4/)-(#&""   "##*++000...***,,,(((()(,,,...454343**)**)))(''&+,+110!! $! $! 730974975.-++*)/.-432310:86;96530*)'//-64252/1.+42/>;7><7C@4+A6-B8/C90E:0E:1F;2G<2H<3I=4I=4I>4J?5J?5K?5K@6LA6LA6MA7MA7MA6M@6M@7NA7NB7NB7NC8NC8OC8OC8OC8OB8OB8PC8QD9RE:RF;RE:RE:RD:RD:SF;SFXI>XI?XH>XI?WI?VH>SE;OB8K?5F:2B6.A5-C7.7-%,$.%/& 1'!2("4*#5+$6,%8.&9/':/':0(;1(<2)>3*?4+A5,B6-C7.D9/F:0G;1H;2J>4L@6MA7NB7PC9QF;RFBBCGDEIGHMHJOIJOJKPIJOOPVOQWMNTRT[X[eWZcQSZSU]TV_RU^MOWPS\e`eo^Vn[Pp\Qq]Rp\Rp[Qq\Rq\Rq\Rp\Rp\Sp]To\SmZRkYPjWNhVMgULeTKdRIbPG`OE_ND^ND]ND\MCZKAWI?UG>PC:SHATOM::;235;<@?@D>?C?@C=>A:;><<@?@DABF@AE>?C<>A=>B@BF@AF@BF@BG@AE>?C@ADABFDEIJLRMOVORYRV^RV_QT]LNVMPX]`j}ab]UTKVSMUQKTPJSNIMHCOJESNIWRMXSOWRNYTPWSNTOJXSN^YT_ZUa\Wa\Wea]b]Y`[V^XT_YU_YU[WRVQMZUQ_ZWfa^gc_hd`jebkfcid`gb^fa]c]Y]WRZTO[UQ[VQ[VQVQLTOIWRMWSORNJOKELKACA6.' #&) +",#.%/& 1(!2)"4+$6-%8.&:0(;1)<2*=3+?4+@5,A6-B7.C8/D90E:0F;1G;2G<2H<3H=3H=3I=4I>4J>4J?5K?5K?5K@5K@6K@6K@6K@6K@6K@6K@5J?5J?4I>4I=3J>3K?3M@4OA5SE9YPJF?;842B=:UPNSPQ|usRRTRMK@1%+#>0'@1(#KGEYVW4.+"' % ##"(()35935958=376:@6:?25:15:049,/3+.2),0&(+&(+&(+'*-%') "! !",''*),*-2049/27.15'(+&'))*.(+.%'*+-2<>F8:A!!!## +,+*+*,,,-..+++)*))*)()(()(()(%&%%&%&'&&'&&&&()(*+++++++*+++**)*+*,-,//.010442775775665553342453564342120231454332232232343132./.+,,+,++,++,+-.-00///.//.00.01//0.-.-,-,,,+----.-//.-.,##"  ! ##"##"!"!!"!$%$$%$%&%&'&%&&%&%$%%&'':96NJFUQLOKFKGCLIEOKHMIENJGPMIRNJSOKVROVSPTPMRNKSPMQMIKGCKGDPMIURPSPNUROSPMSPMSPLSOKPLHQMHMJEOKFQMINIEMIEOKGPLHMHDNIEOJFSNITOJVQLXSNTOJSNIRMHRMHRLGUOJWQLUPKSMHUOIWQLWQMYTPYTQXSPXSPZURXTPWROSNKQMIRMIRMIPKGPJFPJFRLHQLGSNJSNJQLGRMHRLHOJFPKGPKGNHDLFBLGBQKHSOLQMJRNLRNLNIFLGDNIELGDLGDOJGRMJMHEHC?JEBJFCGB?A=9@<8@<8>95<84952%" *(%-.-+,,)**()()*))*)(*)'('%'&%&&&'&&&%%&%$%$%%%%&%$%%$%$#$$!!!! !   ""!##" ##"*,+*,,*+,)**(**&((%((&)((***,,-..///..-,-,*+*&('%&&%&&&'()+*,.-,..+--+,,*+++-,.0/021021132021/00/00/10/10,.-*+**++)++())'(()+**+++,,,--,.-,..+,,)++)++(*)&(''('%'&#%$"###$$'(')**)++D@HEBC@=DA>HEBHDAJFCHEBEA>C@=>;7:73;86:86764553543542331442220+*)""!%%#10-:84?>8??9@?9@@:@@9==6>>7;<5992881:92872861:94=<8?>9A@9=<7:847621/,0-*.,)0.,0.+1/,/-*+)&''&#$$###%&&%%%$$$##$ !!#$$!!! !!"""#$$"##%&&)*)!!!&&&---''' !!#$$!!!$%%%&&&&&"""""!######"""$%%'''*++*++"## """!""!!!"##&'&%&&#$%$%%### """##"(''''&%%%!"!!! ##"### !""'(')*)+,,())&&&%%%&''())&''%%%####$$%&% !""%%%$%$###$%%((((((#$#"##%&%$$$#####"%&%&'&(((**)%%$###"""'((&'&'('(('(('())950<71;60?93=71>92>7171*+'$?:3?93?93=82<71;60;5/3.),($2-'*&!%""  #$#***/00.//*+*--,)))))(*+*,--333454--,*+*))))*)+,+//. !!%"!%#"" 40-:74853/-+-,+0/-43221/:97;97642*)',+)32/41//,*1/,851:83B?:DA=GD>D@;EA4J?5J?5K?5K@6LA6LA6MA7MA7MA6MA7MA7NB8NB8NC8NC9OC8OC8OC9OD9PD9PD9PD9QE:QE:RE:RD:RD:RD:RE:SF;SFVH=WH=WH>XH>WH>WI>WI>VH=SE;OB8L?6G;3C8/B6.C7.@4+.%.%/%1' 2("3)#5+#6,%7-%7-%8-&8.&9/':0(<1)=2*>3+@4,A5,B7-D8/E9/F:1H<2J>4K?5LA6NC8OD:OD:MB9GA=468,.1.13=?D?AF:;>AAECCGEFJGHMHINJKPHINMOTOPVLMROPVUX`VYbQS[PRYUXaTW`MOVLNURU^oikn\SmZOo[Qo[Qo[Qo[Qo[Qo[Qo[Qo[Qo\Sn[RlYQjWNhVMgTLeSJcRIbPG`OE^ND]MC]MC[MCZKAWI?TG=PC9K?7TNLA@A34789<;:;>=>A>@D>?C=>B<>A;<@?AE?AF?AE?AE?@D=>B>?B?@CABFEGLJLSMPWRU^SW`SW`NPXKNUX[ez|ijjQPFUQLSOJRMHMHCGB=ID@NIETOKVQMTOKTOKUPLQLGOJETPKUQL\WR_ZV`\X[WS_ZV_ZV`[Wc^Z`\X\WS\XT_ZV^YVa]Zhc`kgdlgejfcgb_c^Zb\X]XS\WR\WSYUP\WR^YTXSNXSNXSOWROTRLPPFNNBLKA83,$&( *!,#-$/&0' 2)"4*#6,%7-&9/':0(<1)=2*>3+?5,A6-B7.C8/D9/E:0F;1F;2G<2G<2H<3H=3I>4I>4J>4J?5J?5K?5K?5K?6K@6K@6K@6K@6K@5J?5I>4I>3I=3I=3K>3L?3M?3TH>NFA;51-*)942A=59>26;-04*-0')-%'*&(+$&)%'*%'*"#!#0+,003*-2*-1(*.""$"#%&(+'*--/4>@H>@F$&&$$",-,,-,./.-.----*+*)))'('&&&&''%&&&'&'('&''%&%&''())()(())*,+*,++,+-.-//../.221787887886886786564554443221231443343231121121121/0/,.-,-,,-,+,*+,+//.00/./.-.,./--.-+++)*))*)+,+./.221..-!!   ! !"!!"!  ##"#$##$##$#&'&&'&'''()(()(())()('((:97OKGVRNQMHLGCOLHQMJOKGPMIQMIPMITPMWSOVSOSOKROKSOLRNJKGDLHERNLVSPROLQNKOLHMJFMJENJFLHDMIEMIDOJFSNJRNJOJFOJFQLHQLHOKFMHDQLHQLGSMHUPKVQLWQLVPKVPKXRMVPKSMHTNIRLFRLFVPKWQLYTPXSOVQMYUQ\XT[VSWRORMJPKGQLHOJFLGBNHCOIETOJUPLWQMXSNVPLTNJSMIRMIRMHQKGPKFQKGRMIUPLSOLNJFNJFOKHKFCMHEPKHMHEIEAKFCNIFJEBD?;GB>NIFIDAE@EA=B=:<85(&" )($,.-+,,*,+)+*)**())(*)')(&''%&&%&%%&%$%$###$%$#$#"#""#"##" !   "#!#$" ())()*(**'))'))&((&(('))(***,,,---.-,-,*+*)+**+*(*)&((&((),+,--,..-..,--,.-/0/122133133132/10/00/11010021.0/+-,*,+*++(**(*))**)+*+,++-,+,,,---..,..+--)++&((%''$&&#%$"###$#%&%')()**KGCMIFLIFMJGMJGLJGJHEGDAFC@JFCHEAKHENKHKHDGC@KHEMJGLIFIFCHEBEB@C@=A>;C@=CA>DB?FDAEB??<9=:7;86654654553543443321332321-,+""!*)'/.+0/,**($$$/.+992==6;<5;<5::3;<4<=6<=5::3:93982;94><7@>:=<8<;8<;8?>:=<8;9531.20-0.+0.,.,)2/,20,,*'%%$ !!""!$$$###"###$$ !!! #$$#$$%&&*+*"""%%%+++&'&!!! !! "##%%%!"" ######"###$$()))*) !! !  !!%%%%&&$%%%&&%%%"#"##"!!!&&%&&&%%% !! !!!!!!''&()(*++'((%&&#$$#$$$%%%&'%&&####$$$%%!!!%&&%&&"##&''%&&&'&((($$$ !!"""#$##$#"""######&&%(('##" !!((('('&'&''&''')**:61;60<71=71=82=71=606/)-)%>92=82>93<72<71:5/:5//+&,($0+&($#!$"!$#"%$#)('&&&*++000010,,+-.-++*)))(((+,+222455110+,+()(,-,--,./. !%"!$"! 3/-:6431/,+)/-,10.32121/<;9><:975,*),+)31/30..+(0/+972?<7B?:EB=GD>DA;GC=JFANJENIEQMHTPKUQLUPKVQLWRNVRMTQLQMITPKUQKUQKYUOZVP[WR_\W]ZUZWPVSMURLVSMUQLTOISMIWPLYSN[VR]XT[VRZUQ\WR\VRYTPXTP]YUd_\c_\_[X]XU]YU_ZW_ZV[VQ^YU`ZV[UP^YTc^Z`[W[VRYSNWRL[UPG@;)/$3)!6-%9/'<2)>4+A7.B8/D90D90E:1F:1G;2H<3I=4I>4I>4J?5J?5K?5L@6LA6MA7MA7MA7MB7NB7NB7NB8NC8NC8NC8NC8OD9OD9PD:PE:PD:QE:QE:QE:QD:RE;RD:RE;SF;SFWH>WH>WH>WH>WH=WH>WH>UG=SF;PC9M@6H<3D90B7.D8/D7.5+$-$/&0' 2(!3)"4*#5+$6,$6,%6,$6,%7.&90';0(;0(<2)>3*?4+A6-B7.C8.D9/E:1G<2I>4J@5LA7MB8LB8J@7?=<136,/2025>@E:;?89;?@DABFCDHDEJFHMHIOGHMKMRNPVKLRLNSRT\TW`PS[NPWVYaTW`JKQGHNIKRTV^f^^lYOlYNmZPnZPnZPnZPmYPmZPmZPmZPlYPjWNgULfTKeSJcQHaPG_OF^ND]MD\LBZKAYKAWJ@TG=PC:L@8SMJHGH78:67;9:>78;44666788;:;>89<89<:A=>A<=A:;?<>B?AE>@D=?D>@D<=A<=A?@D?@DACGGIOKNVOR[TXaSV`OR[KMUTW`qtopsPNDSPJTPJRMHKFAE@;GB=MHCTNJVPLRMHQKGSNIQLGNICRMHSNHWRNXTOXTPWSO[WS^YU_ZV_[W^ZV`[Xa]Y`\YUPKWRN_ZVea^ea_c_[d_[d_Zb\Wa[Wc^Y`[WYTPYTP^YUZUQZVQXSOVRNSQLQQHPPETUJTUKA>7) %) *!,#-$.%0' 1(!3)"5+$6-%8.&:/(;1)=2*>3+?4,@6-A7.C8.D9/D90E:1F;1G;2G<2H=3H=4I>4I>4J>4J>5J?5K?5K?6K@6K@6K@6K@5J?5I?4I>4H=3H=2I=2J>2K>2J>1TIAE>:3/-$""3/,755::;qlj:=A954/%5)!<.%#20089=**+$$  #'!%" ),/0386:@26;-/3&(+ !&(++.2$%("#%%&) !#% %! !!!#$#'&&-/31496:@6;@59?/26)+.%&(!!"!"##$'%&)&(+%'*#$&!$ #!% 2./0/2%'+#%(""$!"$$%(,.3>@HEFN013#%$$$"--,./.121121./.*++)+*()(&'&%&&$%%&'&((('''$&%&''()(()()*)+,+-.-./.00/232010132776898898998998775664553443232121232232132010010/0/-.-*+++,++,+*+*,-,/0/././0../...---,,,+*+*+,+..-110-.-   ! !"!"##$%$###"""!"! !  #$#$$$$$$#$#%&%'('()(()(()('(((*)())875KGCMJFQMIPLGROKUQMTPLTQNUROUQMUQMWSOXTQVROXURYURUPMPKHQNJSPMXURTQNMJGKHENKGNJGLHDHD?IE@KGBLHDRNIVRNSNJOKFOKFRMHRMHOJEOIEQKFRMGQKERMGVQLWRMXRL[UPYSMUOITNHUOIWPKZTO]WS\WSZTPXRNXSOVQMWQNVQNUPLOJFKFALGCNHDPJEPJEVPLZTP[VQZUPWRNTOJSNJVQMUPLQKFOIEPKGQKGRLIRMJNIFLGCMHEPKIRNKQMJLGCMHEJEBLGDLGCGA=HC?KFCIDAGB?HC@IDAGC@B>:=96+(% (&#,-,*,++-,*,+*+*(*)')(&((&('%'&%&%$&%$%$"""#$#"#"!! !"!##" ! ""!#####"  &((&(('))'((&((&()&))(**)***,,+--,.--.-,--,---.-+-,)++)**+--.00/11.00-/..0/011132243243233021032132021021.0/,.-+,,*,+(**(**)**)**)+*)+**+**+++,,,..,..*+,(**&((%''$&%$%%$%%$%$%&&'))IFCMIGLIGKHFHDBFB?FC@EB?FC?MJGPMJPMKQNKPMKNKHOLIMJHJGEKGEIFCC?<=96841;74?;8A>;A=;><9:86654443554776665553331332,,+""!##!++(-,)/.+&&%&&%(((&&%%%$--*;<5<<488078067/67/670771;:4:94862973<:6<;7>=9=;8><8;957411/,,*(+)&-+(-+(/-*0.+.+(%%%  """  !!#$# !"!  !!!!!"##()(!"""""'((''' !""!""#$$!!! !""#$#$$$$$$$%%''''((!""!!! !!!!!&&&'))%&&$%%$%$#$#""" ###$$$$%$ !!  %%%(((())'((&''$%%$%$#$$$$%%&&%%% """%&&$%% !!"""&''&''#$$#$$$%%'''''' !!#$#$$$!"!!!! !!$$$&&&!!! ! '('%%%''&))(**)***<72:5/=82;60<71;60<5/3-(.*&=71=71=82;61;61;5/83-)%!*&",(#$"  #" #! &%#&$"&$#+)(&&&+++121122,,+..-/0/./.(((*+*111233110++*'''+,+,,+//.&#" $#"%#"#!  2.+62/,*(('&.-+20.10./.-764><:><:0/--,*3211.-,)'/-+861=:5?<7HD?JFAGD>HD>KHBNJFNJEMJEMIDNJFQMHSPKUQMTPKSOISOIUPKVQLXTN[WQ\XR\YSa^Za^Z^\W^[V\YT[XRZVQYTPYTO\WS\WS[VR_YU^YUYTOYSO\VRZTPZTO]WS]YU]YU\WS\WS_ZV`[Xa\X`ZVa\Wf`\c^Yc^Yc^Z^YTYTPXSNXRM[VQZUP3*%,!1'4*#7-&;1(=3+?6-A7.C8/D90E:0F:1G;2G<3H=3I=3I>4J>4J>4J>4K@5LA6LA6MA7MA7MB8MB7MA7NB7NB7NC8NC8NC8OD8OD9PD:QE:QE:QE:QD:QD:QE;RE;RE;SF;SF;SFVH>WH>WH>WI>WH>VH=VG=UF4F:1C7/D80F90=2*.%/& 0' 1(!2)"3*#4+$4+$4+$4*#5+$7-&9/'9/':/';1(<2)>3*?5,@6,A6-B7.C8/E:0G<2H>4I?5J@6I@6E>878:/14-0346:<=B67:78:>?C@AEABGBDIDFKGINEFKIJOMNTJLQJKQPRYTW_RT]NPWSV^TV_HINEFKFGLHJQUW_i_^jWLkXNlYOlYOlXNkXNkXNkXNkXNiWNhVMeTKdRIbQH`OF_NE]MD\LC[LBYJAXI?VI?SG=OB9I=5QKHLKL:;=79<9:>78;44632422355789<78;78::;>;<@<=A<=A<=@:@D=?C?AF=>B<<@>>B>?B?@DCEKHKRJNURV_QU^PS\JMTOR[ilwwyNMDSOJSPKPLGOJFNIDPKFQLHQLHTPLUPLTOKRNIUPKVQLZTP[VQYTPVRMVRNXTP\WS^YU^YU\VR[VR_ZWb^[a]ZYTOXRM\WS_[Xa]Zb]Yd^[d_Zb]Xa\Wb]Y^YU[VRZUQWRNTPLTPLXTP[VSVTORRITUKUVLUVLUVKLJA2+%&)*!+",$.%/&1'!2)"4*#6,$8-&9/';0(<2*=3*?4+@5,A6-B7.C8/D90E:0F;1G;2G<2H=3H=3I=4I>4J>4J>5J?5J?5J@5K@5J@5J?5J?5I>4H>3H=3H=2H=2I=2I=2J=2VMGEA?/--  .+)212779c_^248423( .$7*"$%$$025*+-##$!!'!)$!()--0537=48=149,.2&'*"#%(*-,/3')-!!# "#% $""!!"$& % ,,//3748>48=26<,/3$%'  ##%&'*%&(#$& !"$$ &! 5013/1#"$ ##%)&(,24:@AG134,-,())&&$./.00/01/010,.-*+*)*)()('(''('%&%'('()(&''%&&'(()***+++-,./.00012101012112145489867667688788777555344355323211012123134312112001/..-*+*,,+./-,,+./.221./../../...--.---,++*+,+-.,00/,-,  ! !"!#$$$%$$%%$%$#$#"#"!"! #$#$%$"#""#"#$#%&%&'&()(()('(')*))*)542JGCMIFTQMVRNVSOVRNUQNUQNTQNTPLRNJQMHWTPWTQWTQWTQVROVRNVSOUQMVSPWTQTQNTPNVSPROLLHDHC?KGCPLHNJFQLHUPLVQMVQLWRMWRNRMHPKFOIDNIDOJEMGALFARLHTOJXRMYSMWPKXRLYSM[UO\UO\VQ_YT[UQZTPYSOWQMUPKXSOZUQYTPSMIMGCKFAOIEQKGRLGVPKXRMZTOXRMTNJQLGQKGSNJRMHNIDKE@IC?LGBPJFRMJQKHPJGOJFPKIPKHNIFKFBPLINJGMIFNIFHC?HC?JEAJEBJEBIEBIDAHDAC?<>:7/+(!'%!-.,*,+*,+*+*)**(*)')(&('%&&%&&%&%$%%$%%"##!""!"" ! !"!!! !!" !!    ! !"!#$##$##$#"#!$&&%'''))())&(('(((***,,+,,+,,+--,../11/10/00/00.//-./-///11022133/21-/..0/022133244243132133244355364143/00,.-*,+*++(*)())(*)(*))**)**)+**++)**+,,-//+--)++'))%''$%%#%%$%%#%$#%%&('KHFMJHMKIMKIIFCGD@JFCLHFMJGPMJOLILIFNJGPMJMIGKHFHECEB@IECHEBB?<>:7:73:73;85=:8:86553443443443665987876443,,+##"!!%%"$$"%%#$$#('&'%$&%$''&''&(('))(//,::39:178/89089167/56/66076243.42.540873:96<:7?=9<:675231.*(%&$!*(%.,)0.+/,*,*(%%% ! ! "!  %&%!!!!!!!!!!""&&&!"" #$#&&%  $$$!!" !!"""!"" !!%%%%%%%%%%&&%%%%&%***(((!!!   "###$$%&&'((%&&"##!"!!"" ""!!!!##" ! !! !  ! %&%'''%&&&''&'&#$$#$$$$$"##$%%%&%!!!###%%%"##"##!""$$$&&&###"##$%%$$$""""#"   $$$&'&#$# '('&&&&'&(('&&&&&%:5083-<61:4.:4.;60;5//*%0,'=71<71=7194/94/61,3.)%"($ '#&$!-*'/,(*'$#! %#!)'%'%"*('''&+,+010000--,..,00//00'''()).//222...)))''&*+*,-,...&$# $"!# ! /*(5/-)'%&%$.-+10./.--,+3319869860.-..,4310.,,*'/.,:84=:5:72B?:FC>FC=HD?MIDMJEJFAHD?JFAKGBKGBNJERNISOJUQLZVQ\XSWSMTPKTOJPLFPLFUQLZWR][V[YSWTNYVPYUQVRNTPLTOLWSO\WSb]Yd^Zb]Y`[Wa\Xa[Xa[Wb\Y`[W]WS[VQ]XT]YU^YVb]Yd_[c]Yd_Zb]X`[V`[W`[V[VR[VQ[VQWRM[VQG@<)/$2(!6,$9/'<2*>5,@6-B8/C90D:0E:1F;2G<2G<2H=3I=4I>4J=4J>4K@5K@5L@6LA6MA7MB8MB7MA7MA6NB7NB7NC8NC8OD8PD9PE:QE:QE;QE:QD:QD:QE:RE;RE;SF;SF;SGVH>VH=UG4+?5,@5,A6-B7.C8/E:1F<2G=3G=4F=4=:9247-0313679=8:>457568<=A>?C?AEABGBDIGIOEGLFHMJKQHJOHINMOUQT\QT\NPWQT\UW`GGMDDICDICDIFHOUU]eYVhVLiWMjWMjWMiVLiWMiVMhVLgVLeTKcRIbPG`OF^NE\LC[LCZKBXJ@WH?UG=RE:<>B<>B<>B=?C<=A:;>;A=>B@BFFIOILTNRZRV`PT]KNVLOWcfqwyMLDOMHTPMSOJPLGMHCOKGLGCID@JFBRNJTPLVQL\WS`[W_[W^YU^YU_[W_[X_ZW`[X]XTWRMWQLZUP_ZVd`\ea^e`[a[Wa\Xb^[b^[b]Zc]Y`ZUaZU]WQXRMXSNXSOWRNRMISNJPLHRMJSOKQNIRRIUVLWWNTTKTTJVVLQPG;6/((*!+",#-$/&0' 2(!3*#5+$7-&9.':0(;1)=2*>4+@5,A6-B7.C8/D90E:0F;1F;2G<2H<3H=3H=4I=4I>4J>4J?5J?5J?5J?5J?5I>4H>4H=3G=2G<2G<1G<1G;1H=2RKG;88$## (%$**+457ZVT/15/02#'4(!&'),&')$ "$# & )#$""$&)-0437=48>36<-04*-0+.1+.2)+/"#% #%#""""#'!' +'%/2625;37=15:+-1""#"#$! ! $%'##%"$"%!3..:561/1*)+0-/@GB=LFBQKGRLIPJFQKGPKHQLIOKHJEAGB>MHDJEAKFCOJGLGDJEAHC?IEALHEIEBGB?FB?B=:;73.+'!'$ ,-+*,++++)*)(*)')(&('%'&$&%%&%%&%$%$$%$$%$"##"##!"! ! ""!#$"#$#$%$##"""!   ! !!####$#$$#$%$ $%%%''&'''((())*++,--/00/00.00.00./0/11/11.00/11/11.11.11244233132022.0/.//132243243133133244465566565343010-/.+-,*,+*,+*+*)+*)*))+**++,--,--*,+*++-..-//,/.*,,'))$&&$&&&((&)(%('%''GDAHEBLIFLIGLIGMJGLIGKHGMJHKIFIFDGDAHDAHDBA><9=:8A=:C?<@=:>:7=:7974543432332443654887876876443**)!! !! "" $$" %%$&&%&&%&&%%%$&&%''&('&**))((.-+66/<<4=>6<=6;<5<<6;:5::576298387365142/32/974652/-+-,)(&$&$!)'$20-31..,)+)'"#"!"! ! #"! $%$""""#"!!! !""$$$!!!!!!  !!'(($%$ !!!### !!%&&$$$$$$%&&$$$"#"()(%&& !"" !!"##$%%"## !!!!"!!"! %&&"##!"!$%%!"" !!!"" !"!!"!!!! !! """ !!  !""### !  %%%$%%$%$''&))(+*(74/62.950950840:61:6130,30-A<6=71<7173.72-3.).*%# )%!+'$.+'2.*4/*51+2-((%" " $#!(&%-+))(&,+)()(*+*...,-,..-..-00/---'(()**010677111+++()(,,,//....$"!!!  ,(%4/,)&$&%#--+10/-,+--,320653642/.,/.,542420/-+0.-<:6A?9=:4A>8D@;EA4I>4J>4J?5K?5K?5L@5LA6MA6MB7MB7MA7MA6MA6NB7NC8OC8OD8PE9PE:QE;QE;QE:PD9QD9QD:QD:RE;SF;SF;TG2*.%/' 0'!1(!2("2("2)"2)"3)"4+$5,%6-%7-%7.&8.&9/';1)<3*>4+?5,@6-A7.B8.D90E;1E;2E;2A;6568.14.1446:8;?67;234456;=@=?B>@D?AE@BGFINFHMDFKHJPGIOFGLJLRPS[PS[MOVNQXVYbJLRCCHDDIABFBCIILTWW^h\XgUJgUKhVKgUKgUKgUKfTJeTJcRIaQH_OF^MD[LCZKBYJAWI@VH>SF5E91PJFIGG67813568;9:>45723422401200122445767956957989<:B;=A:<@9:>9:=<=A<=@>@DDGMILSJNVQU^QU_MQYJMU]`jvxPOIKHCPMIQMIPLHKFBQMIRMIOJFMHDSNJVRMWRNZVR]XUZVR[VR]XU^YV]YV^ZW[WTVRNSMIWQL_ZVb^[fb_gcafa]ea]b^[c_\c_\`\Xa\Xb\Wa\V^XSYSN[VQXSOVQMTPLUPLQMHMHDJEAMJDSRJUVMTTLSSISSISSISTJRSIC@8.&') +",#-$.%0' 1(!3)"5+$7,%8.&:/';1(=2*>3+?5,@6-A7-B8.D9/E:0E;1F;1G<2G<2H=3H=3I=4I>4I?5I?5J?5I?4I>4H>4H=3G=2G<2F<1F;1F;0E9/G<3LGE311! ##$$##%%%./1PLL026./2# .$$ !#"$& !$% $'!"(*.15:59?48=25:038038*-0'(+%&(!!# %%"!!!#% '!(!-+,04836<26;/26*,/'(*%&(! "%%((+.#$&!#" +&&4/0935E@CEBD.//,--+,,'(' ))'11/00/00//0/./.-.-,,,+,+,-,-.--/.-/..0.*++')(()(****+*+-,./.121232011/10010011232242232343454454454233122132021./.-.,331665997997553220231120-.-+,++++)*)+,*//../../.110...--,--,..-*+*  ! "##$%$%&%%&%%&%$%%"##!"!"#"$$#"##!"!"#"$%%%&%%&%&'&&'&&'&'('110JGDLIERNKSOKQMIPMIQMJOKHNJFOKHQMJOKGOKGMIEPMIVRPUQNTPLUQNVRORNJSOLTPMSOLSOLTPLOKFOKFMIDPLHPLGOKFNJENJENIENIDNIDQLGUOJWQLWQLVQLVPKVPKWQLXRLYRLXRL[UO\VP]VP^WQ^WQaZUc]XaZUa[V`[V_YU^XS\VR_YU`[W\VRUOKTNIYTO\WRYSNWPKTNHSLFSMGSLGSMHPJEOIDPJENHCKFAKFBMGCOIFRLHNHDNHDPJGPKHOJGKFBJEALGCKFBIDAJEAID@ID@FB>IDALGDHD@FB>EA>C>;;74/,( %#+,*)+*)*)()((*)')(&('%'&%&&%'&%&&$%%$%$#%$"$##$#"$#"#!##"$%$%&&&'&%&%$$##$##$#!  !!!!!!"!"#"$$# !""%&&%'&')()**)**+,,.//.0/.//-././//10021/11/11133144143255244132022/11.///10132022132143244566676465343121.0.,.,,-,+,+*++*+*)+*)+*)+**,+*,+*++,-.122122.0/,..*,,'(('))*,,(**'))%''FC@FC@LIFMJGMJGNKILIGFCAFC@GD@FC@DA>FC?DA>>:8;84;84=96?;8?;8;86753442332432554654665876886543++*!!!""!##!""  """##"%%%%%%$$$%%$$$#%%$%%$''&)(')((('&*)'660<<5;;5::466165033/10-32.31.10,0.++*&,+(0.,.,*,*'(&#+)&-+(41/5300.,-+) ! !"!""!!!!#$#   "##!""#$$ !!$%%""""######$$"""$%$  !! !"! !!!"""     !!!!!! "#"&&&##""""$%%#$$"#"#######$#$$$"#"###%%%''''''((''('((())())(***++*++*++*++*++*,+*-,+,+*+**,,+-,+,,+,+*+*)++**+*+++***,,,.../////.///00/000./....././/////..-D?:=72:5/3/*1-(0+&/+',)%1.*51-62.73.62,50+4/*/+&'$!!# %$"&%#)'%'%#-,****()(+++,,,//.-.-+,+***)))***010787565...)*),-,000000!   ,(&40-)'%'&$..,210-,++*)00.5425420/---+54242/0.,.-+973A>:A>9FB9FB=JEAKGBMIDMIDNJEOKFSPKTQLRNINJEPLGUQLXSNYUPYUP[WR[WR[VQ`]X^[V^ZU\YSZVQYUPYSNXSNYTPZTPVQLSMIVPL[VR^YVc_[gb_fa^gb^hc_idaiebgb^f`]d_[c^Zd_[a\W\WQ\VQ\VQ]WS^YT]XSXSNVPKZUP_YUIC?(.$2( 5+$9/'<2*>4,@6-B7/C8/D90E:1F;2G<2H=3I>4I>4J>5J?5K?5K?5K?5LA6MA7MA7MA7MA7NA6MA6NB7OC8OC8OC8PE9QE:QE;QE;QE:QD:QD:QD:QD:RE;SF;SF;SF;TG4+?5,@6-A7.B8/C90C:1C90A92;99135+.0-0257;8:>458123346;=@=>B<>B=?C>@DCEJDFKCEIFHNGINDFJGINNQXORZMOWMOWTXaMOWCDIBBGAAE@AEDFMEHP\[amb^dRHeSIeSIeTJeTJdSIbQG`PF_OE]MD[KBXIAWI@VH?TF=RE;OB9I<3I>8SMKKJJ89:13635868;56833522411300200201223445745845868;9;>:<@;=A9;?8:=8:=;=A:<@:;?:9:>;=@;<@=?DBDJGJQHLTOS\PU^OS\KNUWZcz|]\ZMIDOLGOKFPKGLGCKGDNIFPKGPKGSOJXSPUQNYUQ^ZV[WS[WSZVRXTPZUQ_[W\WSVQLOJESMH]XT]YV_[Xa]Z[WS\XTZVR\XU_ZW\WT\WS_ZU_YU^YT\WR\WTWRNVRNXSPVRNTOKPKFOJESOIWVMXXPVVMQQHPQGRRHSTJRTIOQFHH>94,))+",#-$.%0& 1(!3)"4*#6,%8-&9/';0(<2*>3+?4+@5,A6-B7.C8/D90E:1F;1F;2G<2G<3H=3H=4I>4I>4I>4I>4H>4H=3G=3G<2F;1E;1E:0D9/B7-G>6B??)))!! """"!!""",,-URR68<-.1#+!$ !$&(,%'* #%!#%#!&(++.2/37.26,.2-04049'),"!"%&(%&( #$"! !"#$$(# ..0037149149037-04)+.&'*$$&##$ #$%(*.*-1$%'## !# $!"&%'))*.-.444122-/.-..*,+%&%**'33100/./../.120232000-..-.-,-,-.-010343,.-(*))))*+*+,+-.-./.221232121121131343243343242343243121232010.///10022/0/,,*00-664<<;==<887453454233010-.-,-,,-,..-00/010010221///--,--,--,))( !!!###%%%%&%&'&%&&%&%$%$"#"!"!"##!""!"!!"!$%$$&%%&%&&%%&%$%$&'&//.IFCKHDOKGMIELIELIENJGNJFMJFOLHTQNQMJOKGNJFNJFTPMWTQTQMVSOYVSXURTPMQNJRNKSOLVRNSNIQMHQLHQLHPKGQLHNIEKFBNIEPKFQLHQLGRLGUOJTNIRLGSMHWPJYRM\VP_XS^XR_XS`YSaYT_XR_XRc]Wd^YaZUa[Vc]Yb\W]WRYRMYSNZTOZTOXRMWQM[UQ]WS\VQ[UPZTOXQLYRMWPJWPKTNIRKFRLGOICLFALFBMHDMHDQKGRLHRLHTNKUPMRMJNIENIFNIENHDKFBIC?GA=ID@GB?IEAKGDGB?FA=C>;@;8;631-* &#+,*)++)*)()(())')('(''('')()**(*)&''%&%$%%#%$#%$"##!"! "!"#"$%%%&%%&%$&%$%$$&%"#"  !!  ! !!!"#" """%&%&'''(('))')(())*,++,,+--*,,*,,+.-,/.,..,../11132133033133022022/11-//-/./10/10021032022243454232021/0/-.-,-++,+)*(()((*)(**(*))+*)+*)**)**,--022022-//*,,())'(()++,.-(**'))$'(FC@FC@GDAHFCJGDGDAGEBC@=C@;>:7?:7C>:C?;=:7875543443543442543776887997876//.""!&%$""!"""%%$###"#"#####"%%$$$$##""""&&%)('('&&%$'&%'&%('&..+//-//-0/-00./.-.-,.-,-,*/.+/.++*&'%"(&#+)&*(&('%*(&,+)0.-1/./-++*)$$##$#!!!##""""""!##"$$$!!! !!! ! ""!"""###$$#%%$&&%&&%%&%$%$%%$%&%%%$%%%$%$$$$###$$$%&&&''''''''())'(''('*+*+++)******+*)*)'('''&&&&%%%%%%&&&&&%%&%%&%&'&(((***))(***,,+++*))((('))))*)'''%%%'''()())))))(((*+*,------.-/0/00000000///.1000/./-,0.-/.--,+-+*/-+-,+,**/.-00/00///.,-,*++***++++++,-,-.-...././///0/...-----,--,-,+,+*+*)C>972-61,2.*2.*62.:50;61:5083.84.94/72-61+2.).*&)%"#!#!'&$'%$(%#%#!*)'**+%%%''')**///...++*++++++*+*///566677000++*...010110!!! +'%720)'%'&%.-,420/-++*)00.7756530/-.-+54220.-,+,+*873B?:A>9DADA;B?9D@;GC>JFAKGCNJFOKFOKGRNISOJRNJPLGLHBKHBOLFTPKTPLUQMYUPZUP[WQ^[VZXSYVQ]ZU[WR\XS^ZVa\Xa\Y_ZW\WSXSOYSO\WS]XT`[Wd`\b^[d`\ea^gb`hdajeciebhc_d`\a\X`ZV]XS]WR^XT]XS^YT`[V`[V[UP\VQa[W\WT5,(+ 0&3*"7.&:1(=3*?5,A6.B7/C8/E90F;1G<2G<3H=3I>4J>4J?5K@6K?5K?5L@6L@6MA7MA7MA6NB7NB7OC8OD8OC8OD9PE9QE:QF;QE;QE:QE;QE:QD:QE:RE;SF;SE;SF;SG4H<3F:1F90H<2J=3?4+/& 0' /& 0& 0' 1(!1)"3*#3*#4+#4+$5,%5-%7.&8/':0(<2*>4+?5,@7.A7.B8/B8/B8/A7.=86567,/1*-//1458;56:013001234:;?;=@<=A<>B=?C@CGBDIBDHDFLEGMCEJEGMKNTMPWLOVLOVRU^NQYEFKCCH?@D?@DACHACHCELaafmb_bPFcQHcRHbRHaQG_OE]ND\LCZKAXI@UG>TF=SE79<:<@:<@9;?9;?8:=8:=9;?;=A;=A>AFCGMFKRMQZPU^OT]LOWQT]y{jilLHCOKGPLHPLHMHDIEAMHDOJFNIEPKFOJGMIESOKXTPWSOYUQ[WS\WS`ZWfa]d_Z]WSYTOYTP]YV]YV^ZWa\Y[VRVRMWRNYTPZVR^YU[VRWQMWQLYTOXRNXTPYSOYTQZVRVQMUPLUPLTPLTQLVVNXXPWWNUUKTTJRSITUKQRHNOEPQFPPEC@60' (*!,#-$/%0& 1(!3)"4*#6,%8-&9/';0(<1)=2*>4+?5,@6-B7.C8/D90D:0E:1F;1F;2G<2G=3H=3H=3H>3H=3H=3G=3G<2F<2E;1D:0C9/B8.@6,E<5756&'(!! ""!$$%%%%()*IFG359*,0"&" "%),0'*.!!#!#$#$$$%')-,.3,/3'(+*,0.26(*-!!"""$'),%%("#%!""""#"! "$*%$,,.,.2.14/15/15-04,.2'(+'(+(),&')%&(%%'(),+.2+.2#$% !!!!! !"#$%#%+)*10133312001//0//00-..+-,&''((&442110//../.010221111//...-+-++,+..-110-.-)***+*+,++,,---010443343343343242343354454232232342454343/00-.-./.02112101/220663887776565343343232232010--,,-+./...-//./0/01000/./...--.,&'% !"!!"!#$$$%$%&%%&%&'&%&%#$#"###$$"##!""!"!"#"$%$%&%$%$$%$%&%&'&..,HEBKGDLHDID@GB>HD@IEAJEAIE@KGBNKGPLHOKHSOKQMHRNJWSPWSQWTQWSPVSPPMIROKVSOVROTPLQLGPKFPLGNIDMHDQMHOKFKFBLHCMHCQLGTOJUOJTNIRKFRLFTMHWQKYRL_XSc\Vc\Wb\Vb[UbZT_WQ_XQaZTb[U`YTb\Wd]Xc]X_XSYRMXRMVPKXRM[UP]WRZTPZSN[TO]VQ_XS_XS\TOXQKWPJVPKVPKUOJQKENHCMGBNHDMGBNGCOHCPJFUOKVQMTOKNHDKFBIC?MGCTNKRLIOIELGCC>:E@=EA=E@FB?HDAHDAFB?@<9>:6B>;GC?C?<@>;:8654344255365466566577677676500/&&%!"!$$##$###"#$#%%$%&%&&%$##""!""!$$#&&%))(++**)(('&)('*)()('('&,,*10/21011010/2101100/.++)*)())'('%'&$$#"$$$&&&'''''&&%%'%%'%%%$#&%%(('(('&&&&&&&&%%%%$###""""""#""#""""!!!###%%%%&%'('**)++*,,+-.-..----+,+)*)*+****)*))))'('&&&&'&'(''((((()*)*+*)*))*))*)()(((()))*+***))*)++****()())())(''&''&%&%%%$%%%&&&&&%'''''&&&%&&%''&(('(((''&&&&)*)*+*+++*+*)))+,+---******.-,/.--,+,,+,,+-,++*)**).-,/.-//...-.-,,,++++..-122122/00///-..///./.--,-,,---..-...,-,*+*()(()()))*)()(')(')('A<7:61:62<83=83@:4@;5=71<7194/94/83.51,51+3.)-*%)&"#!" '%$&%#'&$+)'+*(())$$$'''+,+000..-++*,,++++(((,,,454788232+++---///00/!'$"831+)')('/.-6431.--+*11/8756531/.-,*21/.,**)(*)(531?=8@=8C@:A>9=:4;83@<7B>9EA=JFAKGBMIDKGCHD?IE@LHDOKFLHCHD>GC=LHCMIDLHBRNIWSOYUQZWRVTOTQKYVQ\XU[VSYTQ[WS]ZV\XU\XT]XT]XU_ZW_ZWUPLTOKXTP\WTb^[gc`fb`d`]b^Zc^Zd_[a\X_ZU_ZUa\Wa\W]XSYTP\WSa\X_YU`[Vc]Y`[WLFB(.$1(!5,$9/';1)=4+@6-A7.C8/D90E:1F;2G<2H<3I=4I>4J?5K@6K@6K?5L@6L@6MA7MA7NA7NB8NC8OD8OD9OD9PD9PE9QE9QE:RF;QE:QD:QE:QE:QE:RE;SF;SF;SG83777/13*-/,.0136469013/01//01249:>:B>AE?AF@BGCFKDGLACHCFKHKRKNUJMTJMTPT\PS[FGNDDJAAF>?CABG?@E>?DDGOaahf[Y_OD_ND_PF^OE\MCZKBXI@VH?TF=RD9;?8:>7:=57;7:=9;?9;?8:>8:=8:=8:=:<@:;?;>CADJFJQINVNS\OT]MPXMPXuxrrxJF@LHDNJFNJFID@IEANJFQLHOJFLGBHC?ID@PKGVRNSOKSOKVQNZUQ_ZVb]Yfa\b]Y^ZV\XT[WT[VT\WTZUR[VR[VRa\Xa]Y^YU_ZW^YUWSNUPKYTOSNISNJWRNVQNZURVPMRMHQLHNJFNKFQPHSTLSSKTTKSSJRRHQRHLMCLMBPQFPQFTUILK@94,)),#-$.%0& 1(!3)"5*#6,%8-&9/':0(;1(<2)>3*?4,@5-A6-B7.C8/D90D:0E:1F;2F<2G<2G<3G=3G=3G<3F<2F;2E;1D:1C90B8.@6->4+<4-,+,)*,%&''()*,.*+.*+.;:;137*,/&!!" (+/(*.%&)!" #"$#%&(%'))+.'(++.2/27-04'),#$&&'*%&( !!!#$%("#$!"###! "$& -)(-,.)+.*,.+-/.15027-04038048.15-04-04,/3+-1*,0'),##%  !"%##,+-0/20/1-..-....-////0//0//00...+-,')(''%11///.-.---,-/-./../../.-.,+,++,+--,/0/./.+,++,++-,+,,./.222343443555454232232343454453342343554565232010020242343443453675665332232232121121232332//.,,*--,----..,-,,,+./-//.-.-+,+"#" !  !"""#"""""""#$#%&%%&%$%$!"! !   !" $$##$"$%$&'&()(..-HDAMJFMIELGBGB=E@;E@;C>:B>:A<9<852.+ $!-,*,..-//+,,(*)'(('((&('&('%''%''%''&('%&%###"""!#"!## "" "!#$$#%$"$#$&%&'&&'&&'&$&%"##!"!#$##$# ! !"!!#"  !#""%%$&&&''&''%&'%''&((&)('))')(&((&((%'&$%$%'&&((&(('((')(()(()))*)'('%&%$%$#$##$""#"!"! "!!""#$##$##$#$%%%'&&''&('%''%&&$&% !"  JGDKIFIFCFC@EB?FC@HEBIFBFC@HEBGEBFC?FB>D@93?93A;5A;5?:4=82:5/73.51,62-51+1-(,)%'$!%""!&$#&$#)'%.,+)(&$$$$$$(((...121...,,+..---,(((*++222787454+,+,-,,-,---" "  %#"631*('*)(0/.8751/..,*10.7646420.--,*420/-,,*)**)32/@=9@=9DA8FA5,@6.B7.C8/D90F;1G;2H<3H=3I>4J?5J?5K@6K?6L@6M@6MA7NB7NB8NC8OC8OD8PD9PC8PD9QE9QE9QE:RF:RF:RE:RE:RE:RD:RE;SF;SF;SG5,?71987012+-/*-/-02236013,-/../-..02379<8:=9;?9;?;=A=?C>@D=@D@CHBEJ@CGADIFIOILSILSHKRNQYPS\HIPDEJCDI?@D@@E??D;<@>@EFIQZZaldc\MDZK@ZLBYJAWI@TG>SF=PC;M@8H;3E8/J@:ZTQPNM>>>357247459347013013013012012012/01/01./0./0//101312412524757;79=8;?7:>79=57:58;8;>8;?7:>8:>79=68<9<@9<@;=B>BGDHOGKSLQZNS\MQZKNUlozgglGC:GC?LGCRMIRNJOJFKGBKFBNJESOKRNJMIEMHDSNJWSOVQM`[Vb^Yb^Z`[X`\X_[X_[XYUQWRNYSNd_[gc_b^Z_ZW\XUWRNWRMXSOQLGOJFPKGMHCQLHSNJPLGOJFMIEMJEONEPPGOOEQRHPQGMNDJKAJK?LMAPQFRSHSTIRTHQRFFC:1("(+"-$.%0& 2(!3)"5*#6,$7-%8.&:/';0(<1)=2*>3+?5,@6-A7.B8/C8/D90D:0E;1E;2F;2F<2F<2F;2F;1E;1E;1D:0B9/A7.?5,=4+;3-)((*+.+-0.04/27.04,/289;46:-/3'##! &(,),0*-1#"!" ### ""$()-*,/+.2149149-05)+/%')""#""$""$%&(&'*'),"!" ##""! "#'".*)*(*')+(),*,..0403726;15:.16/27.26*-1),/*,0),0%'* !"(')'&')()-,.,--*++)+*+,+,-,,-,,-,-.-/0/.//,-,&'&**(11/./-,-,--,-.--.--.-./--.-++**+*+,+./-./-./-./.-/--/.011343343232232343121110343554342332342443565454343243454564665665565453120122333121121232454443/0/,-++,,,.-,-,,-+-.,--,**)(('    !"!"#"""!  "#!##"$%#''')*)-.-FC@JFCJFBPKFKGBLGCNIERMIWSOWSOWSO[VSYURXTPVQMUQMWSPVRORNJRMJRNKSPMQNJOKHQMJSNJTOJUPKQLGPKFNIDMHCMHCLGCLGCPKFSMIWRMYSNXRLYRL[TN_XR`YSaZSd\Ve^Xd]Wd]Vd\VbZTc[Tc[Ud]Wd]Wf^Yf_Y`XR_WQ]UPZSL^WQ^WQZRMZSM[SM\UO]VP]VP_XRbZTb[U]VP\TNYQJXQK[TNZSMTMGSLFVOIWPKRKFNHCPIDQJEQJEVOKWQMYSOYSOWQMTOKUPLSNJQKGKFBD?;A<8B=9B<8A<8A;7?:6=853/+!",*'-/.021/00+,,)+*(*)'('&''%''%''%''&''&'&$%$ ! ! !"! !!! !""#$#"##"##$%$%'&&('%'&$%%#$##$#$%$#$#$%#$%$          .+'PJCID>HB=JD>XQJg_Vne\B>IFCJGDGDAEB@@>==::9,,+!! ##"##"##"$$$''&))())(+*)/.-00/00/00/0/.0/..-,0/.0/.0/.0/.0/.,+)'&% (((''''('((('(('''%&&&'&'''&'&&&&&&&'('()(&&&&'&''''''()(++*+**)*)(((((()))**)+*)+***)(+)(+*)+*)+*)(('&&%%%%&&%('&*)(++*--,---++***)++*--,..----,--,..,-.,,,+++++++++)))))(((''%$'%$&%$&&%((())(((())))*)*+*+++++*++*+,++++++***)***,,+,-,,,+..-./.././/....+,+*+****--,.....-,,+++***)**))*)((((((((('(''''%&%$$$$$$$$$####$##$#&&&%%%#####"""""""##"%%#'&%('&,+(1.+30-3/,3/,2/,<72>83>93>93>93@:4@:4A<6<8272-62-94/94/4/*0,'+'$%"&# &%$)('*('('%+)(,+)$$#'&%'('./.343111..-110///***,--565999677.//...././0/ &$##! 521*)'*)'/.-876321.-+/.,65354120..,*52//,+-+*)('.-+@=9?<8A>9B?:D@;DA;IE@LHCMIDJFAJFBLHDPLHOKFNJEMJEMIDQMHTPJUQKXTOZVQWSOVRMUQLUQLURMVSNXUPZWQ]YT\XTXTPUPLUOLVQMVRN[WS`\Xa]Za]Z^YUZTOXRN[UQ^YV^ZX`\Ya\Yc^Zd_\b\X_YT`ZT]XR\WR[VQ[VR\WSZUPWRNXSOWRNYUQ_[W`\XMGD)-$1(!5,$8/';2)=4+?5-A6.B7/D80E:1F;2G<2H=3I>4J>4J?5K@6K@6L@6MA7MB7NB8NC8OC8OC8OD8PD9PC8PC8QE:QE:RE:RE:RE:RE:RE:RD:RD:RD:SE:SF;SF;SG;SG;SG4H;1F:0I<2K>4I;23*#/& 0' 0(!1)"2)"3*#3*#4+$5,%6-&7.&8/':0);2*<2*=4+>5,?6-?6->5,?71><;113+,/)+.+-0/14025./1-./-./,-.02368;68;8:=8:=9B=@D=@D>AF>AF>AF@CHCGLFIPGJQGJQLOWOR[HJQDEJBCI@AFBBG?@D=>B=?D@BHCGNWY`mhinc^VH?OA7OA8NA8K?5H;2J>6TJE^XUWSSIHI::<236125246347236013/02/01/01/02/12/02/02./1-.0./1/1202412424657:7:=8;?7:>69<57:57:8;?9;@8;?7:>79=68<7:>9<@9;@;>DBFLEJQKQYNS\MRZILTilvnouMICLHCJFBID@D?;GC?KFBRMISOKRMJPKGOKFNIEPKFSNJPLGPLGRNISOJVPK\VQ]WS`\Wb]Zc_[\XU]XU]YUXSOYSNa[W_[X^YV]YUZUQXSOWRNRMIMHCOIDOJFNIDNIDPKGQLHRNJRNJQNHPOFRRHSSIQRHQQHLLBGI=JL?NODRSHTUKSUJQRGRTHYZNQPF<6.*+ -$/%0& 2(!3)"4*#6+$7-%8.&9/':0(;1(<2)=3*?4,@5,A6-A7.B7/C8/C90D:0D:1E:1E:1E:1E:1D:1D:0C90B8/@7.>5,<3+80+$##&'(,.214826:037.0457;58=15:)((!%'++/3,/4&(+   $#$##*,0*,0)+/-04048/27+.2(*.$%(#$&$%'&'*)+/*-0&'*"#"!!  !"&!.)(,)*'')'),,/3,.2-04/26*,0,.3*,0&(+(+/')-%(+"#%!!#0/4BAG./0')(*+*+,+,-,+,,*+*()))+**,+,,,/0/010---&&%++)11/./--.,..-//.,-,+,*,,+,-+++**+**++,-,-.-/0.010/0../.010121122233121121010010221554442231353454565554454453665665453342121120010121232121021132343222-.-*+))*)*+**+**+*,-+..-,,+''& ! ""!"#"#$""" !" !  !"!#$#%&%'(()**-.-C@=HDALHDVQMUQLWRMYTOYUPZVQXSOUQLXTOZVS[WSYTQVROXUQZVSYUQYURTPMQMJNJFMIEOKGQMITOJSNIRMHPKFLGBLGBMHCPKGQLGSNJUPKWRMYSN[TO\UO\TN^WQaZTbZScZTc[TbZSaYR`XQ_VObYRd\Ue]Wc\Ub[Ud]Wb[TaYSaZT_WP_XQ`YR^WP\TNZSM[TNZSM[TM\TN\TM`XR\TNYQJ\TN]VO\UO[TNZRLUNHTLFTMGRJERKFTLGVNISLGSLGSLGSMHSMHUOJTNJSMIPJFPJFMGBJD@D?;D?:D>9C>9D>9C>:@;7730%"")'#-.-132232-..*,+*++)*)'((%'&%'&%&&%&&%&%%&%"#" ! "! !  !!!"!!#""##!"""$#$&%%&%#%$!#"  "#"#%$$%$      HC={p~sGB?FA>GD@HEBJGCGDAC@>CA?EB@ECB><;:98876876776886998::8==;>>82;6194/:5/<71=82=71>82>93<7294/83.84.:5073-4/*0,(*'$&$ '%!  ('%'&%()('((/00455444010233---(((---565898455---,-,,-,,-, #! ! 20.*'&('%--+986421+*)//-653753532/-+51/0.,,+*&&%))'><9C@:C@;JGBNKFOKFOKGRNIVRMYTPZVRXUQXTPYVQZVR\XT]ZV^[W\ZU[YT[XTYUQVQMTNJRLHVPKZUP\WSa\Xd_\d`]ea^fa]d_[a\Xb\Yc_\c_]d`]c^[a\Y`[W_YT[UP]WRZTOVPKYTO[VQ\WRYTOWRNXSOWRMUPLWRNVQMXSO6.**/&3*#7-&:1(<3*>4,@6-B6.C7/D90F:1G;2H<3I=4J>4J>4K@5K@6L@6MA7MB7NB8OC8OC8OC8PC8PD9PD9PC8QD9QE:RE:RE:RE:RE:RE:RD:RD:RD:RE:SF;SG;SG;SG;SG70?<;123)+-)+-*-/-/2/14./1-./..0,-.,-.12468:68;69<79<8:>:<@;>B;>B<>CAFADIDGNEHOEHOILTMQYIKSDEKBCH@AFBCHAAF=>B?@E=?C>@E@DJSV]trv}wvnece\X[QMVNIha^nhfYVVMLM>>@57:247236124/13024136/02-./-.0.01./1/02/12/02./1-.0/0101302412413646969<7;?69=58;47:47:79=7:>7:?7:>7:>69=69=93+?4,@5,@6-A7.B7.B8/C8/C90C90C90C90C90C90B8/A7.@6->4,<3*3-("!!#""*,.13814903714825:36;/38%%'"$'*-2),0%'*! !#)),*-1*,/(*-*,0,/3,/4,/3(+/%'*$%(&(+,.2,/3)+/#%' "#! ! !!#.('1--(')&(,*-1+.2-04+.1),/&(+&(+'*.%'*#$'&&)..2:8=@<@(((())(*)*+*.///00-//+-,),++,+-.-121232/0/)))))'21/00...-//.//.,,+,,+,-+,,++,++,+,-,-/..0/./-//.-.---,././0/01012101102102112133256456455446555455455455455456555433212001/010120121333233233243343121,.-+,**+))*)()()*(*+)+,***)!"! !!!!!! ! ! ! """!"!##"#$#$%###""#"!"!"#"$%$&'&'(()*)+,+./.EC?NKGQMIWSNXSOYTP]WR\WS[VRUQLPKEQLHUQMVRNWROWSOYURZVSYURXTQSNKPLHOKGOKGQLHQMITOKQLGQLGQLGOJFQLHSNJVQMUPKVQMWQMYSNZSNYRL\UO^WQ^WPaYSbZTaYRaYRaYR^VO_VO`WPbYRd\Uf^WbZS`XQbZSd]Vd\UbZS`XQ[SLZRKYQKWPJ[TN]UO\UN\TMZRLZSL`XR`XR\UN^VO\TNZSLZRKYQKTLFSKETLGUNHVNIWOIWPJUNHSLFUMGUNISLFVOJUNIRLGPJENHCNGCOIDKFAJD?JC>JC>GA94:51)&#!%#))'/0/122.//*+*)*)()(&''$&&$&%$%%$%$#$$"##!"!#$""## "!   ! !#"!   "!#$#!"!     $"VPIkc[yp{D@=GC?FB?IFBMJGEB?B>;GDB@>=::9776665776887::9<;:>><>><==<998..-  $%$))(++*--,//.//...-//.//.22133222110/00///.//.//...-('& "!%%#! "! !!!! #""$#"%$#)(&%%$#$#%%%!""!!!"""   !!""" ! !!  !! !!##"%$#-+(?93?:4?93>83>93>94=82<71?93B<6?93<71:5/;61:5094.73-:5084.40+1-(+(%'$!(%"")(%**))))'((011121233110222,,,'('+,+232676344++++,,+,+**)#! #! " !$"!.,*(&%&%#,,*986432)((--,6428647541/-63141/+))%$#%%#;95B?;EA=EA=A=8@<7JGCOKFMIDKGBGC>GC>JFANJFNJFLHDOKGQNJRNKSPLPMIPLGTQLVSOXTPXUQYVRZXTUSOTQMSOKPKGNHDNHCVOK[VS_ZW_\Yb_\d`]b^[_[Wb]Za]Y_ZW^ZWa]Zc_\^ZW]XU]YU`ZUa[Va[Va[V_ZTb]X`ZV^XT_ZU^YU]XTZTPUOJSMHTNI\WRPJF(-$1(!5,$8/';1)=3+?5-A6.B7.D90E:1F;2G;2H<3I=4J>4K?5K?5L?5MA7NA7NB8OC8OC8PC8PD8PD9QD9PC8QD8QD9RE9RD9QC9RD:RE:RE:RE:RE;SF;SF;TG44+$0(!0(!1(!2)"3*#4+$5,%6-&7.'8/'90(:1);2*<3+<3+<3+:1)?82A>=234)+-'),)+--/2.14-/2+-.,-.,-.,--,-.12446946957:68;79=9;?:=A9<@:=A;>C:=B=@D?BHBFLDGMDGMGJQKOWILSCEKBDI@AF@AFBCH=>C>@D?AE<>B>@EBELCGONPXZZ`b`d^\_WVXRQTGGJ<=@68;358358236013/02.02124024/02-./-.//02./1/02013/02./1-.0/0101312513513635858<7:>69=58<47:46:58<7:>7:>7:>8;?7:>58<:>C7:>7:>?CIDIQHMULQZOT]LOW\_h~ROJNJFJFBHC?KFBQLHSNKRMIOKGPLHRMITOKUQMUQMTPLTPLRNJXTQWSOTPLQMISNIXSNZVR\XT]XT[VRZUP[WS\XUZUR\XVYURXSPZUR[VSZURWSOWRNWRMVQLSNIUPKUPLSNJSOKPLHNLFQPGPPFTSKVVNUUMUULPPFNODQSHQSGNPDJK@JL@MOCNPDPQFPPFQPFJG=81),"+!.$0&1' 2("4*#5+#6,$7-%8-&9.':/';0(<1)=2*=3+>4+?5,@5-@6-A7.A7.A7.B7.B7/B8/B8/A7.@7.?5-=4+;2*2,' """*,.037.1503737<149.15,/3$%(&)-&),#$(!$ )+.*,0'(,%'*%'*(*-+.2*-1%'*!%'*),0*,0+.2*-1(*.!!!  !*$"2--+(*!#&#%(),0,/4+.2(*.')-%'*"#&%%(**-*(*613:68''()***,+,../11122/10-//+--,.-,/./10232/00*+*((&00.00/..-...-.-+,+,,+,-++,+,-,+-,+-,-/./0/./../-,-,,,,./.01/12023222223223244345366577678667667656534334334345445445423201/121332343565565454465354343021.0/,-,++)()(()()*(()(%%$!!  ! !   "#####"#""#""#"$%$$$#$%$'('()(()('('&('%'&#%$%&%'('()(*+*,.-DA>PLHSOKVQMTOKTOJZUO[VR\WSYTPUPKSNJSOKTPLUPLUQMVRNVRNTPLUQMRNJNIEPLGQMHPKFRMISNJOIDMHCPKFSNJUPLUPLSNJSNISNJUOKWQLZSNZSM\UN^VP`XQd\Ud\UaYR_VO`WP^VO^VNbYRcZSe\Ug_Xd\VaXR_WPaYRc[Td\VbYS[SLYQJYQK[SM]UO]UO\TM[SLZRKZRL\TM^VP]UN\TMXPIUMFTLETLEQIBQICTLFVNHYQK]UP\UOZRLXPJYQKYRLXPKXQKTMGSLGUNJRKGLFBHA=G@;HA;KD?MFAHA;><9BA?A?=><:<;:998::8998987997::9;;:998998887000""!"#"''',,+00/221111/////./0/000110221332454443553553332//-$$# $% &'#)*&'(%&&#$$!!!! #!(&$&$" !!! !!"""%&& !! !!   !  !"!"#"!""!"!"##$$###"/,)>92?:4@:4?93>93>94?:4@;5B=7C=7>93<71;60:6094/94/:60:6083.40+1-)+)%'%!'$! %$"++***))*)344666565221221//.**)--,332676566++++++,-,++*&#!# #! $"!$"!*)''&$%$#++)764321(''+*)20.64265310.642843.-+&$$$$"974?<8@=9C@4,@5-B6.C8/E90F:1G;2H<2I=3J>4K?4K?5L?5MA7NA7OB8OC8PC8PD8PD9QD8QD9QC8QC8RD9RD9RC9QC8SE:SE;SE:SE;SE;SF;SF;TF4J=3J=2J=2O@6A6-0' 1(!1(!2)"3*#4+$5,%6-&7.'8/(90(91):1):2*:2*80(?83B?=445)+-(*,(*,*-/.03-/1+-.,-.,-.,-.,,--./13635846947:47:69<9;?99<@:=B9<@@E>@E=?D<>B;=B?BHADKBELAEKADK>AG<>C:69>69=7:>7;?58<9>BHDIQGLTKPYNS\MQYX[cTPNOKGNIENIEOIENIELHDLHDNIENJFQLHRMITPLWSPUQNVRNUPLTPMSOKNJFD@3+>4+?5,?5,@5-@6-@6-@6-@6.@6-?5->4,<3+;2*1+' &&(,.1.04-/225:37<.04(*-),/'(*"$'"$'!"%!!#!%($#+.2(+/&(+"#&%'+),0*-1'*- !#&(+*,1),0,/3-05.16)+/ !""  (# 5//1-.""$#%(%(,&*.%(,#&)"$(&'+**.$!"/))B<>555,,,*+++,,.../10021/10-//,.--/.,/./0/121/0/+-,))'10...,,,+,-,,-,,,+--,,-+,-,,.-,-,,,,-.-//./0./0../--.-010443565665565564343443553553665675665454454343333333343232342332221443554675898887565676565344122110..-))(&&%&&%&&%#$#"#"!"!!"! ! "#"#$#$%%&'&%&%$$$#$#$&%$%%$%%'('(*))*)*+**+**,+'('&'&()((('*+*+-,A>;MHDOJFRMISNIRMGVQKVQLXSOYTPYTOVQLTOJSNITNISNIVRMVRMQMHPLHSNJNIEPKFOJEMHCOJFPKFPKFTOJPJFOJERNJRMIQLHQLHQLGSMIVPKYRL[SM]UN]UN]UN_WP^VO]TMZQJ[RJ^UN^UNaYQbYRbYRc[Tg_Xe]V_WP_WPaYRd\U`XQ[RL\TMYQJXPIZRL[SMZSLYQJXOHXPIYQJZRLZRLYQJWOHUNGRJCQICPHBSKEVNHVNHXPJ^VP^VP_VQ`XR]UPXPKWOJVOIQJDOGBPIDQJFJD@@:6B;6F?9KD>OGBOGBLE?D=884/.*'  !"!"#""#"#$#%&%$%$$$$"#"!"!   ! ! ! !!!!"!"#"##"!! !!!##""""!!!!"!!!  !! !   ! ""!"#"#$#$%$$$# ""C@={,,+**))))---444898==<==<;;:;;:==<<=<:;:::9::9998221&&&###(('--,00/221332332332443443454554554554554665765554110''&  !$" #"   !""  #$$   """"##"##  "###$# !!%%$$$#41-?:4?:4?93@:4@;5@;5@;5?:4?:4@:4?:4=82;6094/94/94/83.73.73-3/*0,(*($#! &$#--,*+****111566565/0//0/00/,,+,,,00/443454*++*+*+,+++*'%#$!%#!'%#"  )(&)'&'%$))'54210/&%%+*)1/-31/321/.-21/43110/)('$$#752B?;C@;CA:C@;DAGC>HE@HEAEB?HD@MJFPMIQNJPMIQNITQLUQMTPLTQLWTO]YU_[V^YTXSNWRNTOKSNJXTP[WT[WTZVS[WT^YV`[WZVQUPKUQLWRNYTPWRNVRN[WS]YUZUQVRMWQM[UP^YS]XS`[Vc]Yb\Xd_[a\X\WS^YT`[Va[W_ZVb]Ygb_TOM(-#1(!5,$9/';1)>3+?4,A5-C7/D80E:1G:1H<2I=3J>4K?4L?5M@6NA7NA7OB8PB8PC8PD8QD9QD9QD9QC8RD9RD9RE9RD9RC8SE:SE;SE;TF;TF;TF;SE:TE:TF;TF;UG4K=3K=3L>3M?55+$0(!1(!2)"3*#4+$5,%6-%6-&7/'8/(90(90)8/(6.&;50EBA012()+&)+(*,*,.,.1-/2*,-+,-,./-/0,-.+,-./124725735846946958;8;?9<@8;>8;?9<@8;?;?C>BH@DJADJ@DJCGMFJQFIPACH@BG@AG?AGACI?@F?AF?AF:<@9;?>AF?BG>@E>@F?BH=@F:=B9;@8:?46:125/13/02013./0--.-.//12/13/13.02,-.-.0-././0/02.01-/1-.0./1/1313524724724747;69=69>58;46:46:47:7:>6:>69>7:>8;?69=8CE9AD7DF:LNCPQGNNCKJ@NMCLKAJH?HF>=71.#,!/%1' 2(!3)"4*#5+#6+$6,%7-%8.&9.'9/':/(:0(;1)<2)<2*=3*=3+>4+>4,>4,>5,>5,>4,=3+;2*:1)/)%"!"*,/.15,.1.03149.03)*,""##$'"$&  "%$%( $& *(',/4*,1(*.*-2,/3*-2-05)+/(*.),0*-1,/3-05,/3+/3 " "!!#"!%2,+7102-,($$#!"  " "%!"&7/.E=>?=>465566465244233232132021021/10.0/.///0/00//0/-.-''%/.,,,*++)+,*+,*,-+--,,,+,-,-.--.---,./-01/23122112111011133357678778777645323212001/121232343232232122232333232120220331341342342564776554342443343010-.-,-+))($$#   %&%$%$$%%#$$#$##$##%$&''&('%&%#$#$%$%'&$&%'('())(*)+,+,-,,-,+-,*,+,-,,-,./-.0/>;8KFALGBNIDRLGUPKVQLUPKVQLVQMWRMUPKUPKUPKXRMVQKWQLVQLOJEOJFTOKSNIUPKUPKVPKUOJTNIUPKVQLPKFLHCLHCLGCNIDNIEOIDRLGVPKWPJXQJ^UN_VO]UM^VO\TLYQJYPI[SK_VN]UM_VN_VOaXQaXRd\UcZS_WP`WPbYRaXQ\SL\SL[SLUMERJBXPIXPJXPIVNGPH@OF?RIBQIBPHAPHAPHAOG@MF?NF?QIBSKESKFPHBQICUNHWPJYRLYRMWPKSLGPIDOHBNGANFAMFAPIDLFAF@;HA>?><=<;<;;;:::9::9::9332'('$##**)0/.310320220221332443433332332332433443443432210.-,''&  "!&$##"!  !!"##!!! """     !   "##!!!!""  !""$$$""" !!&%$$#"51->82?:4=82=83?94@;5@:4@:5>93<72=82;60;60;6094/83.94/94/62-3/*.*&#   &%#,,++,+*++///344454././/.010..---,//.222444,,,,,,,,,++*)'%%"!&$"&$"" +)'-+)*(&(&%10.0/.&%$*))0/.310432/.,10.210100**)$#"1/,<:5><7@=8B>:DA9A>9B>9D@;LIDRNIQNIOKGOKGRNJQNJROJURMXUQ[XS_[V_[V\XSZVRXTPVRNVROXTQXTQXTRZUSXTQWSO[VQZUP\WSa]Yb]Z_[W\WS]XU^YV_ZVYUQTOJ\WQ_ZUZTOZUP_YU[VR^YV`[W\VR\VR\WR[UQZUQ]XT_[W_[X;41)/%3)"7-&:0(=2*?4+@5,B7.D8/E90G:1H;2I=3K>4L?5L?5M@6NB7OB7OB8PB7PB7QC8QD9RD9RD9RD8RD9RD9SE:SD:RC9SE:TF;TF;UG3K=3O@6D800(!1(!1("2*#3+$4,$5,%5-&6.&7.'7/'6.'5-&E?;A>=-./&')&(*')+*,.+-/*,.+,-)+,+-.-/1-.0+,-+,-/1324724724735836957:8;>98;?8;?7;>;>B=AG?CH?CI>BGADJCFMDGNACI?AG?AG?@FADJ@BG>@F@BH<>C8:><>B>AF;=A9;?;=B:6:>8;@7:>6:>=BH8LKDFC=5-)-!.#0& 1(!2)!3*"4*#5+$6+$6,%7-%7-&8.&8.'9/'9/':0(;0(;1)<1)<2*<2*=3+<3+<3+;2*:1)90(.($$%',.2.14.14037/26+-1%%' !#%(+(+0 "!$(!**,-16.16.16-16.16-16*-1*-1*-2),0),0),0')-$&)!"$ ##"!-'%;42>76:44711600500<67D==I@AC>>443343565575576797787676676787453/0/-../0./0./0../-""'&#$$!%%#&&$&&$&&%(('(('))(++*,,++,+,-,//.22122000///.00/110232342342443342010..--.,./-./../.-.-,.-,-,,-,+,+)*)**)++)++)**)()'''&(('))(&&%$$#"#!!"!$! '(''(''('&'&%&%#%$#$$&'&&'&&'&$%$#$#%&&%&%&'&'((')((*)*+*-.-./.-.--.-.0.131242;:6HC=HB=IC>OJESNIYTOYTOZTPWRMTOJRMHTOIUOJTNHUOIXSNYSOUPKTOKTOKXRN]XS]WR[UPXRLWRMWQMTOJOIDMGCKGBNIEOJFOJFNIERMHXRMYRL\TN]UN^VO]UN]UNYQIXOHXPH[SL\SLXPHUMFSKDTMFTMFTMGTMFPICLF@MGAKE?E@:C>9B=8?:5?;6EA=GD@GEAHFBGEBFEBFECEDBCB@CB?CB>CB>DC@FEBGFCFFCDECBDBCDBDECDECACA@B@@A@AB@>?=;<:<;9;:7;85=:6A<8=9484153/42/32.32/441330331442331342232120./../../..///0/-.--.--.-/0../.,-,+,++++,-,-.-././/./0///.00/22123112000/-.-*+*()(++*,,+--,/0.121121221121010./.-..*+*" " " ! +.-+-,&'%$%$""! !! ###$$#&'&'(''('()()))'('&'%%%$%%#%&$%%$$%$$%$%%%&&&&'&''&&'%%%$""!!! $%$%%%$%$##" ! ! !! !"!!!! !!!!!#$#%&%'('&'' !ZTNx221776887998:;:<<;==<==<==<==<>><<<;665***#""++*432654654543432432543543643543653654765765765554--,$$#  ! %$"'%$$"! !  !!!""!"" !""!!  !!!!""!!! !!     !!! !""#$$"""!!!'%$$##62.?:4?:4?:4?:4?:4@;5@;5@;5<7194/:50:5/;60;61:60;60:6084.3/*+(%$! " &%#,,+,,,---000444233-.-000010////0/./.222333,-,+,,*+***)(&$$" %#!" !! -+)40..*('&$/.-210&%$)('.,+/.-210..,10.10/220/..%%$/.+;84<:5?<7;84?<7A>9C@;GC>IEAJFBIEAHD?EA3+@5,B7.D8/E90G;1H;2J<3K>4L?5M?5NA6OB7PB7PC8PB7PB7QC8RD9RE9RE9SE9SE9SD9SE:TE:SE:TF;UGZJ>ZJ>YJ=YI=XI4L>3OA76-&0(!1)"2)#3*#3+$4,%4,%5,%5-&3*#5.(=95?>=*+-#%'%')')+)+-+-/)*,'()()**+-,./-/1,./*,-+-.02425724725735846946969<7:>7:=8;?7;?7:>:=A=AF=AG=@FBH@DJBEL?BH?AG@BH>@FADJADJ>@E@BG=?D:<@;=B<>C:;?8:=9;?9;?79=79=57:135/02-.0-.0-./-./-./-./.01/13.02.02,-/,-/,./-.//13/02./1,.0-/1/1313624735925936:58<69=58<47;46:47;58<7;?7:?6:>8<@7;?58<<@F9=B8KKANMDQPHOMELJALJCHF@B?;?843(#."0%1' 2(!3)"4*#4*#5+$5+$6,$6,%7-%7-&7-&8.&8.'9/':0(:0(;1);1);1);1):1)90(8/(-'#&(*.04/26149038-/3()-  %&)$##"(+/'*.!##%$&&'+.2/2816;37=049-05),0),1,04-05*-1%(,#$("#')-1(+/ "" &!5.,<55?99B;B<=@9:<77010./.232443554565776676575776:;9::946412112000/./-+,*" !   "! $#"##!#"!!!! "! !! !""&# "  '(')*)()(''&%&%#%$#$#%&%%&%%&%%&$%&%&('&&%%&%%&%&'&%&%%&%*+*-.,+,*()'()',-,-/.974JE?ID>E?9NHBOICWQL\VQ[UPVQKRLFQKETNHUOJWQKYSM[UPYSNWQLYSOWRMYSN]WR_YT\VPYSN[UPZUPUOKOIDLGBKFBMHDNIEPKGPJFSMIUOJVOI\UN\TLXPIUMFPHBNHCLGCEA=D@:>=:==:>>;??AA==@?<>>8::69869868767657646546546646647657757768868879979957601/2209:8=><;<9;<:<<:<=;=><=><=><>?>>?><<;:;99:8665453121/0/./---,,,***)()(&&%%&&'((()(()())())()*)**)+,+,-,,,+*+*'('&&&''&''&'('+,+./.,-,,,,,-,,-,,-,-.-.//&%$$" %#!')(()($%$"""!! !! ""!""!#$##$$%&%&'&&'&&'&&'&%&%&'&&&%''&))()*)()(%&%%&%&'&&&&&&&&&%%%$$$#$$#%&%&'&%%$""!!!! ! !! !"! !!  ""!###%&&#$$:74wm:;:::9;;:<<;>?>?????>>=<;;:998554--, ! **)221765775776775765654664664765876887:98:98:97987765110''&   !%#"&%#$#" !!""# !! !!!"" !  $%$$$$#$#"#" !! !!#%%#$$"##$$$$%% #$$"###$$!"" !!"""  """!""""!  '&%'&&73/A;5B<6B=7@;5?:4@;5@:4?:4;60:4/94.83.:60=83=82;7140+&#  #!%#!**)***...121343111--,00//0/110232///11000/+,+,,,+,,**)'%##!%#!$" '%#(%##! +)'85251/*('00.654((',+*,+*+**10//.-10.10.642421'&%.,*:73:73>;7;83><6A>9B?:GD?LHCMJFMIEKHDIEAGC>GC>GC>HD?KGBNKFOKGLHCJFBKGBKGBMJEMJEMICSNHUPKVQL\XT\XT\XU^ZW]ZWXURUQNYUR]YUYUQUPKVPKZTO_ZV_[W\XU_[W_[W]XTZUQ[VQ\WRZUQVQMUOJXRLXRMXRLVPKXRNXRN\WR^YU`[Wa[W`[Va[Wa\X`[W<51)0& 4*#8.&;1)>3+@5,B7.D8/F:0H<2I<2J=3L>4M?5M?5OA6PB7PC7QD8QC8QB7QC8RD9SE:SF:TF:TE:SE:TE;TF;UF;UG;VGYJ>ZJ>ZJ=[J>[K?[K?[K?[J>[K>[K>[K>[J>ZJ=YI=YI83EA?988*+,&')&(*(*,*,/*,.)*,&'('(()*+*,-,.0-.0+-.+,-,-/03524714625835846936869<7:=79=7;?7:>58<9<@<@E<@E;?D9=B;?E>BH@CI?BG>AF@BH?AF@CIBDK>@F?AF=?D;=B;>B=@E;=A8:>9:>79=57;57;357/13-/1-./-/0./0./0..0-././1/13.02.02-.0,-/-.0,././1.02.02-/0-/1/1313614736936936:69>7:>69>58<47;58<58<8;@8;@7:>7;?7;?48<8=B9>C7;?>CIBGOFLTKQZPT]Z\d{}YVURNKTOLRNKSOKXSOZUQXTQUQNXSPWSOTPLQMIPLITOLWSPWSPUQMRNIOKGPLHZUQ]XUYVSWSPTPMQLHPLHSOKUPLSNKNIEPKGXSNXSNYSN[VQ[UQVQLWQLZUPVQLTNJTNJQLGPJFOJFPMHNMELLCMMCMLAPODQQFRRHTUJTUKQRHPQFLMCOPEIK?JK?JK?KL@KKAJJAJH@IH@KIALJCJHBIFALHDGC?92./#/#1& 2(!3)"3)"4*"4*#5*#5+$5+$5,$6,$6,%6-%7-&8.&8.'9/'9/(9/(90(90(8/'7.'.)%%'+-04/37049+.2()-&'*""$ (*.((*!$#&)!#& !!$$$$%""(*-*.2/38/38-05(+/+.2.28/38*-2%'+#&)!"%"$'%(,$&* "!"% *$#-'&.**0....-+,+-.,1104433313325545646768978979:8686564664342120,,+                !  $%#%&%##"!!! ! !! ""!$$"%%###!$$"$%#$%###!##!#" &%"*(%/,)2/+/,(,*&.+(0-*2/,B=7MGALF@HBID?KFBPKGOJFPKGMGBNGBJD?>9463.30,<<9MPNBDC5764658:9;<;:<;;=<:=;:<;:<;9;:;>==A@=@??AA=@?;==:<<9;;:<<9<<588477477366355465465244133244233132132133133122132133132121132/10/11/12022-/.#$#575FIG@@>89767544333233234323223223223233200/..--.,+,+*+)*+)++)**)()(%&%&'&))))*))*)*+*++*++)**))*),-,,-,+,+)*)'''((')*))*)+,+-.../../../.././0//0/010))(&#!'%#&'')*)%&%"#"    ! !"!%&%'(''(('(''(''''&&&&&%''&()(**))*)'''(('()(((('('(('(('&&%%&%%&%&'&&&&##"""! ! !!!!! !    ! ###$%$#$#"#"xn111/0////./....+++&'&%%%"##!!!&&%..-543::9<<;;;::;:::9::8::8::8;;:=<;==;==<==<==<<<;987220('&     #"!%#""! """""" !"!!## !!  !! ! !!  !! ! !""   ""! !!! ((('(()*))**&''###$%%"#$"###$$%&&"## !!#$%"#$%&&%&&!""!""   !  !"""##$%% """)((**)<72A<6C>8A<6?:4@;5@;5?94<72:5083.62,83.=82=8340+&#   %#"&$"**)(((..-110121111---//.---//.011./.010/0/././00/0/***%$##! $"!#!%"!)&$'$"(&%531631,*)220655*)(/-+,+*))(//./.-10.0/-52041/(&%-+);94:73=:5=:5A>9C@;B?9D@;GD?HD@IEAKGCKGCMIDOKGOKFLHCJFBLHDQMIQNIQNITPLROKNKFNKETPKYVPXTNRMHTOJWSO[VR\XU[XTUQMPKGUPLXSPXTPVQMUOJWQM[VRZVSWRN[VS]XU^YV_[Wa]Ya]Y`[W_ZUZUO[UO[UOZTO\VQ]WR[VQ[VR]WS_ZVb]Yb\X`ZVc^Zhc_RMI(.$2)"7-%:0(=3*@5,C7.E90G;1I<2K=3L>4M?5N@5OA6PB7QB7QC8RD9RD9RC8RD8SE9TF:TF;TF;UF;UF;UF;UGYI>YI=YI=YI=ZJ>[K?[K>\K?\K?\K?\K?\K?\K>]L?]L?\K>\K?[K>ZJ=ZI3QB87.'/(!0(!0("0)"0)".' 3,&830@><212%'(%')&')(*,),.*-/(*+&''&'''((()**,-,.0,./+,-*,--/024725824725825835825758;58;69<7:>69=58;8<@;?D:>D:>C8;@9=B;?D=AF=@F>@F@CI>AG?BHBEK?BH?AGC<>C9;?:<@8:>57;47:358014./1-.0/02/02./1-/0-././1/13/13.02./1,./-.0-.0-/0/02/13-/1-/0/0313614725925926959=7;?7:?58<47;58<58<8;@7:?69>6:>7:?59=6:?:?D7:?HJ?KLALMBIJ@EE;BA7DC9HG>JHAJHBLHDKHDGD@@=99404)$0$0%1' 2(!2)"3)"3)"4*#4*#4*#4*#5+$5+$5,%6,%6-%7-&7.&7.&7.&7.'6.&5-&2-)')-+-1/27.26')-"#&$%($$'%&) !#(+/(*-  !!##!##"#$'(+/*.2*-2)-1,05-16-05),0$&*%'+"$'!#&"$(#%)$'+ # !!!%$%---,--,-,*,*)*)*+*-.-12011001/22/442775::8::7::978756466434212000.                    !# (%"(%")&#+'$,)%/,(1-)2/+51,4/+40,62.73.62-73.;61=83?:5B<7C=8C=8A<7C=8GA;IBOHBQKEPICTNGYRKYRKWPIUNHVOIPIBJC:>95+($'$ '$ -+'??=HKJ;=<5653443544653652541421333655768:::=<;>=;>>9<<8;<8;;7::5786997997987986886887:97:9577477466144033033032122022133122/11/10021132/11.00022/21/00/10-/.-//-//-//-0/"#"*+*<><897/0/./../-..,..-/0/./.-..-.-010121/0/-.-,-,*+***)**)++*++*)*)&&%&'&++*,-,,,,--,--,,-+,,+*+*+,+++*)*)()('('(((*+))*)*+*+-,,--,-,,-,./.021010222--,&$!&#!#%$'('%&%$$#!"!!! "#""#""#"$$#'(')))')('('()))*)()(*+*+,+,,+,,++,+)*)))()))()('('(('))(&'%%&%%&%%&&&'&#$$"#" ! ! ! !   "#"###"#"iaY!"""##"#"!""!"!!!! !!  #$#))(000998=<;=<;;;:::9897998::9;;:;;:;;:<<;>=;>==@?=<;:554))(   !  ! $#!!  !!!"##&&& !!###$%% !!  !"! !!!"!"$$ "" "#"#$$   !!!!"""##  !! $$$$%$###  #"" """$$#++*)))*+**++&'&"##%&%&&&$%%$%%$%%#$$#$$ !! !!$$%#$$$%%%%%!!!!"!   ! !"!""" !!"#"#$$())!"!(((,,,,-,=83A<6@;6?:5>93<72:50;61:5094/72-61,50+,)%$"  #!%#!+*)'&%..-221332222///.//,-,00//0/,,,-.--.-....//010*+*%$##! %#"  %#!%"  "! /.-0.,+*)220432..,4201/.)((.-,.-+10.10.2/.1-,'&%+*(;94:72;94=:5DA4M@5N@6OA6PB7QC8RC8RD8SD9SD9SD8TE9TF:UF;UG;UG;VG;VG;VG;VGYI>YI=YI>ZJ>ZJ?[J?[K?\K?]L@]L?]L?]L?]L?^L?]L?]L>^L?^L?]L?]L?\K?\K>[J=ZJ=YI:9977'')"$%$%'%')')+)+-)+-(*,&'(%&'&&'&'()*++,.,.0+,.*+-*,-.0213624724714714725735858;57;69<7:>69<58;8;@9=C9=B9=B7;@8C<@F<@E=@E@CI?BH?AGAEK@DJ?BG=?D:=B9;?:46:469247014./2-/0/13014/02./1-/0./1/02/02.01./1,-/,./-.0,./.02/13.02-.1.0213624736926926948<7;@7;?59=48<58<58<6:>7:>69=7:?8D7;@:?DBHOCIQJOXQU]^`hSPPMIFQMJUQNUPLRNKUPLUPLTOKTOLQLHOIEMHDMHDHC?OKGUQNWSP[WTYVRWSORNKRNKRNKOJGTOKVRNWSPVRNTOLXSP^ZV`\Y[WSUPLVPLVPKRMGRLGQLGRMIWRNYTPYUQXTPVQNROKOMIONGQQHSSITTJWVLYXNUUKSSIPQGPQFOQFLMCFH>@B6BC7GHFE:EE9HG=IH?JIAJHAKHDKGDDA=?;8=;7=:79401'"0#0%1' 2(!2(!2)"2)"3)"3)"3)#4*#4*#4+$5+$5,%5,%6-%6-%6-&5-%4,%4.))+.*-1-05*-1%'*"#&$%(%'*(*.$&)*-1),0 !"" #$#" "#%(%(,(+/+/4-16*.3*-2(,0'*.%'+!#& "% !$"%(%(,#%(  !.-0:8:232--,*+*(*)()(()(,,+00/22102012/12/44277599799777644344255233111/                    "$ %!,(%0,)2.*3/+72.:50?95A<7A<6@;5?:5>94@:5>94;61>83@;6>94=83=84=84<73=94>94@:5?:5>83C=7E?:E@:D?9FA;HC=E@:F@;D?9C>8>93=72C?9FA9B>9@;6@;6A<7>:4?;6@<7C?:FA9?:6>96?;7C>:GB?GC?D@<@<8952&## $!)'#::8@CB:=<687466355143133/11.00/212543666889;;9<;8;:699467256366244466466354244344466687687466355255133022/22/21121011122132021/11.0/-/.,.-,--.00.10.0//00,..,..,..,..-00%&&$%%9:9776-.,**))*)**),,+,.-,.--.-,-,./..0/./.,-,*+***)*+)++*+,+,-,+,+)))()(*+*+,+*+**+*+,++,+++**+*)**)*)()('('()()))+,**+*())()))*)*+*++*-.-/0/./.010010+)')&$"##'('))())(%&$#$"$%$$%%$%$$%$()(++*)**)*))*****)*),,+,-,+,+++***)()('''()(((('(&'(&(('&'&%&%&'&'''&&&#$#!"!    !  "#""###$$!!LGB!!!"#"###### !! %%%---554::9;;:;;:;;9::9::9;;:<<;<<;<<;<<;<<;<<;<<:=<;==<;:9654++* !! !!!!!!$$##""  !!!!!!"!   !!"""!""#$$#$$"##&''"##!""%%%!"" !   !!"## !""#$$ "! !!%&%%%%   "#"#$$ !! !"" !"%%%%%$##""! " &%$$##%%% $%$++*()(****,+&''"##&&&&''$%%%&&%&%$%%#$$"##!!!#$$#$$#$$"##!"""""!""  !!!"#"#$#!!! ! $%%&''*++!!!***....-,=83@;5@;6=83;61;71;61=82;6194/1-(#   !!%# $# -+)&&%,+*//./0/011..../.-.-110..-)*)+,+--,,,,,--,-,+++'%$#! %#!  $" %#!,+*+*),+)4316421/-521310*)(-,++*)/.,/-,0-+0,*)'%*)';94;83=:5?;7DA3M?4OA6OA6PB7RC8RD8SE9SE9TE9TE9TE9UE:UF:UG;VG;VG;VG;VG;WHZJ?[J?[J?[K>\L?\L@]L@^L@^M@^M@^MA^M@_M@_M@^M?^M?^M?^M?^L?^L?]L?]L?\L>[K>ZJ=XHAGAEKADK?BH=@E;>C9<@9<@:469247136014.02-/1/14025/13.02./1./1/13/13.01./1,./,-/-/1,./.02/13.03-.1-/1/1413725825926937;7;@7;@6:>58=58<47;58<7:?69=7:?8CBGOCIQJOXOS[_aiTQPKFCOJGQMJUPLTOLUPMWSOVQMTPLUQMWRNUPLPKGHB>JD@NIEOJGTPMVRNYUQZVRYURXTQTOLUQMYTQ^YV]YVVROQLHUQM\WTVROVQMVQLVQLRMGSNHTOJRMHTOKVQNWSPYURVROWSPTRMQQIQQHPPGPOFTTJVULRRHPPFMNCPQEOPFLMCCE:@B5BD7CE8EG;EF;HI=NNCONELJBIG@HF@JFBLHEGC??<8<96;85;851.,.'$2%0#0%1' 1' 1(!1(!1(!2(!2("3)"3)#3*#4*#4+$4+$4+$5,$4,$4+$2*$)*-),/,.3*-1!#% "$&)%'*)+/'*-,/3,05"!# ! !!!#%"!  #%)&*.)-1'*.%(,'*.&)-"$' "% !!#'$&*%(,$'+ -+-;9<433./-./-,-,*+*)*))*(**)--,01/12023133133176466467565422011.44144100.      !)&"1-*50-61-50,72.51,51-2/+.,),*',*(*)'('&''%''&&&%&&%%&%&'&''&&'&&'&((()*)*+*+,*,,*//,11/431652663874996:97<<9@?=AA>@@=??<<<9:97885774997<<9<;9<;9==:??=??<>><==:;;9997553653<95>:6A<9D@=C?<>:7:5251-$! $"653=??9;;466244021/11/11.//,...00254365587799587366365143/22011022144244244244244465575797587254133/22/22133243343122022022/11.10.00.00-..,--.00.00/00/10-..,.-,..,/.-//'))565665010-.,++*))()*(*+*+,+,-,+,+,-,+-,,-,,--+,+**)*+*--,--,,-,++*(('(('*+*+,+*+*)*)++*,,*))())))*)***)*)()))*))*)*+*+,*'('&'&&'&'('()'*+*,-,,,,-.,/0/,+)(%"$%$+,+,,+*+*''&&&%'(''('&'&%&%&&%)*)*+*)*)*+**+*+,+--,++*))(()(()(&''%%%&'&'('''&&'&''&'''&'&&'&''''''%%%!!!"""!"! ! !! ! $%$#$#$%$%&%641!!!##"+++110343443776999;<;<<;;;:::9898897998::9;;9;;:887221))(  &&&)*)++*+**(('&&%&&%%%$"""""" !! ##"$$#$#"!! !! """#$#$%%"###$$$%%!""%&%%&& $$$!!!!!!"#""##!"" "#" #$##$#!""######"""!""   ! "#"#$$ !! ! !" !! %&&&&&####"!#"!%$###"&&%!!!$$$**)()()***,,&''###''''((#$$&'&'('$$$"##!!! !!$%%$$$### !!$%$!"" "##!"! "#"$$$%%%""""""$%%'('+,,$%%+,+000210C>8B=7=83<71<71<72:503/+-*&'$!   $"&$!-+*''&--+//..//011--,..-+++//.,,+***---///---.///00-.-*)''%#'$#  $#!'%#/.,*)')('1/-1/./.,531421+*),,+*))0/-0.-1.,1.,,)()(&<:5?<8B?:B?:DA9B>:C@;GC?HD@HD@HD@KGBKGBLHDQMJSOLRNKQMISOKUQLSOJPMIQNISPKOMGHE?FB=FB=GB>KFBRMITPMUQMTPLUPMTPLUQMVQMXSOZUR_[Xa]Za]Z\XUVQMWRN_ZWb^Z^YUZTOZUO\VQ`[Ua\W`ZU^YT^YT`ZUa[Vf`[jeahc^c]Xb]Xd_Zb]Y^YU^ZVZUQ1)$,"3)"8.&=3*A6-E9/H;1J>2L?4NA5PB6QB7RC7SD8TE9TE9TF9UF:UF9UF:UF:VF;VG;VG;VG;VF:WG;WH[K?\K?\L@]L@]L@]L?^L?^L@_M@_M@_MA_NA`NA_M@_M?_M@_M@_M?^L>^L?^M?^M?]L?\K>[J=YH3PA6E:2;74D@>976-,-%&'!#$"$&$&(&(*(*-(*,(*,')*&'(%&'%%&%&&&''()**,-,.0+-/*,.*,-,.002503613613614714713635846947:68<69=57;58;8C8=B8<@69>7;?8C:=B;?D>AG?BH>AG@DJADK?BH>AFGI=EG;BD7DE9LKAHH?GF=EC;EC=IEALHEIEA>;7963963:741/,*+*1/.,$/"/$0&0' 0' 0' 0' 1'!1(!2("2)"3)#3*#3*#3*$3*#3*#2*#(&%$&)+.2*-1 !#!$%)),/*-1*-1-15&'*  " ! #$&' )$#%%'!$'"%("%($&* "%  # "%!$'#%)!#'%#$20200/.-+--*-.+--+,,*++)*+)*+)++*,-+-.,./-00.11/44143032032011/..,//,00---* !!!"""##!""""" !! !    !!#$##$##$##$#"##"#"!!! ! ""!%%$+*'*(&&$# ! !#"%'&)+*-.-1214548989:99:9=><@A?>?==><@A?AB??@>>?==>=>?>>?=<=<<=<=><==;;;:9:89:8<<;>>=>?==><<=<::9787776776987886665565686787887998;<:;<::;9897454742=96>:7>:7?<9;8572/2.*# 00-;>>9<<255.11+.-,.-,/.,..+--+.-022254254243032022032021/00.0/.00/22032/22033244354454676797365133022033244455454232133122.00-/.,..-//.0/-//.00.0/.0//0/-.-,.-,.-,/.,//(++12123101//0.-.-,--+,,+,++,+)*))*))**)***+*,,,+,+**),-,./.-.,+,*))(&'&%&%)*)+,+*+*)*)**)++*))(()()*)*+*)))())()(()(()(*+*()(&'&%%%&'&'(')*)+,+,-,-.-/0/--+-*'! %%%--,*+***)(('))())))))(('''&''&))()*)*+*+,+,,+..-//.,,*'(&&'%'(''('&'&%&%&&&&'&'(&(((()('('&'&&'&'('''&##" !!  %%%#$#!"!!"! ! %&%%%%$%$&'&420'('*+*'''$$$"##%&&&&&&&&%&%%&&''')**+,,./.010332665897997210$#"   ""!**)++*--,//....+++**))('&&%'&&(('%%%!!! !! ""!#"!!!   !!  #$#$%$%%%!""!"!#$%!""#$$$%% ### !"!!!!!!!!""  !!####$$!"" ! $$$!!! ! "## !! !"" !! !! !" !!  """"""&'''('#$#"!!$#"'&%$##'''$%$$$$()(()(*+**,,&''#$$&'&&(("##&'''((#$$$%%&&&&''%&&#$$"## $%%!""!!!#$$ ! %%%%&&%&%#$$###'''*++.//((()**.//210=93<72;719500,()'$*(%#!$")&"#  %#"'$"$# &$"+)(&&%,,,000010222...//.,,+110***)*)010333/00011232///*)'$"!&$#"$! $" %#!20/)(&('%.-+-,+.-,42110/*))+,+)((..,1/.31/31/.,*)('=;7B@;EB>FC>C?;@<7@<6D@;IF@NKFQMIPLGMIEKGCLHDNJFPLIQLHQMIRNKQMJSOKTPLVRNZVQZWSUSMSOJRNIPLGPKGRMIUPMVROUQNVQNYURWSPVQMWRMSNJNIEYTP_[W_ZW[WTZUR[VR\WT]YU^XT^YT`[Uc]Xd^Yd^Zb]Xa\W`[W_YU]WRc]Xgb^e`[d_Zb]Xb\Xb\X^XT\VQ]WRC<8(1( 7-%=2)B6,E9/I<1K>3N@4OB6QB6RC7SD9TE9UE9UF:VF:VF:VF:VG:VG;VG;WG;WH;WH;WG;XH[J>\K?\L?]L@^MA_NB_MA_M@_MA`NA`N@_M@`NA`N@_M?_M?_M?`N@`M?_L>^K=^K=_L?_M?^L>]K>[J=ZH;WG:VF:UE9TE9TE9SE9SD8RC8SD9TE:UF;UF;UF:TE:SD9RD9PB7O@6O@5M>4RE;<86---%%& "#"#%#%'%')%')&')'(*&(*')*'()&'(&''&&'&&''(()*+*,.+-/+-.*,-*,.-/202502502503613613613635836947:69=69=47;58<8<@9=B8<@7;@59>6:?8;A9BH>AG@CJ@DJ=@F=@E59>48<47<7;@69>7;?847;:>D<@G7;@?DKDJRINVRV^ghqWTQNJFRMIRMIVQNYURZURZVRYURVQNSOLTPLSNJOJFLGBOJEOKFKFANIEWSO[WT]ZW^ZWXTPSOKTPLVRNWROUPMSOKUPLQMILGCNHDVPKXRL\WR\WSWRMTOJUPKXSO[WS_[X^ZWWSPWSPTRMQPIOOGPPGPOGPPFRRIPPEOPEPQFMNCLMCNODKLBJLAEG;CE9EG?2CD9CC9ED;FE=EC=JFBLHDHD@@<9<84;95:750.,)((/0/*++3103*&1$/!.#/%/&0& 0& 0' 0'!1'!1(!2("2)"2)#2)#2)#2*#/+()+/,/4'),"#&)+/-04)+/+.2(+/ !!  !%)#*#*# %!  ! !! !!  ! "!#"!##!%$"&%#""  ()(()(*+*+-,+--,.--/.-/.,.-.//021243676566466455454465465354243343232021.0/0212433433546868988:99;::<:8:9799465354143132011121244243244254133/21/11/11010120121122466476576798899687576354010*++*+*+,+,-,-.--.,-.-01/231554675898==<<=;:;:<<;==;9:878678689677467577667656545545556567656545344345445467678689889856533333222112023112123134334345367656556556523231/841841630;85:7462.1-*"+*'8;:7::034+..*,,*,,+--*,,),++--.11/21/11.10.10/11/21.11-//,...00032/22-00/122445878;:787576354033033254466476465354344132/10-/.+--+--,---/.-//,/.-/../.,-,++**++*-,-//,..23245433200/-.,-.-./.,-,*+*%&%&'&((('('()(***+,+***,,+--,**)()(''&$%$#$#&'&**))*)))()*(**))*)()()*)+,+***((('('()))*)*+*+,+()(&&&&'&()()**)***+*+,+-.---+1.+&$! $$#,-+*+*))('''((''(''(''('%%$%%$&&&&'&)*)*****)--,..-,,*((&%%#')(*++*+*)*))*))*)())()((*)'(''''&('((('('### !    "###$##$##$#"""#$#%%$&'&'('**)000,,,+,+)*)'''#$#"""#$$%&&&''&&&&&&&&&&&&&'&%&&%%%&&&&''  %%$--,,,+++*++*++*++*))(**)**)))((('$$$!"!!!!##"#""!! #""$$###"  ! ! ! ! !"!"""!!! """###"## !!#$$!"" !!#$$"## !""!"!""" !!!#$$!##!!!"""$$$### !! ###!"" ! !!   !""#$$!"# !"" %%%*+**+*()('&&'&&#""''&&&&%%%'''()(*+**++())((('((&''#$$()(&''"##$$$'(('((())&&&$%%!!!""""""!!! !!!!!"##&&&###%%%$%%'''())&&&'('+,,.//***))),..420:503/*-*''%"! -)$0,')&#%#" !(&$)'&$$$+++/0/000122010///,,+110)*)''&-.-232010000111-..*)'" $"!" (%$&$"(&$!0/.('%&%$**(,+)-,+/.--,,(('*++)((.-,10/0.,/.,.,+('&:84CA9B>9EB[K>[K>\K>]L?^M@^M@_N@_NA`OBaOCaOBaOAaOBaNAaOAaNA`N@aOAaNA`M@`L>_K=_K>_L?_M?^L>]L>\K=[I59<47:59=859>6:?8;A7;?8;@;?D=AG=AF@CI@DJ=@F;>C:=B:=B947:136136025.03.02.02/25/24/14/14/14136258035/13.02,.0-/1/03./1.02.03-/1-.1.0302524736936:36:59>86:>47<47;7;@7;@8CJEKSHMUUYalmvVSOTPLTPMTOKVQMSNJMHDQMIXSPUQNRMIRMISOKRMJQLHRLIUPLSNISNJXTPZVSZVS^ZV]YVYUQXTPZVS[WTZUR[VS\XTSOKKFBPKFXSNYTO\WS`[W\XTYTQZUQ\WT\WT^ZX_[YYUSXTRRPLNNGNNEMMDNOFLLBRQHRRHPQFPQFMNDLMCLMCIJ@JK@GI=GI=HJ>FG;?@2@A4?@5DD:FE>FD>IFBGD@C@=?<9;84963863/,*))).//*+*3441224214+'1".-".$.%/%/& 0& 0' 0'!0(!1(!1("0(!0(!.($,.2-04$%( !"$&)+.2/38-16-05-05! !&!'!( ("$##"*%%'"".,+.-,**(..-./-/0./0...,+,+,,+*+*+,*,-,././0/12012123223212001/01/010010121120121132021/0/0211211320331552556998::4652434659:9;<<9;;577466344344355244353353354021.0//0/231242231242454686798677122021/10-//-//-0/.00011033133133033/22.00-//,-.-///10,..+--,//132344466355133022.0/-..+,,++*+,*,,+,,+*+*++*,-+..-/0//0/1115656766658877875644432314526746655654544544546766769:9;;:9:8786775564665776787675443010/0/01012034334323223223334245345466657633300.30.2/,2/,63041.1-*.*' )'$576578023*--)++*,,),+(++(**)++,//-00/11022/22/11/11.11,//-0//10/21.00.01033355465798687343132/22133144143243243132021.0/-//-/.,.-,.-,..+--+-,+--+-,+,,)**()()**)++-/./10121120/0///.010/0//0/-.---,**)'(''''&'&'('**)+,++,++,+++*((&%&$%%$#$#"#"$%%()))*))*))*)+,+,,,+,+*+*--,--,++*)*)******)*),,,++*'(''(')))+,++,+)*),,,..-,-+.+('$! #$#,,+*+*((''''(('))(&'&&&&$%$$%$%&%$%$''&&'&(('**),,+--,--,**))*)*+++-,+,++,+,,,+,+*+*,--+,+)*)()()*)()(&'&"#" !!  ! !"!!"!!"!"#"$%$%&%&('()(&''110//./0/.//'('#$#"""!!!!!!###%%%%&&%&&&''&''  ''&--,,,+++*+++..-..-,,+--,,,+'''###!! ##"######!!!!!!"""##"  ! !!     ! !"!   """###"##"##### !!"###$$ !!###"#" "##$$$!""!!!"#""#""""#$$#$$!""##"$$$"""""""""""" !! !! !! !!  !!"##"##$$$"""!!!''')**+++)))&&%&%%$##'&&&'&&&&'''*+**++*++)*))))()(&&&###&''&&&"""#$$'(('(')**%%%$$$!""!"""##"""!"!"## !   !!$$$'(($%$  ""!&''%%%&&&'('%%%&''---/00**)$#"('&*(&'%"%#!(&#'%"! $" &$!-*')&#.*%0,'%""! (&%"!!'%#&&%&&%+,+././00111010...++*./.))(&&&+,+232111/0/111,-,,*($"!%#!" )&%)&$+)'" /.-('%%%#((&-,*-+*,+*+*)'''((((''..,431/-,+)),,+)((873@>9C@\K?\K>]K>^L?_M@_M@_N@`NAaOBaOBbPBbPBcPCaOAbOAbPBaOAaO@`N?`M?aN@aN@aN@aN@`N?_L>^K=\J=[J4OA8+)(!#&#$&#$&#$&#$&#$&%&(&(*(*,(*,(*+&'(%&'%&&&'(()**,-+-/+-/*,.*,.,.0036/14/25/2513603603513625836958<6:>58<47;6:>9=B9=C7;@7;@69>69>6:?7;?6:?7;@:>C<@F<@E>AG?CI=AG;?D:=B:=B9=A:>C9=B8C9=C7;@6;@48<48<7;?9=A8:?E7;>;7;85:74964853.,),,,/11+,,455333233.///-,.#0 -,!-#-$.%/&/& /& /' /'!/'!/'!2+%./1,04&'* "#&+.204915;04915;&')  "$%%$$*# '!"!"($$'""& )%$865CCAEECGGEGGDEEBEEBEEBCCABB@BB?AA?@A?AA?AB@AB@BCACECCEDCECDFEDEDBDBBDBBDCDFECFDDFEEGFDFEDGFEGFCED798+..+./,//3545772430211212435778::566233011/11022011010010132/00+,+,-,./-./.01/121121343465354,..,.-,.-+--,/.-//.0//10/11/11/11/21/21/10.0/+---//.00-00,/.,...00133132.00,..,..,...0/,.-()()*()*)))(**)*+),,*,,*,-,,.-/0/23234334345445423212000/2217768988987876766768878888989989:8887776665565665675454343221010021121332243021.00.0//1001/010354454222//..,)/,*/,*1.+1-*1-*3/,"'%"454466/11*,,(**(+*(**'))&)((**+---///01/12/21/22022033032.00.0/.0/-/.-//122243122021243133022/21032022022/11.00.//-/.,.-,.-,..,--,.--/.,.-*,+*++*,+*++(**())(**(*))+*-..!""01///.--,+,+-.-..-./.-.-++*)*)))((('&'&&'&()(*+*++*++***)&&%"#!#$##$$#$#&''*+**,+,-,,-,,-,,-,+,+*+*,-,---++*))()))()(()))*))*)()(()('('((()*)*+**+*,,++,*)'$%" #$#*+***)'''''&&'&()(&&&&&%%&%'('*+*''&(('&'&&&%))(,,+--,-.-,-,+,+,,,,,,,,+,-,..-./.-.-./.,-,)*)()(()('''%&&#$$"## "! !"!!"" ! ! !"!#$#$%%()()*)"$$111222233111)))$%$""" !    (((*+**+*,,+..-//...-,,+***'''%$###"$$$$$##$#$%$###""!""""""!"!!!!   !!!!""!"""##"## "##&'&!""""""""!""###$$$"""!"!#$$"## !!"#""#####$$#%%$$$####!!!"""!!!!!! "## !! !""#$$ !""$%$!!!!!!%&&''')))&&&$$$$##%$#'%%''&()(((()*))))(((&'&'((())%&&"##&'&&''!""##$()))))())#$$$%%$%$%%%&&&%%% !!$%%%&&###"#"!"!#$$)**(((#$#"""$$$&''%&&%&&&''#$#$%%+,,...++*#" *'%)'$'%"%# !  (&#-*'0-*3/,+($,($/+&" ! &$##! #!&$#('')*),-,./.011011/00---**),-,**))*),,+332111-../00+,,+*(%#!%#"#! '%#)'%-+)! 321.-+(&%)(&0.,0.,-,+-,,)))'&&'&%//-7641/.('&**)**):85EC>B?;GD?JFBKGCMIENKGLHEKHDNKGQMIOLHMJGJGCIFBJGCLHDOKGROKUQNVRNTPLTPLQNIPLGPMGOLGVQM\WT^ZW\YVYVRXTQXTPXSPTPLTOKUPLWSO[VR]XT[WSVRMRMHVPK]WS`[V^YT_YS`ZU`ZUa\W^YT]WRb\Wf`[b\W`ZU_YT]XS^XS_YTa\Xd`\b]Y_ZV^YT^XS]WR_YTa\XQKG)3(!9.&@4*E9.I<0M?3PB5RC7TE8VF9VF9WF9WG;XH;XH;XH;XH\K?]L?]L?^M@_NA`NA`NA`NAaOBbPCbPBbPBcPCcQCcQCcPBcPBbOAaN?aN?aN@bN@bN@bOAbO@aO@`M?^L=]K=\J<[I4O@6@61 "!"#!"#"#$#$%#%&%'(&(*(*,(*,')*%''%&&%&&'())+,+,.+-/+-.*,.*,.-/1137/25/14/2502602502514735946:59=69=58<47;7:?9=B9=B7;@7;@6:?7;@7;@6:?6:>6:>9=B<@EBH=@F;>D:=C9=B9C958=58=6:>9=C9=B9=B9=C59>48<DCIPINUX[cz{{{RNIWROPKHPKHPLISOLVQNWSPWRPTOLRNKRMITOKYTQXTQOJFMHDPLHNJFPKGWRN[WS[WTYURXTQ\WTYTPVRNTOKWRO[WS\WT\XT_[W_[V[VRUPKUOJYTOZUQXTPVRNXSO[VR[VTWSQROLNLGKJBKJBMMDOOGNNENNEQQGOOEIJ?EF;IJ@JKAHH>FG=IKAIKAIJ@FG;8<:6;96:850.,...022+++344333121*+*,--&'',+*,$"-,+,"-#-$.$.%.%.%-%-%(%$*,0(*.#$'"#%!#%)+//3826<.27049'*. ! !&% "# %("!$("!+&%'" '! $642KJHQQNRRPTUSUVTUVSSTPSTQUVSTUSSTRRTRUWUSUSPQONOMKMKMPNORPOQOMPOPRPRTROQOOROORQNRPMPOMPNKMLHKJILKILKFHG<><.10+--+--.0/.00-/..//122243355687233/01.//.//.0/.0/-/.,.--//-/.*+**+)*+**,*-.-021232343232121-/.,..,.-+--,--+,,)+**,,+--+---///22.11/11/11-//-//.//-0/,..,---..133354021-//.0//11/21021+,,++*))(&'%&&%&'&(('()'()()*)./.1211321213434553432212212325547768989:9998998998898787786897886554554354354565454343231010121120010/10./.,---.-./-/0.00/232221/0/--,,*(1.+2.,2/,2/,3/,51.# $"231244.00*,+'))')(&((&((&'''(()++,../11/11/11/21022022/21.0//00/0/-/..//122132/11.10/22022/21/11033011/11.//-//-..,.-,--+--,.-+--,.-,.-+--*,+*+++,,***())')(')('((&(((**!"!+,+,,+**)**)++*,,+*+**+*'('&&%'('''&&'&&'&&'&''&''&''&**)**)&&%$%$$%$%&&(*)+,,-.-,-,+,++,+,-,*+*)*)*+*+,+***'('&''&'&&'&&('')('((()('(''('()(*+++,++,++,*('$&# %&%)*))*)''&&&%%&%'(''('((''('&'&''&&&%&'&'(&''&()(++*+,*,,,,,+,,+,,+,,+,,+--,..-/0.//.-.-++*()(()(&'&%%%$%$"#" !! !  ! !  ! ###&'&()(#$$121111/0/,-,)*)'('%%%!!! #$#--,//.././/...-+,+()('''(('''&''&&&%%%%&&&%&%$$#"""###$$$$%$"""   !!!"""$%%###  ! &'&#$$ !!!"""##%&&$$$!""#$$"""   ###"#"""!""!"#####%%%######  ###""" !!"##!!!###$$$"##$%%&&&""!""!%%%%%%((($$$!!!#$#&'&&%%%%$((''('())()((((()('((&''$%%"##$%%"## #$$*++*+*'((&'''('&''(((()(&'' !!  !! #"!(&$*&"*&"+'## " %#! #! !! ))(-.--.--../00/00,--++*'('*+*++*./.00/453000./.010,--.,*'%$#! " %"!'%#.,*&#"43231/,+),*(/-+20.10/0//+**'&&'&%.-+4311/-)'%+*)--,653EC>EB=IFAHEAIFAJFBJFBHD@HD@KHDLIEKGCIEAEA=EA=FB>JFBMIEROLXTQZVSZVRWSOWSNURMRPJRNJTQMTPMVRNXURVSPVRO[WS[WTUPMTOLXSPYTPWRNZUQ`\Xa]Y`[Wa[Wa\X^YUYSNZTO[VQZUPZTOYSN[UP_YUe_Zfa]e`[d_[c^Yd_Zd_Zd_[e`]d_[b]Yb]Xc^Yd^Ye_Zf`\b]Y6-)/$8,$?3)D8-H;0M?3PB5RC6TE8UF8WF9WG9XG:XG:XH;YH;YH\K>\K?]L?]L@^M@_NA`NA`N@`M@aNAbOAbPBcPBdQCdREdRDeRDdQCdPBcO@bN@cO@bO@bO?bPAcPAbOAbO@`N?`M>^K=]K=\K=[J3N@7*'% !"!"#!"#"#$#%&%'(')+(+-(*,&()%&'%&&'(()*,*,.+-/+-/+,.+,.+-/.03036/25/15/2602602603625836947;69>69>59=48<87;?6:?6:?69>59=8BH=AG;?D;>C9=B8;@7;@9=B9=B8<@58<258025036025/14.03.13/2402513614714736:36:035025/24.03025136036025/14.02.0202524736936:36;47<:>D9=C6:?59>6:?59=48<848<EF:HI?DE;AB7AC7AC9DG=JLAJK@LLAMMCHI=EF;GG>GF@HFBGCAA>:<96;84;86:75/-+./.011)**122222000())...()(*++'(('&%/'%,,*+ +!,",#,#,#,#*$!)+.+.2*-1'),"#&"#&')-.1637=,04,/4),0 """#""$ )'&@A@UWUVXVSUSSVTSVTPRPMNJMNINOLMOMJLKGIHGIHJMLIKJEFEEGFBDCCEDFHGEGFDFECEDDFDCDCDFDDFDACA@B@:<;:<;>A@=?>:;9021)+**,++.-,.-+--,../22133132132.//-..,...//.0/,.-+,,*,+*,++,+()('('(*))*)-.-021454454010/00-/.,.-,.-,.-,--+--+,++,,-..-/..///10,//+..-//-0/,..-../11/01/11/11244344133/11011022022/11*,+**)**)((''(&)*(**))*()*(,-,342565454233565787565454665786998998998887786897998787676665776886442332343243454454344221/0/00/01/./.-/.+-,*+*++*,-+..--.-//../...---,,*(2.,2.,1-*2.+2.+2.+" !/0.021-//*,,())'((&''%'&%'&&'')+*,../10/11.10/11022.11-00.00/11/00-0//10121131021/21/11/11.10/10022022/00-..,..,/.-/.-.-*,,+-,*,,+.-,.-,.-*,,+,,-/.)**')('((%''%&&$&&%&&!!!'(''''&&%((())(+,+)*)))(((('('+,+**)()('('%&%&&%&&%%%$'(&**)()'&'&$%$%&%'('()(+,+,,+++++++-.-*+*((()*)*+*()('('%''%&&%&&&'''('&'&&&&&&%&'&'(')+**+*+,+*+*('%'$! $%$()(**)&'&%&%%%$&'&''&'(''(&()())(''&%&%'(&&'&'(')*)*+**+**+*+,+++***)**)+,*+,+,-,--,--,+,+'('&'&$%$"#""$#!"" !! !"!###$%$ !232/0/--,***)*))*)&&&!"!   ))(//.-.-+++)*)))(((''('((')*)(((&&&%%$%%$%%$$$#""!   !"" !!!"""#$##$$ !!#$#!#"!""#$$#$#$$$#$$#$$#$$#$$  ! #$$!""#$$$$$"""!!!"""   !!%%%""!###%&%%%%&''##"!""%%%$$$#$#$$$%%%&''&''&'''('$%%###!!! !!!""  !""  !"!  $#!'%#)'$(%!# +)&0-*-*'  %#!'$# ,,,010000./....../,,,*+*''&**)+++00/110555000/0/233----,*'%$!!$" %#!,)(&$# 21020/,*)**(-,+/.-432432,++&&%&%$+*(20.1-,*'&,+).-,531DB>EB>HE@GE@KHCJFAIFAJFAJGCKGCGC@FB>FB=FA=GC>JFBHD@D@2OA4RC6TD7UE8VE8WG9XG:XG:YH;YH;YI[J>[J>\K>]K?]L?^L@_MA`NB`OBaOAaOBbOBcPBcPBdPBdQCeQCdQBdQBdPBdPAdOAdPBeQBdPAcP@cPBcPAcPAbO@aN>`M>_L=^K=^K=]K=[J3PA7@60!" ""!"#"$%$&'&(*(*,(*,')*%'(%&&&''()**,-+-/,.0+-/*,.+,.,.0025/25/15/2503603603613725936:58<6:>6:>69=69>:>D:?D9=B9=B8<@6:>7;?6:?7;@69>59=7;@:>C;?D:>C=@F=AG36:036036026/14.03.13/2502513614703736:36:136025025.13025147147036/14.02.0202524825936:37;26:86:?59>47;8DCIPINU`bjiggYTOYTPVPMTOLSNKRNKUQNXTQVQOSNKSNJOJFLGBID@KGCTPMWTQTPMPLITOLXSOVRNSNJPKGOJFRMIRMIRNJZVR[WT]YU`[Xd`\ea^d_[_ZVZTPXSNXTO[VS[VS[VRZUQZVR\WT[WTWSPOMGLKCKKBLLBKKBII?KKALMDMNDMNCKLAHJ?BC7BC7FG;DF:EG;KLBNODNNCLK@KL@MNBJJBFD?CA>B>@??A@ACB?A@<=<=?>>@??A?DECGHEDEC@A??A?>@>=?=;=<9;:8:9686576798;=<>A@@B@=>=232(++*-,*,,+-,*,,,...11/11/10021.//,.-+,,+-,,--+,,*,+*,+*+**+*()(&(')**)+*,.-/0/121132.0/021/11/11/11021/10.0/-..+,,-/..0/-///00.00-00/11132022022244022/01/00122022/11.00/00011022/11+--))),,+,-+*+)+,+,-,,,,+,+--,5547876764555657775655648979:8997886675564353565887776564453554664332121232343222232121.//+,,+,++,++,+-.-+,+))())(++*..-./.-.-,-,,-,-.-+*)0-*0-*/,)3/,2/,1-+" ,-+.00+--*,+(*)(*)&(($&&$&&&'')*),---//.0/-/.-...00-//,/.,...//.00-0/.11133143133133-00.10/11021/10032021,.-+.-,..,.-,-,*++*,+*,++-,+--+--+,,*,,+,,'))&('%&&#$$"$$#%%"##!"!%&%$%$$$$))(++*,-,*+)()('('(((***)*)''&&&%$$#$%$%%$%%$%&$((''('&'&%%$%%%%%%&&%(('**))*))*)*+*(((&'&'('()(&'&%&&$&%$%%$%%%&&'('&'&%'&%&%&'&'((*+**+****)*)''%(%" "#"(('((''(''('()(*+**+***)**)**))*)(('$%$$%$$%$$%%()(*++*+*)*)**)***))())(++*)*())(++*,,+++*'''%%%###!"!!!!!"!!"!!!!  """$%%//.......,-,+++()($%$!!!!!    !!!--,./.***()()*)*+*****+***)((('(''''        !!  ! """"""   !! $$"""!$$$&%$*'$# ",*'63/52.1-( %#""   ..-.//000000/00.//+++,,+()(,,,--,/.-//.332--,---122-.-+*(#! '%#(%$&$"*'%$"!00/20/-,*+*(.-,//.876:980/0))(&%%)(&1/-0-+*'&,+)++*//-@?:DB=JGAHE@IFAKGCMIELHCJGBKHCJGCKGDNIEOJFNJELGCHC?D?:EA[K>[J>\K>]K?]L?^M@_NA`NA`OAaOAbPBcPCdQDdQDeRDfRDeRCfRDfRCfRDfRDfRDfQCeQBeQAdQAdPAcP@cPAcP@aN?`M>`M>_L>_M>_M>^L=\J<[I;YG:XG:XH;XH7;@7;@7;?7;?;@E;?E9>C9=B7;?6:>8;@7;@859=7;@9=B:?D:>C<@F>BH<@F<@F;?D86:?6:?47<8;@FCCIPJOWdfnecbWSNZURXSPSOKPKHQLIUPM\XUZVSUQNSNKQLGMIDKFAKEARMJXTRUROTPMVROVQMUQMQMHOJEQLGOJEOJFOIEVQM\WT`[X`\Xa\Ya\Y`[W`[W\WSZVQZUR\XT^ZV\XTZUQXSPXSPWSPTQMNLFMMENMEMMDLLCJJ@KKBLLCLMCKLBKLCIJ@DF:EF;HI?HI?HJ?NPERSIRSIKK@KK@NOEJKCBA<>;8>;8?;8<95;95:85641.-*,--011())/00121-/.(((---)**)**(((%&&*++$%%&''))(#&+)(((('!%'*#%'$%'')+(*.),0+.2),0%'+!#%'*.$'+#!"676BCCEGFCFEACBBCBBEDDGEEHGEGGEHGEGFEGFHJHGHGABA=?>=>==?><>=;=;;>@>=?=:<:8:98:98:97976865767989<;>A@@BA354+-,+--*,+*,+)++)++,..-//-//.00-//-//-..,..-...0/-/.-..,.-,.-*,+)***,+*++,.-021021032.10.10.0/021021022/11.0//00.0//21022/11.00,..,../00021011011132132022/00/10.10.00-00-00.00/11022,..**)..-..-+,++,+,-,./../.,-+00/565565454444555565565887676443343343132010121454554342231232232121010121232221010./.+,+)*)(*)()((*),-,+,+()(()(*+*..-/0/.//,-,-.-/0/--,.+)0,*/,)1-*/,)-*'")*(-/.*,,)+*(*)(*)'(($&&%&&&('(*)*,++--+--*,,*+,+--,..,..,..-//.00-00-0/033244243243-0/.0//11/11.//.0//11,--+-,+-,,--,-,*+*)**)**)***+++,,)+*)**')(&('&((%&&"$$"###$$!"" ! $%$&'&$$#%&%))(++*++*))(''&&'&'('&&&$%$$$#$%$$%$#$##$#$%$%&%&'&&'&$%$$%#$$#$$#&&%''&'''''''('&'&$%$%%%$%$$%%%&%$%$#$$$%$$%%&'&%&&%&%$%$$%$&&&'('()(()()*)))(-)& "#"))()*)*+*&'&%&%()(()(()((('()(&'&&&%$$$$$###""##%&%'(''('&'&'('))()*())())(&&%$$#''&++*++*''&%%%##" !   ! !!!""! !"!!"!!"!"#"$%% "---,-,..---,,,+()(%%$""""#"###   $%$/0/-.-,-,..../.,-,+,+&&&              ! "##$#"&# -*'95274061,0,'   %#"" $#!00/))),--.//121122-.-///++*..-0/.00///.221,,++,+010,,,*)('%$"!)'&+)(+(&'%##! ,,+31/.,+))'.-,1/.764:98211-,,*)(+*(1/-1.,,)(.-*,+*.-,=;6CA;KHBLICLIDOKGPLHOKFNJFKGBKGCOKHSOLSNKRMJOKGJEAFA;EA[K>\K>\K>]L?^L@_MA_NA`NA`NAaOAbPBcPCdQCeRDeRDfRDfSDgSEgSEgSDgSDgSDfQBeQAePAePAdPAdPAdPAdPAcO@bO@bN?aM>aN?aO@`N?_M?^L>\K=[J4RB8;3.!##$%$&(&(*'),')+&(*%'(%&'&'))*,*,.*,.*,/+-/+-/+,/,.003503503603614714714814747<6:>7;?7;@9=B8=B859=7;@7;@858<7:?9=B;?D:>C<@F>BH<@F=AG=@F:>C9D87;@6:?48<7;@8;?F;@F8=BCHOKPWiksVSNQMHRMIRMISOKPLHSNKWSPZVTZWUXTQVQNUPLRMIPKGOJFOJGQMJUQOUQOSOLRNJTPLTOKQMHSOJRLHRMHRMHUPLZVS`\Yb^Zb^[a\Xb]Xb]Y_[W^YV\WT\XU^ZW]YV]YV]XUWSOVQNSOKMKENNFPPHNNFLLDLLCKKBJJAKKAJKAKMCLMCHI>FGMOERSJQRHQQGOOELLBGH>CC:>=6<:6?<8A>:>;7:7485241.-+(+++/00'((,--/0/.0/()),-,)**)*****&''*++%&%'(')**   **(''&#!""$' "#%),/+/3*-1')-&(, "$ #%#%) //.;<;ADACEDCFEDFEACBABAACBADCCFEEGFGIHFGFDEDEEEFFEACB?@?>?>>?>;=;8:88:8=>=?@??A?ACA@CA=?><>=<=<8986767988:9787687686676797@BA243.//-.-*++(*)(*)())*,,,...00/11133133243122011021/10-/.-..+-,*,+*,+-..,--./.132243132/10.//.//233354244243/10.0//10132132032/11+--*,,,--.//011121232232021.00.00-//,//-//.11/11022133.//((',,+//.120010/0//////...-//.34355545456556577689899855312//0.01//0/-.--.-/0/01001001//0/010010/0/././/./////.,,+*+*((('('&'''('./.-.-*+))*(*+*,,,121120./--.-010..-*'%,)'-*(0,)-*',(%"''%,.-*,+(*)(*)(*)')(%'&%'&%''&(((***++*++)*+)*+*,,*,,+-,,.--/.-//,/.,..022243243022-/.-/..0/.10-..*+++,,*,++,++,,,-,+,+)*)())(*)(*))***++)++*,+')(%'&&((&((%&&#%%$%%"## ###%%%"#"#$#$%$'('**)**)'('&&%&'&$%$"#"!"!#$##$#"#""#"#$#"##$%$%%$$$#"#!##"$$##$###"$$#$$$%%%%&%$$$$$##$##$#%&%%&%%%%$%%#$$$%$$%$$%%%%%$%%%%%&'&'(()*))+)**).*( #$#'(&))(**)&&%##"%&%&'&&&%&&%&&%$$###""#"$%$%%$%&%$%$$%$%&%$%#&&%'(&(('''&%%$ ""!((')*(''&%%%$$#!"!   !! !!!  !"!"###$##$#$$$!##./../....,,+,++++*(((%&%&&&$$$   *+*000000...()( !        ####$#####$#$$$$$$$%$%%%%&%%%%$%$()(*++ !!     """##"#!30,;84;73:5/72,.*&$"! (&%200(((+,,...232445//.010,+*1/.30/321//.221..-,,,122-.-+*)'$##! )'&+)(,*)%#"%"  ))(210.-,('&-,*31/531875200-,+-,+/.,32041/-*),+***))('=<6CA;KICPMHQNJQNJRNJPMIOLINJFMIEMIFPLINJFLHDJFBHC?FB=JE@KGBJFAGC>GC>LHBSOJWTOYVR[XT^[X^ZWZURTOKRNJTPLWSOWSNWRNYUQXSPWROVRNYTOWRMSNJNIEOIEUOKZTOZTN]WRb]Xc^Y_YT]WR]WS`[Vc^Zgb_kfcjead_\gb_hd`gc_gb_fa^e`\e`\e`\ic_ic^f`[gb]ZTP-!5)!<0'B5+G9.K=1O@4QB5SC6TD8VF9WF:WG:XG;XH;YH;YH;YH;YI\K>\K>]L?]L?^M@_NA`NA`NAaOAbPBdQCdQCeRCfRCfSDgSEgTEhTEhTEiUFhSDgRCgRCgSDfRBfQBfQBeQBeQAeQAeQAePAdP@cO@cPAcPAaO@`M?^L>]K>\K>[J>ZI=YHD<@F:>D9>C859=89C<@E>AG<@F<@F=BH;?E9=B:>D:?D836:25925914803702614825825925925947;59=36913513502513636936:369147/14.1302524836947;47;36;6:?:?E87;@59>48<7;@:>D:>D9=C8CBGNLPXsuSPGQLGPJFQLHVRNWSPUQNPLILHERNLWSPZVRXTPQMIOJFQLHNIELGCQMJQNJMJFPKHSOKTPLRNJTOKUPLVQLXSOYURZVS^YVa]Z_[W_ZV`[Wa\Y`\X^ZV\WTYURWSPYUR]YV]YVZVRYURXTQQOIONFPOHNNFMMDLLCII@II?JKALMCLMCMNDJK@HI>EGLNDPQHKKAFF:@=:;7452.63/52.-,(,-,232*+*-..122011*+*.//*++)*)+++%&&+,,'((())+++   +*'&$!"$!"%"#&*-1+.3'*."$'"#&!#!   ))(554?@>?A?ACADFDDFEDFEBDB@A@?@?@BBBDCBEDCEDFGEEFECDCCDCABA?@??@?=?=:<;8:87979;9=>=>@>?A@>@?;><:=<9:9676686798787565576686686786:=;>@?021.//./.-.,)**)+*)+*,.-+,,*,+-...//.0/011133122021021010010-..+--+-,,..,-,,.-010354465354233243353354244133/10.///10021132244/21,..*,,*,,,--/00332231222011.00,//-0/,//,//022244244244/00()(**)+,+//.//.././//-.-,,+..-010121343454343564897887331..,**(,-,-/.-.--.-./../..0//0/.0..0/./.-.--.-,.-..../.,,+***'('''&%&%%&%*++-.-,.,+-++,++,+-../0/010010010./-*'%+(&,)'0,)/+(-)&"&&#,.-*,+*+*)+*)**'))&('&''%''')()***++)++)***++*++)+*)***,,+--,..,.-+,,.//011021/10,.-,--+-,,--)**'('&''())*+*+,++,,)**')(')()**(**(***++*,,+,,')($&&#%$$%%$&&#%%$%%$%% """$%$###!!!!! #$#'('))(''&&&%%&%##"!"!  ! ! !"!"#""#""#"##""#""#"""!$$#$$# ! !! ##"%%$%%$######"#"##"$$#%%%%&%&'&&'&&'&%&%&'&'(''('&'&()(+++,--,--****(% #$#()(()())(%&%""!###$%$$%$%%%%&%$%$"#!!"!"#"%%$%&%$$####"##!"!"#!%%$&&%&&%##"!! %&$''&&'&&&%%%$#$# !! !! !"!""!!"! ! ! ! ! """####$##$##$#011/0/-.-**)**),,+*+*"#"   """!!!       "!  )**)**(((()(()()))*++*+**+**+++++-..-.."##          !!"+)&:73;73>93;6072--)$"  $"!1..(((,-,---000344---...))(/-,1/-210/.-00/,-,,,,232...-,**('$"!)'%+)(,*)$"!&#!('&10.-+*('%,+)30/5314210/.,+*.,+1/.5327541/./-,.,+'&%=<6GE?KHCIGBHEAGD?KHDOLHOLHMJFKGCHD@IEBJFBKGCLHDKFBLGCPKFSNJSOJOKFNIDPKFUQMYUQYVRZVS]YV^ZW]ZVZVQXSOWSOZUQ^ZV_[W]YU\WS]XT^YV_[WZURSNJOIEQLGXRM]XS]WR_YTc]Yhc^d_[c^Yc^Ye`\e`\ea]kgdlgdgc`jebieae`]e`]d_[c^Ze`\b]Xga\kfaic^f`\c^Z8.*0%9-%@4*E8-I;0M?3PA5RC6SD7UE9VF9WG:WG:XG;XH;XG;XH;YI]L?^L?^M@_NA`NAaNAbOAbOBdQCeRDfSEgSEgTFhUFhTFiUFiUFjVGiUFiTEiTFiTEhSDhTEhSCgRBfRBfRBgSCgSCfRBfRBeRBeQBdQBbO@aN?`M?_M?^L?\K>[J=YI=XHC:?D9=C;?E<@F:?D9>C8<@58=59=8D<@F>BH=AG=AG>CI=AG:?D:>C:?D8=B7<@6:?37;36:37;26:03703725925936:36925947;69>47:13613613614736:47;36:259025/1403625947;48<37;36;59>;?E9=C6:?8D;?E:?E9=C6;@:?E=BI:>DBFMPT\{}nnrQNFSNIRMHRMIWRN[WTUQNNJFLGCTPLYUQXSPUPLTOKUPLSOKRMIQMIOKGIEALGCSOLUQMRNJRNJSOKUQMXTP[WS[XUZVS\XT]XU]XT^YU^YUa]Ya\Y^ZV[WSWRNUPLWRO[WT]YV[WTXTQVSPTSMQPIPOGOOGMMEKKCJJAJJAIJ@KLBLMCMMCKLAIJ@HI>JK@LMCNOEMMCGG;@=:<8563/63/52/-+(---343,,,,--233/00,,,332---*++-.-'((+,,)))*++,,, % *(&#"$'"$''*-&(,!#&! #!#!  " !!!!$%%,--343:;:<=;<=;@A?>@=?A?CECCECCECBCB@A@=>>>??ACB@CBACADEDDFEBCBABACDC@B@?A?<=<8;99:99:8:;9;=;<>=>@>=?>:<;:<;9;:686575686898787354243454786:<:;><010.//010//.+,,)**)*),--+-,+--,.-,.-.10132354243021011011/10,.-,.-,.-.0//10011021133354454343354464354344133021011021/21/11244011-..+--*,,+--.//222343222010/00/10022033/11244344354244/00()'))(**),,,--,+,+,-,*+*()'***+,++,+./../...-//.11022122000.++*,,+-...///00011121121010/0//10232010/0/.0//00010..-*,+()('('%&&$%%&(')*)*+*++**+*)*)+,+,-,-/.01000/--,-+(,*',)&.*(1-+/,)$!&%#+-,*,,)+**+**++())&('%'&%'&')()**)**(*))***,+*,+)+*(**(**)++*,,)++)++,--.//.0/.0/,--*++)+**++()(&'&&'&()(+,++,,+,,)*)&'''((*++)+*)++*,,*,,)**')(&''$%%#%%#%%#$$"###$$ !!!"!#$#$$$  "#"$%$$%$$$###"!"!!!         !! !! ##"##"##"!!  ##"$$#!"!"""#$#$%#$%$%%$&&%(('''&&'&&'&'('()(())())(*)+,+,-,,--*+*)'$!  "#",,+))()*)''&##"#$#$$#$$#$%$%&&'('%%%"#"!"!!"!""!""!"#"!!! !! ##"%&$%&$##"""!&&%%%$%%$$%$$$$$%$!" ##"##"""!#$###"!!  !"!!"!!"!---232///---+++'''       $$$''&**),,+...00/11000/--,''&    !""!!! ! +,++,,*+**+*)*))***+*()(((((((((''('%&& !!!!"!!!          &'''((1/,>92;6061,+'#  " /.-**)//...-/0/233,,+,-,''&+**.-,0//..-..-**),-,011,,,,+)*'&(&$*(&+)'*(&$"!(%$#"!4320.-*)',+*/.-21010./.-.+*/-+3205437541/..-,1/.*(';:4GE?MKEKHBEB1(C6,H:/L=2N@4QB5RC7TD8UE9VF:WG:WG:WG;XG;XH;YI]L?]L?^M@_M@`NAaOAbOBbOAdPBeQCfSDgTFhTFiUFiTEiUFjVGjVGjUEjTEjUEjUEjUEjTEhSCgRBhSChSCiTDiTDhSChSCgSCgSCeRCdQBcPAbOAaN@_N@^L?\K>[J=YH7;@7;@8C:?D:>D87;@8BI>BHAEL?CJ<@E:>C:?D8=B8D7;@8D:?E:?E9=C7;@:?E=BH:>CCGNX[c\[ZMKCOKFPKGRMISOKXSPXSPTOLRNJXTPZURWRORMISNJTPLUQMPLIMHDNIEMHCQLGWSPRNKMIEOKGOKGRNJYUR]YU\XUYUR[VSZUQZUQ^YT`[W`[X]XU\WTZVSYTPXSOZVR^YV]XU[WTXTQRNKONHPOHPPIPPIMMELLCLLCLLCJJ@KKAKLBMMCLMCJJ@JKAMNDMNCNNDNOEKK@FF;DE9FF;BC9==5:83>;9?<9<9674053/53/-,(,,,222./.-..566011,-,554-.-*++,--'((+--)**+,,+,+  &&" "%!#% "% #"!  %!!412<<<:;:7888:98::;=<<=<;<:?@??A?>?>?A@>?>=>=?A??A?<>=<==?A??A@>@>@B@ACA@BA?@@@B@@B??@>;<;7878988:89;:8:97979:9;<;::::<;:<;798454353465354010/0/1216859;9:<:121/0001100/,--+,+)*)+,+)+*)+*,--,.-/11133233021.0/-...//.0/,.--..-/..0/021132022133354454232343465465344233132122022/21.00/11/00.//-./+---..011122565687566355244355255033032233455355122))((('))),,+./.+,+*+**+*())--,,-,**)-.,+,+)*(++*.-,/0.00/01/./--.-,--/0/232232454665565454454566232010/0/121010...+,,(*)'((%&&$%%%'&')('(((('&'&''&)*)*+*-/-/0//0/--,,*(,*'+(&-*'1-+.+(# $#!+,+*,+*+*+,+,.-())&'&%&&%'&'((())())()))+*+,,*,+)++)**(**(*)(*)())())*,+,.--.-.//,.-*,++-,+-,*+*'('&'&)*),-,+,,+,+*+*())(*)*,+)+*)+*)++)**())'('&''$&&#$$"## !!!""!"" !!!!!""""#" !  !"!""! !       !" ##!""!!! ##"##""""###$$#$$#$$#%%$$%$''&()'((''(''('()(())(*))+*++++,+,,+*+**(&#    ! ()((('))())((('''&%%$$$#%&%&&&'('&&%"""!"!!! !! "#""""$$#%%$&'%&&%$$"!! &'%%%%#$#####$$%%$##"##""#"!! ""!"#!!! "#"#$#!"! !!)*)...'('   !!!%&%()(+++-.-//./0/00///../.---%&& !!  !"!"##!"" !!$$$#$$&''())())())'(($$$!!!%&'"##%&&&''"""!"""###$$#$#           ! '((&''1/,?93<7150+(%! ! 0.-,,+00/010121122++****''&**),,+.-,/.-//.)))...121,--,+*&$"(%#)'%+(&(%#!%"! 5430.-*('+*),+)..,0/./.-/,+2/,65276476420/0.-0/.*('873FE?LJEMJDJGAIFAMJGQNKPMJPMIPLIOKGQMJROKTPMUQNSPMOKHIEAJFAMIDOLGNJFMJEMJEOLGTPKXSOYUR[WT\XU[XT]YV_[W]YUYUQWSOXSOWRN\WT_[X^ZV^ZV]XT^YUb]Yb]Xb]X_ZUYSOWPK^WRc]Ye`[c_Za]Yb]Yd_[e`\gb_fa^d`\d_\a\X`[Wb]Ye`]hc_fa]f`[gb]hc^e_[a\WZTP5+&3';.&B5+F9.J<1M?3PA5QB6SD7TE8UE9VF:WG:WG:XH;XH;YH\K>]K?]L?^L?_M@`NAaOAbOBcPBdQCeQCfRDgSEhTEhTEiUFjVGkVGkVGkVGkVGlWGkWFkWGkUEjTDiSCiSDiSCjTDjUDjUEiTEiTDhSCgSCfRCeRBdQBbPAaN@_M?]L?\K>ZI=ZI=YI=YI=XID8C9=B6:?48<6:?7;@8BHAFL@DK=AG:>C:?E8D9=C7;@7;@6:?48<6;@;?E;?E:?E9=C7;A;?E=BH:>CDHO^bjPOINKDOJEMHCQLGSNJWRO[WTYURWRNVROWSOVQNQLHQMHUPLVROPKHID@OJFVQMWRNWSPPKHNJFOJGNIDRNJXTQZVS\WTZVRYTPZUQYTO\WS`[W^YU[VRXTPYURZVR\XT]XU]YV]YVXURTPMPMIOMHMLEKKDKKDLLDKKCKKBKKBLLCMNDNNDMMCKKAHI?HI?LLBNOENOELMCLLBJJ?GH=CD:>?59:1750:74;85;85851640640.-*,,+/00./.,.-687232,,+443--,()),-,()),--*++-..+++ $!$"$'"$'"$ !"'((..-3434757877877876878998:98:8:<:=>=<>==>=<=<<=<<>==?=<>=>??>?>>@?>@?@B@ACA?A@>??=?=<=;;<;9:95655656766865754647978987889:99;:898454343343121..../.2317979:98:8010,---/../.+-,*++)**+--)**')(*,++-,-//.//.0/.0/-/.,.--.--/.,..-/..///0//10021/11022243132/10021465577566243465465355132.0/-//-///00/00.00010354455677565355477577467466144133022243233011)*)'('))(**)-.-++**+**+*)*)+++,,+()(**))*((('**)..-/0./0.12001/01/00/111332342664786887676676676233121121//.-.-,,,)**&('&'&$%%#$$&'&'('%&%$%$#$#$%$&'&()(-.-23101/--,)('+(&)&$+(%0-*.*'$!#" +,+)+))*)+,*-/.*,+'('&''&''&''&''())(*))+*+,,*++)+*)+*)++)++*+**++*+++-,-/..//./.,-,,--.//.0/-/.+,+)*)++*++*)*)(*))*)(*))*)*,+)++(*)())())()(&'&&'&&''#%%"##   "#"##""#"   !    !  !"#!##"##" %%$%%$##"""!"#"####$"""!$%$$%$%&$'('&&%&'&''&&'&&&&&'&()(()(()()*)'(&&%#$!   '('&'&''&&'%&&%%%$$%$$$#$%$#$#%&%%%% !  !! ""!""!""!###%&%&''&&%%%$$%$$$#$$#%&%###"#"#$#"#""""""!!! ##"##"!" !  """#$#"#"!!!   "##$%$%&&&&&(((())%&&#$$%&& !! ##""#"   *+*,..-..())'(('((&'')))()*'''%&%&&&&''%%% ###%&&%%%$$$$$$$%$###%&%(**#%%&'''((#$$"###$$$%%$%% !""     !!! ! ())&((30->92;604/)'$!  +*)*)(..-/0/010011*+*))(&&%))(++)++)--,00.,,+121222---,+*%" &$"%" '$"'$"!#!654/-,('&*)()(&-,+/.,.,,-+*1.,752:9798620..-+/-,*)(873ED>GE@IGBLJENKGQNJQNJNJFMIELHEJEBIEAIEALHDQMJTPMRNKMIDKFBLHDPLHLIEKHCOKFVRMZVQ\XT\YU[WTVRORNJWSO[WS[WSYUQZVSZURVQLUPL[VR`[Wb]Yc^Zc^Ze`\gb^fa^c_[`[V]WQ_YSb]Xb]Y`[W_ZU`[Ve`[hc_hc`e`]d_[d_[c^Z`[W_ZUa\Xd_[c^Zc^Ze_[gb^e_[]WS\VQF?:0"8,$@3*E8-I;0L>3O@5PB6RC7TD8TE9UF9VG:WG:WG;XG:XH:XH;YI;ZI]L?^L?_M@`M@aNAbOAcPBdPBeQCfSEhTEhSDhSCiTEjUFkVFkVFkVFkVFlVFlWFlWGlVFlVGkVGjUEjTDkVFkVFkVFjVFjUEiTDhSDgSDfSDeQCcPBaO@`M?^M?]L?\K>[J>ZI=YJ=YI=XHC:>D:>D9>D;@F:?E:>C:>C7;?59=7;@8C<@FBH@EL@EL>CI:>D;?E848=58=26:14915936;36;36:36:36:47;59=47;14725836937:59=59=59=37;25914725826:48<69>58=37;37;8=B8BI:>DDHOilv{|LJ?QNGTOISMHVQL[VR[VS^ZW]YVYTQUPLSNJRMJPLHPKGOJGOJGMHEKFBOJFTPMTPLSOLQMISNJSOKRMISNJSOKTPLYUQ\XTYTP[VR\WR]WS]XT\WS[VRWRNZVR\XT]YU]YVZVS[WTXTPRNKNJFMLFKKCIIAIIAJIBGG?II@KKBNNENOEKKAJJ?GGKLCJKBFG>GH>IJ@GH>?@6;<19:1861:74;8596374175142/,*',,,+,,,--+,,687454,,+222,,,()),--())+--*++,--*+* ! #& ""# "##-/.2324553434545655655656767988:9686253576:;:;=;;<;;<;>?==?=<>=<=@?>@?ACBCEDACA>?>=><;<;9;:9;:687353454342231675:;97865767988:87:96873432322321111314648:8898564010+,,+-,*,,(**())'((*++*++())+-,+-,,.-,-,-/.-/.,.-,.--.--..,.--/.-/.-/./0//10/10021343121.//.0/132354354132355466576687254143033/01.00.00122576676676565255366466344144032143133132233022)*)''&'('(('*+***)**))*))*)()(**)()')*(+,**+**+*-.-/0//0/122232232121121331332554775786676565454121.0//0/+,+()(()('('$%%$%$"##!#"$%%%&%#$$"#""#""##$%$'('*+*./...-+,+('&+(&*'%*'%.+(-*'&# "!*+*'('&'&'(',-,,-,()('('&''&''%'&')()*))+*+-,+,++-,+-,+,,+--,---/..///00021021/10,.-,-,.0/.0/.//,--+,++,+**)'('%&%&''()(()()**(*)'('&'&&''&'&%&%%&%%&&#$$!"" ! !!  "#"$$###""#" !!!""!!!!   ! $$#$%$$%# %%$%&%"#"!! !!!!"!##"""!$$#$$###"%%$$%#$$$%%$#$###"$%$'(''('&'%&'&$%$##!"  ))(''&&&%$$#"#!#$#$$#$$#$$$##"$$#%%$!! ##"$$"$$#$$#$%$%&%%&%##""#"""! !"!##""#""#"###!"!!!!""" ! ! #$#$$#"#!!"  ! ! !"!!"! ================================================ FILE: optical-flow/imageLib/Convert.cpp ================================================ /////////////////////////////////////////////////////////////////////////// // // NAME // Convert.cpp -- convert between image types, copy images, select bands // // DESCRIPTION // See Convert.h for a full description // // SEE ALSO // Convert.h full description // // Copyright Richard Szeliski, 2001. // See Copyright.h for more details // /////////////////////////////////////////////////////////////////////////// #include "Image.h" #include "Error.h" #include "Convert.h" // // Type conversion utilities // /*template extern void ScaleAndOffsetLine(T1* src, T2* dst, int n, float scale, float offset, T2 minVal, T2 maxVal) { // This routine does NOT round values when converting from float to int const bool scaleOffset = (scale != 1.0f) || (offset != 0.0f); const bool clip = (minVal < maxVal); if (scaleOffset) for (int i = 0; i < n; i++) { float val = src[i] * scale + offset; if (clip) val = __min(__max(val, minVal), maxVal); dst[i] = (T2) val; } else if (clip) for (int i = 0; i < n; i++) { dst[i] = (T2) __min(__max(src[i], minVal), maxVal); } else if (typeid(T1) == typeid(T2)) memcpy(dst, src, n*sizeof(T2)); else for (int i = 0; i < n; i++) { dst[i] = (T2) src[i]; } }*/ template extern void ScaleAndOffset(CImageOf& src, CImageOf& dst, float scale, float offset) { // Convert between images of same shape but diffent types, // and optionally scale and/or offset the pixel values CShape sShape = src.Shape(); CShape dShape = dst.Shape(); // Make sure the shapes (ignoring bands) are compatible if (sShape != dShape) dst.ReAllocate(sShape); // Determine if clipping is required T2 minVal = dst.MinVal(); T2 maxVal = dst.MaxVal(); // if (minVal <= src.MinVal() && maxVal >= src.MaxVal()) // changed DS 4/2003 - take into consideration scale and offset // removed DS 1/2004 - doesn't work for negative scales - safer to always clip //if (src.MinVal() * scale + offset >= minVal && // src.MaxVal() * scale + offset <= maxVal) // minVal = maxVal = 0; // Process each row for (int y = 0; y < sShape.height; y++) { int n = sShape.width * sShape.nBands; ScaleAndOffsetLine(&src.Pixel(0, y, 0), &dst.Pixel(0, y, 0), n, scale, offset, minVal, maxVal); } } template extern CImageOf ConvertToRGBA(CImageOf src) { // Check if already RGBA CShape sShape = src.Shape(); if (sShape.nBands == 4 && src.alphaChannel == 3) return src; // Make sure the source is a gray image if (sShape.nBands != 1) throw CError("ConvertToRGBA: can only convert from 1-band (gray) image"); // Allocate the new image CShape dShape(sShape.width, sShape.height, 4); CImageOf dst(dShape); // Process each row int aC = dst.alphaChannel; for (int y = 0; y < sShape.height; y++) { T* srcP = &src.Pixel(0, y, 0); T* dstP = &dst.Pixel(0, y, 0); for (int x = 0; x < sShape.width; x++, srcP++) for (int b = 0; b < dShape.nBands; b++, dstP++) *dstP = (b == aC) ? 255 : *srcP; } return dst; } template extern void BandSelect(CImageOf& src, CImageOf& dst, int sBand, int dBand) { // Convert between images of same type but different # of bands CShape sShape = src.Shape(); CShape dShape = dst.Shape(); // Make sure the shapes (ignoring bands) are compatible if (! sShape.SameIgnoringNBands(dShape) || dShape.nBands == 0) { dShape.width = sShape.width; dShape.height = sShape.height; dShape.nBands = (dShape.nBands) ? dShape.nBands : 1; dst.ReAllocate(dShape); } // Check the bands are valid int sB = sShape.nBands; int dB = dShape.nBands; if (sBand < 0 || sBand >= sB) throw CError("BandSelect: source band %d is invalid", sBand); if (dBand < 0 || dBand >= dB) throw CError("BandSelect: destination band %d is invalid", dBand); // Process each row for (int y = 0; y < sShape.height; y++) { T* srcP = &src.Pixel(0, y, 0); T* dstP = &dst.Pixel(0, y, 0); for (int x = 0; x < sShape.width; x++, srcP += sB, dstP += dB) dstP[dBand] = srcP[sBand]; } } // // Force instantiation for the types we care about (uchar, int, float) // template void CopyPixelsInstantiate(CImageOf s1) { CByteImage b2; CIntImage i2; CFloatImage f2; CopyPixels(s1, b2); CopyPixels(s1, i2); CopyPixels(s1, f2); } template int InstantiateConvert(CImageOf src) { CopyPixelsInstantiate(src); CImageOf r1 = ConvertToRGBA(src); CImageOf r2 = ConvertToGray(src); BandSelect(r1, r2, 0, 0); return (int)r1.Pixel(0, 0, 0); } void InstantiateAllConverts(void) { InstantiateConvert(CByteImage()); InstantiateConvert(CIntImage()); InstantiateConvert(CFloatImage()); } ================================================ FILE: optical-flow/imageLib/Convert.h ================================================ /////////////////////////////////////////////////////////////////////////// // // NAME // Convert.h -- convert between image types, copy images, select bands // // DESCRIPTION // This file defines a number of conversion/copying utilities: // // void ScaleAndOffset(CImageOf& src, CImageOf& dst, // float scale, float offset); // -- scale and offset one image into another (optionally convert type) // // void CopyPixels(CImageOf& src, CImageOf& dst); // -- convert pixel types or just copy pixels from src to dst // // CImageOf ConvertToRGBA(CImageOf src); // -- convert from gray (1-band) image to RGBA (alpha == 255) // // CImageOf ConvertToGray(CImageOf src); // -- convert from RGBA (4-band) image to gray, using Y formula, // Y = 0.212671 * R + 0.715160 * G + 0.072169 * B // // void BandSelect(CImageOf& src, CImageOf& dst, int sBand, int dBand); // -- copy the sBand from src into the dBand in dst // // The ScaleAndOffset and CopyPixels routines will reallocate dst if it // doesn't conform in shape to src. So will BandSelect, except that the // number of bands in src and dst is allowed to differ (if dst is // unitialized, it will be set to a 1-band image). // // PARAMETERS // src source image // dst destination image // scale floating point scale value (1.0 = no change) // offset floating point offset value (0.0 = no change) // sBand source band (0...) // dBand destination band (0...) // // SEE ALSO // Convert.cpp implementation // Image.h image class definition // // Copyright Richard Szeliski, 2001. // See Copyright.h for more details // /////////////////////////////////////////////////////////////////////////// template void ScaleAndOffsetLine(T1* src, T2* dst, int n, float scale, float offset, T2 minVal, T2 maxVal) { // This routine does NOT round values when converting from float to int const bool scaleOffset = (scale != 1.0f) || (offset != 0.0f); const bool clip = (minVal < maxVal); if (scaleOffset) for (int i = 0; i < n; i++) { float val = src[i] * scale + offset; if (clip) val = __min(__max(val, minVal), maxVal); dst[i] = (T2) val; } else if (clip) for (int i = 0; i < n; i++) { dst[i] = (T2) __min(__max(src[i], minVal), maxVal); } else if (typeid(T1) == typeid(T2)) memcpy(dst, src, n*sizeof(T2)); else for (int i = 0; i < n; i++) { dst[i] = (T2) src[i]; } } template void ScaleAndOffset(CImageOf& src, CImageOf& dst, float scale, float offset); template void CopyPixels(CImageOf& src, CImageOf& dst) { ScaleAndOffset(src, dst, 1.0f, 0.0f); } template CImageOf ConvertToRGBA(CImageOf src); template static CImageOf ConvertToGray(CImageOf src) { // Check if already gray CShape sShape = src.Shape(); if (sShape.nBands == 1) return src; // Make sure the source is a color image if (sShape.nBands != 4 || src.alphaChannel != 3) throw CError("ConvertToGray: can only convert from 4-band (RGBA) image"); // Allocate the new image CShape dShape(sShape.width, sShape.height, 1); CImageOf dst(dShape); // Process each row T minVal = dst.MinVal(); T maxVal = dst.MaxVal(); for (int y = 0; y < sShape.height; y++) { T* srcP = &src.Pixel(0, y, 0); T* dstP = &dst.Pixel(0, y, 0); for (int x = 0; x < sShape.width; x++, srcP += 4, dstP++) { RGBA& p = *(RGBA *) srcP; // OLD FORMULA: float Y = (float)(0.212671 * p.R + 0.715160 * p.G + 0.072169 * p.B); // Changed to commonly used formula 6/4/07 DS float Y = (float)(0.299 * p.R + 0.587 * p.G + 0.114 * p.B); *dstP = (T) __min(maxVal, __max(minVal, Y)); } } return dst; } template void BandSelect(CImageOf& src, CImageOf& dst, int sBand, int dBand); ================================================ FILE: optical-flow/imageLib/Convolve.cpp ================================================ /////////////////////////////////////////////////////////////////////////// // // NAME // Convolve.cpp -- separable and non-separable linear convolution // // DESIGN NOTES // An intermediate row buffer is allocated to fill in the border pixels // required so that all convolutions are well defined. The row buffer // is floating point, so that all intermediate results can be computed // with minimal loss in precision. This also avoids excessive type // conversion during convolution, since the kernels are floats anyway. // // If fixpoint variants are desired for efficiency (e.g., using // multimedia extensions), then this would have to be modified. // // TODO: this current version is not very efficient. For example, // the separable code uses an intermediate image, instead of just a // row buffer. Also, downsampling convolution could be more efficient. // // SEE ALSO // Convolve.h longer description of these routines // // Copyright Richard Szeliski, 2001. // See Copyright.h for more details // /////////////////////////////////////////////////////////////////////////// #include "Image.h" #include "Error.h" #include "Convert.h" #include "Convolve.h" static int TrimIndex(int k, EBorderMode e, int n) { // Compute the index value 0 <= k < n (return -1 for Zero mode) switch (e) { case eBorderReplicate: // replicate border values return __max(0, __min(n-1, k)); case eBorderZero: // zero padding return -1; case eBorderReflect: // reflect border pixels while (k < 0 || k >= n) { k = (k < 0) ? -k : 2*n-1-k; } return k; case eBorderCyclic: // wrap pixel values return (k % n + n) % n; } throw CError("Convolve[Separable]: %d is not a valid borderMode", int(e)); } template static void FillRowBuffer(float buf[], CImageOf& src, CFloatImage& kernel, int k, int n) { // Compute the real row address CShape sShape = src.Shape(); int nB = sShape.nBands; int k0 = TrimIndex(k + kernel.origin[1], src.borderMode, sShape.height); if (k0 < 0) { memset(buf, 0, n * sizeof(float)); return; } // Fill the row T* srcP = &src.Pixel(0, k0, 0); int m = n / nB; for (int l = 0; l < m; l++, buf += nB) { int l0 = TrimIndex(l + kernel.origin[0], src.borderMode, sShape.width); if (l0 < 0) memset(buf, 0, nB * sizeof(T)); else for (int b = 0; b < nB; b++) buf[b] = (float)srcP[l0*nB + b]; } } static void ConvolveRow2D(CFloatImage& buffer, CFloatImage& kernel, float dst[], int n) { CShape kShape = kernel.Shape(); int kX = kShape.width; int kY = kShape.height; CShape bShape = buffer.Shape(); int nB = bShape.nBands; for (int i = 0; i < n; i++) { for (int b = 0; b < nB; b++) { float sum = 0.0f; for (int k = 0; k < kY; k++) { float* kPtr = &kernel.Pixel(0, k, 0); float* bPtr = &buffer.Pixel(i, k, b); for (int l = 0; l < kX; l++, bPtr += nB) sum += kPtr[l] * bPtr[0]; } *dst++ = sum; } } } template void Convolve(CImageOf src, CImageOf& dst, CFloatImage kernel, float scale, float offset) { // Determine the shape of the kernel and row buffer CShape kShape = kernel.Shape(); CShape sShape = src.Shape(); CShape bShape(sShape.width + kShape.width, kShape.height, sShape.nBands); int bWidth = bShape.width * bShape.nBands; // Allocate the result, if necessary, and the row buffer dst.ReAllocate(sShape, false); CFloatImage buffer(bShape); if (sShape.width * sShape.height * sShape.nBands == 0) return; CFloatImage output(CShape(sShape.width, 1, sShape.nBands)); // Fill up the row buffer initially for (int k = 0; k < kShape.height; k++) FillRowBuffer(&buffer.Pixel(0, k, 0), src, kernel, k, bWidth); // Determine if clipping is required // (we assume up-conversion to float never requires clipping, i.e., // floats have the highest dynamic range) T minVal = dst.MinVal(); T maxVal = dst.MaxVal(); if (minVal <= buffer.MinVal() && maxVal >= buffer.MaxVal()) minVal = maxVal = 0; // Process each row for (int y = 0; y < sShape.height; y++) { // Do the convolution ConvolveRow2D(buffer, kernel, &output.Pixel(0, 0, 0), sShape.width); // Scale, offset, and type convert ScaleAndOffsetLine(&output.Pixel(0, 0, 0), &dst.Pixel(0, y, 0), sShape.width * sShape.nBands, scale, offset, minVal, maxVal); // Shift up the row buffer and fill the last line if (y < sShape.height-1) { int k; for (k = 0; k < kShape.height-1; k++) memcpy(&buffer.Pixel(0, k, 0), &buffer.Pixel(0, k+1, 0), bWidth * sizeof(float)); FillRowBuffer(&buffer.Pixel(0, k, 0), src, kernel, y+k+1, bWidth); } } } template void ConvolveSeparable(CImageOf src, CImageOf& dst, CFloatImage x_kernel, CFloatImage y_kernel, float scale, float offset, int decimate, int interpolate) { // Allocate the result, if necessary CShape dShape = src.Shape(); if (decimate > 1) { dShape.width = (dShape.width + decimate-1) / decimate; dShape.height = (dShape.height + decimate-1) / decimate; } dst.ReAllocate(dShape, false); // Allocate the intermediate images CImageOf tmpImg1(src.Shape()); CImageOf tmpImg2(src.Shape()); // Create a proper vertical convolution kernel CFloatImage v_kernel(1, y_kernel.Shape().width, 1); for (int k = 0; k < y_kernel.Shape().width; k++) v_kernel.Pixel(0, k, 0) = y_kernel.Pixel(k, 0, 0); v_kernel.origin[1] = y_kernel.origin[0]; // Perform the two convolutions Convolve(src, tmpImg1, x_kernel, 1.0f, 0.0f); Convolve(tmpImg1, tmpImg2, v_kernel, scale, offset); // Downsample or copy for (int y = 0; y < dShape.height; y++) { T* sPtr = &tmpImg2.Pixel(0, y * decimate, 0); T* dPtr = &dst.Pixel(0, y, 0); int nB = dShape.nBands; for (int x = 0; x < dShape.width; x++) { for (int b = 0; b < nB; b++) dPtr[b] = sPtr[b]; sPtr += decimate * nB; dPtr += nB; } } interpolate++; // to get rid of "unused parameter" warning } template void InstantiateConvolutionOf(CImageOf img) { CFloatImage kernel; Convolve(img, img, kernel, 1.0, 0.0); ConvolveSeparable(img, img, kernel, kernel, 1.0, 0.0, 1, 1); } void InstantiateConvolutions() { InstantiateConvolutionOf(CByteImage()); InstantiateConvolutionOf(CIntImage()); InstantiateConvolutionOf(CFloatImage()); } // // Default kernels // CFloatImage ConvolveKernel_121; CFloatImage ConvolveKernel_14641; CFloatImage ConvolveKernel_8TapLowPass; struct KernelInit { KernelInit(); }; KernelInit::KernelInit() { #if 0 // not currently used: static float k_11[2] = {0.5f, 0.5f}; #endif static float k_121[3] = {0.25f, 0.5f, 0.25f}; static float k_14641[5] = {0.0625f, 0.25f, 0.375f, 0.25f, 0.0625f}; #if 0 // not currently used: static float k_8ptFP[8] = {-0.044734f, -0.059009f, 0.156544f, 0.449199f, 0.449199f, 0.156544f, -0.059009f, -0.044734f}; #endif // The following are derived as fix-point /256 fractions of the above: // -12, -15, 40, 115 static float k_8ptI [8] = {-0.04687500f, -0.05859375f, 0.15625000f, 0.44921875f, 0.44921875f, 0.15625000f, -0.05859375f, -0.04687500f}; ConvolveKernel_121.ReAllocate(CShape(3, 1, 1), k_121, false, 3); ConvolveKernel_121.origin[0] = -1; ConvolveKernel_14641.ReAllocate(CShape(5, 1, 1), k_14641, false, 5); ConvolveKernel_14641.origin[0] = -2; ConvolveKernel_8TapLowPass.ReAllocate(CShape(8, 1, 1), k_8ptI, false, 8); ConvolveKernel_8TapLowPass.origin[0] = -4; } KernelInit ConvKernelInitializer; ================================================ FILE: optical-flow/imageLib/Convolve.h ================================================ /////////////////////////////////////////////////////////////////////////// // // NAME // Convolve.h -- separable and non-separable linear convolution // // SPECIFICATION // void Convolve(CImageOf src, CImageOf& dst, // CFloatImage kernel, // int decimate, int interpolate); // // void ConvolveSeparable(CImageOf src, CImageOf& dst, // CFloatImage xKernel, CFloatImage yKernel, // int decimate, int interpolate); // // PARAMETERS // src source image // dst destination image // kernel 2-D convolution kernel // xKernel, yKernel 1-D convolution kernels (1-row images) // decimate decimation factor (1 = none, 2 = half, ...) // interpolate interpolation factor (1 = none, 2 = double, ...) // // DESCRIPTION // Perform a 2D or separable 1D convolution. The convolution kernels // are supplied as 2D floating point images (1 row images for the separable // kernels). The position of the "0" pixel in the kernel is determined // by the kernel.origin[] parameters, which specify the offset (coordinate, // usually negative) of the first (top-left) pixel in the kernel. // // Because a temporary row buffer is used for row padding and separable // convolution intermediaries, the src and dst images can be the same // (in place convolution), so long as decimation = interpolation = 1. // // If dst is not of the right shape, it is reallocated to the right shape. // // The padding type of src (src.borderMode) determines how pixels are // filled for convolutions. // // SEE ALSO // Convolve.cpp implementation // Image.h image class definition // // Copyright Richard Szeliski, 2001. // See Copyright.h for more details // /////////////////////////////////////////////////////////////////////////// template void Convolve(CImageOf src, CImageOf& dst, CFloatImage kernel, float scale, float offset); template void ConvolveSeparable(CImageOf src, CImageOf& dst, CFloatImage x_kernel, CFloatImage y_kernel, float scale, float offset, int decimate, int interpolate); extern CFloatImage ConvolveKernel_121; extern CFloatImage ConvolveKernel_14641; extern CFloatImage ConvolveKernel_8TapLowPass; ================================================ FILE: optical-flow/imageLib/Copyright.h ================================================ /* StereoMatcher 1.0 This Microsoft Research Source Code License Agreement ("MSR-SCLA") is a legal agreement between you and Microsoft Corporation (``Microsoft'' or ``we'') for the above pre-release Software. By installing, copying, compiling or otherwise using the Software found at http://research.microsoft.com/downloads/, you agree to be bound by the terms of this MSR-SCLA. If you do not agree, do not install, copy, compile or use the Software. The Software is protected by copyright and other intellectual property laws and is licensed, not sold. You may do anything you want with the Software for non-commercial research or teaching purposes, free of charge. In return, we simply ask that you agree to the following: * To leave in place all copyright notices and licensing information that you might find in the Software. * That you will not use the Software in a live operating environment where it may be relied upon to perform in the same manner as a commercially released product, or with data that has not been sufficiently backed up. * To make freely available to others the source code of any modifications or additions you make to the Software source code, and any related documentation, solely and exclusively under the same terms as this License. * That Microsoft is granted back, without limitations, the rights to reproduce, install, use, modify, distribute and transfer your source modifications or additions in source and/or object code formats. * That any feedback about the Software provided by you to us is voluntarily given, and Microsoft shall be free to use the feedback as it sees fit without obligation or restriction of any kind, even if the feedback is designated by you as confidential. * NO WARRANTIES WHATSOEVER: That the Software comes ``AS IS'', with all faults and with no warranties, conditions or representations. None. Not even the implied warranty of merchantability, warranty of fitness for a particular purpose, or any warranty against interference with your enjoyment of the Software or against infringement. The entire risk as to satisfactory quality, performance, accuracy, and effort is with you. There is no warranty that this Software will fulfill any of your particular purposes or needs. * That we have no duty of reasonable care or lack of negligence and that we are not obligated to (and will not) provide technical support or updates for the Software. * That we will not be liable for any damages, including those known as direct, indirect, special, consequential, or incidental damages related to the Software or this MSR-SCLA, nor any damages for negligence, to the maximum extent the law permits. * That if you sue or threaten to sue anyone over patents that you think may apply to the Software or if you breach this MSR-SCLA in any way, your license to the Software ends automatically. * That this MSR-SCLA shall be construed and controlled by the laws of the State of Washington, USA, without regard to conflicts of law. Copyright (c) Microsoft Corporation. All rights reserved */ ================================================ FILE: optical-flow/imageLib/Error.h ================================================ /////////////////////////////////////////////////////////////////////////// // // NAME // Error.h -- a simple error handling class // // DESCRIPTION // The CError class is used to throw error messages back to the calling program. // // Copyright Richard Szeliski, 2001. // See Copyright.h for more details // /////////////////////////////////////////////////////////////////////////// using namespace std; #include #include #include struct CError : public exception { CError(const char* msg) { strcpy(message, msg); } CError(const char* fmt, int d) { sprintf(message, fmt, d); } CError(const char* fmt, float f) { sprintf(message, fmt, f); } CError(const char* fmt, const char *s) { sprintf(message, fmt, s); } CError(const char* fmt, const char *s, int d) { sprintf(message, fmt, s, d); } char message[1024]; // longest allowable message }; ================================================ FILE: optical-flow/imageLib/Image.cpp ================================================ /////////////////////////////////////////////////////////////////////////// // // NAME // Image.cpp -- a simple reference-counted image structure // // SEE ALSO // Image.h definition and explanation of these classes // // Copyright Richard Szeliski, 2001. // See Copyright.h for more details // /////////////////////////////////////////////////////////////////////////// #include "Image.h" #include "Error.h" // // struct CShape: shape of image (width x height x nbands) // bool CShape::operator==(const CShape& ref) { // Are two shapes the same? return (width == ref.width && height == ref.height && nBands == ref.nBands); } bool CShape::SameIgnoringNBands(const CShape& ref) { // Are two shapes the same ignoring the number of bands? return (width == ref.width && height == ref.height); } bool CShape::operator!=(const CShape& ref) { // Are two shapes not the same? return ! ((*this) == ref); } // // class CImage : generic (weakly typed) image // void CImage::SetDefaults() { // Set internal state to default values m_pTI = 0; // pointer to type_info class m_bandSize = 0; // size of each band in bytes m_pixSize = 0; // stride between pixels in bytes m_rowSize = 0; // stride between rows in bytes m_memStart = 0; // start of addressable memory alphaChannel = 3; // which channel contains alpha (for compositing) // Set default attribute values alphaChannel = 3; // which channel contains alpha (for compositing) origin[0] = 0; // x and y coordinate origin (for some operations) origin[1] = 0; // x and y coordinate origin (for some operations) borderMode = eBorderReplicate; // border behavior for neighborhood operations... } CImage::CImage() { // Default constructor SetDefaults(); } CImage::CImage(CShape s, const type_info& ti, int cS) { SetDefaults(); ReAllocate(s, ti, cS, 0, true, 0); } void CImage::ReAllocate(CShape s, const type_info& ti, int bandSize, bool evenIfSameShape) { if (! evenIfSameShape && s == m_shape && ti == *m_pTI && bandSize == m_bandSize) return; ReAllocate(s, ti, bandSize, 0, true, 0); } void CImage::ReAllocate(CShape s, const type_info& ti, int bandSize, void *memory, bool deleteWhenDone, int rowSize) { // Set up the type_id, shape, and size info m_shape = s; // image shape (dimensions) m_pTI = &ti; // pointer to type_info class m_bandSize = bandSize; // size of each band in bytes m_pixSize = m_bandSize * s.nBands; // stride between pixels in bytes // Do the real allocation work m_rowSize = (rowSize) ? rowSize : // stride between rows in bytes (m_pixSize * s.width + 7) & -8; // round up to 8 (quadwords) int nBytes = m_rowSize * s.height; if (memory == 0 && nBytes > 0) // allocate if necessary { memory = new double[(nBytes + 7)/ 8]; if (memory == 0) throw CError("CImage::Reallocate: could not allocate %d bytes", nBytes); } m_memStart = (char *) memory; // start of addressable memory m_memory.ReAllocate(nBytes, memory, deleteWhenDone); } void CImage::DeAllocate() { // Release the memory & set to default values ReAllocate(CShape(), *(const type_info *) 0, 0, 0, false, 0); SetDefaults(); } void CImage::SetSubImage(int x, int y, int width, int height) { // Adjust the start of memory pointer m_memStart = (char *) PixelAddress(x, y, 0); // Compute area of intersection and adjust the shape and origin int x1 = __min(m_shape.width, x+width); // end column int y1 = __min(m_shape.height, y+height); // end row x = __max(0, __min(x, m_shape.width)); // clip to original shape y = __max(0, __min(y, m_shape.height)); // clip to original shape m_shape.width = x1 - x; // actual width m_shape.height = y1 - y; // actual height } void CImage::SetPixels(void *val_ptr) { // Fill the image with a value uchar *vc = (uchar *) val_ptr; // Test if all the bytes are the same bool all_same = true; for (int b = 0; b < m_bandSize; b++) all_same = all_same && (vc[b] == vc[0]); // Iterate over the rows int nC = m_shape.width * m_shape.nBands; for (int y = 0; y < m_shape.height; y++) { uchar *rp = (uchar *) PixelAddress(0, y, 0); if (all_same) memset(rp, vc[0], nC * m_bandSize); else if (m_bandSize == sizeof(int)) { int vi = *(int *) val_ptr; int *ip = (int *) rp; for (int c = 0; c < nC; c++) ip[c] = vi; } else { for (int c = 0; c < nC; c++, rp += m_bandSize) memcpy(rp, vc, m_bandSize); } } } // // class CImageOf: strongly typed image // template <> uchar CImageOf::MinVal(void) { return 0; } template <> uchar CImageOf::MaxVal(void) { return 255; } template <> int CImageOf::MinVal(void) { return 0x80000000; } template <> int CImageOf::MaxVal(void) { return 0x7fffffff; } template <> float CImageOf::MinVal(void) { return -FLT_MAX; } template <> float CImageOf::MaxVal(void) { return FLT_MAX; } ================================================ FILE: optical-flow/imageLib/Image.h ================================================ /////////////////////////////////////////////////////////////////////////// // // NAME // Image.h -- a simple reference-counted image structure // // DESCRIPTION // The CImage class is used to create and access weakly typed // two-dimensional images. // // The templated CImageOf classes are used to create strongly typed images. // The currently supported pixel types are: // unsigned char, int, and float. // // The images can have an arbitrary width, height, and also an arbitrary // number of bands (channels) per pixel. For example, traditional RGBA // images can be represented using a 4-channel unsigned_8 image. // // Images are normally allocated on the stack (NOT on the heap, i.e., // "new Image" should not be used). They can be freely returned from // functions and put into other data structures. Assignment and copy // construction share memory (to copy pixel values from one image to // another one, use CopyPixels()). // // SEE ALSO // Image.cpp implementation // RefCntMem.h reference-counted memory object used by CImage // // Copyright Richard Szeliski, 2001. // See Copyright.h for more details // /////////////////////////////////////////////////////////////////////////// namespace std {} using namespace std; #include #include #include #include "RefCntMem.h" #ifdef WIN32 #include #else #include #define __max(a,b) (((a) > (b)) ? (a) : (b)) #define __min(a,b) (((a) < (b)) ? (a) : (b)) #endif #include #ifndef FLT_MAX #define FLT_MAX 3.402823466e+38F /* max value */ #define FLT_MIN 1.175494351e-38F /* min positive value */ #endif typedef unsigned char uchar; // Shape of an image: width x height x nbands struct CShape { int width, height; // width and height in pixels int nBands; // number of bands/channels // Constructors and helper functions CShape(void) : width(0), height(0), nBands(0) {} CShape(int w, int h, int nb) : width(w), height(h), nBands(nb) {} bool InBounds(int x, int y); // is given pixel address valid? bool InBounds(int x, int y, int band); // is given pixel address valid? bool operator==(const CShape& ref); // are two shapes the same? bool SameIgnoringNBands(const CShape& ref); // " ignoring the number of bands? bool operator!=(const CShape& ref); // are two shapes not the same? }; inline bool CShape::InBounds(int x, int y) { // Is given pixel address valid? return (0 <= x && x < width && 0 <= y && y < height); } inline bool CShape::InBounds(int x, int y, int b) { // Is given pixel address valid? return (0 <= x && x < width && 0 <= y && y < height && 0 <= b && b < nBands); } // Padding (border) mode for neighborhood operations like convolution enum EBorderMode { eBorderZero = 0, // zero padding eBorderReplicate = 1, // replicate border values eBorderReflect = 2, // reflect border pixels eBorderCyclic = 3 // wrap pixel values }; // Image attributes struct CImageAttributes { int alphaChannel; // which channel contains alpha (for compositing) int origin[2]; // x and y coordinate origin (for some operations) EBorderMode borderMode; // border behavior for neighborhood operations... // char colorSpace[4]; // RGBA, YUVA, etc.: not currently used }; // Generic (weakly typed) image class CImage : public CImageAttributes { public: CImage(void); // default constructor CImage(CShape s, const type_info& ti, int bandSize); // uses system-supplied copy constructor, assignment operator, and destructor void ReAllocate(CShape s, const type_info& ti, int bandSize, void *memory, bool deleteWhenDone, int rowSize); void ReAllocate(CShape s, const type_info& ti, int bandSize, bool evenIfSameShape = false); void DeAllocate(void); // release the memory & set to default values CShape Shape(void) { return m_shape; } const type_info& PixType(void) { return *m_pTI; } int BandSize(void) { return m_bandSize; } void* PixelAddress(int x, int y, int band); void SetSubImage(int xO, int yO, int width, int height); // sub-image sharing memory protected: void SetPixels(void *val_ptr); // Fill the image with a value private: void SetDefaults(void); // set internal state to default values CShape m_shape; // image shape (dimensions) const type_info* m_pTI; // pointer to type_info class int m_bandSize; // size of each band in bytes int m_pixSize; // stride between pixels in bytes int m_rowSize; // stride between rows in bytes char* m_memStart; // start of addressable memory CRefCntMem m_memory; // reference counted memory public: int alphaChannel; // which channel contains alpha (for compositing) }; inline void* CImage::PixelAddress(int x, int y, int band) { // This could also go into the implementation file (CImage.cpp): return (void *) &m_memStart[y * m_rowSize + x * m_pixSize + band * m_bandSize]; } // Strongly typed image template class CImageOf : public CImage { public: CImageOf(void); CImageOf(CShape s); CImageOf(int width, int height, int nBands); // uses system-supplied copy constructor, assignment operator, and destructor void ReAllocate(CShape s, bool evenIfSameShape = false); void ReAllocate(CShape s, T *memory, bool deleteWhenDone, int rowSize); T& Pixel(int x, int y, int band); CImageOf SubImage(int x, int y, int width, int height); // sub-image sharing memory void FillPixels(T val); // fill the image with a constant value void ClearPixels(void); // fill the image with a 0 value T MinVal(void); // minimum allowable value (for clipping) T MaxVal(void); // maximum allowable value (for clipping) }; // These are defined inline so user-defined image types can be supported: template inline CImageOf::CImageOf(void) : CImage(CShape(), typeid(T), sizeof(T)) {} template inline CImageOf::CImageOf(CShape s) : CImage(s, typeid(T), sizeof(T)) {} template inline CImageOf::CImageOf(int width, int height, int nBands) : CImage(CShape(width, height, nBands), typeid(T), sizeof(T)) {} template inline void CImageOf::ReAllocate(CShape s, bool evenIfSameShape) { CImage::ReAllocate(s, typeid(T), sizeof(T), evenIfSameShape); } template inline void CImageOf::ReAllocate(CShape s, T *memory, bool deleteWhenDone, int rowSize) { CImage::ReAllocate(s, typeid(T), sizeof(T), memory, deleteWhenDone, rowSize); } template inline T& CImageOf::Pixel(int x, int y, int band) { return *(T *) PixelAddress(x, y, band); } template inline CImageOf CImageOf::SubImage(int x, int y, int width, int height) { // sub-image sharing memory CImageOf retval = *this; retval.SetSubImage(x, y, width, height); return retval; } template inline void CImageOf::FillPixels(T val) { // fill the image with a constant value SetPixels(&val); } template inline void CImageOf::ClearPixels(void) { // fill the image with a 0 value T val = 0; FillPixels(val); } // Commonly used types (supported in type conversion routines): typedef CImageOf CByteImage; typedef CImageOf CIntImage; typedef CImageOf CFloatImage; // Color pixel support template struct RGBA { PixType B, G, R, A; // A channel is highest one }; ================================================ FILE: optical-flow/imageLib/ImageIO.cpp ================================================ /////////////////////////////////////////////////////////////////////////// // // NAME // ImageIO.cpp -- image file input/output // // DESCRIPTION // Read/write image files, potentially using an interface to an // external package. // // File formats currently supported: // - a subset of Targa // - PGM (1 band) and PPM (4 band) // - PMF (multiband float) - homegrown, non-standard // (PFM already taken by postscript font maps) // - PNG (requires ImageIOpng.cpp, and pnglib and zlib packages) // // SEE ALSO // ImageIO.h longer description // ImageIOpng.cpp png reader/writer // // Copyright Richard Szeliski and Daniel Scharstein, 2001. // See Copyright.h for more details // /////////////////////////////////////////////////////////////////////////// #include "Image.h" #include "Error.h" #include "ImageIO.h" #include // Comment out next line if you don't have the PNG library //#define HAVE_PNG_LIB #ifdef HAVE_PNG_LIB // implemented in ImageIOpng.cpp void ReadFilePNG(CByteImage& img, const char* filename); void WriteFilePNG(CByteImage img, const char* filename); #endif // Comment out next line if not using jpeg library //#define HAVE_JPEG_READER #ifdef HAVE_JPEG_READER // implemented in ReadJpg.cpp void ReadFileJPG(CByteImage& img, const char* filename); #endif // // Truevision Targa (TGA): support 24 bit RGB and 32-bit RGBA files // typedef unsigned char uchar; struct CTargaHead { uchar idLength; // number of chars in identification field uchar colorMapType; // color map type uchar imageType; // image type code uchar cMapOrigin[2];// color map origin uchar cMapLength[2];// color map length uchar cMapBits; // color map entry size short x0; // x-origin of image short y0; // y-origin of image short width; // width of image short height; // height of image uchar pixelSize; // image pixel size uchar descriptor; // image descriptor byte }; // Image data type codes const int TargaRawColormap = 1; const int TargaRawRGB = 2; const int TargaRawBW = 3; const int TargaRunColormap = 9; const int TargaRunRGB = 10; const int TargaRunBW = 11; // Descriptor fields const int TargaAttrBits = 15; const int TargaScreenOrigin = (1<<5); const int TargaCMapSize = 256; const int TargaCMapBands = 3; /* const int TargaInterleaveShift = 6; const int TargaNON_INTERLEAVE 0 const int TargaTWO_INTERLEAVE 1 const int TargaFOUR_INTERLEAVE 2 const int PERMUTE_BANDS 1 */ class CTargaRLC { // Helper class to decode run-length-coded image data public: CTargaRLC(bool RLC) : m_count(0), m_RLC(RLC) {} uchar* getBytes(int nBytes, FILE *stream); private: int m_count; // remaining count in current run bool m_RLC; // is stream run-length coded? bool m_isRun; // is current stream of pixels a run? uchar m_buffer[4]; // internal buffer }; inline uchar* CTargaRLC::getBytes(int nBytes, FILE *stream) { // Get one pixel, which consists of nBytes if (nBytes > 4) throw CError("ReadFileTGA: only support pixels up to 4 bytes long"); if (! m_RLC) { if ((int)fread(m_buffer, sizeof(uchar), nBytes, stream) != nBytes) throw CError("ReadFileTGA: file is too short"); } else { if (m_count == 0) { // Read in the next run count m_count = fgetc(stream); m_isRun = (m_count & 0x80) != 0; m_count = (m_count & 0x7f) + 1; if (m_isRun) // read the pixels for this run if ((int)fread(m_buffer, sizeof(uchar), nBytes, stream) != nBytes) throw CError("ReadFileTGA: file is too short"); } if (! m_isRun) { if ((int)fread(m_buffer, sizeof(uchar), nBytes, stream) != nBytes) throw CError("ReadFileTGA: file is too short"); } m_count -= 1; } return m_buffer; } void ReadFileTGA(CByteImage& img, const char* filename) { // Open the file and read the header FILE *stream = fopen(filename, "rb"); if (stream == 0) throw CError("ReadFileTGA: could not open %s", filename); CTargaHead h; if ((int)fread(&h, sizeof(CTargaHead), 1, stream) != 1) throw CError("ReadFileTGA(%s): file is too short", filename); // Throw away the image descriptor if (h.idLength > 0) { char* tmp = new char[h.idLength]; int nread = (int)fread(tmp, sizeof(uchar), h.idLength, stream); delete tmp; // throw away this data if (nread != h.idLength) throw CError("ReadFileTGA(%s): file is too short", filename); } //bool isRun = (h.imageType & 8) != 0; bool reverseRows = (h.descriptor & TargaScreenOrigin) != 0; int fileBytes = (h.pixelSize + 7) / 8; // Read the colormap uchar colormap[TargaCMapSize][TargaCMapBands]; int cMapSize = 0; bool grayRamp = false; if (h.colorMapType == 1) { cMapSize = (h.cMapLength[1] << 8) + h.cMapLength[0]; if (h.cMapBits != 24) { throw CError("ReadFileTGA(%s): only 24-bit colormap currently supported", filename); } int l = fileBytes * cMapSize; if (l > TargaCMapSize * TargaCMapBands) throw CError("ReadFileTGA(%s): colormap is too large", filename); if ((int)fread(colormap, sizeof(uchar), l, stream) != l) throw CError("ReadFileTGA(%s): could not read the colormap", filename); // Check if it's just a standard gray ramp int i; for (i = 0; i < cMapSize; i++) { for (int j = 0; j < TargaCMapBands; j++) if (colormap[i][j] != i) break; } grayRamp = (i == cMapSize); // didn't break out too soon } bool isGray = h.imageType == TargaRawBW || h.imageType == TargaRunBW || grayRamp && (h.imageType == TargaRawColormap || h.imageType == TargaRunColormap); bool isRaw = h.imageType == TargaRawBW || h.imageType == TargaRawRGB || h.imageType == TargaRawRGB && isGray; // Determine the image shape CShape sh(h.width, h.height, (isGray) ? 1 : 4); // Allocate the image if necessary img.ReAllocate(sh, false); // Construct a run-length code reader CTargaRLC rlc(! isRaw); // Read in the rows for (int y = 0; y < sh.height; y++) { int yr = reverseRows ? sh.height-1-y : y; uchar* ptr = (uchar *) img.PixelAddress(0, yr, 0); if (fileBytes == sh.nBands && isRaw) { // Special case for raw image, same as destination int n = sh.width*sh.nBands; if ((int)fread(ptr, sizeof(uchar), n, stream) != n) throw CError("ReadFileTGA(%s): file is too short", filename); } else { // Read one pixel at a time for (int x = 0; x < sh.width; x++, ptr += sh.nBands) { uchar* buf = rlc.getBytes(fileBytes, stream); if (fileBytes == 1 && sh.nBands == 1) { ptr[0] = buf[0]; } else if (fileBytes == 1 && sh.nBands == 4) { for (int i = 0; i < 3; i++) ptr[i] = (isGray) ? buf[0] : colormap[buf[0]][i]; ptr[3] = 255; // full alpha; } else if ((fileBytes == 3 || fileBytes == 4) && sh.nBands == 4) { int i; for (i = 0; i < fileBytes; i++) ptr[i] = buf[i]; if (i == 3) // missing alpha channel ptr[3] = 255; // full alpha; } else throw CError("ReadFileTGA(%s): unhandled pixel depth or # of bands", filename); } } } if (fclose(stream)) throw CError("ReadFileTGA(%s): error closing file", filename); } void WriteFileTGA(CImage img, const char* filename) { // Only 1, 3, or 4 bands supported CShape sh = img.Shape(); int nBands = sh.nBands; if (nBands != 1 && nBands != 3 && nBands != 4) throw CError("WriteFileTGA(%s): can only write 1, 3, or 4 bands", filename); // Only unsigned_8 supported directly #if 0 // broken for now if (img.PixType() != unsigned_8) { CImage u8img(sh, unsigned_8); TypeConvert(img, u8img); img = u8img; } #endif // Fill in the header structure CTargaHead h; memset(&h, 0, sizeof(h)); h.imageType = (nBands == 1) ? TargaRawBW : TargaRawRGB; // TODO: is TargaRawBW the right thing, or only binary? h.width = sh.width; h.height = sh.height; h.pixelSize = 8 * nBands; bool reverseRows = false; // TODO: when is this true? // Open the file and write the header FILE *stream = fopen(filename, "wb"); if (stream == 0) throw CError("WriteFileTGA: could not open %s", filename); if (fwrite(&h, sizeof(CTargaHead), 1, stream) != 1) throw CError("WriteFileTGA(%s): file is too short", filename); // Write out the rows for (int y = 0; y < sh.height; y++) { int yr = reverseRows ? sh.height-1-y : y; char* ptr = (char *) img.PixelAddress(0, yr, 0); int n = sh.width*sh.nBands; if ((int)fwrite(ptr, sizeof(uchar), n, stream) != n) throw CError("WriteFileTGA(%s): file is too short", filename); } if (fclose(stream)) throw CError("WriteFileTGA(%s): error closing file", filename); } // // Portable Graymaps: support PGM, PPM, and PMF images // void skip_comment(FILE *fp) { // skip comment lines in the headers of pnm files char c; while ((c=getc(fp)) == '#') while (getc(fp) != '\n'); ungetc(c, fp); } void skip_space(FILE *fp) { // skip white space in the headers or pnm files char c; do { c = getc(fp); } while (c == '\n' || c == ' ' || c == '\t' || c == '\r'); ungetc(c, fp); } void read_header(FILE *fp, const char *imtype, char c1, char c2, int *width, int *height, int *nbands, int thirdArg) { // read the header of a pnmfile and initialize width and height char c; if (getc(fp) != c1 || getc(fp) != c2) throw CError("ReadFilePGM: wrong magic code for %s file", imtype); skip_space(fp); skip_comment(fp); skip_space(fp); fscanf(fp, "%d", width); skip_space(fp); fscanf(fp, "%d", height); if (thirdArg) { skip_space(fp); fscanf(fp, "%d", nbands); } // skip SINGLE newline character after reading image height (or third arg) c = getc(fp); if (c == '\r') // in some files before newline c = getc(fp); if (c != '\n') { if (c == ' ' || c == '\t' || c == '\r') throw CError("newline expected in file after image height"); else throw CError("whitespace expected in file after image height"); } } void ReadFilePGM(CByteImage& img, const char* filename) { // Open the file and read the header FILE *stream = fopen(filename, "rb"); if (stream == 0) { throw CError("ReadFilePGM: could not open %s", filename); } int width, height, nBands; const char *dot = strrchr(filename, '.'); int isGray = 0, isFloat = 0; if (strcmp(dot, ".pgm") == 0) { read_header(stream, "PGM", 'P', '5', &width, &height, &nBands, 1); isGray = 1; } else if (strcmp(dot, ".ppm") == 0) { read_header(stream, "PGM", 'P', '6', &width, &height, &nBands, 1); isGray = 0; } else if (strcmp(dot, ".pmf") == 0) { read_header(stream, "PMF", 'P', '9', &width, &height, &nBands, 1); isGray = 0; isFloat = 1; } // Determine the image shape CShape sh(width, height, (isGray) ? 1 : (isFloat) ? nBands : 4); // Allocate the image if necessary if (isFloat) ((CFloatImage *) &img)->ReAllocate(sh); else img.ReAllocate(sh); if (isGray || isFloat) { // read PGM or PMF // read the rows int n = isFloat ? width * nBands * sizeof(float) : sh.width; for (int y = 0; y rowBuf; rowBuf.resize(n); for (int y = 0; y rowBuf; rowBuf.resize(n); for (int y = 0; ym_refCnt -= 1; if (m_ptr->m_refCnt == 0) { if (m_ptr->m_deleteWhenDone) { if (m_ptr->m_delFn) m_ptr->m_delFn(m_ptr->m_memory); else delete (double *) m_ptr->m_memory; } delete m_ptr; } } } void CRefCntMem::IncrementCount() { // Increment the reference count if (m_ptr) { m_ptr->m_refCnt += 1; } } CRefCntMem::CRefCntMem(const CRefCntMem& ref) { // Copy constructor m_ptr = 0; (*this) = ref; // use assignment operator } CRefCntMem& CRefCntMem::operator=(const CRefCntMem& ref) { // Assignment DecrementCount(); // if m_ptr exists, no longer pointing to it m_ptr = ref.m_ptr; IncrementCount(); return *this; } void CRefCntMem::ReAllocate(int nBytes, void *memory, bool deleteWhenDone, void (*deleteFunction)(void *ptr)) { // Allocate/deallocate memory DecrementCount(); if (memory) { m_ptr = new CRefCntMemPtr; m_ptr->m_nBytes = nBytes; m_ptr->m_memory = memory; m_ptr->m_deleteWhenDone = deleteWhenDone; m_ptr->m_refCnt = 1; m_ptr->m_delFn = deleteFunction; } else m_ptr = 0; // don't bother storing pointer to null memory } int CRefCntMem::NBytes() { // Number of stored bytes return (m_ptr) ? m_ptr->m_nBytes : 0; } bool CRefCntMem::InBounds(int index) { // Check if index is in bounds return (m_ptr && 0 <= index && index < m_ptr->m_nBytes); } void* CRefCntMem::Memory() { // Pointer to allocated memory return (m_ptr) ? m_ptr->m_memory : 0; } ================================================ FILE: optical-flow/imageLib/RefCntMem.h ================================================ /////////////////////////////////////////////////////////////////////////// // // NAME // RefCntMem.h -- reference-counted heap memory // // DESCRIPTION // The CRefCntMem class is used to manage reference-counted // dynamically allocatable memory. This memory can be shared // across many instances of the class object, provided they // were created from each other through copy construction or assignment. // // Using the class in a large memory object class such as CImage allows // the including class to achieve a similar kind of memory sharing as // is found in garbage collected languages such as Java and C#. // // SEE ALSO // RefCntMem.cpp implementation // Image.h class that uses a CRefCntMem object // // Copyright Richard Szeliski, 2001. // See Copyright.h for more details // /////////////////////////////////////////////////////////////////////////// struct CRefCntMemPtr // shared component of reference counted memory { void *m_memory; // allocated memory int m_refCnt; // reference count int m_nBytes; // number of bytes bool m_deleteWhenDone; // delete memory when ref-count drops to 0 void (*m_delFn)(void *ptr); // optional delete function }; class CRefCntMem // reference-counted memory allocator { public: CRefCntMem(void); // default constructor CRefCntMem(const CRefCntMem& ref); // copy constructor ~CRefCntMem(void); // destructor CRefCntMem& operator=(const CRefCntMem& ref); // assignment void ReAllocate(int nBytes, void *memory, bool deleteWhenDone, void (*deleteFunction)(void *ptr) = 0); // allocate/deallocate memory int NBytes(void); // number of stored bytes bool InBounds(int i); // check if index is in bounds void* Memory(void); // pointer to allocated memory private: void DecrementCount(void); // decrement the reference count and delete if done void IncrementCount(void); // increment the reference count CRefCntMemPtr *m_ptr; // shared reference-counted memory pointer }; ================================================ FILE: optical-flow/imageLib/flowIO.cpp ================================================ // flow_io.cpp // // read and write our simple .flo flow file format // ".flo" file format used for optical flow evaluation // // Stores 2-band float image for horizontal (u) and vertical (v) flow components. // Floats are stored in little-endian order. // A flow value is considered "unknown" if either |u| or |v| is greater than 1e9. // // bytes contents // // 0-3 tag: "PIEH" in ASCII, which in little endian happens to be the float 202021.25 // (just a sanity check that floats are represented correctly) // 4-7 width as an integer // 8-11 height as an integer // 12-end data (width*height*2*4 bytes total) // the float values for u and v, interleaved, in row order, i.e., // u[row0,col0], v[row0,col0], u[row0,col1], v[row0,col1], ... // // first four bytes, should be the same in little endian #define TAG_FLOAT 202021.25 // check for this when READING the file #define TAG_STRING "PIEH" // use this when WRITING the file #include #include #include #include "imageLib.h" #include "flowIO.h" // return whether flow vector is unknown bool unknown_flow(float u, float v) { return (fabs(u) > UNKNOWN_FLOW_THRESH) || (fabs(v) > UNKNOWN_FLOW_THRESH) || isnan(u) || isnan(v); } bool unknown_flow(float *f) { return unknown_flow(f[0], f[1]); } // read a flow file into 2-band image void ReadFlowFile(CFloatImage& img, const char* filename) { if (filename == NULL) throw CError("ReadFlowFile: empty filename"); const char *dot = strrchr(filename, '.'); if (strcmp(dot, ".flo") != 0) throw CError("ReadFlowFile (%s): extension .flo expected", filename); FILE *stream = fopen(filename, "rb"); if (stream == 0) throw CError("ReadFlowFile: could not open %s", filename); int width, height; float tag; if ((int)fread(&tag, sizeof(float), 1, stream) != 1 || (int)fread(&width, sizeof(int), 1, stream) != 1 || (int)fread(&height, sizeof(int), 1, stream) != 1) throw CError("ReadFlowFile: problem reading file %s", filename); if (tag != TAG_FLOAT) // simple test for correct endian-ness throw CError("ReadFlowFile(%s): wrong tag (possibly due to big-endian machine?)", filename); // another sanity check to see that integers were read correctly (99999 should do the trick...) if (width < 1 || width > 99999) throw CError("ReadFlowFile(%s): illegal width %d", filename, width); if (height < 1 || height > 99999) throw CError("ReadFlowFile(%s): illegal height %d", filename, height); int nBands = 2; CShape sh(width, height, nBands); img.ReAllocate(sh); //printf("reading %d x %d x 2 = %d floats\n", width, height, width*height*2); int n = nBands * width; for (int y = 0; y < height; y++) { float* ptr = &img.Pixel(0, y, 0); if ((int)fread(ptr, sizeof(float), n, stream) != n) throw CError("ReadFlowFile(%s): file is too short", filename); } if (fgetc(stream) != EOF) throw CError("ReadFlowFile(%s): file is too long", filename); fclose(stream); } // write a 2-band image into flow file void WriteFlowFile(CFloatImage img, const char* filename) { if (filename == NULL) throw CError("WriteFlowFile: empty filename"); const char *dot = strrchr(filename, '.'); if (dot == NULL) throw CError("WriteFlowFile: extension required in filename '%s'", filename); if (strcmp(dot, ".flo") != 0) throw CError("WriteFlowFile: filename '%s' should have extension '.flo'", filename); CShape sh = img.Shape(); int width = sh.width, height = sh.height, nBands = sh.nBands; if (nBands != 2) throw CError("WriteFlowFile(%s): image must have 2 bands", filename); FILE *stream = fopen(filename, "wb"); if (stream == 0) throw CError("WriteFlowFile: could not open %s", filename); // write the header fprintf(stream, TAG_STRING); if ((int)fwrite(&width, sizeof(int), 1, stream) != 1 || (int)fwrite(&height, sizeof(int), 1, stream) != 1) throw CError("WriteFlowFile(%s): problem writing header", filename); // write the rows int n = nBands * width; for (int y = 0; y < height; y++) { float* ptr = &img.Pixel(0, y, 0); if ((int)fwrite(ptr, sizeof(float), n, stream) != n) throw CError("WriteFlowFile(%s): problem writing data", filename); } fclose(stream); } /* int main() { try { CShape sh(5, 1, 2); CFloatImage img(sh); img.ClearPixels(); img.Pixel(0, 0, 0) = -5.0f; char *filename = "test.flo"; WriteFlowFile(img, filename); ReadFlowFile(img, filename); } catch (CError &err) { fprintf(stderr, err.message); fprintf(stderr, "\n"); exit(1); } return 0; } */ ================================================ FILE: optical-flow/imageLib/flowIO.h ================================================ // flowIO.h // the "official" threshold - if the absolute value of either // flow component is greater, it's considered unknown #define UNKNOWN_FLOW_THRESH 1e9 // value to use to represent unknown flow #define UNKNOWN_FLOW 1e10 // return whether flow vector is unknown bool unknown_flow(float u, float v); bool unknown_flow(float *f); // read a flow file into 2-band image void ReadFlowFile(CFloatImage& img, const char* filename); // write a 2-band image into flow file void WriteFlowFile(CFloatImage img, const char* filename); ================================================ FILE: optical-flow/imageLib/imageLib.h ================================================ // imageLib.h // common includes #include "Error.h" #include "Image.h" #include "ImageIO.h" #include "Convert.h" #include "flowIO.h" ================================================ FILE: optical-flow/output_golden.txt ================================================ Average error: 150.083 degrees ================================================ FILE: optical-flow/src/host/check_result.cpp ================================================ /*===============================================================*/ /* */ /* check_result.cpp */ /* */ /* Software evaluation of training and test error rate */ /* */ /*===============================================================*/ #include #include #include #include #include "typedefs.h" #include "../../imageLib/imageLib.h" #ifdef OCL void check_results(velocity_t output[MAX_HEIGHT * MAX_WIDTH], CFloatImage refFlow, std::string outFile) #else void check_results(velocity_t output[MAX_HEIGHT][MAX_WIDTH], CFloatImage refFlow, std::string outFile) #endif { // copy the output into the float image CFloatImage outFlow(MAX_WIDTH, MAX_HEIGHT, 2); for (int i = 0; i < MAX_HEIGHT; i++) { for (int j = 0; j < MAX_WIDTH; j++) { #ifdef OCL double out_x = output[i * MAX_WIDTH + j].x.to_double(); double out_y = output[i * MAX_WIDTH + j].y.to_double(); #endif #ifdef SDSOC double out_x = output[i][j].x.to_double(); double out_y = output[i][j].y.to_double(); #endif #ifdef SW double out_x = output[i][j].x; double out_y = output[i][j].y; #endif if (out_x * out_x + out_y * out_y > 25.0) { outFlow.Pixel(j, i, 0) = 1e10; outFlow.Pixel(j, i, 1) = 1e10; } else { outFlow.Pixel(j, i, 0) = out_x; outFlow.Pixel(j, i, 1) = out_y; } } } WriteFlowFile(outFlow, outFile.c_str()); double accum_error = 0; int num_pix = 0; for (int i = 0; i < MAX_HEIGHT; i++) { for (int j = 0; j < MAX_WIDTH; j++) { double out_x = outFlow.Pixel(j, i, 0); double out_y = outFlow.Pixel(j, i, 1); if (unknown_flow(out_x, out_y)) continue; double out_deg = atan2(-out_y, -out_x) * 180.0 / M_PI; double ref_x = refFlow.Pixel(j, i, 0); double ref_y = refFlow.Pixel(j, i, 1); double ref_deg = atan2(-ref_y, -ref_x) * 180.0 / M_PI; // Normalize error to [-180, 180] double error = out_deg - ref_deg; while (error < -180) error += 360; while (error > 180) error -= 360; accum_error += fabs(error); num_pix++; } } double avg_error = accum_error / num_pix; std::ofstream ofile; ofile.open("output.txt"); if (ofile.is_open()) { ofile << "Average error: " << avg_error << " degrees" << std::endl; ofile.close(); } else { std::cout << "Failed to create output file!" << std::endl; } } ================================================ FILE: optical-flow/src/host/check_result.h ================================================ /*===============================================================*/ /* */ /* check_result.h */ /* */ /* Compare result and expected label to get error rate */ /* */ /*===============================================================*/ #ifndef __CHECK_RESULT_H__ #define __CHECK_RESULT_H__ #include "typedefs.h" #include "../../imageLib/imageLib.h" #include #ifdef OCL void check_results(velocity_t output[MAX_HEIGHT * MAX_WIDTH], CFloatImage refFlow, std::string outFile); #else void check_results(velocity_t output[MAX_HEIGHT][MAX_WIDTH], CFloatImage refFlow, std::string outFile); #endif #endif ================================================ FILE: optical-flow/src/host/optical_flow_host.cpp ================================================ /*===============================================================*/ /* */ /* optical_flow_host.cpp */ /* */ /* Main host function for the Optical Flow application. */ /* */ /*===============================================================*/ // standard C/C++ headers #include #include #include #include #include #include // other headers #include "utils.h" #include "typedefs.h" #include "check_result.h" #ifdef OCL // opencl 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/optical_flow.h" #endif #ifdef SW # include "../sw/optical_flow_sw.h" #endif int main(int argc, char ** argv) { printf("Optical Flow Application\n"); // parse command line arguments std::string dataPath(""); std::string outFile(""); #ifdef OCL // parse command line arguments for opencl version std::string kernelFile(""); parse_sdaccel_command_line_args(argc, argv, kernelFile, dataPath, outFile); #else // for sw and sdsoc versions parse_sdsoc_command_line_args(argc, argv, dataPath, outFile); #endif // create actual file names according to the datapath std::string frame_files[5]; std::string reference_file; frame_files[0] = dataPath + "/frame1.ppm"; frame_files[1] = dataPath + "/frame2.ppm"; frame_files[2] = dataPath + "/frame3.ppm"; frame_files[3] = dataPath + "/frame4.ppm"; frame_files[4] = dataPath + "/frame5.ppm"; reference_file = dataPath + "/ref.flo"; // read in images and convert to grayscale printf("Reading input files ... \n"); CByteImage imgs[5]; for (int i = 0; i < 5; i++) { CByteImage tmpImg; ReadImage(tmpImg, frame_files[i].c_str()); imgs[i] = ConvertToGray(tmpImg); } // read in reference flow file printf("Reading reference output flow... \n"); CFloatImage refFlow; ReadFlowFile(refFlow, reference_file.c_str()); // timers struct timeval start, end; // opencl version host code #ifdef OCL // arrays for compute // inputs frames_t* frames = new frames_t[MAX_HEIGHT * MAX_WIDTH]; // output velocity_t* outputs = new velocity_t[MAX_HEIGHT * MAX_WIDTH]; // pack the values for (int i = 0; i < MAX_HEIGHT; i++) { for (int j = 0; j < MAX_WIDTH; j++) { frames[i*MAX_WIDTH+j](7 , 0) = imgs[0].Pixel(j, i, 0); frames[i*MAX_WIDTH+j](15, 8) = imgs[1].Pixel(j, i, 0); frames[i*MAX_WIDTH+j](23, 16) = imgs[2].Pixel(j, i, 0); frames[i*MAX_WIDTH+j](31, 24) = imgs[3].Pixel(j, i, 0); frames[i*MAX_WIDTH+j](39, 32) = imgs[4].Pixel(j, i, 0); frames[i*MAX_WIDTH+j](63, 40) = 0; } } // create OpenCL world CLWorld oflow_world = CLWorld(TARGET_DEVICE, CL_DEVICE_TYPE_ACCELERATOR); // add the bitstream file oflow_world.addProgram(kernelFile); // create kernels // this kernel is written in C++ CLKernel OpticalFlow(oflow_world.getContext(), oflow_world.getProgram(), "optical_flow", oflow_world.getDevice()); // create mem objects CLMemObj frames_mem ( (void*)frames, sizeof(frames_t), MAX_HEIGHT * MAX_WIDTH, CL_MEM_READ_ONLY, 0); CLMemObj outputs_mem( (void*)outputs, sizeof(velocity_t), MAX_HEIGHT * MAX_WIDTH, CL_MEM_WRITE_ONLY, 0); // start timer gettimeofday(&start, 0); // add them to the world // added in sequence, each of them can be referenced by an index oflow_world.addMemObj(frames_mem); oflow_world.addMemObj(outputs_mem); // set work size int global_size[3] = {1, 1, 1}; int local_size[3] = {1, 1, 1}; OpticalFlow.set_global(global_size); OpticalFlow.set_local(local_size); // add them to the world oflow_world.addKernel(OpticalFlow); // set kernel arguments oflow_world.setMemKernelArg(0, 0, 0); oflow_world.setMemKernelArg(0, 1, 1); // run! oflow_world.runKernels(); // read the data back oflow_world.readMemObj(1); // end timer gettimeofday(&end, 0); #endif // sdsoc version host code #ifdef SDSOC // input and output buffers static frames_t frames[MAX_HEIGHT][MAX_WIDTH]; static velocity_t outputs[MAX_HEIGHT][MAX_WIDTH]; // pack the values for (int i = 0; i < MAX_HEIGHT; i++) { for (int j = 0; j < MAX_WIDTH; j++) { frames[i][j](7 , 0) = imgs[0].Pixel(j, i, 0); frames[i][j](15, 8) = imgs[1].Pixel(j, i, 0); frames[i][j](23, 16) = imgs[2].Pixel(j, i, 0); frames[i][j](31, 24) = imgs[3].Pixel(j, i, 0); frames[i][j](39, 32) = imgs[4].Pixel(j, i, 0); frames[i][j](63, 40) = 0; } } printf("Start!\n"); // run gettimeofday(&start, NULL); optical_flow(frames, outputs); gettimeofday(&end, NULL); #endif // sw version host code #ifdef SW static pixel_t frames[5][MAX_HEIGHT][MAX_WIDTH]; static velocity_t outputs[MAX_HEIGHT][MAX_WIDTH]; gettimeofday(&start, NULL); // use native C datatype arrays for (int f = 0; f < 5; f ++ ) for (int i = 0; i < MAX_HEIGHT; i ++ ) for (int j = 0; j < MAX_WIDTH; j ++ ) frames[f][i][j] = imgs[f].Pixel(j, i, 0) / 255.0f; // run optical_flow_sw(frames[0], frames[1], frames[2], frames[3], frames[4], outputs); gettimeofday(&end, NULL); #endif // check results printf("Checking results:\n"); check_results(outputs, refFlow, outFile); // 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 oflow_world.releaseWorld(); delete []frames; delete []outputs; #endif return EXIT_SUCCESS; } ================================================ FILE: optical-flow/src/host/typedefs.h ================================================ /*===============================================================*/ /* */ /* typedefs.h */ /* */ /* Defines types and constants for host function */ /* */ /*===============================================================*/ #ifndef __TYPEDEFS_H__ #define __TYPEDEFS_H__ const int MAX_HEIGHT = 436; const int MAX_WIDTH = 1024; // basic typedefs #ifndef SW #include "ap_fixed.h" typedef ap_fixed<17,9> input_t; typedef ap_fixed<32,13> pixel_t; typedef ap_fixed<32,27> outer_pixel_t; typedef ap_fixed<64,56> calc_pixel_t; typedef ap_fixed<32,13> vel_pixel_t; #else typedef float pixel_t; typedef float outer_pixel_t; typedef float vel_pixel_t; #endif typedef struct{ pixel_t x; pixel_t y; pixel_t z; }gradient_t; typedef struct{ outer_pixel_t val[6]; }outer_t; typedef struct{ outer_pixel_t val[6]; }tensor_t; typedef struct{ vel_pixel_t x; vel_pixel_t y; }velocity_t; #ifndef SW #include "ap_int.h" // for data packing typedef ap_uint<64> frames_t; #endif #ifdef OCL #include // change the target device here const std::string TARGET_DEVICE = "xilinx_aws-vu9p-f1-04261818_dynamic_5_0"; #endif #endif ================================================ FILE: optical-flow/src/host/utils.cpp ================================================ /*===============================================================*/ /* */ /* utils.cpp */ /* */ /* Utility functions */ /* */ /*===============================================================*/ #include #include #include #include #include "utils.h" void print_usage(char* filename) { printf("usage: %s \n", filename); printf(" -f [kernel file]\n"); printf(" -p [path to data]\n"); printf(" -o [path to output]\n"); } void parse_sdaccel_command_line_args( int argc, char** argv, std::string& kernelFile, std::string& dataPath, std::string& outFile ) { int c = 0; while ((c = getopt(argc, argv, "f:p:o:")) != -1) { switch (c) { case 'f': kernelFile = optarg; break; case 'p': dataPath = optarg; break; case 'o': outFile = optarg; break; default: { print_usage(argv[0]); exit(-1); } } // matching on arguments } // while args present } void parse_sdsoc_command_line_args( int argc, char** argv, std::string& dataPath, std::string& outFile ) { int c = 0; while ((c = getopt(argc, argv, "p:o:")) != -1) { switch (c) { case 'p': dataPath = optarg; break; case 'o': outFile = optarg; break; default: { print_usage(argv[0]); exit(-1); } } // matching on arguments } // while args present } ================================================ FILE: optical-flow/src/host/utils.h ================================================ /*===============================================================*/ /* */ /* utils.h */ /* */ /* Utility functions */ /* */ /*===============================================================*/ void print_usage(char* filename); void parse_sdaccel_command_line_args( int argc, char** argv, std::string& kernelFile, std::string& dataPath, std::string& outFile); void parse_sdsoc_command_line_args( int argc, char** argv, std::string& dataPath, std::string& outFile ); ================================================ FILE: optical-flow/src/ocl/optical_flow.cpp ================================================ /*===============================================================*/ /* */ /* optical_flow.cpp */ /* */ /* Hardware function for optical flow */ /* */ /*===============================================================*/ #include "host/typedefs.h" // use HLS video library #include // define these constants so they can be used in pragma const int max_width = MAX_WIDTH; const int default_depth = MAX_WIDTH; // calculate gradient in x and y directions void gradient_xy_calc(input_t frame[MAX_HEIGHT][MAX_WIDTH], pixel_t gradient_x[MAX_HEIGHT][MAX_WIDTH], pixel_t gradient_y[MAX_HEIGHT][MAX_WIDTH]) { // our own line buffer static pixel_t buf[5][MAX_WIDTH]; #pragma HLS array_partition variable=buf complete dim=1 // small buffer pixel_t smallbuf[5]; #pragma HLS array_partition variable=smallbuf complete dim=0 // window buffer hls::Window<5,5,input_t> window; const int GRAD_WEIGHTS[] = {1,-8,0,8,-1}; GRAD_XY_OUTER: for(int r=0; r=4 && r=4 && c=2 && c>=2) { gradient_x[r-2][c-2] = 0; gradient_y[r-2][c-2] = 0; } } } } // calculate gradient in the z direction void gradient_z_calc(input_t frame1[MAX_HEIGHT][MAX_WIDTH], input_t frame2[MAX_HEIGHT][MAX_WIDTH], input_t frame3[MAX_HEIGHT][MAX_WIDTH], input_t frame4[MAX_HEIGHT][MAX_WIDTH], input_t frame5[MAX_HEIGHT][MAX_WIDTH], pixel_t gradient_z[MAX_HEIGHT][MAX_WIDTH]) { const int GRAD_WEIGHTS[] = {1,-8,0,8,-1}; GRAD_Z_OUTER: for(int r=0; r buf; const pixel_t GRAD_FILTER[] = {0.0755, 0.133, 0.1869, 0.2903, 0.1869, 0.133, 0.0755}; GRAD_WEIGHT_Y_OUTER: for(int r=0; r= 6 && r=3) { filt_grad[r-3][c] = acc; } } } } // average gradient in the x direction void gradient_weight_x(gradient_t y_filt[MAX_HEIGHT][MAX_WIDTH], gradient_t filt_grad[MAX_HEIGHT][MAX_WIDTH]) { hls::Window<1,7,gradient_t> buf; const pixel_t GRAD_FILTER[] = {0.0755, 0.133, 0.1869, 0.2903, 0.1869, 0.133, 0.0755}; GRAD_WEIGHT_X_OUTER: for(int r=0; r= 6 && c=3) { filt_grad[r][c-3] = acc; } } } } // outer product void outer_product(gradient_t gradient[MAX_HEIGHT][MAX_WIDTH], outer_t outer_product[MAX_HEIGHT][MAX_WIDTH]) { OUTER_OUTER: for(int r=0; r buf; const pixel_t TENSOR_FILTER[] = {0.3243, 0.3513, 0.3243}; TENSOR_WEIGHT_Y_OUTER: for(int r=0; r= 2 && r < MAX_HEIGHT) { TENSOR_WEIGHT_Y_TMP_OUTER: for(int i=0; i<3; i++) { tmp = buf.getval(i,c); pixel_t k = TENSOR_FILTER[i]; TENSOR_WEIGHT_Y_TMP_INNER: for(int component=0; component<6; component++) { acc.val[component] += tmp.val[component]*k; } } } if(r >= 1) { tensor_y[r-1][c] = acc; } } } } void tensor_weight_x(tensor_t tensor_y[MAX_HEIGHT][MAX_WIDTH], tensor_t tensor[MAX_HEIGHT][MAX_WIDTH]) { hls::Window<1,3,tensor_t> buf; const pixel_t TENSOR_FILTER[] = {0.3243, 0.3513, 0.3243}; //const float TENSOR_FILTER[] = {0.3243, 0.3513, 0.3243}; TENSOR_WEIGHT_X_OUTER: for(int r=0; r= 2 && c < MAX_WIDTH) { TENSOR_WEIGHT_X_TMP_OUTER: for(int i=0; i<3; i++) { tmp = buf.getval(0,i); TENSOR_WEIGHT_X_TMP_INNER: for(int component=0; component<6; component++) { acc.val[component] += tmp.val[component]*TENSOR_FILTER[i]; } } } if(c>=1) { tensor[r][c-1] = acc; } } } } // compute output flow void flow_calc(tensor_t tensors[MAX_HEIGHT][MAX_WIDTH], velocity_t outputs[MAX_HEIGHT * MAX_WIDTH]) { static outer_pixel_t buf[2]; FLOW_OUTER: for(int r=0; r=2 && r=2 && c> 8); frame2_a[r][c] = ((input_t)(buf(15, 8)) >> 8); frame3_a[r][c] = ((input_t)(buf(23, 16)) >> 8); frame3_b[r][c] = ((input_t)(buf(23, 16)) >> 8); frame4_a[r][c] = ((input_t)(buf(31, 24)) >> 8); frame5_a[r][c] = ((input_t)(buf(39, 32)) >> 8); } } // compute gradient_xy_calc(frame3_a, gradient_x, gradient_y); gradient_z_calc(frame1_a, frame2_a, frame3_b, frame4_a, frame5_a, gradient_z); gradient_weight_y(gradient_x, gradient_y, gradient_z, y_filtered); gradient_weight_x(y_filtered, filtered_gradient); outer_product(filtered_gradient, out_product); tensor_weight_y(out_product, tensor_y); tensor_weight_x(tensor_y, tensor); flow_calc(tensor, outputs); } } ================================================ FILE: optical-flow/src/sdsoc/optical_flow.cpp ================================================ /*===============================================================*/ /* */ /* optical_flow.cpp */ /* */ /* Hardware function for optical flow */ /* */ /*===============================================================*/ #include "optical_flow.h" // use HLS video library #include // use HLS fixed point #include "ap_fixed.h" // define these constants so they can be used in pragma const int max_width = MAX_WIDTH; const int default_depth = MAX_WIDTH; // calculate gradient in x and y directions void gradient_xy_calc(input_t frame[MAX_HEIGHT][MAX_WIDTH], pixel_t gradient_x[MAX_HEIGHT][MAX_WIDTH], pixel_t gradient_y[MAX_HEIGHT][MAX_WIDTH]) { // our own line buffer static pixel_t buf[5][MAX_WIDTH]; #pragma HLS array_partition variable=buf complete dim=1 // small buffer pixel_t smallbuf[5]; #pragma HLS array_partition variable=smallbuf complete dim=0 // window buffer hls::Window<5,5,input_t> window; const int GRAD_WEIGHTS[] = {1,-8,0,8,-1}; GRAD_XY_OUTER: for(int r=0; r=4 && r=4 && c=2 && c>=2) { gradient_x[r-2][c-2] = 0; gradient_y[r-2][c-2] = 0; } } } } // calculate gradient in the z direction void gradient_z_calc(input_t frame1[MAX_HEIGHT][MAX_WIDTH], input_t frame2[MAX_HEIGHT][MAX_WIDTH], input_t frame3[MAX_HEIGHT][MAX_WIDTH], input_t frame4[MAX_HEIGHT][MAX_WIDTH], input_t frame5[MAX_HEIGHT][MAX_WIDTH], pixel_t gradient_z[MAX_HEIGHT][MAX_WIDTH]) { const int GRAD_WEIGHTS[] = {1,-8,0,8,-1}; GRAD_Z_OUTER: for(int r=0; r buf; const pixel_t GRAD_FILTER[] = {0.0755, 0.133, 0.1869, 0.2903, 0.1869, 0.133, 0.0755}; GRAD_WEIGHT_Y_OUTER: for(int r=0; r= 6 && r=3) { filt_grad[r-3][c] = acc; } } } } // average gradient in the x direction void gradient_weight_x(gradient_t y_filt[MAX_HEIGHT][MAX_WIDTH], gradient_t filt_grad[MAX_HEIGHT][MAX_WIDTH]) { hls::Window<1,7,gradient_t> buf; const pixel_t GRAD_FILTER[] = {0.0755, 0.133, 0.1869, 0.2903, 0.1869, 0.133, 0.0755}; GRAD_WEIGHT_X_OUTER: for(int r=0; r= 6 && c=3) { filt_grad[r][c-3] = acc; } } } } // outer product void outer_product(gradient_t gradient[MAX_HEIGHT][MAX_WIDTH], outer_t outer_product[MAX_HEIGHT][MAX_WIDTH]) { OUTER_OUTER: for(int r=0; r buf; const pixel_t TENSOR_FILTER[] = {0.3243, 0.3513, 0.3243}; TENSOR_WEIGHT_Y_OUTER: for(int r=0; r= 2 && r < MAX_HEIGHT) { TENSOR_WEIGHT_Y_TMP_OUTER: for(int i=0; i<3; i++) { tmp = buf.getval(i,c); pixel_t k = TENSOR_FILTER[i]; TENSOR_WEIGHT_Y_TMP_INNER: for(int component=0; component<6; component++) { acc.val[component] += tmp.val[component]*k; } } } if(r >= 1) { tensor_y[r-1][c] = acc; } } } } void tensor_weight_x(tensor_t tensor_y[MAX_HEIGHT][MAX_WIDTH], tensor_t tensor[MAX_HEIGHT][MAX_WIDTH]) { hls::Window<1,3,tensor_t> buf; const pixel_t TENSOR_FILTER[] = {0.3243, 0.3513, 0.3243}; //const float TENSOR_FILTER[] = {0.3243, 0.3513, 0.3243}; TENSOR_WEIGHT_X_OUTER: for(int r=0; r= 2 && c < MAX_WIDTH) { TENSOR_WEIGHT_X_TMP_OUTER: for(int i=0; i<3; i++) { tmp = buf.getval(0,i); TENSOR_WEIGHT_X_TMP_INNER: for(int component=0; component<6; component++) { acc.val[component] += tmp.val[component]*TENSOR_FILTER[i]; } } } if(c>=1) { tensor[r][c-1] = acc; } } } } // compute output flow void flow_calc(tensor_t tensors[MAX_HEIGHT][MAX_WIDTH], velocity_t outputs[MAX_HEIGHT][MAX_WIDTH]) { static outer_pixel_t buf[2]; FLOW_OUTER: for(int r=0; r=2 && r=2 && c> 8); frame2_a[r][c] = ((input_t)(buf(15, 8)) >> 8); frame3_a[r][c] = ((input_t)(buf(23, 16)) >> 8); frame3_b[r][c] = ((input_t)(buf(23, 16)) >> 8); frame4_a[r][c] = ((input_t)(buf(31, 24)) >> 8); frame5_a[r][c] = ((input_t)(buf(39, 32)) >> 8); } } // // compute gradient_xy_calc(frame3_a, gradient_x, gradient_y); gradient_z_calc(frame1_a, frame2_a, frame3_b, frame4_a, frame5_a, gradient_z); gradient_weight_y(gradient_x, gradient_y, gradient_z, y_filtered); gradient_weight_x(y_filtered, filtered_gradient); outer_product(filtered_gradient, out_product); tensor_weight_y(out_product, tensor_y); tensor_weight_x(tensor_y, tensor); flow_calc(tensor, outputs); } ================================================ FILE: optical-flow/src/sdsoc/optical_flow.h ================================================ /*===============================================================*/ /* */ /* optical_flow.h */ /* */ /* Hardware function for optical flow */ /* */ /*===============================================================*/ #ifndef __OPTICAL_FLOW_H__ #define __OPTICAL_FLOW_H__ #include "../host/typedefs.h" // convolution filters const int GRAD_WEIGHTS[] = {1,-8,0,8,-1}; const pixel_t GRAD_FILTER[] = {0.0755, 0.133, 0.1869, 0.2903, 0.1869, 0.133, 0.0755}; const pixel_t TENSOR_FILTER[] = {0.3243, 0.3513, 0.3243}; // top-level function #pragma SDS data access_pattern(frames:SEQUENTIAL, outputs:SEQUENTIAL) void optical_flow(frames_t frames[MAX_HEIGHT][MAX_WIDTH], velocity_t outputs[MAX_HEIGHT][MAX_WIDTH]); #endif ================================================ FILE: optical-flow/src/sw/optical_flow_sw.cpp ================================================ /*===============================================================*/ /* */ /* optical_flow_sw.cpp */ /* */ /* Software version for optical flow. */ /* */ /*===============================================================*/ #include "optical_flow_sw.h" #include // compute x, y gradient void gradient_xy_calc(pixel_t frame[MAX_HEIGHT][MAX_WIDTH], pixel_t gradient_x[MAX_HEIGHT][MAX_WIDTH], pixel_t gradient_y[MAX_HEIGHT][MAX_WIDTH]) { pixel_t x_grad, y_grad; for (int r = 0; r < MAX_HEIGHT + 2; r ++ ) { for (int c = 0; c < MAX_WIDTH + 2; c ++) { x_grad = 0; y_grad = 0; if (r >= 4 && r < MAX_HEIGHT && c >= 4 && c < MAX_WIDTH) { for (int i = 0; i < 5; i++) { x_grad += frame[r-2][c-i] * GRAD_WEIGHTS[4-i]; y_grad += frame[r-i][c-2] * GRAD_WEIGHTS[4-i]; } gradient_x[r-2][c-2] = x_grad / 12; gradient_y[r-2][c-2] = y_grad / 12; } else if (r >= 2 && c >= 2) { gradient_x[r-2][c-2] = 0; gradient_y[r-2][c-2] = 0; } } } } // compute z gradient void gradient_z_calc(pixel_t frame0[MAX_HEIGHT][MAX_WIDTH], pixel_t frame1[MAX_HEIGHT][MAX_WIDTH], pixel_t frame2[MAX_HEIGHT][MAX_WIDTH], pixel_t frame3[MAX_HEIGHT][MAX_WIDTH], pixel_t frame4[MAX_HEIGHT][MAX_WIDTH], pixel_t gradient_z[MAX_HEIGHT][MAX_WIDTH]) { for (int r = 0; r < MAX_HEIGHT; r ++) { for (int c = 0; c < MAX_WIDTH; c ++) { gradient_z[r][c] = 0.0f; gradient_z[r][c] += frame0[r][c] * GRAD_WEIGHTS[0]; gradient_z[r][c] += frame1[r][c] * GRAD_WEIGHTS[1]; gradient_z[r][c] += frame2[r][c] * GRAD_WEIGHTS[2]; gradient_z[r][c] += frame3[r][c] * GRAD_WEIGHTS[3]; gradient_z[r][c] += frame4[r][c] * GRAD_WEIGHTS[4]; gradient_z[r][c] /= 12.0f; } } } // compute y weight void gradient_weight_y(pixel_t gradient_x[MAX_HEIGHT][MAX_WIDTH], pixel_t gradient_y[MAX_HEIGHT][MAX_WIDTH], pixel_t gradient_z[MAX_HEIGHT][MAX_WIDTH], gradient_t filt_grad[MAX_HEIGHT][MAX_WIDTH]) { for (int r = 0; r < MAX_HEIGHT + 3; r ++) { for (int c = 0; c < MAX_WIDTH; c ++) { gradient_t acc; acc.x = 0; acc.y = 0; acc.z = 0; if (r >= 6 && r < MAX_HEIGHT) { for (int i = 0; i < 7; i ++) { acc.x += gradient_x[r-i][c] * GRAD_FILTER[i]; acc.y += gradient_y[r-i][c] * GRAD_FILTER[i]; acc.z += gradient_z[r-i][c] * GRAD_FILTER[i]; } filt_grad[r-3][c] = acc; } else if (r >= 3) { filt_grad[r-3][c] = acc; } } } } // compute x weight void gradient_weight_x(gradient_t y_filt[MAX_HEIGHT][MAX_WIDTH], gradient_t filt_grad[MAX_HEIGHT][MAX_WIDTH]) { for (int r = 0; r < MAX_HEIGHT; r ++) { for (int c = 0; c < MAX_WIDTH + 3; c ++) { gradient_t acc; acc.x = 0; acc.y = 0; acc.z = 0; if (c >= 6 && c < MAX_WIDTH) { for (int i = 0; i < 7; i ++) { acc.x += y_filt[r][c-i].x * GRAD_FILTER[i]; acc.y += y_filt[r][c-i].y * GRAD_FILTER[i]; acc.z += y_filt[r][c-i].z * GRAD_FILTER[i]; } filt_grad[r][c-3] = acc; } else if (c >= 3) { filt_grad[r][c-3] = acc; } } } } // outer product void outer_product(gradient_t gradient[MAX_HEIGHT][MAX_WIDTH], outer_t outer_product[MAX_HEIGHT][MAX_WIDTH]) { for (int r = 0; r < MAX_HEIGHT; r ++) { for (int c = 0; c < MAX_WIDTH; c ++) { gradient_t grad = gradient[r][c]; outer_t out; out.val[0] = grad.x * grad.x; out.val[1] = grad.y * grad.y; out.val[2] = grad.z * grad.z; out.val[3] = grad.x * grad.y; out.val[4] = grad.x * grad.z; out.val[5] = grad.y * grad.z; outer_product[r][c] = out; } } } // tensor weight y void tensor_weight_y(outer_t outer[MAX_HEIGHT][MAX_WIDTH], tensor_t tensor_y[MAX_HEIGHT][MAX_WIDTH]) { for (int r = 0; r < MAX_HEIGHT + 1; r ++) { for(int c = 0; c < MAX_WIDTH; c ++) { tensor_t acc; for (int k = 0; k < 6; k ++) { acc.val[k] = 0; } if (r >= 2 && r < MAX_HEIGHT) { for (int i = 0; i < 3; i ++) { for(int component = 0; component < 6; component ++) { acc.val[component] += outer[r-i][c].val[component] * TENSOR_FILTER[i]; } } } if (r >= 1) { tensor_y[r-1][c] = acc; } } } } // tensor weight x void tensor_weight_x(tensor_t tensor_y[MAX_HEIGHT][MAX_WIDTH], tensor_t tensor[MAX_HEIGHT][MAX_WIDTH]) { for (int r = 0; r < MAX_HEIGHT; r ++) { for (int c = 0; c < MAX_WIDTH + 1; c ++) { tensor_t acc; for(int k = 0; k < 6; k++) { acc.val[k] = 0; } if (c >= 2 && c < MAX_WIDTH) { for (int i = 0; i < 3; i ++) { for (int component = 0; component < 6; component ++) { acc.val[component] += tensor_y[r][c-i].val[component] * TENSOR_FILTER[i]; } } } if (c >= 1) { tensor[r][c-1] = acc; } } } } // compute flow void flow_calc(tensor_t tensors[MAX_HEIGHT][MAX_WIDTH], velocity_t output[MAX_HEIGHT][MAX_WIDTH]) { for(int r = 0; r < MAX_HEIGHT; r ++) { for(int c = 0; c < MAX_WIDTH; c ++) { if (r >= 2 && r < MAX_HEIGHT - 2 && c >= 2 && c < MAX_WIDTH - 2) { pixel_t denom = tensors[r][c].val[0] * tensors[r][c].val[1] - tensors[r][c].val[3] * tensors[r][c].val[3]; output[r][c].x = (tensors[r][c].val[5] * tensors[r][c].val[3] - tensors[r][c].val[4] * tensors[r][c].val[1]) / denom; output[r][c].y = (tensors[r][c].val[4] * tensors[r][c].val[3] - tensors[r][c].val[5] * tensors[r][c].val[0]) / denom; } else { output[r][c].x = 0; output[r][c].y = 0; } } } } // top-level sw function void optical_flow_sw(pixel_t frame0[MAX_HEIGHT][MAX_WIDTH], pixel_t frame1[MAX_HEIGHT][MAX_WIDTH], pixel_t frame2[MAX_HEIGHT][MAX_WIDTH], pixel_t frame3[MAX_HEIGHT][MAX_WIDTH], pixel_t frame4[MAX_HEIGHT][MAX_WIDTH], velocity_t outputs[MAX_HEIGHT][MAX_WIDTH]) { // intermediate arrays static pixel_t gradient_x[MAX_HEIGHT][MAX_WIDTH]; static pixel_t gradient_y[MAX_HEIGHT][MAX_WIDTH]; static pixel_t gradient_z[MAX_HEIGHT][MAX_WIDTH]; static gradient_t y_filtered[MAX_HEIGHT][MAX_WIDTH]; static gradient_t filtered_gradient[MAX_HEIGHT][MAX_WIDTH]; static outer_t out_product[MAX_HEIGHT][MAX_WIDTH]; static tensor_t tensor_y[MAX_HEIGHT][MAX_WIDTH]; static tensor_t tensor[MAX_HEIGHT][MAX_WIDTH]; // compute gradient_xy_calc(frame2, gradient_x, gradient_y); gradient_z_calc(frame0, frame1, frame2, frame3, frame4, gradient_z); gradient_weight_y(gradient_x, gradient_y, gradient_z, y_filtered); gradient_weight_x(y_filtered, filtered_gradient); outer_product(filtered_gradient, out_product); tensor_weight_y(out_product, tensor_y); tensor_weight_x(tensor_y, tensor); flow_calc(tensor, outputs); } ================================================ FILE: optical-flow/src/sw/optical_flow_sw.h ================================================ /*===============================================================*/ /* */ /* optical_flow_sw.h */ /* */ /* Software version for optical flow. */ /* */ /*===============================================================*/ #ifndef __OPTICAL_FLOW_H__ #define __OPTICAL_FLOW_H__ #include "../host/typedefs.h" // convolution filters const int GRAD_WEIGHTS[] = {1,-8,0,8,-1}; const pixel_t GRAD_FILTER[] = {0.0755, 0.133, 0.1869, 0.2903, 0.1869, 0.133, 0.0755}; const pixel_t TENSOR_FILTER[] = {0.3243, 0.3513, 0.3243}; // top-level function void optical_flow_sw(pixel_t frame0[MAX_HEIGHT][MAX_WIDTH], pixel_t frame1[MAX_HEIGHT][MAX_WIDTH], pixel_t frame2[MAX_HEIGHT][MAX_WIDTH], pixel_t frame3[MAX_HEIGHT][MAX_WIDTH], pixel_t frame4[MAX_HEIGHT][MAX_WIDTH], velocity_t outputs[MAX_HEIGHT][MAX_WIDTH]); #endif ================================================ FILE: spam-filter/Makefile ================================================ # Set kernel name KERNEL_NAME = SgdLR # Set host source and headers HOST_SRC_CPP = ./src/host/spam_filter.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 DATA = ./data/*.dat # 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/sgd.cpp OCL_KERNEL_H = ./src/host/typedefs.h ./src/ocl/lut.h SDSOC_KERNEL_SRC = ./src/sdsoc/sgd.cpp SDSOC_KERNEL_H = ./src/host/typedefs.h ./src/sdsoc/lut.h SW_KERNEL_SRC = ./src/sw/sgd_sw.cpp SW_KERNEL_H = ./src/host/typedefs.h # Set opencl kernel arguments OCL_KERNEL_ARGS = --max_memory_ports all --report system -I$(shell pwd)/src/ #------------------------- # Leave the rest to harness #------------------------- include ../harness/harness.mk ================================================ FILE: spam-filter/README.md ================================================ # Spam Filtering ## Description This design trains a logistic regression model to classify emails as either "spam" or "ham". We use stochastic gradient descent (SGD) in our accelerator to train the model. The `dataset` directory contains our test dataset with 5000 emails. ## Usage ### SDAccel To execute or simulate the design, do `./SgdLR_host.exe -f -p ` ### SDSoC To run design on the board, do `./SgdLR.elf -p ` ### SW To run software version, do `./SgdLR_sw -p ` ## Known Issues 1. In `ocl/sgd.cpp`, macros defined in `host/typedefs.h` can not be used in array partition pragmas. 2. SDSoC can not share the same code with SDAccel. During execution the program would deadlock with dataflow. As a result, each invocation of the hardware function computes one epoch in the SDSoC version. ================================================ FILE: spam-filter/data/.gitignore ================================================ features.dat labels.dat newfeatsfloat.dat newfeatsint.dat *.py ================================================ FILE: spam-filter/output_golden.txt ================================================ main parameter vector: m[0]: 93.9424 | m[1]: -45.7199 | m[2]: 362.705 | m[3]: -180.539 | m[4]: 47.1384 | m[5]: -63.8508 | m[6]: 73.4203 | m[7]: 87.1895 | m[8]: 2.25433 | m[9]: 78.8206 | m[10]: 138.497 | m[11]: -201.624 | m[12]: 89.9707 | m[13]: 11.2919 | m[14]: 117.266 | m[15]: -92.0629 | m[16]: 6.45398 | m[17]: -24.6001 | m[18]: 51.3177 | m[19]: 288.56 | m[20]: -109.738 | m[21]: 62.6857 | m[22]: 153.249 | m[23]: 119.029 | m[24]: -99.059 | m[25]: 71.2724 | m[26]: 78.5927 | m[27]: 197.399 | m[28]: 31.3884 | m[29]: 19.6608 | Training TPR: 97.8287 Training FPR: 0.175932 Training Error: 0.911111 Testing TPR: 93.4783 Testing FPR: 2.53165 Testing Error: 4 ================================================ FILE: spam-filter/src/host/check_result.cpp ================================================ /*===============================================================*/ /* */ /* check_result.cpp */ /* */ /* Software evaluation of training and test error rate */ /* */ /*===============================================================*/ #include #include "typedefs.h" // data structure only used in this file typedef struct DataSet_s { DataType* data_points; LabelType* labels; FeatureType* parameter_vector; size_t num_data_points; size_t num_features; } DataSet; // sub-functions for result checking // dot product float dotProduct(FeatureType* param_vector, DataType* data_point_i, const size_t num_features) { FeatureType result = 0.0f; for (int i = 0; i < num_features; i ++ ) result += param_vector[i] * data_point_i[i]; #ifndef SW return result.to_float(); #else return result; #endif } // predict LabelType getPrediction(FeatureType* parameter_vector, DataType* data_point_i, size_t num_features, const double treshold = 0) { float parameter_vector_dot_x_i = dotProduct(parameter_vector, data_point_i, num_features); return (parameter_vector_dot_x_i > treshold) ? 1 : 0; } // compute error rate double computeErrorRate( DataSet data_set, double& cumulative_true_positive_rate, double& cumulative_false_positive_rate, double& cumulative_error) { size_t true_positives = 0, true_negatives = 0, false_positives = 0, false_negatives = 0; for (size_t i = 0; i < data_set.num_data_points; i++) { LabelType prediction = getPrediction(data_set.parameter_vector, &data_set.data_points[i * data_set.num_features], data_set.num_features); if (prediction != data_set.labels[i]) { if (prediction == 1) false_positives++; else false_negatives++; } else { if (prediction == 1) true_positives++; else true_negatives++; } } double error_rate = (double)(false_positives + false_negatives) / data_set.num_data_points; cumulative_true_positive_rate += (double)true_positives / (true_positives + false_negatives); cumulative_false_positive_rate += (double)false_positives / (false_positives + true_negatives); cumulative_error += error_rate; return error_rate; } // check results void check_results(FeatureType* param_vector, DataType* data_points, LabelType* labels) { std::ofstream ofile; ofile.open("output.txt"); if (ofile.is_open()) { ofile << "\nmain parameter vector: \n"; for(int i = 0; i < 30; i ++ ) #ifndef SW ofile << "m[" << i << "]: " << param_vector[i].to_float() << " | "; #else ofile << "m[" << i << "]: " << param_vector[i] << " | "; #endif ofile << std::endl; // Initialize benchmark variables double training_tpr = 0.0; double training_fpr = 0.0; double training_error = 0.0; double testing_tpr = 0.0; double testing_fpr = 0.0; double testing_error = 0.0; // Get Training error DataSet training_set; training_set.data_points = data_points; training_set.labels = labels; training_set.num_data_points = NUM_TRAINING; training_set.num_features = NUM_FEATURES; training_set.parameter_vector = param_vector; computeErrorRate(training_set, training_tpr, training_fpr, training_error); // Get Testing error DataSet testing_set; testing_set.data_points = &data_points[NUM_FEATURES * NUM_TRAINING]; testing_set.labels = &labels[NUM_TRAINING]; testing_set.num_data_points = NUM_TESTING; testing_set.num_features = NUM_FEATURES; testing_set.parameter_vector = param_vector; computeErrorRate(testing_set, testing_tpr, testing_fpr, testing_error); training_tpr *= 100.0; training_fpr *= 100.0; training_error *= 100.0; testing_tpr *= 100.0; testing_fpr *= 100.0; testing_error *= 100.0; ofile << "Training TPR: " << training_tpr << std::endl; ofile << "Training FPR: " << training_fpr << std::endl; ofile << "Training Error: " << training_error << std::endl; ofile << "Testing TPR: " << testing_tpr << std::endl; ofile << "Testing FPR: " << testing_fpr << std::endl; ofile << "Testing Error: " << testing_error << std::endl; } else { std::cout << "Failed to create output file!" << std::endl; } } ================================================ FILE: spam-filter/src/host/check_result.h ================================================ /*===============================================================*/ /* */ /* check_result.h */ /* */ /* Software evaluation of training and test error rate */ /* */ /*===============================================================*/ void check_results(FeatureType* param_vector, DataType* data_points, LabelType* labels); ================================================ FILE: spam-filter/src/host/spam_filter.cpp ================================================ /*===============================================================*/ /* */ /* spam_filter.cpp */ /* */ /* Main host function for the Spam Filter application. */ /* */ /*===============================================================*/ // standard C/C++ headers #include #include #include #include #include #include #ifdef OCL // opencl 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/sgd.h" #endif #ifdef SW # include "../sw/sgd_sw.h" #endif // other headers #include "utils.h" #include "typedefs.h" #include "check_result.h" int main(int argc, char *argv[]) { setbuf(stdout, NULL); printf("Spam Filter Application\n"); // parse command line arguments std::string path_to_data(""); // sdaccel version and sdsoc/sw version have different command line options #ifdef OCL std::string kernelFile(""); parse_sdaccel_command_line_args(argc, argv, kernelFile, path_to_data); #else parse_sdsoc_command_line_args(argc, argv, path_to_data); #endif // allocate space // for software verification DataType* data_points = new DataType[DATA_SET_SIZE]; LabelType* labels = new LabelType [NUM_SAMPLES]; FeatureType* param_vector = new FeatureType[NUM_FEATURES]; // read in dataset std::string str_points_filepath = path_to_data + "/shuffledfeats.dat"; std::string str_labels_filepath = path_to_data + "/shuffledlabels.dat"; FILE* data_file; FILE* label_file; data_file = fopen(str_points_filepath.c_str(), "r"); if (!data_file) { printf("Failed to open data file %s!\n", str_points_filepath.c_str()); return EXIT_FAILURE; } for (int i = 0; i < DATA_SET_SIZE; i ++ ) { float tmp; fscanf(data_file, "%f", &tmp); data_points[i] = tmp; } fclose(data_file); label_file = fopen(str_labels_filepath.c_str(), "r"); if (!label_file) { printf("Failed to open label file %s!\n", str_labels_filepath.c_str()); return EXIT_FAILURE; } for (int i = 0; i < NUM_SAMPLES; i ++ ) { int tmp; fscanf(label_file, "%d", &tmp); labels[i] = tmp; } fclose(label_file); // reset parameter vector for (size_t i = 0; i < NUM_FEATURES; i++) param_vector[i] = 0; // timers struct timeval start, end; // opencl version host code #ifdef OCL // arrays for the accelerator VectorDataType* data_points_for_accel = new VectorDataType[NUM_TRAINING * NUM_FEATURES / D_VECTOR_SIZE]; VectorLabelType* labels_for_accel = new VectorLabelType[NUM_TRAINING / L_VECTOR_SIZE]; VectorFeatureType* param_for_accel = new VectorFeatureType[NUM_FEATURES / F_VECTOR_SIZE]; // reorganize data for the accelerator // data points for (int i = 0; i < NUM_TRAINING * NUM_FEATURES / D_VECTOR_SIZE; i ++ ) for (int j = 0; j < D_VECTOR_SIZE; j ++ ) data_points_for_accel[i].range((j+1)*DTYPE_TWIDTH-1, j*DTYPE_TWIDTH) = data_points[i*D_VECTOR_SIZE+j].range(DTYPE_TWIDTH-1, 0); // labels for (int i = 0; i < NUM_TRAINING / L_VECTOR_SIZE; i ++ ) for (int j = 0; j < L_VECTOR_SIZE; j ++ ) labels_for_accel[i].range((j+1)*LTYPE_WIDTH-1, j*LTYPE_WIDTH) = labels[i*L_VECTOR_SIZE+j].range(LTYPE_WIDTH-1, 0); // parameter vector for (int i = 0; i < NUM_FEATURES / F_VECTOR_SIZE; i ++ ) for (int j = 0; j < F_VECTOR_SIZE; j ++ ) param_for_accel[i].range((j+1)*FTYPE_TWIDTH-1, j*FTYPE_TWIDTH) = param_vector[i*F_VECTOR_SIZE+j].range(FTYPE_TWIDTH-1, 0); // create OpenCL world CLWorld spam_filter_world = CLWorld(TARGET_DEVICE, CL_DEVICE_TYPE_ACCELERATOR); // add the bitstream file spam_filter_world.addProgram(kernelFile); // create kernels CLKernel SgdLR(spam_filter_world.getContext(), spam_filter_world.getProgram(), "SgdLR", spam_filter_world.getDevice()); // create mem objects // use 4500 as training, 500 as test CLMemObj data_mem ( (void*)data_points_for_accel, sizeof(VectorDataType), NUM_TRAINING * NUM_FEATURES / D_VECTOR_SIZE, CL_MEM_READ_ONLY); CLMemObj label_mem( (void*)labels_for_accel, sizeof(VectorLabelType), NUM_TRAINING / L_VECTOR_SIZE, CL_MEM_READ_ONLY); CLMemObj param_mem( (void*)param_for_accel, sizeof(VectorFeatureType), NUM_FEATURES / F_VECTOR_SIZE, CL_MEM_READ_WRITE); // start timer gettimeofday(&start, 0); // add them to the world // added in sequence, each of them can be referenced by an index spam_filter_world.addMemObj(data_mem); spam_filter_world.addMemObj(label_mem); spam_filter_world.addMemObj(param_mem); // set work size int global_size[3] = {1, 1, 1}; int local_size[3] = {1, 1, 1}; SgdLR.set_global(global_size); SgdLR.set_local(local_size); // add them to the world // same with the index here spam_filter_world.addKernel(SgdLR); // set kernel arguments spam_filter_world.setMemKernelArg(0, 0, 0); spam_filter_world.setMemKernelArg(0, 1, 1); spam_filter_world.setMemKernelArg(0, 2, 2); // run! spam_filter_world.runKernels(); // read the param vector back spam_filter_world.readMemObj(2); // end timer gettimeofday(&end, 0); // reorganize the parameter vector for (int i = 0; i < NUM_FEATURES / F_VECTOR_SIZE; i ++ ) for (int j = 0; j < F_VECTOR_SIZE; j ++ ) param_vector[i*F_VECTOR_SIZE+j].range(FTYPE_TWIDTH-1, 0) = param_for_accel[i].range((j+1)*FTYPE_TWIDTH-1, j*FTYPE_TWIDTH); #endif // sdsoc version host code #ifdef SDSOC // allocate space for accelerator VectorDataType* data_points_for_accel = (VectorDataType*)sds_alloc_non_cacheable(sizeof(VectorDataType) * NUM_TRAINING * NUM_FEATURES / D_VECTOR_SIZE); VectorLabelType* labels_for_accel = (VectorLabelType*)sds_alloc(sizeof(VectorLabelType) * NUM_TRAINING / L_VECTOR_SIZE); VectorFeatureType* param_for_accel = (VectorFeatureType*)sds_alloc(sizeof(VectorFeatureType) * NUM_FEATURES / F_VECTOR_SIZE); // reorganize data for the accelerator // data points for (int i = 0; i < NUM_TRAINING * NUM_FEATURES / D_VECTOR_SIZE; i ++ ) for (int j = 0; j < D_VECTOR_SIZE; j ++ ) data_points_for_accel[i].range((j+1)*DTYPE_TWIDTH-1, j*DTYPE_TWIDTH) = data_points[i*D_VECTOR_SIZE+j].range(DTYPE_TWIDTH-1, 0); // labels for (int i = 0; i < NUM_TRAINING / L_VECTOR_SIZE; i ++ ) for (int j = 0; j < L_VECTOR_SIZE; j ++ ) labels_for_accel[i].range((j+1)*LTYPE_WIDTH-1, j*LTYPE_WIDTH) = labels[i*L_VECTOR_SIZE+j].range(LTYPE_WIDTH-1, 0); // parameter vector for (int i = 0; i < NUM_FEATURES / F_VECTOR_SIZE; i ++ ) for (int j = 0; j < F_VECTOR_SIZE; j ++ ) param_for_accel[i].range((j+1)*FTYPE_TWIDTH-1, j*FTYPE_TWIDTH) = param_vector[i*F_VECTOR_SIZE+j].range(FTYPE_TWIDTH-1, 0); // run the accelerator gettimeofday(&start, NULL); for (int epoch = 0; epoch < NUM_EPOCHS; epoch ++ ) { printf("epoch %d...\n", epoch); SgdLR(data_points_for_accel, labels_for_accel, param_for_accel, (epoch == 0), (epoch == 4)); } gettimeofday(&end, NULL); // reorganize the parameter vector for (int i = 0; i < NUM_FEATURES / F_VECTOR_SIZE; i ++ ) for (int j = 0; j < F_VECTOR_SIZE; j ++ ) param_vector[i*F_VECTOR_SIZE+j].range(FTYPE_TWIDTH-1, 0) = param_for_accel[i].range((j+1)*FTYPE_TWIDTH-1, j*FTYPE_TWIDTH); #endif // sw version host code #ifdef SW gettimeofday(&start, NULL); SgdLR_sw(data_points, labels, param_vector); gettimeofday(&end, NULL); #endif // check results printf("Checking results:\n"); check_results( param_vector, data_points, labels ); // 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 spam_filter_world.releaseWorld(); delete []data_points_for_accel; delete []labels_for_accel; delete []param_for_accel; #endif #ifdef SDSOC sds_free(data_points_for_accel); sds_free(labels_for_accel); sds_free(param_for_accel); #endif delete []data_points; delete []labels; delete []param_vector; return EXIT_SUCCESS; } ================================================ FILE: spam-filter/src/host/typedefs.h ================================================ /*===============================================================*/ /* */ /* typedefs.h */ /* */ /* Constant definitions and typedefs. */ /* */ /*===============================================================*/ #ifndef __TYPEDEFS_H__ #define __TYPEDEFS_H__ // dataset information const int NUM_FEATURES = 1024; const int NUM_SAMPLES = 5000; const int NUM_TRAINING = 4500; const int NUM_TESTING = 500; const int STEP_SIZE = 60000; const int NUM_EPOCHS = 5; const int DATA_SET_SIZE = NUM_FEATURES * NUM_SAMPLES; #ifdef OCL #include // target device // change here to map to a different device const std::string TARGET_DEVICE = "xilinx_aws-vu9p-f1-04261818_dynamic_5_0"; #endif // datatypes for accelerator #ifndef SW #ifdef SDSOC // embedded platforms have less off-chip bandwidth #define VFTYPE_WIDTH 64 #define VDTYPE_WIDTH 64 #else // take advantage of the off-chip bandwidth of ocl platforms #define VFTYPE_WIDTH 512 #define VDTYPE_WIDTH 512 #endif #include "ap_int.h" #include "ap_fixed.h" // features / parameters #define FTYPE_TWIDTH 32 #define FTYPE_IWIDTH 13 typedef ap_fixed FeatureType; typedef ap_uint VectorFeatureType; const unsigned int F_VECTOR_SIZE = VFTYPE_WIDTH / FTYPE_TWIDTH; // training data #define DTYPE_TWIDTH 16 #define DTYPE_IWIDTH 4 typedef ap_fixed DataType; typedef ap_uint VectorDataType; const unsigned int D_VECTOR_SIZE = VDTYPE_WIDTH / DTYPE_TWIDTH; // label #define LTYPE_WIDTH 8 #define VLTYPE_WIDTH 32 typedef ap_uint LabelType; typedef ap_uint VectorLabelType; const unsigned int L_VECTOR_SIZE = VLTYPE_WIDTH / LTYPE_WIDTH; // datatypes for the LUT #define LUTOUT_TWIDTH 12 #define LUTOUT_IWIDTH 2 #define LUTIN_TWIDTH 12 #define LUTIN_IWIDTH 4 typedef ap_ufixed<32, 20> TmpFixed; typedef ap_uint IdxFixed; typedef ap_fixed LutInFixed; typedef ap_fixed LutOutFixed; #else // software version uses C++ built-in datatypes typedef float FeatureType; typedef float DataType; typedef unsigned char LabelType; // and uses math functions to compute sigmoid values // no need to declare special datatype for sigmoid #endif #define PAR_FACTOR 32 #endif ================================================ FILE: spam-filter/src/host/utils.cpp ================================================ /*===============================================================*/ /* */ /* utils.cpp */ /* */ /* Utility functions */ /* */ /*===============================================================*/ #include #include #include #include #include "utils.h" void print_usage(char* filename) { printf("usage: %s \n", filename); printf(" -f [kernel file]\n"); printf(" -p [path to data]\n"); } void parse_sdaccel_command_line_args( int argc, char** argv, std::string& kernelFile, std::string& path_to_data) { int c = 0; while ((c = getopt(argc, argv, "f:p:")) != -1) { switch (c) { case 'f': kernelFile = optarg; break; case 'p': path_to_data = optarg; break; default: { print_usage(argv[0]); exit(-1); } } // matching on arguments } // while args present } void parse_sdsoc_command_line_args( int argc, char** argv, std::string& path_to_data) { int c = 0; while ((c = getopt(argc, argv, "f:p:")) != -1) { switch (c) { case 'p': path_to_data = optarg; break; default: { print_usage(argv[0]); exit(-1); } } // matching on arguments } // while args present } ================================================ FILE: spam-filter/src/host/utils.h ================================================ /*===============================================================*/ /* */ /* utils.h */ /* */ /* Utility functions */ /* */ /*===============================================================*/ void print_usage(char* filename); void parse_sdaccel_command_line_args( int argc, char** argv, std::string& kernelFile, std::string& path_to_data); void parse_sdsoc_command_line_args( int argc, char** argv, std::string& path_to_data); ================================================ FILE: spam-filter/src/ocl/lut.h ================================================ /*===============================================================*/ /* */ /* lut.h */ /* */ /* Stores the look-up table for sigmoid function. */ /* */ /*===============================================================*/ const int LUT_SIZE = 2048; static const LutOutFixed lut[LUT_SIZE] = { 0.500000, 0.500977, 0.501953, 0.502930, 0.503906, 0.504883, 0.505859, 0.506836, 0.507812, 0.508789, 0.509766, 0.510742, 0.511719, 0.512695, 0.513672, 0.514648, 0.515625, 0.516602, 0.517578, 0.518555, 0.519531, 0.520508, 0.521484, 0.522461, 0.523438, 0.524414, 0.525391, 0.526367, 0.527344, 0.528320, 0.529297, 0.530273, 0.531250, 0.532227, 0.533203, 0.534180, 0.535156, 0.536133, 0.537109, 0.538086, 0.539062, 0.540039, 0.541016, 0.541992, 0.542969, 0.543945, 0.544922, 0.545898, 0.546875, 0.547852, 0.548828, 0.549805, 0.550781, 0.551758, 0.552734, 0.553711, 0.554688, 0.555664, 0.556641, 0.557617, 0.558594, 0.559570, 0.560547, 0.561523, 0.562500, 0.563477, 0.564453, 0.565430, 0.566406, 0.567383, 0.568359, 0.569336, 0.570312, 0.571289, 0.572266, 0.573242, 0.574219, 0.575195, 0.576172, 0.577148, 0.578125, 0.579102, 0.580078, 0.581055, 0.582031, 0.583008, 0.583984, 0.584961, 0.585938, 0.586914, 0.587891, 0.588867, 0.588867, 0.589844, 0.590820, 0.591797, 0.592773, 0.593750, 0.594727, 0.595703, 0.596680, 0.597656, 0.598633, 0.599609, 0.600586, 0.601562, 0.602539, 0.603516, 0.604492, 0.605469, 0.606445, 0.607422, 0.608398, 0.609375, 0.610352, 0.611328, 0.612305, 0.612305, 0.613281, 0.614258, 0.615234, 0.616211, 0.617188, 0.618164, 0.619141, 0.620117, 0.621094, 0.622070, 0.623047, 0.624023, 0.625000, 0.625977, 0.626953, 0.627930, 0.627930, 0.628906, 0.629883, 0.630859, 0.631836, 0.632812, 0.633789, 0.634766, 0.635742, 0.636719, 0.637695, 0.638672, 0.639648, 0.640625, 0.640625, 0.641602, 0.642578, 0.643555, 0.644531, 0.645508, 0.646484, 0.647461, 0.648438, 0.649414, 0.650391, 0.650391, 0.651367, 0.652344, 0.653320, 0.654297, 0.655273, 0.656250, 0.657227, 0.658203, 0.659180, 0.660156, 0.660156, 0.661133, 0.662109, 0.663086, 0.664062, 0.665039, 0.666016, 0.666992, 0.667969, 0.667969, 0.668945, 0.669922, 0.670898, 0.671875, 0.672852, 0.673828, 0.674805, 0.674805, 0.675781, 0.676758, 0.677734, 0.678711, 0.679688, 0.680664, 0.681641, 0.681641, 0.682617, 0.683594, 0.684570, 0.685547, 0.686523, 0.687500, 0.687500, 0.688477, 0.689453, 0.690430, 0.691406, 0.692383, 0.693359, 0.693359, 0.694336, 0.695312, 0.696289, 0.697266, 0.698242, 0.699219, 0.699219, 0.700195, 0.701172, 0.702148, 0.703125, 0.704102, 0.704102, 0.705078, 0.706055, 0.707031, 0.708008, 0.708984, 0.708984, 0.709961, 0.710938, 0.711914, 0.712891, 0.712891, 0.713867, 0.714844, 0.715820, 0.716797, 0.717773, 0.717773, 0.718750, 0.719727, 0.720703, 0.721680, 0.721680, 0.722656, 0.723633, 0.724609, 0.725586, 0.725586, 0.726562, 0.727539, 0.728516, 0.729492, 0.729492, 0.730469, 0.731445, 0.732422, 0.732422, 0.733398, 0.734375, 0.735352, 0.736328, 0.736328, 0.737305, 0.738281, 0.739258, 0.739258, 0.740234, 0.741211, 0.742188, 0.743164, 0.743164, 0.744141, 0.745117, 0.746094, 0.746094, 0.747070, 0.748047, 0.749023, 0.749023, 0.750000, 0.750977, 0.751953, 0.751953, 0.752930, 0.753906, 0.754883, 0.754883, 0.755859, 0.756836, 0.756836, 0.757812, 0.758789, 0.759766, 0.759766, 0.760742, 0.761719, 0.762695, 0.762695, 0.763672, 0.764648, 0.764648, 0.765625, 0.766602, 0.767578, 0.767578, 0.768555, 0.769531, 0.769531, 0.770508, 0.771484, 0.772461, 0.772461, 0.773438, 0.774414, 0.774414, 0.775391, 0.776367, 0.776367, 0.777344, 0.778320, 0.779297, 0.779297, 0.780273, 0.781250, 0.781250, 0.782227, 0.783203, 0.783203, 0.784180, 0.785156, 0.785156, 0.786133, 0.787109, 0.787109, 0.788086, 0.789062, 0.789062, 0.790039, 0.791016, 0.791016, 0.791992, 0.792969, 0.792969, 0.793945, 0.794922, 0.794922, 0.795898, 0.796875, 0.796875, 0.797852, 0.797852, 0.798828, 0.799805, 0.799805, 0.800781, 0.801758, 0.801758, 0.802734, 0.803711, 0.803711, 0.804688, 0.804688, 0.805664, 0.806641, 0.806641, 0.807617, 0.808594, 0.808594, 0.809570, 0.809570, 0.810547, 0.811523, 0.811523, 0.812500, 0.812500, 0.813477, 0.814453, 0.814453, 0.815430, 0.816406, 0.816406, 0.817383, 0.817383, 0.818359, 0.818359, 0.819336, 0.820312, 0.820312, 0.821289, 0.821289, 0.822266, 0.823242, 0.823242, 0.824219, 0.824219, 0.825195, 0.825195, 0.826172, 0.827148, 0.827148, 0.828125, 0.828125, 0.829102, 0.829102, 0.830078, 0.831055, 0.831055, 0.832031, 0.832031, 0.833008, 0.833008, 0.833984, 0.833984, 0.834961, 0.835938, 0.835938, 0.836914, 0.836914, 0.837891, 0.837891, 0.838867, 0.838867, 0.839844, 0.839844, 0.840820, 0.841797, 0.841797, 0.842773, 0.842773, 0.843750, 0.843750, 0.844727, 0.844727, 0.845703, 0.845703, 0.846680, 0.846680, 0.847656, 0.847656, 0.848633, 0.848633, 0.849609, 0.849609, 0.850586, 0.850586, 0.851562, 0.851562, 0.852539, 0.852539, 0.853516, 0.853516, 0.854492, 0.854492, 0.855469, 0.855469, 0.856445, 0.856445, 0.857422, 0.857422, 0.858398, 0.858398, 0.859375, 0.859375, 0.860352, 0.860352, 0.861328, 0.861328, 0.862305, 0.862305, 0.863281, 0.863281, 0.864258, 0.864258, 0.864258, 0.865234, 0.865234, 0.866211, 0.866211, 0.867188, 0.867188, 0.868164, 0.868164, 0.869141, 0.869141, 0.870117, 0.870117, 0.870117, 0.871094, 0.871094, 0.872070, 0.872070, 0.873047, 0.873047, 0.874023, 0.874023, 0.874023, 0.875000, 0.875000, 0.875977, 0.875977, 0.876953, 0.876953, 0.876953, 0.877930, 0.877930, 0.878906, 0.878906, 0.879883, 0.879883, 0.879883, 0.880859, 0.880859, 0.881836, 0.881836, 0.882812, 0.882812, 0.882812, 0.883789, 0.883789, 0.884766, 0.884766, 0.884766, 0.885742, 0.885742, 0.886719, 0.886719, 0.886719, 0.887695, 0.887695, 0.888672, 0.888672, 0.888672, 0.889648, 0.889648, 0.890625, 0.890625, 0.890625, 0.891602, 0.891602, 0.891602, 0.892578, 0.892578, 0.893555, 0.893555, 0.893555, 0.894531, 0.894531, 0.895508, 0.895508, 0.895508, 0.896484, 0.896484, 0.896484, 0.897461, 0.897461, 0.897461, 0.898438, 0.898438, 0.899414, 0.899414, 0.899414, 0.900391, 0.900391, 0.900391, 0.901367, 0.901367, 0.901367, 0.902344, 0.902344, 0.902344, 0.903320, 0.903320, 0.904297, 0.904297, 0.904297, 0.905273, 0.905273, 0.905273, 0.906250, 0.906250, 0.906250, 0.907227, 0.907227, 0.907227, 0.908203, 0.908203, 0.908203, 0.909180, 0.909180, 0.909180, 0.910156, 0.910156, 0.910156, 0.911133, 0.911133, 0.911133, 0.912109, 0.912109, 0.912109, 0.912109, 0.913086, 0.913086, 0.913086, 0.914062, 0.914062, 0.914062, 0.915039, 0.915039, 0.915039, 0.916016, 0.916016, 0.916016, 0.916992, 0.916992, 0.916992, 0.916992, 0.917969, 0.917969, 0.917969, 0.918945, 0.918945, 0.918945, 0.919922, 0.919922, 0.919922, 0.919922, 0.920898, 0.920898, 0.920898, 0.921875, 0.921875, 0.921875, 0.921875, 0.922852, 0.922852, 0.922852, 0.923828, 0.923828, 0.923828, 0.923828, 0.924805, 0.924805, 0.924805, 0.924805, 0.925781, 0.925781, 0.925781, 0.926758, 0.926758, 0.926758, 0.926758, 0.927734, 0.927734, 0.927734, 0.927734, 0.928711, 0.928711, 0.928711, 0.929688, 0.929688, 0.929688, 0.929688, 0.930664, 0.930664, 0.930664, 0.930664, 0.931641, 0.931641, 0.931641, 0.931641, 0.932617, 0.932617, 0.932617, 0.932617, 0.933594, 0.933594, 0.933594, 0.933594, 0.934570, 0.934570, 0.934570, 0.934570, 0.935547, 0.935547, 0.935547, 0.935547, 0.935547, 0.936523, 0.936523, 0.936523, 0.936523, 0.937500, 0.937500, 0.937500, 0.937500, 0.938477, 0.938477, 0.938477, 0.938477, 0.939453, 0.939453, 0.939453, 0.939453, 0.939453, 0.940430, 0.940430, 0.940430, 0.940430, 0.941406, 0.941406, 0.941406, 0.941406, 0.941406, 0.942383, 0.942383, 0.942383, 0.942383, 0.942383, 0.943359, 0.943359, 0.943359, 0.943359, 0.944336, 0.944336, 0.944336, 0.944336, 0.944336, 0.945312, 0.945312, 0.945312, 0.945312, 0.945312, 0.946289, 0.946289, 0.946289, 0.946289, 0.946289, 0.947266, 0.947266, 0.947266, 0.947266, 0.947266, 0.948242, 0.948242, 0.948242, 0.948242, 0.948242, 0.949219, 0.949219, 0.949219, 0.949219, 0.949219, 0.950195, 0.950195, 0.950195, 0.950195, 0.950195, 0.950195, 0.951172, 0.951172, 0.951172, 0.951172, 0.951172, 0.952148, 0.952148, 0.952148, 0.952148, 0.952148, 0.952148, 0.953125, 0.953125, 0.953125, 0.953125, 0.953125, 0.954102, 0.954102, 0.954102, 0.954102, 0.954102, 0.954102, 0.955078, 0.955078, 0.955078, 0.955078, 0.955078, 0.955078, 0.956055, 0.956055, 0.956055, 0.956055, 0.956055, 0.956055, 0.957031, 0.957031, 0.957031, 0.957031, 0.957031, 0.957031, 0.958008, 0.958008, 0.958008, 0.958008, 0.958008, 0.958008, 0.958984, 0.958984, 0.958984, 0.958984, 0.958984, 0.958984, 0.958984, 0.959961, 0.959961, 0.959961, 0.959961, 0.959961, 0.959961, 0.960938, 0.960938, 0.960938, 0.960938, 0.960938, 0.960938, 0.960938, 0.961914, 0.961914, 0.961914, 0.961914, 0.961914, 0.961914, 0.961914, 0.962891, 0.962891, 0.962891, 0.962891, 0.962891, 0.962891, 0.962891, 0.963867, 0.963867, 0.963867, 0.963867, 0.963867, 0.963867, 0.963867, 0.964844, 0.964844, 0.964844, 0.964844, 0.964844, 0.964844, 0.964844, 0.964844, 0.965820, 0.965820, 0.965820, 0.965820, 0.965820, 0.965820, 0.965820, 0.965820, 0.966797, 0.966797, 0.966797, 0.966797, 0.966797, 0.966797, 0.966797, 0.967773, 0.967773, 0.967773, 0.967773, 0.967773, 0.967773, 0.967773, 0.967773, 0.967773, 0.968750, 0.968750, 0.968750, 0.968750, 0.968750, 0.968750, 0.968750, 0.968750, 0.969727, 0.969727, 0.969727, 0.969727, 0.969727, 0.969727, 0.969727, 0.969727, 0.969727, 0.970703, 0.970703, 0.970703, 0.970703, 0.970703, 0.970703, 0.970703, 0.970703, 0.970703, 0.971680, 0.971680, 0.971680, 0.971680, 0.971680, 0.971680, 0.971680, 0.971680, 0.971680, 0.972656, 0.972656, 0.972656, 0.972656, 0.972656, 0.972656, 0.972656, 0.972656, 0.972656, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.981445, 0.981445, 0.981445, 0.981445, 0.981445, 0.981445, 0.981445, 0.981445, 0.981445, 0.017578, 0.017578, 0.017578, 0.017578, 0.017578, 0.017578, 0.017578, 0.017578, 0.017578, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.026367, 0.026367, 0.026367, 0.026367, 0.026367, 0.026367, 0.026367, 0.026367, 0.026367, 0.027344, 0.027344, 0.027344, 0.027344, 0.027344, 0.027344, 0.027344, 0.027344, 0.027344, 0.028320, 0.028320, 0.028320, 0.028320, 0.028320, 0.028320, 0.028320, 0.028320, 0.028320, 0.029297, 0.029297, 0.029297, 0.029297, 0.029297, 0.029297, 0.029297, 0.029297, 0.029297, 0.030273, 0.030273, 0.030273, 0.030273, 0.030273, 0.030273, 0.030273, 0.030273, 0.031250, 0.031250, 0.031250, 0.031250, 0.031250, 0.031250, 0.031250, 0.031250, 0.031250, 0.032227, 0.032227, 0.032227, 0.032227, 0.032227, 0.032227, 0.032227, 0.033203, 0.033203, 0.033203, 0.033203, 0.033203, 0.033203, 0.033203, 0.033203, 0.034180, 0.034180, 0.034180, 0.034180, 0.034180, 0.034180, 0.034180, 0.034180, 0.035156, 0.035156, 0.035156, 0.035156, 0.035156, 0.035156, 0.035156, 0.036133, 0.036133, 0.036133, 0.036133, 0.036133, 0.036133, 0.036133, 0.037109, 0.037109, 0.037109, 0.037109, 0.037109, 0.037109, 0.037109, 0.038086, 0.038086, 0.038086, 0.038086, 0.038086, 0.038086, 0.038086, 0.039062, 0.039062, 0.039062, 0.039062, 0.039062, 0.039062, 0.040039, 0.040039, 0.040039, 0.040039, 0.040039, 0.040039, 0.040039, 0.041016, 0.041016, 0.041016, 0.041016, 0.041016, 0.041016, 0.041992, 0.041992, 0.041992, 0.041992, 0.041992, 0.041992, 0.042969, 0.042969, 0.042969, 0.042969, 0.042969, 0.042969, 0.043945, 0.043945, 0.043945, 0.043945, 0.043945, 0.043945, 0.044922, 0.044922, 0.044922, 0.044922, 0.044922, 0.044922, 0.045898, 0.045898, 0.045898, 0.045898, 0.045898, 0.046875, 0.046875, 0.046875, 0.046875, 0.046875, 0.046875, 0.047852, 0.047852, 0.047852, 0.047852, 0.047852, 0.048828, 0.048828, 0.048828, 0.048828, 0.048828, 0.048828, 0.049805, 0.049805, 0.049805, 0.049805, 0.049805, 0.050781, 0.050781, 0.050781, 0.050781, 0.050781, 0.051758, 0.051758, 0.051758, 0.051758, 0.051758, 0.052734, 0.052734, 0.052734, 0.052734, 0.052734, 0.053711, 0.053711, 0.053711, 0.053711, 0.053711, 0.054688, 0.054688, 0.054688, 0.054688, 0.054688, 0.055664, 0.055664, 0.055664, 0.055664, 0.056641, 0.056641, 0.056641, 0.056641, 0.056641, 0.057617, 0.057617, 0.057617, 0.057617, 0.057617, 0.058594, 0.058594, 0.058594, 0.058594, 0.059570, 0.059570, 0.059570, 0.059570, 0.059570, 0.060547, 0.060547, 0.060547, 0.060547, 0.061523, 0.061523, 0.061523, 0.061523, 0.062500, 0.062500, 0.062500, 0.062500, 0.063477, 0.063477, 0.063477, 0.063477, 0.063477, 0.064453, 0.064453, 0.064453, 0.064453, 0.065430, 0.065430, 0.065430, 0.065430, 0.066406, 0.066406, 0.066406, 0.066406, 0.067383, 0.067383, 0.067383, 0.067383, 0.068359, 0.068359, 0.068359, 0.068359, 0.069336, 0.069336, 0.069336, 0.069336, 0.070312, 0.070312, 0.070312, 0.071289, 0.071289, 0.071289, 0.071289, 0.072266, 0.072266, 0.072266, 0.072266, 0.073242, 0.073242, 0.073242, 0.074219, 0.074219, 0.074219, 0.074219, 0.075195, 0.075195, 0.075195, 0.075195, 0.076172, 0.076172, 0.076172, 0.077148, 0.077148, 0.077148, 0.077148, 0.078125, 0.078125, 0.078125, 0.079102, 0.079102, 0.079102, 0.079102, 0.080078, 0.080078, 0.080078, 0.081055, 0.081055, 0.081055, 0.082031, 0.082031, 0.082031, 0.082031, 0.083008, 0.083008, 0.083008, 0.083984, 0.083984, 0.083984, 0.084961, 0.084961, 0.084961, 0.085938, 0.085938, 0.085938, 0.086914, 0.086914, 0.086914, 0.086914, 0.087891, 0.087891, 0.087891, 0.088867, 0.088867, 0.088867, 0.089844, 0.089844, 0.089844, 0.090820, 0.090820, 0.090820, 0.091797, 0.091797, 0.091797, 0.092773, 0.092773, 0.092773, 0.093750, 0.093750, 0.093750, 0.094727, 0.094727, 0.094727, 0.095703, 0.095703, 0.096680, 0.096680, 0.096680, 0.097656, 0.097656, 0.097656, 0.098633, 0.098633, 0.098633, 0.099609, 0.099609, 0.099609, 0.100586, 0.100586, 0.101562, 0.101562, 0.101562, 0.102539, 0.102539, 0.102539, 0.103516, 0.103516, 0.103516, 0.104492, 0.104492, 0.105469, 0.105469, 0.105469, 0.106445, 0.106445, 0.107422, 0.107422, 0.107422, 0.108398, 0.108398, 0.108398, 0.109375, 0.109375, 0.110352, 0.110352, 0.110352, 0.111328, 0.111328, 0.112305, 0.112305, 0.112305, 0.113281, 0.113281, 0.114258, 0.114258, 0.114258, 0.115234, 0.115234, 0.116211, 0.116211, 0.116211, 0.117188, 0.117188, 0.118164, 0.118164, 0.119141, 0.119141, 0.119141, 0.120117, 0.120117, 0.121094, 0.121094, 0.122070, 0.122070, 0.122070, 0.123047, 0.123047, 0.124023, 0.124023, 0.125000, 0.125000, 0.125000, 0.125977, 0.125977, 0.126953, 0.126953, 0.127930, 0.127930, 0.128906, 0.128906, 0.128906, 0.129883, 0.129883, 0.130859, 0.130859, 0.131836, 0.131836, 0.132812, 0.132812, 0.133789, 0.133789, 0.134766, 0.134766, 0.134766, 0.135742, 0.135742, 0.136719, 0.136719, 0.137695, 0.137695, 0.138672, 0.138672, 0.139648, 0.139648, 0.140625, 0.140625, 0.141602, 0.141602, 0.142578, 0.142578, 0.143555, 0.143555, 0.144531, 0.144531, 0.145508, 0.145508, 0.146484, 0.146484, 0.147461, 0.147461, 0.148438, 0.148438, 0.149414, 0.149414, 0.150391, 0.150391, 0.151367, 0.151367, 0.152344, 0.152344, 0.153320, 0.153320, 0.154297, 0.154297, 0.155273, 0.155273, 0.156250, 0.156250, 0.157227, 0.157227, 0.158203, 0.159180, 0.159180, 0.160156, 0.160156, 0.161133, 0.161133, 0.162109, 0.162109, 0.163086, 0.163086, 0.164062, 0.165039, 0.165039, 0.166016, 0.166016, 0.166992, 0.166992, 0.167969, 0.167969, 0.168945, 0.169922, 0.169922, 0.170898, 0.170898, 0.171875, 0.171875, 0.172852, 0.173828, 0.173828, 0.174805, 0.174805, 0.175781, 0.175781, 0.176758, 0.177734, 0.177734, 0.178711, 0.178711, 0.179688, 0.180664, 0.180664, 0.181641, 0.181641, 0.182617, 0.182617, 0.183594, 0.184570, 0.184570, 0.185547, 0.186523, 0.186523, 0.187500, 0.187500, 0.188477, 0.189453, 0.189453, 0.190430, 0.190430, 0.191406, 0.192383, 0.192383, 0.193359, 0.194336, 0.194336, 0.195312, 0.195312, 0.196289, 0.197266, 0.197266, 0.198242, 0.199219, 0.199219, 0.200195, 0.201172, 0.201172, 0.202148, 0.202148, 0.203125, 0.204102, 0.204102, 0.205078, 0.206055, 0.206055, 0.207031, 0.208008, 0.208008, 0.208984, 0.209961, 0.209961, 0.210938, 0.211914, 0.211914, 0.212891, 0.213867, 0.213867, 0.214844, 0.215820, 0.215820, 0.216797, 0.217773, 0.217773, 0.218750, 0.219727, 0.219727, 0.220703, 0.221680, 0.222656, 0.222656, 0.223633, 0.224609, 0.224609, 0.225586, 0.226562, 0.226562, 0.227539, 0.228516, 0.229492, 0.229492, 0.230469, 0.231445, 0.231445, 0.232422, 0.233398, 0.234375, 0.234375, 0.235352, 0.236328, 0.236328, 0.237305, 0.238281, 0.239258, 0.239258, 0.240234, 0.241211, 0.242188, 0.242188, 0.243164, 0.244141, 0.244141, 0.245117, 0.246094, 0.247070, 0.247070, 0.248047, 0.249023, 0.250000, 0.250000, 0.250977, 0.251953, 0.252930, 0.252930, 0.253906, 0.254883, 0.255859, 0.255859, 0.256836, 0.257812, 0.258789, 0.259766, 0.259766, 0.260742, 0.261719, 0.262695, 0.262695, 0.263672, 0.264648, 0.265625, 0.266602, 0.266602, 0.267578, 0.268555, 0.269531, 0.269531, 0.270508, 0.271484, 0.272461, 0.273438, 0.273438, 0.274414, 0.275391, 0.276367, 0.277344, 0.277344, 0.278320, 0.279297, 0.280273, 0.281250, 0.281250, 0.282227, 0.283203, 0.284180, 0.285156, 0.286133, 0.286133, 0.287109, 0.288086, 0.289062, 0.290039, 0.290039, 0.291016, 0.291992, 0.292969, 0.293945, 0.294922, 0.294922, 0.295898, 0.296875, 0.297852, 0.298828, 0.299805, 0.299805, 0.300781, 0.301758, 0.302734, 0.303711, 0.304688, 0.305664, 0.305664, 0.306641, 0.307617, 0.308594, 0.309570, 0.310547, 0.311523, 0.311523, 0.312500, 0.313477, 0.314453, 0.315430, 0.316406, 0.317383, 0.317383, 0.318359, 0.319336, 0.320312, 0.321289, 0.322266, 0.323242, 0.324219, 0.324219, 0.325195, 0.326172, 0.327148, 0.328125, 0.329102, 0.330078, 0.331055, 0.331055, 0.332031, 0.333008, 0.333984, 0.334961, 0.335938, 0.336914, 0.337891, 0.338867, 0.338867, 0.339844, 0.340820, 0.341797, 0.342773, 0.343750, 0.344727, 0.345703, 0.346680, 0.347656, 0.348633, 0.348633, 0.349609, 0.350586, 0.351562, 0.352539, 0.353516, 0.354492, 0.355469, 0.356445, 0.357422, 0.358398, 0.358398, 0.359375, 0.360352, 0.361328, 0.362305, 0.363281, 0.364258, 0.365234, 0.366211, 0.367188, 0.368164, 0.369141, 0.370117, 0.371094, 0.371094, 0.372070, 0.373047, 0.374023, 0.375000, 0.375977, 0.376953, 0.377930, 0.378906, 0.379883, 0.380859, 0.381836, 0.382812, 0.383789, 0.384766, 0.385742, 0.386719, 0.386719, 0.387695, 0.388672, 0.389648, 0.390625, 0.391602, 0.392578, 0.393555, 0.394531, 0.395508, 0.396484, 0.397461, 0.398438, 0.399414, 0.400391, 0.401367, 0.402344, 0.403320, 0.404297, 0.405273, 0.406250, 0.407227, 0.408203, 0.409180, 0.410156, 0.410156, 0.411133, 0.412109, 0.413086, 0.414062, 0.415039, 0.416016, 0.416992, 0.417969, 0.418945, 0.419922, 0.420898, 0.421875, 0.422852, 0.423828, 0.424805, 0.425781, 0.426758, 0.427734, 0.428711, 0.429688, 0.430664, 0.431641, 0.432617, 0.433594, 0.434570, 0.435547, 0.436523, 0.437500, 0.438477, 0.439453, 0.440430, 0.441406, 0.442383, 0.443359, 0.444336, 0.445312, 0.446289, 0.447266, 0.448242, 0.449219, 0.450195, 0.451172, 0.452148, 0.453125, 0.454102, 0.455078, 0.456055, 0.457031, 0.458008, 0.458984, 0.459961, 0.460938, 0.461914, 0.462891, 0.463867, 0.464844, 0.465820, 0.466797, 0.467773, 0.468750, 0.469727, 0.470703, 0.471680, 0.472656, 0.473633, 0.474609, 0.475586, 0.476562, 0.477539, 0.478516, 0.479492, 0.480469, 0.481445, 0.482422, 0.483398, 0.484375, 0.485352, 0.486328, 0.487305, 0.488281, 0.489258, 0.490234, 0.491211, 0.492188, 0.493164, 0.494141, 0.495117, 0.496094, 0.497070, 0.498047, 0.499023 }; ================================================ FILE: spam-filter/src/ocl/sgd.cpp ================================================ /*===============================================================*/ /* */ /* sgd.cpp */ /* */ /* Hardware function for spam filtering. */ /* */ /*===============================================================*/ #include "host/typedefs.h" #include "ocl/lut.h" // Function to compute the dot product of data (feature) vector and parameter vector FeatureType dotProduct(FeatureType param[NUM_FEATURES], DataType feature[NUM_FEATURES]) { #pragma HLS INLINE FeatureType result = 0; DOT: for (int i = 0; i < NUM_FEATURES / PAR_FACTOR; i++) { #pragma HLS PIPELINE II=1 DOT_INNER: for(int j = 0; j < PAR_FACTOR; j++) { FeatureType term = param[i*PAR_FACTOR+j] * feature[i*PAR_FACTOR+j]; result += term; } } return result; } // values of sigmoid function stored in a look-up table FeatureType useLUT(FeatureType in) { #pragma HLS INLINE IdxFixed index; if (in < 0) { in = -in; index = (IdxFixed)LUT_SIZE - (IdxFixed)(((TmpFixed)in) << (LUTIN_TWIDTH - LUTIN_IWIDTH)); } else index = ((TmpFixed)in) << (LUTIN_TWIDTH - LUTIN_IWIDTH); return lut[index]; } // Function to compute the probability. The Sigmoid function is implemented using BRAMS // to store the value of Sigmoid function for values relevant to this application FeatureType Sigmoid(FeatureType exponent) { #pragma HLS INLINE if (exponent > 4) return 1.0; else if (exponent < -4) return 0.0; else { LutInFixed inLut = (LutInFixed)exponent; return useLUT(inLut); } } // Compute the gradient of the cost function void computeGradient( FeatureType grad[NUM_FEATURES], DataType feature[NUM_FEATURES], FeatureType scale) { #pragma HLS INLINE GRAD: for (int i = 0; i < NUM_FEATURES / PAR_FACTOR; i++) { #pragma HLS PIPELINE II=1 GRAD_INNER: for (int j = 0; j < PAR_FACTOR; j++) grad[i*PAR_FACTOR+j] = (scale * feature[i*PAR_FACTOR+j]); } } // Update the parameter vector void updateParameter( FeatureType param[NUM_FEATURES], FeatureType grad[NUM_FEATURES], FeatureType scale) { #pragma HLS INLINE UPDATE: for (int i = 0; i < NUM_FEATURES / PAR_FACTOR; i++) { #pragma HLS PIPELINE II=1 UPDATE_INNER: for (int j = 0; j < PAR_FACTOR; j++) param[i*PAR_FACTOR+j] += scale * grad[i*PAR_FACTOR+j]; } } // wrapper for the streamin part // prevent incorrect flattening void read_data(VectorDataType data[NUM_FEATURES * NUM_TRAINING / D_VECTOR_SIZE], DataType training_instance[NUM_FEATURES], int training_id) { #pragma HLS inline const int unroll_factor = PAR_FACTOR; #pragma HLS array_partition variable=training_instance cyclic factor=unroll_factor READ_TRAINING_DATA: for (int i = 0; i < NUM_FEATURES / D_VECTOR_SIZE; i ++ ) { #pragma HLS pipeline VectorFeatureType tmp_data = data[training_id * NUM_FEATURES / D_VECTOR_SIZE + i]; READ_TRAINING_DATA_INNER: for (int j = 0; j < D_VECTOR_SIZE; j ++ ) training_instance[i * D_VECTOR_SIZE + j].range(DTYPE_TWIDTH-1, 0) = tmp_data.range((j+1)*DTYPE_TWIDTH-1, j*DTYPE_TWIDTH); } } // wrapper, wraps the compute part for dataflow void compute(FeatureType theta_local[NUM_FEATURES], LabelType label_local[NUM_TRAINING], DataType training_instance[NUM_FEATURES], int training_id) { // array for storing gradient static FeatureType gradient[NUM_FEATURES]; const int unroll_factor = PAR_FACTOR; #pragma HLS array_partition variable=gradient cyclic factor=unroll_factor // step size FeatureType step = STEP_SIZE; // do dot product with the parameter vector FeatureType dot = dotProduct(theta_local, training_instance); // do sigmoid function FeatureType prob = Sigmoid(dot); // get the label LabelType training_label = label_local[training_id]; // compute gradient computeGradient(gradient, training_instance, (prob-training_label)); // update the param vector updateParameter(theta_local, gradient, -step); } extern "C" { void SgdLR( VectorDataType data[NUM_FEATURES * NUM_TRAINING / D_VECTOR_SIZE], VectorLabelType label[NUM_TRAINING / L_VECTOR_SIZE], VectorFeatureType theta[NUM_FEATURES / F_VECTOR_SIZE]) { #pragma HLS INTERFACE m_axi port=data offset=slave bundle=gmem0 #pragma HLS INTERFACE m_axi port=label offset=slave bundle=gmem1 #pragma HLS INTERFACE m_axi port=theta offset=slave bundle=gmem2 #pragma HLS INTERFACE s_axilite port=data bundle=control #pragma HLS INTERFACE s_axilite port=label bundle=control #pragma HLS INTERFACE s_axilite port=theta bundle=control #pragma HLS INTERFACE s_axilite port=return bundle=control // intermediate variables const int unroll_factor = PAR_FACTOR; // local version of the parameters static FeatureType theta_local[NUM_FEATURES]; #pragma HLS array_partition variable=theta_local cyclic factor=unroll_factor // local buffer of labels static LabelType label_local[NUM_TRAINING]; #pragma HLS array_partition variable=label_local cyclic factor=L_VECTOR_SIZE // array for storing one training instance static DataType training_instance[NUM_FEATURES]; #pragma HLS array_partition variable=training_instance cyclic factor=unroll_factor // initialize local parameters PARAM_INIT: for (int i = 0; i < NUM_FEATURES / F_VECTOR_SIZE; i ++ ) { #pragma HLS pipeline VectorFeatureType tmp_theta = theta[i]; PARAM_INIT_INNER: for (int j = 0; j < F_VECTOR_SIZE; j ++ ) theta_local[i * F_VECTOR_SIZE + j].range(FTYPE_TWIDTH-1, 0) = tmp_theta.range((j+1)*FTYPE_TWIDTH-1, j*FTYPE_TWIDTH); } // copy in labels LABEL_CP: for (int i = 0; i < NUM_TRAINING / L_VECTOR_SIZE; i ++ ) { #pragma HLS pipeline VectorLabelType tmp_label = label[i]; LABEL_CP_INNER: for (int j = 0; j < L_VECTOR_SIZE; j ++ ) label_local[i * L_VECTOR_SIZE + j].range(LTYPE_WIDTH-1, 0) = tmp_label.range((j+1)*LTYPE_WIDTH-1, j*LTYPE_WIDTH); } // main loop // runs for multiple epochs EPOCH: for (int epoch = 0; epoch < NUM_EPOCHS; epoch ++) { // in each epoch, go through each training instance in sequence TRAINING_INST: for( int training_id = 0; training_id < NUM_TRAINING; training_id ++ ) { #pragma HLS dataflow // first reads in the training instance read_data(data, training_instance, training_id); // compute part compute(theta_local, label_local, training_instance, training_id); } } // stream out the result STREAM_OUT: for (int i = 0; i < NUM_FEATURES / F_VECTOR_SIZE; i ++ ) { #pragma HLS pipeline VectorFeatureType tmp_theta = 0; STREAM_OUT_INNER: for (int j = 0; j < F_VECTOR_SIZE; j ++ ) tmp_theta.range((j+1)*FTYPE_TWIDTH-1, j*FTYPE_TWIDTH) = theta_local[i * F_VECTOR_SIZE + j].range(FTYPE_TWIDTH-1, 0); theta[i] = tmp_theta; } } } ================================================ FILE: spam-filter/src/sdsoc/lut.h ================================================ /*===============================================================*/ /* */ /* lut.h */ /* */ /* Stores the look-up table for sigmoid function. */ /* */ /*===============================================================*/ const int LUT_SIZE = 2048; static const LutOutFixed lut[LUT_SIZE] = { 0.500000, 0.500977, 0.501953, 0.502930, 0.503906, 0.504883, 0.505859, 0.506836, 0.507812, 0.508789, 0.509766, 0.510742, 0.511719, 0.512695, 0.513672, 0.514648, 0.515625, 0.516602, 0.517578, 0.518555, 0.519531, 0.520508, 0.521484, 0.522461, 0.523438, 0.524414, 0.525391, 0.526367, 0.527344, 0.528320, 0.529297, 0.530273, 0.531250, 0.532227, 0.533203, 0.534180, 0.535156, 0.536133, 0.537109, 0.538086, 0.539062, 0.540039, 0.541016, 0.541992, 0.542969, 0.543945, 0.544922, 0.545898, 0.546875, 0.547852, 0.548828, 0.549805, 0.550781, 0.551758, 0.552734, 0.553711, 0.554688, 0.555664, 0.556641, 0.557617, 0.558594, 0.559570, 0.560547, 0.561523, 0.562500, 0.563477, 0.564453, 0.565430, 0.566406, 0.567383, 0.568359, 0.569336, 0.570312, 0.571289, 0.572266, 0.573242, 0.574219, 0.575195, 0.576172, 0.577148, 0.578125, 0.579102, 0.580078, 0.581055, 0.582031, 0.583008, 0.583984, 0.584961, 0.585938, 0.586914, 0.587891, 0.588867, 0.588867, 0.589844, 0.590820, 0.591797, 0.592773, 0.593750, 0.594727, 0.595703, 0.596680, 0.597656, 0.598633, 0.599609, 0.600586, 0.601562, 0.602539, 0.603516, 0.604492, 0.605469, 0.606445, 0.607422, 0.608398, 0.609375, 0.610352, 0.611328, 0.612305, 0.612305, 0.613281, 0.614258, 0.615234, 0.616211, 0.617188, 0.618164, 0.619141, 0.620117, 0.621094, 0.622070, 0.623047, 0.624023, 0.625000, 0.625977, 0.626953, 0.627930, 0.627930, 0.628906, 0.629883, 0.630859, 0.631836, 0.632812, 0.633789, 0.634766, 0.635742, 0.636719, 0.637695, 0.638672, 0.639648, 0.640625, 0.640625, 0.641602, 0.642578, 0.643555, 0.644531, 0.645508, 0.646484, 0.647461, 0.648438, 0.649414, 0.650391, 0.650391, 0.651367, 0.652344, 0.653320, 0.654297, 0.655273, 0.656250, 0.657227, 0.658203, 0.659180, 0.660156, 0.660156, 0.661133, 0.662109, 0.663086, 0.664062, 0.665039, 0.666016, 0.666992, 0.667969, 0.667969, 0.668945, 0.669922, 0.670898, 0.671875, 0.672852, 0.673828, 0.674805, 0.674805, 0.675781, 0.676758, 0.677734, 0.678711, 0.679688, 0.680664, 0.681641, 0.681641, 0.682617, 0.683594, 0.684570, 0.685547, 0.686523, 0.687500, 0.687500, 0.688477, 0.689453, 0.690430, 0.691406, 0.692383, 0.693359, 0.693359, 0.694336, 0.695312, 0.696289, 0.697266, 0.698242, 0.699219, 0.699219, 0.700195, 0.701172, 0.702148, 0.703125, 0.704102, 0.704102, 0.705078, 0.706055, 0.707031, 0.708008, 0.708984, 0.708984, 0.709961, 0.710938, 0.711914, 0.712891, 0.712891, 0.713867, 0.714844, 0.715820, 0.716797, 0.717773, 0.717773, 0.718750, 0.719727, 0.720703, 0.721680, 0.721680, 0.722656, 0.723633, 0.724609, 0.725586, 0.725586, 0.726562, 0.727539, 0.728516, 0.729492, 0.729492, 0.730469, 0.731445, 0.732422, 0.732422, 0.733398, 0.734375, 0.735352, 0.736328, 0.736328, 0.737305, 0.738281, 0.739258, 0.739258, 0.740234, 0.741211, 0.742188, 0.743164, 0.743164, 0.744141, 0.745117, 0.746094, 0.746094, 0.747070, 0.748047, 0.749023, 0.749023, 0.750000, 0.750977, 0.751953, 0.751953, 0.752930, 0.753906, 0.754883, 0.754883, 0.755859, 0.756836, 0.756836, 0.757812, 0.758789, 0.759766, 0.759766, 0.760742, 0.761719, 0.762695, 0.762695, 0.763672, 0.764648, 0.764648, 0.765625, 0.766602, 0.767578, 0.767578, 0.768555, 0.769531, 0.769531, 0.770508, 0.771484, 0.772461, 0.772461, 0.773438, 0.774414, 0.774414, 0.775391, 0.776367, 0.776367, 0.777344, 0.778320, 0.779297, 0.779297, 0.780273, 0.781250, 0.781250, 0.782227, 0.783203, 0.783203, 0.784180, 0.785156, 0.785156, 0.786133, 0.787109, 0.787109, 0.788086, 0.789062, 0.789062, 0.790039, 0.791016, 0.791016, 0.791992, 0.792969, 0.792969, 0.793945, 0.794922, 0.794922, 0.795898, 0.796875, 0.796875, 0.797852, 0.797852, 0.798828, 0.799805, 0.799805, 0.800781, 0.801758, 0.801758, 0.802734, 0.803711, 0.803711, 0.804688, 0.804688, 0.805664, 0.806641, 0.806641, 0.807617, 0.808594, 0.808594, 0.809570, 0.809570, 0.810547, 0.811523, 0.811523, 0.812500, 0.812500, 0.813477, 0.814453, 0.814453, 0.815430, 0.816406, 0.816406, 0.817383, 0.817383, 0.818359, 0.818359, 0.819336, 0.820312, 0.820312, 0.821289, 0.821289, 0.822266, 0.823242, 0.823242, 0.824219, 0.824219, 0.825195, 0.825195, 0.826172, 0.827148, 0.827148, 0.828125, 0.828125, 0.829102, 0.829102, 0.830078, 0.831055, 0.831055, 0.832031, 0.832031, 0.833008, 0.833008, 0.833984, 0.833984, 0.834961, 0.835938, 0.835938, 0.836914, 0.836914, 0.837891, 0.837891, 0.838867, 0.838867, 0.839844, 0.839844, 0.840820, 0.841797, 0.841797, 0.842773, 0.842773, 0.843750, 0.843750, 0.844727, 0.844727, 0.845703, 0.845703, 0.846680, 0.846680, 0.847656, 0.847656, 0.848633, 0.848633, 0.849609, 0.849609, 0.850586, 0.850586, 0.851562, 0.851562, 0.852539, 0.852539, 0.853516, 0.853516, 0.854492, 0.854492, 0.855469, 0.855469, 0.856445, 0.856445, 0.857422, 0.857422, 0.858398, 0.858398, 0.859375, 0.859375, 0.860352, 0.860352, 0.861328, 0.861328, 0.862305, 0.862305, 0.863281, 0.863281, 0.864258, 0.864258, 0.864258, 0.865234, 0.865234, 0.866211, 0.866211, 0.867188, 0.867188, 0.868164, 0.868164, 0.869141, 0.869141, 0.870117, 0.870117, 0.870117, 0.871094, 0.871094, 0.872070, 0.872070, 0.873047, 0.873047, 0.874023, 0.874023, 0.874023, 0.875000, 0.875000, 0.875977, 0.875977, 0.876953, 0.876953, 0.876953, 0.877930, 0.877930, 0.878906, 0.878906, 0.879883, 0.879883, 0.879883, 0.880859, 0.880859, 0.881836, 0.881836, 0.882812, 0.882812, 0.882812, 0.883789, 0.883789, 0.884766, 0.884766, 0.884766, 0.885742, 0.885742, 0.886719, 0.886719, 0.886719, 0.887695, 0.887695, 0.888672, 0.888672, 0.888672, 0.889648, 0.889648, 0.890625, 0.890625, 0.890625, 0.891602, 0.891602, 0.891602, 0.892578, 0.892578, 0.893555, 0.893555, 0.893555, 0.894531, 0.894531, 0.895508, 0.895508, 0.895508, 0.896484, 0.896484, 0.896484, 0.897461, 0.897461, 0.897461, 0.898438, 0.898438, 0.899414, 0.899414, 0.899414, 0.900391, 0.900391, 0.900391, 0.901367, 0.901367, 0.901367, 0.902344, 0.902344, 0.902344, 0.903320, 0.903320, 0.904297, 0.904297, 0.904297, 0.905273, 0.905273, 0.905273, 0.906250, 0.906250, 0.906250, 0.907227, 0.907227, 0.907227, 0.908203, 0.908203, 0.908203, 0.909180, 0.909180, 0.909180, 0.910156, 0.910156, 0.910156, 0.911133, 0.911133, 0.911133, 0.912109, 0.912109, 0.912109, 0.912109, 0.913086, 0.913086, 0.913086, 0.914062, 0.914062, 0.914062, 0.915039, 0.915039, 0.915039, 0.916016, 0.916016, 0.916016, 0.916992, 0.916992, 0.916992, 0.916992, 0.917969, 0.917969, 0.917969, 0.918945, 0.918945, 0.918945, 0.919922, 0.919922, 0.919922, 0.919922, 0.920898, 0.920898, 0.920898, 0.921875, 0.921875, 0.921875, 0.921875, 0.922852, 0.922852, 0.922852, 0.923828, 0.923828, 0.923828, 0.923828, 0.924805, 0.924805, 0.924805, 0.924805, 0.925781, 0.925781, 0.925781, 0.926758, 0.926758, 0.926758, 0.926758, 0.927734, 0.927734, 0.927734, 0.927734, 0.928711, 0.928711, 0.928711, 0.929688, 0.929688, 0.929688, 0.929688, 0.930664, 0.930664, 0.930664, 0.930664, 0.931641, 0.931641, 0.931641, 0.931641, 0.932617, 0.932617, 0.932617, 0.932617, 0.933594, 0.933594, 0.933594, 0.933594, 0.934570, 0.934570, 0.934570, 0.934570, 0.935547, 0.935547, 0.935547, 0.935547, 0.935547, 0.936523, 0.936523, 0.936523, 0.936523, 0.937500, 0.937500, 0.937500, 0.937500, 0.938477, 0.938477, 0.938477, 0.938477, 0.939453, 0.939453, 0.939453, 0.939453, 0.939453, 0.940430, 0.940430, 0.940430, 0.940430, 0.941406, 0.941406, 0.941406, 0.941406, 0.941406, 0.942383, 0.942383, 0.942383, 0.942383, 0.942383, 0.943359, 0.943359, 0.943359, 0.943359, 0.944336, 0.944336, 0.944336, 0.944336, 0.944336, 0.945312, 0.945312, 0.945312, 0.945312, 0.945312, 0.946289, 0.946289, 0.946289, 0.946289, 0.946289, 0.947266, 0.947266, 0.947266, 0.947266, 0.947266, 0.948242, 0.948242, 0.948242, 0.948242, 0.948242, 0.949219, 0.949219, 0.949219, 0.949219, 0.949219, 0.950195, 0.950195, 0.950195, 0.950195, 0.950195, 0.950195, 0.951172, 0.951172, 0.951172, 0.951172, 0.951172, 0.952148, 0.952148, 0.952148, 0.952148, 0.952148, 0.952148, 0.953125, 0.953125, 0.953125, 0.953125, 0.953125, 0.954102, 0.954102, 0.954102, 0.954102, 0.954102, 0.954102, 0.955078, 0.955078, 0.955078, 0.955078, 0.955078, 0.955078, 0.956055, 0.956055, 0.956055, 0.956055, 0.956055, 0.956055, 0.957031, 0.957031, 0.957031, 0.957031, 0.957031, 0.957031, 0.958008, 0.958008, 0.958008, 0.958008, 0.958008, 0.958008, 0.958984, 0.958984, 0.958984, 0.958984, 0.958984, 0.958984, 0.958984, 0.959961, 0.959961, 0.959961, 0.959961, 0.959961, 0.959961, 0.960938, 0.960938, 0.960938, 0.960938, 0.960938, 0.960938, 0.960938, 0.961914, 0.961914, 0.961914, 0.961914, 0.961914, 0.961914, 0.961914, 0.962891, 0.962891, 0.962891, 0.962891, 0.962891, 0.962891, 0.962891, 0.963867, 0.963867, 0.963867, 0.963867, 0.963867, 0.963867, 0.963867, 0.964844, 0.964844, 0.964844, 0.964844, 0.964844, 0.964844, 0.964844, 0.964844, 0.965820, 0.965820, 0.965820, 0.965820, 0.965820, 0.965820, 0.965820, 0.965820, 0.966797, 0.966797, 0.966797, 0.966797, 0.966797, 0.966797, 0.966797, 0.967773, 0.967773, 0.967773, 0.967773, 0.967773, 0.967773, 0.967773, 0.967773, 0.967773, 0.968750, 0.968750, 0.968750, 0.968750, 0.968750, 0.968750, 0.968750, 0.968750, 0.969727, 0.969727, 0.969727, 0.969727, 0.969727, 0.969727, 0.969727, 0.969727, 0.969727, 0.970703, 0.970703, 0.970703, 0.970703, 0.970703, 0.970703, 0.970703, 0.970703, 0.970703, 0.971680, 0.971680, 0.971680, 0.971680, 0.971680, 0.971680, 0.971680, 0.971680, 0.971680, 0.972656, 0.972656, 0.972656, 0.972656, 0.972656, 0.972656, 0.972656, 0.972656, 0.972656, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.981445, 0.981445, 0.981445, 0.981445, 0.981445, 0.981445, 0.981445, 0.981445, 0.981445, 0.017578, 0.017578, 0.017578, 0.017578, 0.017578, 0.017578, 0.017578, 0.017578, 0.017578, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.026367, 0.026367, 0.026367, 0.026367, 0.026367, 0.026367, 0.026367, 0.026367, 0.026367, 0.027344, 0.027344, 0.027344, 0.027344, 0.027344, 0.027344, 0.027344, 0.027344, 0.027344, 0.028320, 0.028320, 0.028320, 0.028320, 0.028320, 0.028320, 0.028320, 0.028320, 0.028320, 0.029297, 0.029297, 0.029297, 0.029297, 0.029297, 0.029297, 0.029297, 0.029297, 0.029297, 0.030273, 0.030273, 0.030273, 0.030273, 0.030273, 0.030273, 0.030273, 0.030273, 0.031250, 0.031250, 0.031250, 0.031250, 0.031250, 0.031250, 0.031250, 0.031250, 0.031250, 0.032227, 0.032227, 0.032227, 0.032227, 0.032227, 0.032227, 0.032227, 0.033203, 0.033203, 0.033203, 0.033203, 0.033203, 0.033203, 0.033203, 0.033203, 0.034180, 0.034180, 0.034180, 0.034180, 0.034180, 0.034180, 0.034180, 0.034180, 0.035156, 0.035156, 0.035156, 0.035156, 0.035156, 0.035156, 0.035156, 0.036133, 0.036133, 0.036133, 0.036133, 0.036133, 0.036133, 0.036133, 0.037109, 0.037109, 0.037109, 0.037109, 0.037109, 0.037109, 0.037109, 0.038086, 0.038086, 0.038086, 0.038086, 0.038086, 0.038086, 0.038086, 0.039062, 0.039062, 0.039062, 0.039062, 0.039062, 0.039062, 0.040039, 0.040039, 0.040039, 0.040039, 0.040039, 0.040039, 0.040039, 0.041016, 0.041016, 0.041016, 0.041016, 0.041016, 0.041016, 0.041992, 0.041992, 0.041992, 0.041992, 0.041992, 0.041992, 0.042969, 0.042969, 0.042969, 0.042969, 0.042969, 0.042969, 0.043945, 0.043945, 0.043945, 0.043945, 0.043945, 0.043945, 0.044922, 0.044922, 0.044922, 0.044922, 0.044922, 0.044922, 0.045898, 0.045898, 0.045898, 0.045898, 0.045898, 0.046875, 0.046875, 0.046875, 0.046875, 0.046875, 0.046875, 0.047852, 0.047852, 0.047852, 0.047852, 0.047852, 0.048828, 0.048828, 0.048828, 0.048828, 0.048828, 0.048828, 0.049805, 0.049805, 0.049805, 0.049805, 0.049805, 0.050781, 0.050781, 0.050781, 0.050781, 0.050781, 0.051758, 0.051758, 0.051758, 0.051758, 0.051758, 0.052734, 0.052734, 0.052734, 0.052734, 0.052734, 0.053711, 0.053711, 0.053711, 0.053711, 0.053711, 0.054688, 0.054688, 0.054688, 0.054688, 0.054688, 0.055664, 0.055664, 0.055664, 0.055664, 0.056641, 0.056641, 0.056641, 0.056641, 0.056641, 0.057617, 0.057617, 0.057617, 0.057617, 0.057617, 0.058594, 0.058594, 0.058594, 0.058594, 0.059570, 0.059570, 0.059570, 0.059570, 0.059570, 0.060547, 0.060547, 0.060547, 0.060547, 0.061523, 0.061523, 0.061523, 0.061523, 0.062500, 0.062500, 0.062500, 0.062500, 0.063477, 0.063477, 0.063477, 0.063477, 0.063477, 0.064453, 0.064453, 0.064453, 0.064453, 0.065430, 0.065430, 0.065430, 0.065430, 0.066406, 0.066406, 0.066406, 0.066406, 0.067383, 0.067383, 0.067383, 0.067383, 0.068359, 0.068359, 0.068359, 0.068359, 0.069336, 0.069336, 0.069336, 0.069336, 0.070312, 0.070312, 0.070312, 0.071289, 0.071289, 0.071289, 0.071289, 0.072266, 0.072266, 0.072266, 0.072266, 0.073242, 0.073242, 0.073242, 0.074219, 0.074219, 0.074219, 0.074219, 0.075195, 0.075195, 0.075195, 0.075195, 0.076172, 0.076172, 0.076172, 0.077148, 0.077148, 0.077148, 0.077148, 0.078125, 0.078125, 0.078125, 0.079102, 0.079102, 0.079102, 0.079102, 0.080078, 0.080078, 0.080078, 0.081055, 0.081055, 0.081055, 0.082031, 0.082031, 0.082031, 0.082031, 0.083008, 0.083008, 0.083008, 0.083984, 0.083984, 0.083984, 0.084961, 0.084961, 0.084961, 0.085938, 0.085938, 0.085938, 0.086914, 0.086914, 0.086914, 0.086914, 0.087891, 0.087891, 0.087891, 0.088867, 0.088867, 0.088867, 0.089844, 0.089844, 0.089844, 0.090820, 0.090820, 0.090820, 0.091797, 0.091797, 0.091797, 0.092773, 0.092773, 0.092773, 0.093750, 0.093750, 0.093750, 0.094727, 0.094727, 0.094727, 0.095703, 0.095703, 0.096680, 0.096680, 0.096680, 0.097656, 0.097656, 0.097656, 0.098633, 0.098633, 0.098633, 0.099609, 0.099609, 0.099609, 0.100586, 0.100586, 0.101562, 0.101562, 0.101562, 0.102539, 0.102539, 0.102539, 0.103516, 0.103516, 0.103516, 0.104492, 0.104492, 0.105469, 0.105469, 0.105469, 0.106445, 0.106445, 0.107422, 0.107422, 0.107422, 0.108398, 0.108398, 0.108398, 0.109375, 0.109375, 0.110352, 0.110352, 0.110352, 0.111328, 0.111328, 0.112305, 0.112305, 0.112305, 0.113281, 0.113281, 0.114258, 0.114258, 0.114258, 0.115234, 0.115234, 0.116211, 0.116211, 0.116211, 0.117188, 0.117188, 0.118164, 0.118164, 0.119141, 0.119141, 0.119141, 0.120117, 0.120117, 0.121094, 0.121094, 0.122070, 0.122070, 0.122070, 0.123047, 0.123047, 0.124023, 0.124023, 0.125000, 0.125000, 0.125000, 0.125977, 0.125977, 0.126953, 0.126953, 0.127930, 0.127930, 0.128906, 0.128906, 0.128906, 0.129883, 0.129883, 0.130859, 0.130859, 0.131836, 0.131836, 0.132812, 0.132812, 0.133789, 0.133789, 0.134766, 0.134766, 0.134766, 0.135742, 0.135742, 0.136719, 0.136719, 0.137695, 0.137695, 0.138672, 0.138672, 0.139648, 0.139648, 0.140625, 0.140625, 0.141602, 0.141602, 0.142578, 0.142578, 0.143555, 0.143555, 0.144531, 0.144531, 0.145508, 0.145508, 0.146484, 0.146484, 0.147461, 0.147461, 0.148438, 0.148438, 0.149414, 0.149414, 0.150391, 0.150391, 0.151367, 0.151367, 0.152344, 0.152344, 0.153320, 0.153320, 0.154297, 0.154297, 0.155273, 0.155273, 0.156250, 0.156250, 0.157227, 0.157227, 0.158203, 0.159180, 0.159180, 0.160156, 0.160156, 0.161133, 0.161133, 0.162109, 0.162109, 0.163086, 0.163086, 0.164062, 0.165039, 0.165039, 0.166016, 0.166016, 0.166992, 0.166992, 0.167969, 0.167969, 0.168945, 0.169922, 0.169922, 0.170898, 0.170898, 0.171875, 0.171875, 0.172852, 0.173828, 0.173828, 0.174805, 0.174805, 0.175781, 0.175781, 0.176758, 0.177734, 0.177734, 0.178711, 0.178711, 0.179688, 0.180664, 0.180664, 0.181641, 0.181641, 0.182617, 0.182617, 0.183594, 0.184570, 0.184570, 0.185547, 0.186523, 0.186523, 0.187500, 0.187500, 0.188477, 0.189453, 0.189453, 0.190430, 0.190430, 0.191406, 0.192383, 0.192383, 0.193359, 0.194336, 0.194336, 0.195312, 0.195312, 0.196289, 0.197266, 0.197266, 0.198242, 0.199219, 0.199219, 0.200195, 0.201172, 0.201172, 0.202148, 0.202148, 0.203125, 0.204102, 0.204102, 0.205078, 0.206055, 0.206055, 0.207031, 0.208008, 0.208008, 0.208984, 0.209961, 0.209961, 0.210938, 0.211914, 0.211914, 0.212891, 0.213867, 0.213867, 0.214844, 0.215820, 0.215820, 0.216797, 0.217773, 0.217773, 0.218750, 0.219727, 0.219727, 0.220703, 0.221680, 0.222656, 0.222656, 0.223633, 0.224609, 0.224609, 0.225586, 0.226562, 0.226562, 0.227539, 0.228516, 0.229492, 0.229492, 0.230469, 0.231445, 0.231445, 0.232422, 0.233398, 0.234375, 0.234375, 0.235352, 0.236328, 0.236328, 0.237305, 0.238281, 0.239258, 0.239258, 0.240234, 0.241211, 0.242188, 0.242188, 0.243164, 0.244141, 0.244141, 0.245117, 0.246094, 0.247070, 0.247070, 0.248047, 0.249023, 0.250000, 0.250000, 0.250977, 0.251953, 0.252930, 0.252930, 0.253906, 0.254883, 0.255859, 0.255859, 0.256836, 0.257812, 0.258789, 0.259766, 0.259766, 0.260742, 0.261719, 0.262695, 0.262695, 0.263672, 0.264648, 0.265625, 0.266602, 0.266602, 0.267578, 0.268555, 0.269531, 0.269531, 0.270508, 0.271484, 0.272461, 0.273438, 0.273438, 0.274414, 0.275391, 0.276367, 0.277344, 0.277344, 0.278320, 0.279297, 0.280273, 0.281250, 0.281250, 0.282227, 0.283203, 0.284180, 0.285156, 0.286133, 0.286133, 0.287109, 0.288086, 0.289062, 0.290039, 0.290039, 0.291016, 0.291992, 0.292969, 0.293945, 0.294922, 0.294922, 0.295898, 0.296875, 0.297852, 0.298828, 0.299805, 0.299805, 0.300781, 0.301758, 0.302734, 0.303711, 0.304688, 0.305664, 0.305664, 0.306641, 0.307617, 0.308594, 0.309570, 0.310547, 0.311523, 0.311523, 0.312500, 0.313477, 0.314453, 0.315430, 0.316406, 0.317383, 0.317383, 0.318359, 0.319336, 0.320312, 0.321289, 0.322266, 0.323242, 0.324219, 0.324219, 0.325195, 0.326172, 0.327148, 0.328125, 0.329102, 0.330078, 0.331055, 0.331055, 0.332031, 0.333008, 0.333984, 0.334961, 0.335938, 0.336914, 0.337891, 0.338867, 0.338867, 0.339844, 0.340820, 0.341797, 0.342773, 0.343750, 0.344727, 0.345703, 0.346680, 0.347656, 0.348633, 0.348633, 0.349609, 0.350586, 0.351562, 0.352539, 0.353516, 0.354492, 0.355469, 0.356445, 0.357422, 0.358398, 0.358398, 0.359375, 0.360352, 0.361328, 0.362305, 0.363281, 0.364258, 0.365234, 0.366211, 0.367188, 0.368164, 0.369141, 0.370117, 0.371094, 0.371094, 0.372070, 0.373047, 0.374023, 0.375000, 0.375977, 0.376953, 0.377930, 0.378906, 0.379883, 0.380859, 0.381836, 0.382812, 0.383789, 0.384766, 0.385742, 0.386719, 0.386719, 0.387695, 0.388672, 0.389648, 0.390625, 0.391602, 0.392578, 0.393555, 0.394531, 0.395508, 0.396484, 0.397461, 0.398438, 0.399414, 0.400391, 0.401367, 0.402344, 0.403320, 0.404297, 0.405273, 0.406250, 0.407227, 0.408203, 0.409180, 0.410156, 0.410156, 0.411133, 0.412109, 0.413086, 0.414062, 0.415039, 0.416016, 0.416992, 0.417969, 0.418945, 0.419922, 0.420898, 0.421875, 0.422852, 0.423828, 0.424805, 0.425781, 0.426758, 0.427734, 0.428711, 0.429688, 0.430664, 0.431641, 0.432617, 0.433594, 0.434570, 0.435547, 0.436523, 0.437500, 0.438477, 0.439453, 0.440430, 0.441406, 0.442383, 0.443359, 0.444336, 0.445312, 0.446289, 0.447266, 0.448242, 0.449219, 0.450195, 0.451172, 0.452148, 0.453125, 0.454102, 0.455078, 0.456055, 0.457031, 0.458008, 0.458984, 0.459961, 0.460938, 0.461914, 0.462891, 0.463867, 0.464844, 0.465820, 0.466797, 0.467773, 0.468750, 0.469727, 0.470703, 0.471680, 0.472656, 0.473633, 0.474609, 0.475586, 0.476562, 0.477539, 0.478516, 0.479492, 0.480469, 0.481445, 0.482422, 0.483398, 0.484375, 0.485352, 0.486328, 0.487305, 0.488281, 0.489258, 0.490234, 0.491211, 0.492188, 0.493164, 0.494141, 0.495117, 0.496094, 0.497070, 0.498047, 0.499023 }; ================================================ FILE: spam-filter/src/sdsoc/sgd.cpp ================================================ /*===============================================================*/ /* */ /* sgd.cpp */ /* */ /* Hardware function for spam filtering. */ /* */ /*===============================================================*/ #include "sgd.h" #include "lut.h" // wrapper for the streamin part // prevent incorrect flattening void read_data(VectorDataType data[NUM_FEATURES / D_VECTOR_SIZE], DataType training_instance[NUM_FEATURES]) { #pragma HLS INLINE READ_TRAINING_DATA: for (int i = 0; i < NUM_FEATURES / D_VECTOR_SIZE; i ++ ) { #pragma HLS pipeline II=1 VectorFeatureType tmp_data = data[i]; READ_TRAINING_DATA_INNER: for (int j = 0; j < D_VECTOR_SIZE; j ++ ) training_instance[i * D_VECTOR_SIZE + j].range(DTYPE_TWIDTH-1, 0) = tmp_data.range((j+1)*DTYPE_TWIDTH-1, j*DTYPE_TWIDTH); } } // Function to compute the dot product of data (feature) vector and parameter vector FeatureType dotProduct(FeatureType param[NUM_FEATURES], DataType feature[NUM_FEATURES]) { #pragma HLS INLINE const int unroll_factor = PAR_FACTOR; #pragma HLS array_partition variable=param cyclic factor=unroll_factor #pragma HLS array_partition variable=param cyclic factor=unroll_factor FeatureType result = 0; DOT: for (int i = 0; i < NUM_FEATURES / PAR_FACTOR; i++) { #pragma HLS PIPELINE II=1 DOT_INNER: for(int j = 0; j < PAR_FACTOR; j++) { FeatureType term = param[i*PAR_FACTOR+j] * feature[i*PAR_FACTOR+j]; result += term; } } return result; } // values of sigmoid function stored in a look-up table FeatureType useLUT(FeatureType in) { #pragma HLS INLINE IdxFixed index; if (in < 0) { in = -in; index = (IdxFixed)LUT_SIZE - (IdxFixed)(((TmpFixed)in) << (LUTIN_TWIDTH - LUTIN_IWIDTH)); } else index = ((TmpFixed)in) << (LUTIN_TWIDTH - LUTIN_IWIDTH); return lut[index]; } // Function to compute the probability. The Sigmoid function is implemented using BRAMS // to store the value of Sigmoid function for values relevant to this application FeatureType Sigmoid(FeatureType exponent) { #pragma HLS INLINE if (exponent > 4) return 1.0; else if (exponent < -4) return 0.0; else { LutInFixed inLut = (LutInFixed)exponent; return useLUT(inLut); } } // Compute the gradient of the cost function void computeGradient( FeatureType grad[NUM_FEATURES], DataType feature[NUM_FEATURES], FeatureType scale) { #pragma HLS INLINE const int unroll_factor = PAR_FACTOR; #pragma HLS array_partition variable=grad cyclic factor=unroll_factor #pragma HLS array_partition variable=feature cyclic factor=unroll_factor GRAD: for (int i = 0; i < NUM_FEATURES / PAR_FACTOR; i++) { #pragma HLS PIPELINE II=1 GRAD_INNER: for (int j = 0; j < PAR_FACTOR; j++) grad[i*PAR_FACTOR+j] = (scale * feature[i*PAR_FACTOR+j]); } } // Update the parameter vector void updateParameter( FeatureType param[NUM_FEATURES], FeatureType grad[NUM_FEATURES], FeatureType scale) { #pragma HLS INLINE const int unroll_factor = PAR_FACTOR; #pragma HLS array_partition variable=grad cyclic factor=unroll_factor #pragma HLS array_partition variable=param cyclic factor=unroll_factor UPDATE: for (int i = 0; i < NUM_FEATURES / PAR_FACTOR; i++) { #pragma HLS PIPELINE II=1 UPDATE_INNER: for (int j = 0; j < PAR_FACTOR; j++) param[i*PAR_FACTOR+j] += scale * grad[i*PAR_FACTOR+j]; } } // stream out the data void streamOut(FeatureType theta_local[NUM_FEATURES], VectorFeatureType theta[NUM_FEATURES / F_VECTOR_SIZE]) { #pragma HLS INLINE // stream out the result STREAM_OUT: for (int i = 0; i < NUM_FEATURES / F_VECTOR_SIZE; i ++ ) { #pragma HLS pipeline II=1 VectorFeatureType tmp_theta = 0; STREAM_OUT_INNER: for (int j = 0; j < F_VECTOR_SIZE; j ++ ) tmp_theta.range((j+1)*FTYPE_TWIDTH-1, j*FTYPE_TWIDTH) = theta_local[i * F_VECTOR_SIZE + j].range(FTYPE_TWIDTH-1, 0); theta[i] = tmp_theta; } } // wrapper, wraps the compute part for dataflow void compute(FeatureType theta_local[NUM_FEATURES], LabelType training_label, DataType training_instance[NUM_FEATURES]) { // array for storing gradient FeatureType gradient[NUM_FEATURES]; // step size FeatureType step = STEP_SIZE; // do dot product with the parameter vector FeatureType dot = dotProduct(theta_local, training_instance); // do sigmoid function FeatureType prob = Sigmoid(dot); // compute gradient computeGradient(gradient, training_instance, (prob-training_label)); // update the param vector updateParameter(theta_local, gradient, -step); } // top-level function void SgdLR( VectorDataType data[NUM_FEATURES * NUM_TRAINING / D_VECTOR_SIZE], VectorLabelType label[NUM_TRAINING / L_VECTOR_SIZE], VectorFeatureType theta[NUM_FEATURES / F_VECTOR_SIZE], bool readLabels, bool writeOutput) { // intermediate variables // local version of the parameters static FeatureType theta_local[NUM_FEATURES]; // local buffer of labels static LabelType label_local[NUM_TRAINING]; #pragma HLS array_partition variable=label_local cyclic factor=L_VECTOR_SIZE // array for storing one training instance static DataType training_instance[NUM_FEATURES]; if (readLabels) { // copy in labels LABEL_CP: for (int i = 0; i < NUM_TRAINING / L_VECTOR_SIZE; i ++ ) { #pragma HLS pipeline VectorLabelType tmp_label = label[i]; LABEL_CP_INNER: for (int j = 0; j < L_VECTOR_SIZE; j ++ ) label_local[i * L_VECTOR_SIZE + j].range(LTYPE_WIDTH-1, 0) = tmp_label.range((j+1)*LTYPE_WIDTH-1, j*LTYPE_WIDTH); } } // main loop // in each epoch, go through each training instance in sequence TRAINING_INST: for( int training_id = 0; training_id < NUM_TRAINING; training_id ++ ) { #pragma HLS dataflow // get the label LabelType training_label = label_local[training_id]; // first reads in the training instance read_data(data + training_id * NUM_FEATURES / D_VECTOR_SIZE, training_instance); // compute part compute(theta_local, training_label, training_instance); } if (writeOutput) streamOut(theta_local, theta); } ================================================ FILE: spam-filter/src/sdsoc/sgd.h ================================================ /*===============================================================*/ /* */ /* sgd.h */ /* */ /* Top-level hardware function declaration */ /* */ /*===============================================================*/ #include "../host/typedefs.h" // top-level function declaration #pragma SDS data mem_attribute(data:NON_CACHEABLE|PHYSICAL_CONTIGUOUS, label:CACHEABLE|PHYSICAL_CONTIGUOUS, theta:CACHEABLE|PHYSICAL_CONTIGUOUS) #pragma SDS data data_mover(data:AXIDMA_SG, label:AXIFIFO, theta:AXIDMA_SG) #pragma SDS data sys_port(data:AFI, label:AFI, theta:AFI) #pragma SDS data zero_copy(theta[0:NUM_FEATURES / F_VECTOR_SIZE]) #pragma SDS data copy(data[0:NUM_FEATURES * NUM_TRAINING/D_VECTOR_SIZE]) #pragma SDS data zero_copy(label[0:NUM_TRAINING/L_VECTOR_SIZE]) #pragma SDS data access_pattern(data:SEQUENTIAL, label:SEQUENTIAL, theta:SEQUENTIAL) void SgdLR( VectorDataType data[NUM_FEATURES * NUM_TRAINING / D_VECTOR_SIZE], VectorLabelType label[NUM_TRAINING / L_VECTOR_SIZE], VectorFeatureType theta[NUM_FEATURES / F_VECTOR_SIZE], bool readLabels, bool writeOutput); ================================================ FILE: spam-filter/src/sw/lut.h ================================================ /*===============================================================*/ /* */ /* lut.h */ /* */ /* Stores the look-up table for sigmoid function. */ /* */ /*===============================================================*/ const int LUT_SIZE = 2048; static const float lut[LUT_SIZE] = { 0.500000, 0.500977, 0.501953, 0.502930, 0.503906, 0.504883, 0.505859, 0.506836, 0.507812, 0.508789, 0.509766, 0.510742, 0.511719, 0.512695, 0.513672, 0.514648, 0.515625, 0.516602, 0.517578, 0.518555, 0.519531, 0.520508, 0.521484, 0.522461, 0.523438, 0.524414, 0.525391, 0.526367, 0.527344, 0.528320, 0.529297, 0.530273, 0.531250, 0.532227, 0.533203, 0.534180, 0.535156, 0.536133, 0.537109, 0.538086, 0.539062, 0.540039, 0.541016, 0.541992, 0.542969, 0.543945, 0.544922, 0.545898, 0.546875, 0.547852, 0.548828, 0.549805, 0.550781, 0.551758, 0.552734, 0.553711, 0.554688, 0.555664, 0.556641, 0.557617, 0.558594, 0.559570, 0.560547, 0.561523, 0.562500, 0.563477, 0.564453, 0.565430, 0.566406, 0.567383, 0.568359, 0.569336, 0.570312, 0.571289, 0.572266, 0.573242, 0.574219, 0.575195, 0.576172, 0.577148, 0.578125, 0.579102, 0.580078, 0.581055, 0.582031, 0.583008, 0.583984, 0.584961, 0.585938, 0.586914, 0.587891, 0.588867, 0.588867, 0.589844, 0.590820, 0.591797, 0.592773, 0.593750, 0.594727, 0.595703, 0.596680, 0.597656, 0.598633, 0.599609, 0.600586, 0.601562, 0.602539, 0.603516, 0.604492, 0.605469, 0.606445, 0.607422, 0.608398, 0.609375, 0.610352, 0.611328, 0.612305, 0.612305, 0.613281, 0.614258, 0.615234, 0.616211, 0.617188, 0.618164, 0.619141, 0.620117, 0.621094, 0.622070, 0.623047, 0.624023, 0.625000, 0.625977, 0.626953, 0.627930, 0.627930, 0.628906, 0.629883, 0.630859, 0.631836, 0.632812, 0.633789, 0.634766, 0.635742, 0.636719, 0.637695, 0.638672, 0.639648, 0.640625, 0.640625, 0.641602, 0.642578, 0.643555, 0.644531, 0.645508, 0.646484, 0.647461, 0.648438, 0.649414, 0.650391, 0.650391, 0.651367, 0.652344, 0.653320, 0.654297, 0.655273, 0.656250, 0.657227, 0.658203, 0.659180, 0.660156, 0.660156, 0.661133, 0.662109, 0.663086, 0.664062, 0.665039, 0.666016, 0.666992, 0.667969, 0.667969, 0.668945, 0.669922, 0.670898, 0.671875, 0.672852, 0.673828, 0.674805, 0.674805, 0.675781, 0.676758, 0.677734, 0.678711, 0.679688, 0.680664, 0.681641, 0.681641, 0.682617, 0.683594, 0.684570, 0.685547, 0.686523, 0.687500, 0.687500, 0.688477, 0.689453, 0.690430, 0.691406, 0.692383, 0.693359, 0.693359, 0.694336, 0.695312, 0.696289, 0.697266, 0.698242, 0.699219, 0.699219, 0.700195, 0.701172, 0.702148, 0.703125, 0.704102, 0.704102, 0.705078, 0.706055, 0.707031, 0.708008, 0.708984, 0.708984, 0.709961, 0.710938, 0.711914, 0.712891, 0.712891, 0.713867, 0.714844, 0.715820, 0.716797, 0.717773, 0.717773, 0.718750, 0.719727, 0.720703, 0.721680, 0.721680, 0.722656, 0.723633, 0.724609, 0.725586, 0.725586, 0.726562, 0.727539, 0.728516, 0.729492, 0.729492, 0.730469, 0.731445, 0.732422, 0.732422, 0.733398, 0.734375, 0.735352, 0.736328, 0.736328, 0.737305, 0.738281, 0.739258, 0.739258, 0.740234, 0.741211, 0.742188, 0.743164, 0.743164, 0.744141, 0.745117, 0.746094, 0.746094, 0.747070, 0.748047, 0.749023, 0.749023, 0.750000, 0.750977, 0.751953, 0.751953, 0.752930, 0.753906, 0.754883, 0.754883, 0.755859, 0.756836, 0.756836, 0.757812, 0.758789, 0.759766, 0.759766, 0.760742, 0.761719, 0.762695, 0.762695, 0.763672, 0.764648, 0.764648, 0.765625, 0.766602, 0.767578, 0.767578, 0.768555, 0.769531, 0.769531, 0.770508, 0.771484, 0.772461, 0.772461, 0.773438, 0.774414, 0.774414, 0.775391, 0.776367, 0.776367, 0.777344, 0.778320, 0.779297, 0.779297, 0.780273, 0.781250, 0.781250, 0.782227, 0.783203, 0.783203, 0.784180, 0.785156, 0.785156, 0.786133, 0.787109, 0.787109, 0.788086, 0.789062, 0.789062, 0.790039, 0.791016, 0.791016, 0.791992, 0.792969, 0.792969, 0.793945, 0.794922, 0.794922, 0.795898, 0.796875, 0.796875, 0.797852, 0.797852, 0.798828, 0.799805, 0.799805, 0.800781, 0.801758, 0.801758, 0.802734, 0.803711, 0.803711, 0.804688, 0.804688, 0.805664, 0.806641, 0.806641, 0.807617, 0.808594, 0.808594, 0.809570, 0.809570, 0.810547, 0.811523, 0.811523, 0.812500, 0.812500, 0.813477, 0.814453, 0.814453, 0.815430, 0.816406, 0.816406, 0.817383, 0.817383, 0.818359, 0.818359, 0.819336, 0.820312, 0.820312, 0.821289, 0.821289, 0.822266, 0.823242, 0.823242, 0.824219, 0.824219, 0.825195, 0.825195, 0.826172, 0.827148, 0.827148, 0.828125, 0.828125, 0.829102, 0.829102, 0.830078, 0.831055, 0.831055, 0.832031, 0.832031, 0.833008, 0.833008, 0.833984, 0.833984, 0.834961, 0.835938, 0.835938, 0.836914, 0.836914, 0.837891, 0.837891, 0.838867, 0.838867, 0.839844, 0.839844, 0.840820, 0.841797, 0.841797, 0.842773, 0.842773, 0.843750, 0.843750, 0.844727, 0.844727, 0.845703, 0.845703, 0.846680, 0.846680, 0.847656, 0.847656, 0.848633, 0.848633, 0.849609, 0.849609, 0.850586, 0.850586, 0.851562, 0.851562, 0.852539, 0.852539, 0.853516, 0.853516, 0.854492, 0.854492, 0.855469, 0.855469, 0.856445, 0.856445, 0.857422, 0.857422, 0.858398, 0.858398, 0.859375, 0.859375, 0.860352, 0.860352, 0.861328, 0.861328, 0.862305, 0.862305, 0.863281, 0.863281, 0.864258, 0.864258, 0.864258, 0.865234, 0.865234, 0.866211, 0.866211, 0.867188, 0.867188, 0.868164, 0.868164, 0.869141, 0.869141, 0.870117, 0.870117, 0.870117, 0.871094, 0.871094, 0.872070, 0.872070, 0.873047, 0.873047, 0.874023, 0.874023, 0.874023, 0.875000, 0.875000, 0.875977, 0.875977, 0.876953, 0.876953, 0.876953, 0.877930, 0.877930, 0.878906, 0.878906, 0.879883, 0.879883, 0.879883, 0.880859, 0.880859, 0.881836, 0.881836, 0.882812, 0.882812, 0.882812, 0.883789, 0.883789, 0.884766, 0.884766, 0.884766, 0.885742, 0.885742, 0.886719, 0.886719, 0.886719, 0.887695, 0.887695, 0.888672, 0.888672, 0.888672, 0.889648, 0.889648, 0.890625, 0.890625, 0.890625, 0.891602, 0.891602, 0.891602, 0.892578, 0.892578, 0.893555, 0.893555, 0.893555, 0.894531, 0.894531, 0.895508, 0.895508, 0.895508, 0.896484, 0.896484, 0.896484, 0.897461, 0.897461, 0.897461, 0.898438, 0.898438, 0.899414, 0.899414, 0.899414, 0.900391, 0.900391, 0.900391, 0.901367, 0.901367, 0.901367, 0.902344, 0.902344, 0.902344, 0.903320, 0.903320, 0.904297, 0.904297, 0.904297, 0.905273, 0.905273, 0.905273, 0.906250, 0.906250, 0.906250, 0.907227, 0.907227, 0.907227, 0.908203, 0.908203, 0.908203, 0.909180, 0.909180, 0.909180, 0.910156, 0.910156, 0.910156, 0.911133, 0.911133, 0.911133, 0.912109, 0.912109, 0.912109, 0.912109, 0.913086, 0.913086, 0.913086, 0.914062, 0.914062, 0.914062, 0.915039, 0.915039, 0.915039, 0.916016, 0.916016, 0.916016, 0.916992, 0.916992, 0.916992, 0.916992, 0.917969, 0.917969, 0.917969, 0.918945, 0.918945, 0.918945, 0.919922, 0.919922, 0.919922, 0.919922, 0.920898, 0.920898, 0.920898, 0.921875, 0.921875, 0.921875, 0.921875, 0.922852, 0.922852, 0.922852, 0.923828, 0.923828, 0.923828, 0.923828, 0.924805, 0.924805, 0.924805, 0.924805, 0.925781, 0.925781, 0.925781, 0.926758, 0.926758, 0.926758, 0.926758, 0.927734, 0.927734, 0.927734, 0.927734, 0.928711, 0.928711, 0.928711, 0.929688, 0.929688, 0.929688, 0.929688, 0.930664, 0.930664, 0.930664, 0.930664, 0.931641, 0.931641, 0.931641, 0.931641, 0.932617, 0.932617, 0.932617, 0.932617, 0.933594, 0.933594, 0.933594, 0.933594, 0.934570, 0.934570, 0.934570, 0.934570, 0.935547, 0.935547, 0.935547, 0.935547, 0.935547, 0.936523, 0.936523, 0.936523, 0.936523, 0.937500, 0.937500, 0.937500, 0.937500, 0.938477, 0.938477, 0.938477, 0.938477, 0.939453, 0.939453, 0.939453, 0.939453, 0.939453, 0.940430, 0.940430, 0.940430, 0.940430, 0.941406, 0.941406, 0.941406, 0.941406, 0.941406, 0.942383, 0.942383, 0.942383, 0.942383, 0.942383, 0.943359, 0.943359, 0.943359, 0.943359, 0.944336, 0.944336, 0.944336, 0.944336, 0.944336, 0.945312, 0.945312, 0.945312, 0.945312, 0.945312, 0.946289, 0.946289, 0.946289, 0.946289, 0.946289, 0.947266, 0.947266, 0.947266, 0.947266, 0.947266, 0.948242, 0.948242, 0.948242, 0.948242, 0.948242, 0.949219, 0.949219, 0.949219, 0.949219, 0.949219, 0.950195, 0.950195, 0.950195, 0.950195, 0.950195, 0.950195, 0.951172, 0.951172, 0.951172, 0.951172, 0.951172, 0.952148, 0.952148, 0.952148, 0.952148, 0.952148, 0.952148, 0.953125, 0.953125, 0.953125, 0.953125, 0.953125, 0.954102, 0.954102, 0.954102, 0.954102, 0.954102, 0.954102, 0.955078, 0.955078, 0.955078, 0.955078, 0.955078, 0.955078, 0.956055, 0.956055, 0.956055, 0.956055, 0.956055, 0.956055, 0.957031, 0.957031, 0.957031, 0.957031, 0.957031, 0.957031, 0.958008, 0.958008, 0.958008, 0.958008, 0.958008, 0.958008, 0.958984, 0.958984, 0.958984, 0.958984, 0.958984, 0.958984, 0.958984, 0.959961, 0.959961, 0.959961, 0.959961, 0.959961, 0.959961, 0.960938, 0.960938, 0.960938, 0.960938, 0.960938, 0.960938, 0.960938, 0.961914, 0.961914, 0.961914, 0.961914, 0.961914, 0.961914, 0.961914, 0.962891, 0.962891, 0.962891, 0.962891, 0.962891, 0.962891, 0.962891, 0.963867, 0.963867, 0.963867, 0.963867, 0.963867, 0.963867, 0.963867, 0.964844, 0.964844, 0.964844, 0.964844, 0.964844, 0.964844, 0.964844, 0.964844, 0.965820, 0.965820, 0.965820, 0.965820, 0.965820, 0.965820, 0.965820, 0.965820, 0.966797, 0.966797, 0.966797, 0.966797, 0.966797, 0.966797, 0.966797, 0.967773, 0.967773, 0.967773, 0.967773, 0.967773, 0.967773, 0.967773, 0.967773, 0.967773, 0.968750, 0.968750, 0.968750, 0.968750, 0.968750, 0.968750, 0.968750, 0.968750, 0.969727, 0.969727, 0.969727, 0.969727, 0.969727, 0.969727, 0.969727, 0.969727, 0.969727, 0.970703, 0.970703, 0.970703, 0.970703, 0.970703, 0.970703, 0.970703, 0.970703, 0.970703, 0.971680, 0.971680, 0.971680, 0.971680, 0.971680, 0.971680, 0.971680, 0.971680, 0.971680, 0.972656, 0.972656, 0.972656, 0.972656, 0.972656, 0.972656, 0.972656, 0.972656, 0.972656, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.973633, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.974609, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.975586, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.976562, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.977539, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.978516, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.979492, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.980469, 0.981445, 0.981445, 0.981445, 0.981445, 0.981445, 0.981445, 0.981445, 0.981445, 0.981445, 0.017578, 0.017578, 0.017578, 0.017578, 0.017578, 0.017578, 0.017578, 0.017578, 0.017578, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.018555, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.019531, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.020508, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.021484, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.023438, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.024414, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.025391, 0.026367, 0.026367, 0.026367, 0.026367, 0.026367, 0.026367, 0.026367, 0.026367, 0.026367, 0.027344, 0.027344, 0.027344, 0.027344, 0.027344, 0.027344, 0.027344, 0.027344, 0.027344, 0.028320, 0.028320, 0.028320, 0.028320, 0.028320, 0.028320, 0.028320, 0.028320, 0.028320, 0.029297, 0.029297, 0.029297, 0.029297, 0.029297, 0.029297, 0.029297, 0.029297, 0.029297, 0.030273, 0.030273, 0.030273, 0.030273, 0.030273, 0.030273, 0.030273, 0.030273, 0.031250, 0.031250, 0.031250, 0.031250, 0.031250, 0.031250, 0.031250, 0.031250, 0.031250, 0.032227, 0.032227, 0.032227, 0.032227, 0.032227, 0.032227, 0.032227, 0.033203, 0.033203, 0.033203, 0.033203, 0.033203, 0.033203, 0.033203, 0.033203, 0.034180, 0.034180, 0.034180, 0.034180, 0.034180, 0.034180, 0.034180, 0.034180, 0.035156, 0.035156, 0.035156, 0.035156, 0.035156, 0.035156, 0.035156, 0.036133, 0.036133, 0.036133, 0.036133, 0.036133, 0.036133, 0.036133, 0.037109, 0.037109, 0.037109, 0.037109, 0.037109, 0.037109, 0.037109, 0.038086, 0.038086, 0.038086, 0.038086, 0.038086, 0.038086, 0.038086, 0.039062, 0.039062, 0.039062, 0.039062, 0.039062, 0.039062, 0.040039, 0.040039, 0.040039, 0.040039, 0.040039, 0.040039, 0.040039, 0.041016, 0.041016, 0.041016, 0.041016, 0.041016, 0.041016, 0.041992, 0.041992, 0.041992, 0.041992, 0.041992, 0.041992, 0.042969, 0.042969, 0.042969, 0.042969, 0.042969, 0.042969, 0.043945, 0.043945, 0.043945, 0.043945, 0.043945, 0.043945, 0.044922, 0.044922, 0.044922, 0.044922, 0.044922, 0.044922, 0.045898, 0.045898, 0.045898, 0.045898, 0.045898, 0.046875, 0.046875, 0.046875, 0.046875, 0.046875, 0.046875, 0.047852, 0.047852, 0.047852, 0.047852, 0.047852, 0.048828, 0.048828, 0.048828, 0.048828, 0.048828, 0.048828, 0.049805, 0.049805, 0.049805, 0.049805, 0.049805, 0.050781, 0.050781, 0.050781, 0.050781, 0.050781, 0.051758, 0.051758, 0.051758, 0.051758, 0.051758, 0.052734, 0.052734, 0.052734, 0.052734, 0.052734, 0.053711, 0.053711, 0.053711, 0.053711, 0.053711, 0.054688, 0.054688, 0.054688, 0.054688, 0.054688, 0.055664, 0.055664, 0.055664, 0.055664, 0.056641, 0.056641, 0.056641, 0.056641, 0.056641, 0.057617, 0.057617, 0.057617, 0.057617, 0.057617, 0.058594, 0.058594, 0.058594, 0.058594, 0.059570, 0.059570, 0.059570, 0.059570, 0.059570, 0.060547, 0.060547, 0.060547, 0.060547, 0.061523, 0.061523, 0.061523, 0.061523, 0.062500, 0.062500, 0.062500, 0.062500, 0.063477, 0.063477, 0.063477, 0.063477, 0.063477, 0.064453, 0.064453, 0.064453, 0.064453, 0.065430, 0.065430, 0.065430, 0.065430, 0.066406, 0.066406, 0.066406, 0.066406, 0.067383, 0.067383, 0.067383, 0.067383, 0.068359, 0.068359, 0.068359, 0.068359, 0.069336, 0.069336, 0.069336, 0.069336, 0.070312, 0.070312, 0.070312, 0.071289, 0.071289, 0.071289, 0.071289, 0.072266, 0.072266, 0.072266, 0.072266, 0.073242, 0.073242, 0.073242, 0.074219, 0.074219, 0.074219, 0.074219, 0.075195, 0.075195, 0.075195, 0.075195, 0.076172, 0.076172, 0.076172, 0.077148, 0.077148, 0.077148, 0.077148, 0.078125, 0.078125, 0.078125, 0.079102, 0.079102, 0.079102, 0.079102, 0.080078, 0.080078, 0.080078, 0.081055, 0.081055, 0.081055, 0.082031, 0.082031, 0.082031, 0.082031, 0.083008, 0.083008, 0.083008, 0.083984, 0.083984, 0.083984, 0.084961, 0.084961, 0.084961, 0.085938, 0.085938, 0.085938, 0.086914, 0.086914, 0.086914, 0.086914, 0.087891, 0.087891, 0.087891, 0.088867, 0.088867, 0.088867, 0.089844, 0.089844, 0.089844, 0.090820, 0.090820, 0.090820, 0.091797, 0.091797, 0.091797, 0.092773, 0.092773, 0.092773, 0.093750, 0.093750, 0.093750, 0.094727, 0.094727, 0.094727, 0.095703, 0.095703, 0.096680, 0.096680, 0.096680, 0.097656, 0.097656, 0.097656, 0.098633, 0.098633, 0.098633, 0.099609, 0.099609, 0.099609, 0.100586, 0.100586, 0.101562, 0.101562, 0.101562, 0.102539, 0.102539, 0.102539, 0.103516, 0.103516, 0.103516, 0.104492, 0.104492, 0.105469, 0.105469, 0.105469, 0.106445, 0.106445, 0.107422, 0.107422, 0.107422, 0.108398, 0.108398, 0.108398, 0.109375, 0.109375, 0.110352, 0.110352, 0.110352, 0.111328, 0.111328, 0.112305, 0.112305, 0.112305, 0.113281, 0.113281, 0.114258, 0.114258, 0.114258, 0.115234, 0.115234, 0.116211, 0.116211, 0.116211, 0.117188, 0.117188, 0.118164, 0.118164, 0.119141, 0.119141, 0.119141, 0.120117, 0.120117, 0.121094, 0.121094, 0.122070, 0.122070, 0.122070, 0.123047, 0.123047, 0.124023, 0.124023, 0.125000, 0.125000, 0.125000, 0.125977, 0.125977, 0.126953, 0.126953, 0.127930, 0.127930, 0.128906, 0.128906, 0.128906, 0.129883, 0.129883, 0.130859, 0.130859, 0.131836, 0.131836, 0.132812, 0.132812, 0.133789, 0.133789, 0.134766, 0.134766, 0.134766, 0.135742, 0.135742, 0.136719, 0.136719, 0.137695, 0.137695, 0.138672, 0.138672, 0.139648, 0.139648, 0.140625, 0.140625, 0.141602, 0.141602, 0.142578, 0.142578, 0.143555, 0.143555, 0.144531, 0.144531, 0.145508, 0.145508, 0.146484, 0.146484, 0.147461, 0.147461, 0.148438, 0.148438, 0.149414, 0.149414, 0.150391, 0.150391, 0.151367, 0.151367, 0.152344, 0.152344, 0.153320, 0.153320, 0.154297, 0.154297, 0.155273, 0.155273, 0.156250, 0.156250, 0.157227, 0.157227, 0.158203, 0.159180, 0.159180, 0.160156, 0.160156, 0.161133, 0.161133, 0.162109, 0.162109, 0.163086, 0.163086, 0.164062, 0.165039, 0.165039, 0.166016, 0.166016, 0.166992, 0.166992, 0.167969, 0.167969, 0.168945, 0.169922, 0.169922, 0.170898, 0.170898, 0.171875, 0.171875, 0.172852, 0.173828, 0.173828, 0.174805, 0.174805, 0.175781, 0.175781, 0.176758, 0.177734, 0.177734, 0.178711, 0.178711, 0.179688, 0.180664, 0.180664, 0.181641, 0.181641, 0.182617, 0.182617, 0.183594, 0.184570, 0.184570, 0.185547, 0.186523, 0.186523, 0.187500, 0.187500, 0.188477, 0.189453, 0.189453, 0.190430, 0.190430, 0.191406, 0.192383, 0.192383, 0.193359, 0.194336, 0.194336, 0.195312, 0.195312, 0.196289, 0.197266, 0.197266, 0.198242, 0.199219, 0.199219, 0.200195, 0.201172, 0.201172, 0.202148, 0.202148, 0.203125, 0.204102, 0.204102, 0.205078, 0.206055, 0.206055, 0.207031, 0.208008, 0.208008, 0.208984, 0.209961, 0.209961, 0.210938, 0.211914, 0.211914, 0.212891, 0.213867, 0.213867, 0.214844, 0.215820, 0.215820, 0.216797, 0.217773, 0.217773, 0.218750, 0.219727, 0.219727, 0.220703, 0.221680, 0.222656, 0.222656, 0.223633, 0.224609, 0.224609, 0.225586, 0.226562, 0.226562, 0.227539, 0.228516, 0.229492, 0.229492, 0.230469, 0.231445, 0.231445, 0.232422, 0.233398, 0.234375, 0.234375, 0.235352, 0.236328, 0.236328, 0.237305, 0.238281, 0.239258, 0.239258, 0.240234, 0.241211, 0.242188, 0.242188, 0.243164, 0.244141, 0.244141, 0.245117, 0.246094, 0.247070, 0.247070, 0.248047, 0.249023, 0.250000, 0.250000, 0.250977, 0.251953, 0.252930, 0.252930, 0.253906, 0.254883, 0.255859, 0.255859, 0.256836, 0.257812, 0.258789, 0.259766, 0.259766, 0.260742, 0.261719, 0.262695, 0.262695, 0.263672, 0.264648, 0.265625, 0.266602, 0.266602, 0.267578, 0.268555, 0.269531, 0.269531, 0.270508, 0.271484, 0.272461, 0.273438, 0.273438, 0.274414, 0.275391, 0.276367, 0.277344, 0.277344, 0.278320, 0.279297, 0.280273, 0.281250, 0.281250, 0.282227, 0.283203, 0.284180, 0.285156, 0.286133, 0.286133, 0.287109, 0.288086, 0.289062, 0.290039, 0.290039, 0.291016, 0.291992, 0.292969, 0.293945, 0.294922, 0.294922, 0.295898, 0.296875, 0.297852, 0.298828, 0.299805, 0.299805, 0.300781, 0.301758, 0.302734, 0.303711, 0.304688, 0.305664, 0.305664, 0.306641, 0.307617, 0.308594, 0.309570, 0.310547, 0.311523, 0.311523, 0.312500, 0.313477, 0.314453, 0.315430, 0.316406, 0.317383, 0.317383, 0.318359, 0.319336, 0.320312, 0.321289, 0.322266, 0.323242, 0.324219, 0.324219, 0.325195, 0.326172, 0.327148, 0.328125, 0.329102, 0.330078, 0.331055, 0.331055, 0.332031, 0.333008, 0.333984, 0.334961, 0.335938, 0.336914, 0.337891, 0.338867, 0.338867, 0.339844, 0.340820, 0.341797, 0.342773, 0.343750, 0.344727, 0.345703, 0.346680, 0.347656, 0.348633, 0.348633, 0.349609, 0.350586, 0.351562, 0.352539, 0.353516, 0.354492, 0.355469, 0.356445, 0.357422, 0.358398, 0.358398, 0.359375, 0.360352, 0.361328, 0.362305, 0.363281, 0.364258, 0.365234, 0.366211, 0.367188, 0.368164, 0.369141, 0.370117, 0.371094, 0.371094, 0.372070, 0.373047, 0.374023, 0.375000, 0.375977, 0.376953, 0.377930, 0.378906, 0.379883, 0.380859, 0.381836, 0.382812, 0.383789, 0.384766, 0.385742, 0.386719, 0.386719, 0.387695, 0.388672, 0.389648, 0.390625, 0.391602, 0.392578, 0.393555, 0.394531, 0.395508, 0.396484, 0.397461, 0.398438, 0.399414, 0.400391, 0.401367, 0.402344, 0.403320, 0.404297, 0.405273, 0.406250, 0.407227, 0.408203, 0.409180, 0.410156, 0.410156, 0.411133, 0.412109, 0.413086, 0.414062, 0.415039, 0.416016, 0.416992, 0.417969, 0.418945, 0.419922, 0.420898, 0.421875, 0.422852, 0.423828, 0.424805, 0.425781, 0.426758, 0.427734, 0.428711, 0.429688, 0.430664, 0.431641, 0.432617, 0.433594, 0.434570, 0.435547, 0.436523, 0.437500, 0.438477, 0.439453, 0.440430, 0.441406, 0.442383, 0.443359, 0.444336, 0.445312, 0.446289, 0.447266, 0.448242, 0.449219, 0.450195, 0.451172, 0.452148, 0.453125, 0.454102, 0.455078, 0.456055, 0.457031, 0.458008, 0.458984, 0.459961, 0.460938, 0.461914, 0.462891, 0.463867, 0.464844, 0.465820, 0.466797, 0.467773, 0.468750, 0.469727, 0.470703, 0.471680, 0.472656, 0.473633, 0.474609, 0.475586, 0.476562, 0.477539, 0.478516, 0.479492, 0.480469, 0.481445, 0.482422, 0.483398, 0.484375, 0.485352, 0.486328, 0.487305, 0.488281, 0.489258, 0.490234, 0.491211, 0.492188, 0.493164, 0.494141, 0.495117, 0.496094, 0.497070, 0.498047, 0.499023 }; ================================================ FILE: spam-filter/src/sw/sgd_sw.cpp ================================================ /*===============================================================*/ /* */ /* sgd_sw.cpp */ /* */ /* Software version for spam filtering. */ /* */ /*===============================================================*/ #include "sgd_sw.h" #include "math.h" // Function to compute the dot product of data (feature) vector and parameter vector FeatureType dotProduct(FeatureType param[NUM_FEATURES], DataType feature[NUM_FEATURES]) { FeatureType result = 0; DOT: for (int i = 0; i < NUM_FEATURES; i++) result += param[i] * feature[i]; return result; } FeatureType Sigmoid(FeatureType exponent) { return 1.0f / (1.0f + expf(-exponent)); } // Compute the gradient of the cost function void computeGradient( FeatureType grad[NUM_FEATURES], DataType feature[NUM_FEATURES], FeatureType scale) { GRAD: for (int i = 0; i < NUM_FEATURES; i++) grad[i] = scale * feature[i]; } // Update the parameter vector void updateParameter( FeatureType param[NUM_FEATURES], FeatureType grad[NUM_FEATURES], FeatureType scale) { UPDATE: for (int i = 0; i < NUM_FEATURES; i++) param[i] += scale * grad[i]; } // top-level function void SgdLR_sw( DataType data[NUM_FEATURES * NUM_TRAINING], LabelType label[NUM_TRAINING], FeatureType theta[NUM_FEATURES]) { // intermediate variable for storing gradient FeatureType gradient[NUM_FEATURES]; // main loop // runs for multiple epochs EPOCH: for (int epoch = 0; epoch < NUM_EPOCHS; epoch ++) { // in each epoch, go through each training instance in sequence TRAINING_INST: for( int training_id = 0; training_id < NUM_TRAINING; training_id ++ ) { // dot product between parameter vector and data sample FeatureType dot = dotProduct(theta, &data[NUM_FEATURES * training_id]); // sigmoid FeatureType prob = Sigmoid(dot); // compute gradient computeGradient(gradient, &data[NUM_FEATURES * training_id], (prob - label[training_id])); // update parameter vector updateParameter(theta, gradient, -STEP_SIZE); } } } ================================================ FILE: spam-filter/src/sw/sgd_sw.h ================================================ /*===============================================================*/ /* */ /* sgd_sw.h */ /* */ /* Software version of spam filtering. */ /* */ /*===============================================================*/ #include "../host/typedefs.h" void SgdLR_sw( DataType data[NUM_FEATURES * NUM_TRAINING], LabelType label[NUM_TRAINING], FeatureType theta[NUM_FEATURES]);

8L;4H6/D3,B1)@/'B&<":5V0!^8%? K$g:*]5(K5,H/'=$R9.z\HZC8/ &L90WB8P<4K92K:3M<5YE41*+...2)),11588=:;A24902635:?AHACJG=3,@4-B7/C70C80C80@5.B7/I<3M?6O@7PA8SC9SC:OA9G=7B:5B:5B:6A:6B:6H>8H>8@83?72LA9PC;NB9B93<50C:3F<4=5070,0*'UIA.'"$" ,,3,,3//732:$!%%"#+),.,00/3205&޶ְΩԯЮɩŦ۽ܿŨֿƲ}zsZlbSq{ytyod]WP;:7-..-//    )"5,#C7,L>2XH9gUDaPAD;2OE:F=3QD8[NBVJ>]QDKA7QE9]QD_TFI@7B:2&''&''()($$$$%%"##"#"!!! ! !!           #!+)'30.:74:75:75<96<96:74:75>;8>;8>;7EB>IDAD@#:"8 540,\9(vJ6wK8uJ9nF7c>2Z8.W7.U80T92Q82O71P<6TB>YGC_NMbKHL3/. .*1H%=8; <">$?'A*#E-&H0)K2+M5.O70N70M83M84P;8Y@>`IFLGCHEAKHDJGCLIDMJFKHCLIENJGLIEIFBJFCHDADA=FC?MJFQNJPMINJFMHDKGBIE@MIDQMHOKFLHCOKFQMISOKPKGLHCKGCEA=A=9>;696242-21,/.(42*B?0gbHcvtfYFZK>}f[P}mwnpw{z 976URPUROTQOTQOTROROMROLSQOQOMPLJTPNXUSWUSSPNQNKROLNKHIFCIFCLHEOJFQLHPMIPMJMJGEA>B>:KGDWTRURPROKMIEIEAGC?FB=D?;D?;FA:B>:D?;C?:FB=GC?C>;C?:E@;JE@RNIWSOWSOURNURNTQNSPLRNJQNIPLHQNKRPMQNKMIFHD@KHDJGCID@EA=HD@KFBJFCHEBEB?FC@C?;GD@MJGNKHLIFMJGKHEHEB.-,&''"## $%% "##%%%'''###!!!&''&''$$$!""&'&%%%  $%%'((!""!!!&&&$$$#$$%&&'((###"""'('))) "##"## """ %&&$%%!!!###"#"!!!""" """###!!! !!! !! !! ! !""$$$!!! ! '''%%%%&&''&&&%$%$'''%%$'&$NFJE@MIEMHDOKGRNJUPLRNKTQMXTQ[XU\XV\XUZVSVRORNLNJFLFBd[TtƮջٹݻ޷ʕǑŒĒﳌ찊檆ᦂݣ؟{ӜxϘuɓpďliea~_|]y[wZuYsWpUoTlSjQgOeNdM`J~\FtT@eH7N6*,"433TPO`ZYYSQRMKSNLWRQZUTZUTXTSUQPQLLLHHKGGKGGOJJRMNTOPNKKJFFUHCT=2R;/Q:/O9-L6,J4*G2)E1(D0(C0(D0)E2*F3+G4-I5.J70L80K80L81N:3N;4O;4O<5O<5E,&C$K5.E4.*#$ S2(`;/B(7K1*V7-TA~O?XA8V,#R&M%Q$C!.A"=!O=7Q?9N<6K93F5.@/)@/(?.'C(="; 5T/!^8%A L%b7'[2$M7/C.': 00M91,,R=4WB9T@7M;4L;5O>7[G>RA:N>8Q@:UE?XGAXHCXIDVGCZIE[HCE62,,.004**-00477<;D?AHI@@J;4E93C71D81C70B70A6/B7/>3->4-@5.C80D91E91H;2I<3L=4QA7RB9SC9SC:SD:TD;UE=NA:K?9LA;MB;MB;K@:J?9NB:C:4<50H=6OB:L@8>71:4.E:3C9392-4.*<40OD<(#"$ ))022:88A77?+). '%&-,//.2327-,3cZQײֱ۷׵ͭǧʩίʬǪçк}amcR~q~{w}orh]VPJ875+,,-//!!!     & 2*!=2(F9-SE6aP@]N>E<2ND9E<2PD8XL@UI=^RELB8NB7\PDaUHKB8F=4))(%&&()($%$$%%"##!"!!"! !"!           !*(%2/-742741963>;8<96<85;85A=:C?O>N>N?L@xK?yK>rE9`>2X6,R/%P-"H(B$%=$:!7 430+ \9)sI5rH6pG7hC5^<0W7-U7.U80T92R92O71N71P;6T@;\GEbHCN50- +)2I'@!79 :"<$>'A*#D-&G0)J2+M5.O60O70O70N71Q;7ZCBeMJPIDJGBMJFMIEOKGOLHLIELHDMJFJGCIFBIFCIEADA=GC@NJGOKHMIFLGCNJEPLHMIDOKGRNJPLHNJEQMHPKGQLHPLGLHCIE@FB=A>9>;6:8342-/-(-+&.-&53)TP<{tVkpfZGH<1|n~KDHEAJGCMJENKGQNJSPMMIEGC?GC@LIGROMVSPVSOSPLSPKSOKROJQMIMIEGC?GC?KGBPLGQMIPMIOLIMIEMIEJFBGC>GB>JE@OIDSOJVRNVSOQMIQMIURNVSPUROSPLPLIOLIPMJPMJOKHC?=EB?KHELIEHD@FC?KHECA>@>;>;8B?;@=:C@;@=:@><**)%&&%&&!!!%%%##"%&&%%%%%%$$$"""$$$%&&&'&$%$$$$%%%%&%$$$#$#&&&()(&&&%&%'''%%%$%%$%%&&&%&%%%%'('()("###$##$$###"#"$%%%%%$%%%&&%&&#$#######"""""""""##""""###!"!""! ! "#"%%%######&&%'''''&%%%&'&'''%&%%&%&&&&'&'''&&&#$$$$$&&&%&%&&&$%$&&&&'&%%%$%$'''&&&&&%$$#$##$$#%%$'&&%$$$$#%%$'&&(('&%%###%&%())'''&''()(()(()( $%$((('''*)'E?8G@9<71PH?SJ@NE<""!**)---)))*****)**)+,+,,,...***121/00-,+.+(%#!*(&.+(0+(,)&.+(62/72/41.52/42/20-851<95=:741.62/742;85B>/=+#"$%GCC\VU[UTRMLQLKUPOXSRXSSVRRSOOPKKNIILHHMHHQLLSNOSOPLHIIFFWJEU>3S;/Q:/N8-L6,I4*G2)E1)D1)E1)F2*G3,H5-J6/K70L81M91N:2O;3O;4O;4O;4O<5K4,F&J1*H70,+ ' L.%_:/K-#:!P1(Q6,R@P?XB8W>6U?6T91Q%I!#* @".'E) >"; 5U/!]7%>H$U."Z/"P5,@)$;!H3,O:2L81'7'"VA7WB9XC:P>7O>7TB;]IARB0160269;AADLGDHJ<5K=6L=5L=5I:2H:2H:2H:2F91G:2I;2I<2H;2G:2G:1E91H;3P@7SB8SC9TD:TD;UFUF>RE=PD=MB;NB;QD6:4.82-E;3A8160+/*'F<66.('"!"  %%+22:44<33;/-4"%##((*11654:2ͺݺܺմѰٸݽαѹlrhWu|{x|oyocaZQIE@321*++.//"""   $0( :0&D8,PB4YJ:ZKC@EA=FA=ID?PKFTPKUPLXSOZTP`[Vb]Ye`]fa^ea^c_[d_\`[W_YV_YV_ZV_ZWb]Yb]Zb]Za\Y_ZV\WS]XT]XT\VR\WS^YU\WSZUQ[VSXSOUPLSNIQLGWQM\WS]XU]XU]XU[VS[VS\WT]XT\WS[VR]WTZTPXSPYSP[VR]XU\XUYTQXSOYUQVQLVQMZUR]WS]XT[VRTOKTNJSNIVQMWRNSNJQLHTPKZUQ[WS[WSYTPRNIPKFRMITOKTOKVQLWRMRMHQLGTOKVRNQMIRNJUQMXTPYUQ\YUYURUQNOMJʹ¯rxiveraeUbQfTfTcQ~bPx^M{RF{KArF~K>}L?|K>tE8a;1V3*O-#J)D%>!9445679: :"89:; ="< 9887777643331110/ 00234444+ _7%jNۇhu،ugqXcLVA}I8pA3nA6c;0D)B(=%>'?';#:"9 631-)[9)oG4nF5jD5c@3[:/V7.T7/T80S91S92Q92P81O71Q82U<7^D@S;6++*3K)D#69 9!;$='@)#C,&G/)J2+M4-O6/P7/O70O70T<5\D@fMJYMINKGOLHPLHROKROKPLHLHDMIELHELHELIFKGCHDAKGDNJGPLILHELHCPKGSOKRNJRNJQMIOKGMIDRMIPLGPKGOJFLHCHD?D@;@=8<9485031,/-(-+%-,&.-&@=/c]F~_gf\HB6+ul`zwjqdvhuhvh{kruvxwvu_TJ% _TJ$#"OLJUROURO[XV^\Y\YWXURUROQNKMIGMIFLIEKHEMIFQNLSQOTQOQNKNKHNJGGC?A=9D@=LHCLHDKGDOLIQNKQNJPMISPMWURWUSROLOLISPMUROTQMROKQMJRNITPLTPLOLHOLINKHMJGNKHQMJPMJKGCID?ID?OKFRNJQMIPMITPLUQMWSPVSPTROROMNJFLGDQMIROLPMJC@=EA>IFCKGCKGCJFAIFB..-)))++*+++++**)))('(&&&%$&%%((())()))&&&'('))))((*)))(((('((('(('''&&&&&%'''((()))+++---..-..-/0/00//0/..-,-,,-,,-,,,,+,++,++++)*)*******+*++++,,+,+*+**+*++**+*)*)****+*++***)()('('&&%%%%&&&%&%%%$$%$%%$%%%'''((())(***++*))((('**)++*++*)))()(+++--,--,+,+****+*,-,,-,..-/0/00/0//0/.//.10//.-/.-0/.0/./.-/.,0/-.-,.--10/10/210//.---,,,+,++++---///010111010121222011.//././/.---,,,E?9KC: ##"*+*...()(&&&''&**)--,-.-/0/++*332455--,.,)%#!*(%.+(0-*.+(.+(41-2/,1.,42/520630:73<:6?<9852742631842>:7B? ; K93N;5L:3H70E4-B1)@/'=-&E*!C%?"5U/![6#*8$S3(Z/!R1'<$<#M91R>5B0)#B0*YD:YD;ZF^JCSD>VF@YHB\KE\KFXJF[LHcQKhSMaMHM=83//016..2..256;89?89?016.0557=ACKCDJB95B71E82E92D81E81G92D70C70E91E90B6.B7/@6/@5.B80E:2I<4QB8TD:UF6=5/D:3K?6F<482,71+D91>6/2-(5/+G=6 "%  #"'#$$ -(%!  !&,-3+,201842:+'+#!!-,/65;01HD@GC?GB>LGCMHDPJFSNITOJVPLZUPc]X`[Wc^[c^[b]Yd_\ea^b^[`[W^YV^YV_ZVa]Y`[W`[Wa[Xa\Y`[X`[X^YUZUQWRNVPLUPMYTQZUSVQMSMIVPKWQL[UR_ZW]XU\XU`[Y^YV[VR]XT]WTZUQYTP^YU_ZW[VSUPLYTP\WTYTQVQMTOKTOKSMIRLHTOKWRNWRNZUQWSOQLGOJEUPKUQMQMHNIDQLGWRNWRNWRNWSOWRNTPKRMHQLGUPLZVRZUQXSOVQNQMIRMIOJFTOKVRMTOKVRNYURQOL^XSѾѾгwr}o|nqbcSdSgTcQ{`Oy^MrYIqOByJApD;tE:}I=I<}J<|HwC4i;.`7-^81_;5O0&@&?&?%<$:!9!8!62/,(  Z9)lE3jD3fB3`>1X:/T7.S7/S80S91S92R:2S;3S<4S;4T=7^EBX?:+**3N+ I'688!:$<'?)"C,&F/)I2+L4-O6/P70Q80R91U<4[A;dIF]OKRPKQNJPLHQNKQNJOLGJGBIEAKHEKGDKHEKGCMIENJFMJFNJFKGCKFBLGBNIEOKGNJFNJEPKGPKGRMHPKGPKFNIDKFBFB=A=8?<6;8342-.-'.-',*%+*$++$21'MI7vmS~dshSB6*e^T|y}{zxqpt{~zwn|krxh-("VLC=;9OLJNKHJGDGDAOKHUROROLMKGLIFNKHQNKPMINKGNKHPMKQOMTROTROPMJNKHJFBC?;B=:D@<9(((**)*+*+,++++**)''&%%$%%%&&&%%%%%%%%%&'&(((+,++,+,-,,-,,-,----.--.--.-.........-.-///010/0//0/00012122200/./....---,--...0////...--.----..-00/111/0/./..//-.-------./...-///././0//0/---.-,.-,++*++++++)))(((((((((()('''&&&%&%&&%(('))(**)))))*)+,+,,,,-,+,+***++*+++**)***.-,.-,-,+-,+-,+--++*),+)/.-/.-//./.-/-,-,+,,+///222232010///-.--.--.----..-././//////0////...-.-.../.-.--***B<7G?7  ""!++*,-,))((('%$$''&,-,...011++*11/443++*.+($" )'$.+(/-*.+)-*'30-2/,0-+31.420752<96?<9?<8853741842:74@<9FB?MIENIFPLHUQMXSOUPLRNJTOKTPLTPLTPKTOKPKGPJFNIENJFPLIOLIIEBGC@FB>JFBTPLb[Utiҹ֥čАﳌ밊筈䪅ߦ١}ԝyϙuɔqďlhfdb`}^z[wYvYuYtXqVoUnTlSiQhOgOfNbJ_H]G}ZEwVBpQ>gJ9W=/:)!''(KGG\WVWRQPLKQLLTOOVQQXSRUPPSNNOKKLHIKGHNKLQNOQNODBC?;;O=5S<0Q:/O8.L6,I4+G3*F2*F2*G3+H4,J6.K6/L7/M80N91O:2O:2P;3P;3O:3O:3L7/F'G+$K80/+&B'_:/U3)1Y8.R8/Q?R@ZB8U@7VA8WB9T1)Q(H.(G0*@!:I71M:4K92H7/E4,B1)?/'=-%>+#?+#<(6O+\5#)8%P4*[/!U1&D.'C-&M:1P<37&!#L92[F=\H>]I@\H@RB;XF@^KDWGBXICXHC]LF]LGWJFaPKjUOiTNcOJM>:1-,/15126-.266<8:@9:A027-/3138>@G=>DC:8D93H;4I<4H;4F92G:2F91C70B70C80@5.C80D81B70@60C81F:2N@7UE;VG=SE9J?9QD6<5.C91J>5D:271+70+D91>5.0+&A727/)#""'"!/*+&"+$ '!#$),-444<44;416&!" %"!1/2;:B%+?۹ĤȦӱЮȪѴͱçռͶwtjYtt|sxy~vlnh_ZUNIE@8630/.,-,*,,-//###   #+%5-#=4(G;.OB3TF7H>4LB7E=2PE9QF;RH<[PDLB8J@6WL@aVHND:L@70.+)**-.-)))*++%&&%&&$%$$%$!!!"""%&&       &$",)'-+(/,*0-+/-*/-*30-:6396396362/852;85A=9@<8B>:FB?JFBHD?MHDPKGQKGPKGPKFUOKZTPc]Ye`\c_[a]Yb\Yb^Za\Y^YV[VS[UR[VS\WSb]Zb\Y^YU]XT^YUa[Xb]Za\X_ZWYTPPKFPJFUOLVQNVQNYSP^XUa[Wc^Za\YYTPWRO[VT[URZUQ^YU]XUYTPTOLYSP[URZURRMITOKZUQYTQUPLVQMWRNYTPWRNUPLVQLVQMYSPYTPRMIPJFSMITOKQLGNIESNJVRMTOKUPLSNJUPKXSNUPKPKFWRN\WSZUQYUQXTPTOKSNIRMIQMHSNJSOJQMJNKH|sؽͻϴ|ztzjkZgUdRw]Mu\LpXIjSEiOBvI?oC;oC8vE9{H;|G:vF:uE:k>3[4*P.&E&< 94336889:= %>%=%:#:"6!5 40-)$ Y8)iD2gB2dA2^>1W:.S8.R80S91S92S:3T;3T<4U=6U>6V?8^FAW?:)+,4P-"D#78 8!9#;&>)"B-&F0)I3,L5.N7/P80R91S:2U<4X>7_EA`MHPNINKGOLHPMIOKGKHCHD?D@FC?IFCIFBKGBLHDKGCKGCJEAGC>ID?LGCOKGOKGKGBMIENIEOKFQLGQLGOKFMHDHD?D@3(RLDznywz{n|o~pvyyusqyk}n~nxh6/)SI?520JFDHDAFB?HD@FB>E@89P?7Q:/O9/M7-J5,I4+G3+G2+G3,I5-K6.L7/M80N91O:1O:2P:2P;2P;2O:2O:2M80H-&I/'L8/2 ( <#_:.X5*,R:1T<3P>SA^C8T?7U@7VA7V@6W@7WB:O92> :I70L93J81H6/E4,B1)?.&=,$;+#:*#:( 7I(\5#)8$J4+Q3(N6,L90M90N;2P<3B0)9(#T@8\G>_KBaMDaMDZHA[IB\JDZJDZJEWHD\LG[KG\MIiUOmWQiUNaOIJ<92+*.0445:./357<9:@:E=?EJ@=M?8M>7O@8QA9QA8Q@7P@7P@7N@6M?5H;2G:2F:2F:3E:3H<4M@7QC9RD;OB:K@9E<8F=8K@;TE>NB:A94?72>61?71J?6H<4;3-C91I=4C915/)60*A7/=4-70+C:4# !"!1,,/*)*"$%:1,#%%+22:01844<74<*%("$1/356A|tlܹǥƣȧɩɪغ׺̰ðsoeTym~rv|ti{tjvpfgbZVRLB?<875..,++*,-,+,,-//$$$     ("0)90%A6)K?0QD5F=3KA7F=3PE9RG;TI>\QEMD9G>4SH=`UHOE;MA72/-*++-..*++*,,&''&''$%$$%$!"!"""&&& !    ! $" $" *(%-+).+).,)0-*1.+52/963@<9?<8>:6:63<85=96?;8=84<85A=:EA>GC?JFBKFBLGCPKGQLHVQLXSN\WSb]Za]Yb]Z`[X]XU[VR\WS[VRZURYSOZUQ^YVa\Xa\X`ZVa\Xb]Y_YU^YU`ZW_ZWZTQVQNTOLTNKXSP^XU^XU^XT_YV^YVXSOVPMYTP_ZWa\Yc][^YVYTQUPMUPLYTPZURSMIQKFXSOXSOWQNWROXSP[URZURXROVQMXTPWRNTPLTOKQLHQLHTOK[VRXTPXSOZUQVRMVQMWRM\WSa\Xa\XYTP\XT_[XZUQUPLTPKWSOXTPXTPSNJPLHJHEkb\ҿμپͳ¨|s~otek[}bQy^Nu[KqXHnWHlVHiSFePCmH=mB:m@7rC8wG:{H:vE9oA6f;1X2(M*"B#6534466888;:;:!1V;/R9/R90R:1S:3S;4T<5T=6U>6U>7W?8^FAV?:))+7R0$<88 8"9#;&>*!A.%E1)I4,L6.N8/P90Q:1S;2U<4W>5\C>aJELHCJGBKHDLIDLIDLIDKHDFB>C?:GC@IFCIEAKGCNJFMIEKGCHC?JE@LGCNIEMIEJE@MHDKGBMHCOJENIENIDLGBID?FA=B>:;9353-/-'++$('!'&'&'' 31'QL//....-.-,,,***)))((('''***+++))(((')((((('''''&&&%'''&&&''',++/-,-+*))(''&('')(()((*)(,*),*)+)(-+)/.,0.-/.--,,*+*+++,,,--,--,--,--,,,+,++,,+++*,++--,..-..-.//.00.00.//,-,,,,,,+*+*))()))**)*)()('(('(((**)+++,-,-.-..-./.........----,-,,,,,,,,-,--,---,-,-.---,+,+))(**))*)((((('**),,+,,+++***)))(**)**)**)**))*))*)***)))(((()((((()(**)******()(''&&&&&&&&&&&'&''&%%%%&%&&%&&%'&%('&)('=83A:2  "#"**)+++))(,*)(&%''&..-22156622200/777..-/-*'%"*(&1/,31.1/,/,)30-5200-+0.+752863862=:6@>:<97963;86C@>HDBNJGNJFPLISNKTOLYUR[VSZVRYTQYTQWROPKGKFBLGCOJEQLHTPLOJGJEAKFBKGDGC?GB>ID@NIEcZT~sҺҴå˪ܺ޽޳ŎϏﴏ챍讉䩅ަؠ|ӛy͖uȓpĐmjgeda`}^|]{]y\wZtXqVqVpVoUmTkRiQhPeMbK`J^I]G}[FyXDtUBmO>bF6N6)2$322VQQ]WWTOOPLLTPOXSSXSSVRRSOPNKLHFHGDFHFHKIKIGI;9<<66O<4P9/N8.L7-J5-I5,I4,I5-J5.L7/M80N91O:1P:2P:2P:2Q;2Q;2P;2O:2O:2N91M91M917% ( 7!]9-[7,:&K8/Q<3O>SA^B7R>5S?5T?6VA7WA8WA8T?67 /I60L92I70H5.E3,B1)?.&<,$:*"9)!7&7G'\4#)7$F4+H6-J7.L90N:2P<3R>5T?6WB9[F>^IAbMDePGfQIcPHaNG]LF\LFZKFXJF\MHZKHaPKnYRmXQhTN]MHM?<4+)-.257<./456<9;A:EG>=I<6C82G;4K>6N?7O@7PA7QB8RC9SD9QB8N@6L?6N@7OA8PB9OB9K@8J@8H>8G>8G>9OC@MЭ˨׻ɪֹپγվƲ{pfUxnczn}ukgaXa\T[WPMKGA@>22000/,,,))),--+,-.//$%%     % -&7.#>4'F;-NB3E<2JA6E=3OD9TH=VK?]QEPF;E<3PG<_TGOF;LA741.*,,-..*++*++&''&((%%%%%%""""##&'&!!!"!)'$*(%.+(1.+1.+2/,3/-2/-41.952@<9?<8<85<96?;8@<9C?;@;8@;8A=:B>;D@6pA7wD8wD7tD8l?4^7.Q-%C$:52345569889::8:;:977743111 0. - - , + + * * * * * , , +[AӀ\tUpTiQ]IO=uB3e:/W6-P3*S6,V8.[<2iD:T4)8":#8!8!6 41-*'%   U7(gC2dB2aA3[?2V<0R:0R;1R;2R<3S<5T=6U>7U?8V?9WA:^GAU?:'(*<#M,!388 9"9$:&>*!A.%E2)I5,L7.N9/P:0Q;1S<3U>4W?5[CDA=FC?IE@JFAJGBJGCEB>EA>C?;D@;8<96A>;EA>>;9:86753+)( !!!#$$%%%#$# !!!""$%%#$$!""%%%'''""!#$$&&&%&%)*)())!""$%%()()**'()"##!!!!"""##%%%     #$#""!!!!"""  !! !! %$$..--,+:5/F?7ME=NF65N:1O9/M8/L7.K7.K6.K6.L7/M80O:1P:2Q;3Q<3Q;3Q;3R<4R<3Q<3P;2P:2O:2N91N:1:(#)=+%K6.]9.^:.Q:1O<2S=3P?R@Y>3Q=4R=4S>4U?6V@6V@7U@7?+$:%K80L91I6/G5.E3,B1)@.'=,$;*"9(!8&7E%W1!*9%F4+H5-K7.M90O<3R>5T?7UA8XC;\G@`KCeOGhSJjULiTLgSK_NH`NH\LG\MI^NJ]MIgTNoYRmWQhTNXIEK><9/,--/57=01657<;6K>6K?7H=6H=6I>7I>7K@:KA:K@:SF>ZJA\KBVG>G=6C:3?60:3->6/H<3B80:2+C80E91B8/70)2,&6/(:1*91+  !%#2,-2,+0)$,%!5,(J<7+!(##$  /07<;E==F=;E416#1ݹѮţֺťгҶϵīҺí~qgWjaVvk`jd[QLFIFAA@=998566,,,---,,,))(+,,*++.//%&&      %+%4,!>4'D:+I?/D:0JA6E=3OD9UJ=VK?\PDQG;7=:7>:7?<8B>;D@=D@=C?;B>:C?:A<8D?;HC?JEALHCPLHSNJXTP_ZW`[Xa\Y\XUZURZURYTQYTPWRNQLIRMISNJUPLZUQ]XS_YU^YUZUPYSNWQMYSOYTQUPLVPLXRNXRNYSPXRN^XT_YV]XU[UQZTQ\WS^YV_ZWZUQUOKWQM\VSXTPYTQ]XTZUQXSOYTPXSO\WT]XU]WT\WT]XUYTQZURXSOWQMVQMXTPXTPVQNWRO^YVc_\a]ZZUQTOKQLGSNITOKWSNYUQXTPXTO\WSa]Y\XTTPLSOJOKHLIFyoϴҿ{qrdiZn^m^~eV~dU{bSu\MoUFnSEmRDgNAbJ=^H;]G;YD8WA6`=4d;4i>6sB7vD8tC6j?3]6-Q.%B%4/.243458778:989<97554310 / 0 / - , + * ) ) ) ( ) ) ( ) * + mN}[oQiN^GN;xB2n>1e;/\8.Z8.Z9/[;0a@5lE:L-#6 8"7!7!41.-*& !  S6(gC2cB2`B3[@2V=1R<0Q<2R=3R=4S>5T>6U?8U?9V@9XB;^GAWA<) (*B'C$278!9#:$;'>+"A.%E2)H5,K8.M9/P;1Q<1S=3U?4WA6[EFB>GD@JGDKHDKHDMIELHCMHDNIDNIELGCID?E@;FA;GB=ID?MGCOJEOJENJEJE@C?:?;674..-&*)"(( (( ''((!((!**"21(;8-C?3/)",)%HE@ng^}q{s{zx{nrvy}eZO/' A?>SPNTRPVTRWTRVSPPMJLHEJGDJGDNKHPMKPMJMIFMJFPLHSOKTQNUQNTQNSPMTQOSPMROLSPNSPNUQOWTQ[XUYVSSPKJFAJFAJEAMIETPLVSPWTPVSOURNUROURPURPTQOUROXURWTQRMIRNJWTQZXTXVSWURXURYURVSOWSOXTOXUQWTPRNJQMJSOLROKMJENKHQNKMJGIEBIFBJGCMIFLHDID?ID?IEAFB>KHDIFBFC@GDAGDAIEBJFCIFCHDAKGDJGC332,-- $$$$%% &&&%%%"##!!!%&&&((#$$$%%())$%$$%$'((%%%)*)*++%%%%&&)***++())$%%#$$%%%$%%$%$ "#"''&$$#   "!! !!!"""!"" !!!""!"""##!!!&&&122221JB:QH>YPE_UI\QFUKASJ@KB9!!!'((-.-...--,++*&&&$$#)))//.332454121565///(&#+)'+)'2/,53064185242/6300.+,*(20-752520851=;7A?;=:7<96@=;C@>HDBJFDLIFOKHOKGPKGQMISOKUPLTOLRNJRMIPJFLFBKFAKFBIE@HC?HC?MIESOLVROUQNSOLRNKSNJbYSzníӻ׿ֽɰŬѷӸջѺ˳˳жپѵʭ¥ַۻڻ׺ոշܾٻݿѵӸ۾Ѵϱ۽պϳƪݿħʭ˰ͪŏŒ﶐촏鱎宊ߨ٤ԟ|ΘwȒrďolgdb`}^{]z]z\y[y[xZuXsWsXrXpWnUnTmTlSjQgOdMcLaK`J^I\H~[F{ZEwWCqR?eH7N7** !#B?@YTUTPPLIJOLLTQQWSTVRSQNOLIKFDGCBEECGGEHB@C114>42N91N90M80M80M80M80N91O:2Q;3Q<4R=5S>6T>6S=5S>6S=5R=4R=4R<3Q<3P;3P;3A/('=+%N80[8-_:.S:0N:2O;2|N=SA_?3P<2Q<2Q=3S>4U?5V@6V@7U?6S>5P<3M91J7/G4-D2+B0(@.'>-%<+#:)":(!8>!H()<) G3+I6-K8/N;2Q=5T@8WB:YD<[F>^IBcMFgQJkUNmXPmWOiTL_MH^MH\LH`PK_OKaPLmXRoYRlVOaOJSFCJ><:/-,+-57=13856<:@HFABOA:N@9J>7H<6I=6F;4G;3C92C91G;3F:3D92D92G<5E<6J?8K@9LA:NCXIA]MC]MC\LBUF=D;3>60=5/:3->5.F:1>4-91*C7/C8/A6.6/(/)$,&!5-(*#'&("!0**1)%1)%/'#QC=A3.,%&/)+& ! %"!,,3:9B;:D<;E85;$ngcױѬ̩Ƨϲʮĩҹ«xqgWVNFZRJPKE;95764553233233+++,,,,,,*))+++)+*/00&''   #,&3, <3%C9*H>.D:0J@6E<3PF:VK>XMA\QESI=D<2SJ?]SGPG;7@<8@<8B>:C?;B>:EA=E@TNJμн˹Ժwthk_dWeVgWdS{_Pw]MsYJpVGiPAeL>_G;\F:]F9\E9ZD7WA5U@4V:0[6/e<4n?6uC7uC7g=2Z5+O-%?#2-.0223456668:8678744320 / . . , + * * ( ' % & & ' ' ( ) ) ) J,|ZzYjM_FP;yB0o=.j<0e;0`;1]:0\;1]=3fC9gA7@%554 41.-+) % "  T7)gD3cB3_C3[A2U>1R<1Q=2R>4R?5S?6T?6T?7U@8VA9XB;]GAWB<( '(G*=: :9":$:%;'>+"A.%E2)H5,K8.M:0O;1Q<2S=3T?4WA6[E;8A?<=:8;85<85?;8EA>IEBLHEPLJTPMQLIMIENJFRNKTPLSNJQLHPKGMHDOIEQLHNIEOKGPKHPLHSOLWSPVROTPMVROXSP^XTsjƱʴʵϹѼ͸̷˵Ű©ī˱ª‹ﶏ촎鱍完ૈڥաМ{˗vǒrÏolhecb`~_|^z\xZxZxZvYtXtXsXrXpWoUnTmTkSiQfOdMdMcLbKaK`I^H]H}[FwWCmO=[@1;+$768TQRWSTLIJMJKSOPWSTUQSPMNIGIBAD@?CA@DBAD<:>/.1C75N:2N91N:1O:1P:2Q;3R<4R=5S=5T>7U?7U?7U?8U?8T?7T>6T>6S>6S=5R=4R=4J6/A/)J6/N:2Z8._:.T:0M:2N:2sJ;Q?dC6P<2Q<2P;2Q<2S>4U@5V@6U@6T>5Q<3N:1K7/G5-E2*B0(@.&?-%=+$<*#;)"9<A#+@+"H5,K7.M:1Q=4T@7WB:ZE>]H@_JCaLFfPIjTNnXQp[SoZRiUM[KG[KG]MI`PL_OLgUOp[SoZRjUN[KFTGCOB>?2/,))35;34935::@HHBCXG>VF>TD;QB:RB:QB9OA8I=5F;4F;3C82H;4G;4G<6I?8OC=G=:A# ,֯ӯ˩ɩƦȩھ¥׽ɱĭwneUF@:A=8863++),,+00/011/00)))+++,,,++*+,+)**/00'('      ",&3- ;3%C:*KA0G>3LB7E<2OD9VJ>[OCZOCTJ>E=3VMB]SGPG;8=:7;74;84=95=95=95?;8B>:@<8C?;C?;D@=GC@KGCPKFNHDKFAPKGTPLUPLUPLYUQ[VSZURWRNSNJTOKTOKQLHQLHQLGRMIUPKYSN[VQ_YU]WSYSN[TO\VQ[VR^XUa\Yd_\c^[b\Y`[X_ZW^YUa\X^XT[UR[VS^YV]XUZTQYSPWRNXSOXRNUOKSMHTNIWQMVQMZTQ_ZW`[X_YU_YU^YV]XUYTPWRMUPLTOJNIELHEKHEOKFZTO_XSja[yp~y}slxnhsibtjdtjdwnɲʹŴؾֽռīymi]cU}`Q`PaPwZJlRDeL?bI5vB6rA6c:0W4*J*#9 0,.01223554567766764420 . - , , + * ) ( & % $ $ $ $ % % & '  lB/҂_uVdJW@F3o;+i:-d8.a9/`<2^<2]=2`?5hE;^908!6!4110,*(& !   W:+gD4bC3^B3ZA2U>1R=1Q=2Q>4R?5S@6S@7T@7TA8VB9WC;\H@ZF?*%)J, >>"<$<%;&;'<(>+"A.%D2)H5,J8.M:0O;1Q<1R=2T>4U@5YD:aJAWKEKHCMIDOJEOKFLHCIE@GC?HD@IEAGD?IEAJFBJFAKGCLHDMHDNIELHCKFAKFAID?GA;KHDJGDKGEMJGOLJSQOUSPTROOLJOLIRNJOLIHFDDA?B?=B>;FB>KFCMIEQMITQOVTQVRPVSPTROTQNPMJMKHNJGQMJVSPZVSXURUQNQMJPLHVROVSPUQMVRNWTQWURXUSXVSWURURORNJQMIWSOVSOSPMTQMROLPMIKHDMIFQMIRNJQNJQNKRNKQNJPMIRNJSPLPMIOKGPMIOLJQNKSQNPNKOLIQMKJFBGC?KHDNJGNKHKHEGDAC@=EC@KIFPMJLIFGC@KGDLHE010,--!""#$#%&&!"""""%%%$%%### ###*+*)++$%%$%%&''$%%'''%&&%&&&''$%%())&&&((((((%%%""#$$$)))%&%!!! !!! #$$"## !!#$$$%%#$$ !!&'&))(%%$&&%%&%"! !!!!"""##!!!$%%$%%$%%"##  !!())-..42/QH?VMCVMBXODWMCTJ@SJ@@91"#"###())+,++,+++*''&(('-.-121333565122/00*)( (%"%# /,)52/20-53120-53031.0.+1/-42/:74<84@=9B?<:74=:7@<8@;8B>;C?B==A>=B@>B97;426I;8N:2O;3Q<4R<4S=5T>5T>6U?7U@8V@9VA:VA:VA:V@9U@9U@9U@8T?7T?7T?6S>7S>7R=6P<4W7.`:.W:0M:2M;2R<3T=4Q<2Q<2Q<2Q<2Q<2R=3U?5V@6V@5U?5R=4O;2L8/I6-F3+C1)A/'@-%>,$=+$=+#9!7@#B#L2'H6.M91Q=4T@8XC;ZF>]HA`KDbMGeOIiSMmWQpZSq\Tq\SgTM[KG[LH\MJ\MK_OLkWQoZRoZRfTLXIDTGCQC?A40/**13857<2499:@:13701557<>AHHDHXG@TD=RC6G;4J<6L?8OB;SE=ZKB]NEWIARF?UG?^MD]LCZJ@VG=L?7>5/81+7/)5.(=3+A6-:1*=3+?4,?4,=3+8/(-'!*$ !%#'" -&$0)$/(#>50`PI8.*5.0824,&&%) *!%'"$20354===G<=D ܺ׶ڸۺ̬åپؿ׿ƲzpfU;72/-,,,+%%$(((..-/0/,--'''+++,-,,,++++)**/10'('         #-'3- ;4%D;+KA0J@5ND9G>4LB7UI=ZOBVK@SI=F=3WMB]SFOF;MD;73/)***++,--+,,()))+*)*)''&###$%$'((###!""!""#$$"$" $$%% &% ''"('#('"'%!)(#+)&.,)1.,2/,2.+730;85<95<85;73:62>:6C>:E@=FB>EA=GB>IEAHD@IEAMHDMHDLFBJE@OJFQLHTOKWSO[WT[VR[WSWRNTNJUPLTNJSMITNJUOKSNITOJVPLWQL[UP^XS^XR`YT\VQZSO_YUe`]c^[^XT^XS]WT]WT\UQ^YU[UQYTP\WT_ZW_ZW\VSYTPXSOVPL[UQ[URXRNVPKXSNXSO\WSb]Ya\Y`[W^XT]WS]WTXSOPLHFB>\UPwo̵սôƸĵվк̷̷̶ɴɴ˵ϸйҺ־վѺͶʴǰíu~h^s[PoTHqTFuVGoRCcJ=^E:]D9\C8]E8]E8^G:[F9WC7TA5M;0I7-J7-K7-J/'O.'^90n@5n@5b9.T1)D(!8 0-///0/133456554555220/- , + * * ( ( ' % $ $ # # # # # % % ^Dу`pR\DM8u>-j8*c7,]5,\7.^<2^>3^?4aA6gD:R2)3 3 310.+('$    +cC3eD5bC4]B3X@2S=1Q<1P=2Q>4Q?5R@6RA7SB8TB8UC9WE;[I@ZG>)! /H*<"=&>'>)=)=(=) ?,#A/&D2)G5,J8.L:0N;1P<2Q=2R>3T?4VA7^G=SJDKHCNJDPLFOKFJF@C?9A=8C@GBGB=E@:D?9GB=ID?LGBNIDOIDMGBKF@ID>D?:<9364-..&--%-,%++#**"))!))!''*)!,+$**##!!((&:86UQJwqf}|q~ppyxvg4-'&$#IFCSOLROLPMKNKIMIGHEBIGENKIROMOMKGDCEB@EB@FC@A>;B?;GC?MHDOKGSPLPMJKGEHEBNKHPMJQMKSOLMJFJGCJFCRNKVSPURNSOLOKHOKHKHDOKHQNKNJGJFCPMJTQNTQNSPMTQNROLPLHMHDSOKROKOLIROLROLKHDFB>FB>IEALHDNJGOLHSPLQNJNJFPLHSOJPLGMHDNKGNKHLIFNKHNKHNKGNJGLHDIEBIEBKGDIGDIFCJGDFDAHFCNLISPNSQNOLIJGDFC@+++,--"##!""####$$!""$%%&&&&''$%% !!"#"()))**%&&#$#))))))'))$&&#$$&''&''*++#$$&&&'('%%%#$$$%%+,+&&& "##"##"""$%%"##!""!!!&&%'('"""%%%&&%!! $#"!!!"#"#$#$%$#$#%&&$%%$%%#$$ ! !    !"" ! "##!"" )*))**962SJAXOEULBVMBULBTKARI?>80$%% """&'&+++---,,,(('(('./.222444455344000('&)&#$"-+'53031/75221.53031.20-20-752:85;84><8A>;741=96A>:D@EA=C?;FB>JFBMIEMIELHDMHENJFPKHPLHOJFOKGPKHRNJSOKTOKWSOXTQUROSOLTPMTPMQMJSNKWRO^YUga\kd_kc\g_Xg_Ynf`ohclead^Yd^Yga]fa]fa^jd`pictkdribricvmfumfphakb[h`Ye^Wb\V_YT^WQg^Wof^ph`lcZmcZlbZ_WOXPI\TN\VQXRM`XRh`XkbZg_Wg^Wqh`tkdje_pﴎ쳎鱍富ᭌܪئԢϜ|ʘxǔuÑqnmjgfdb`}^z]wZvYwZx[wZvYuYsXqWrWqWpVoUnTkRjQjQiPhOhOhOhOgNfMeLcKaJ{[FoR?U?1)!!$'IFIVSUKHJFDFMJLQOQPNPKIKCBE=6T>7U?7U?7V@8WA9WA:XA;XB;XB;XB7W90`:.Z;1N<4O<4O<4P=4Q=5R>5R>4S>4S>4R=3T>4WA6WA6V@5T?4Q=3N:1K7.H5,F3*C1(A/'@.%?-%?,$<&;%Z6(tB.g>.L81Q=5UA9YD=\G@^IB`KDbNHePKfQLkUPoYRr\Us]Ur\TfSM\MIZLIYKJYLJaQMiUOlWPmYQcQJWHCSFBOB?C743-+.058:?35:9:@;@GBAFNA;L?9J>9H=7J>8L?8M?8N@8TE3+>3+=3+;1)7.'0)#& $& ")$".&!/'"2*%]NHH<7*$%702/))%(-"+!0()835+&(//665===F45?ld^޸ֵ߾ٻгĨ§¯siaQ84/'('+,+%%%''',-,./.+++&'&------++*+,+)*+011()(         $+&1+:2$C:+H>.J@5OE9H?5J@6SHTI>F=3VLA]RFOE;PF=<72,---...//,--+,,*++*+*&'&###$$$)**&''%&&&'''((%&%  $$%% &% &&!'&!'&!'&!*)$-+(/-*2/,64063/62/;74=:6>:7>:6?;7A<8EA=HD@HD@GC?HC?GB?FA=HD@LGCJE@JEAJEANIEQMITOLXTQZVRWQMWRNTOKRLHTOKUOKUOKVPLWQLWQLXRMXRM[UPZTO]WR_YSb[Vb\WaZVb\Xga^a[W\UQ^WSaZV`ZV\UQZTPXRNXSO\WS\WT]XU^XU\VRYTPTNJ\VSa\X^YU\VRZUPUOKXSOZUQZUQ]XTZUQUQN]XUrhb|վϾϿξƷԽйη˵ʴ̷̷̶ͷθкһйѺѹͶȲįį|unexaWpVKnRFiM@cI|D1l8)e6*^5+W2*V5,[:1]>4^@6aB8c@7K.%12 1 0.+)'$ !    T;,iH7dD5`B4[A3V>1Q<0O;0O<2P=3P>4Q?5Q@6RA7SB8TC9VD:ZH?WE<& 1<$<&>)?*?+ >* >* =*!>,#@/&D2)F5,I8.L90N;1O<2Q=2R>3S?4VA7^H=QIDFB=GC>LGBMIDKHCHC>D@;A>9B>:B>9C@;FC>HC?IEAHD?E@;F@;GA8IC>LGBMGBKFALFALFAMGAKFAD@;<8264-0/(--%-,%,+$,+$+*#*)"(( *)!-,$+*##! &%$11/B?;c]Us|{~qxjutte4.($"!DA?ROLRPMOMJJGEGDAJFCMJGPNLTQOVTSSQOEA?=96A=:GCAB?:EA:A=:@<9<:7DB?HFCGDBIFDKGDGC@A>;(((+,+ !!!$%$$%$"##!""$%%%&&())())%&&#$$"##'(()**)++%&%'((*+*+,,())$%%'((()*)++$%%$%%&''#$$"##%%%+,+$%$ !! ""#!!!"##!""!""#$$ !! !!!""%%%&&&!! $%$#$# "! """  &'&&''&''%%%#$$!""$%%"## #$$$%$ !!  !! "##"""!!!!!!)*)(**>:5WNDXPFRI@TKATKATKARI?:4,&&&!!! !!!%%%()(./.111++*((&..-/0/010121233000('&,)&(%"+)&52042075320-42/42/20-1/,863974974;96@>::73=95A=:IEBLHEKFBGC>GC?LGDNIEOJFOKGPLHOJFLHCOJFQLHOKGPLHTOKUPLPKGRLHUPLVRNSOKRNJRMIPLHTOKZUR_ZW`\Y^YUXRMOJDLFATNJ[WT[WT]YW`\Zb^[`]Z_\Y`[Xb\Xe_Zf_[e_\c^Z`[WZUQ[UO^YT_ZV_YUa\WZUPWQLYRM`ZU^YSZTOUPJMHBMGAOIDUPKVQL]XSb]X_ZUZUPYTO\WR[XUk]쳍鱌䭊ᬋު٧դџ˚|ǕwŒtpnmjhfeca}_{^x[vZvZwZwZvZuYtXsXsXsXrWrWpVnTlSlRlRkQkQkQjPiOiOhOfNeMaK|\GsUB`F76)#!@>ASPRJGJCADJHJPNPOMPIHKA@D::?88=99>99>015>78Q>7T?7U@8VA9WB:XB;YC6R?7R?7S?6T@7U@7U@6T?6VA6YC8XB7V@5T?4Q<2N:0K7.I5,F3*D1(B/'A.&A.&A.&A/'P5*pA.f?0P<4T@8YD<]HA`KDbMGcNHePJhSNiTOmXRq[Ts]Ut^Ur\TdRM^NJ[MKZLKZMKdRNbPKbQKjVNdQJVHCREAMA>G;8:0--.19;A46;8:@;8I=7QC;YI@]KA_MDaPFbQHcRHcSIZKCLA;SE=[J@XG=SC:K=4<2,4-'2+&3,&7.'=2+=2*=2+=2+<2*;1*9/(5+%-&!#*#$% +%!.&!,% SF@UGA#1*+.'($&,!)0),;46?41:(  *)/76?=4H>5QF;UK@SI>VK?F=4VMA]RFOE;RH>?:4+---...//,--011010000*+*%&%$$$)**'((%&&')(())%&% ""#!!##&% &&!&% '&!&% '&!+*%-,(/-*1.+64085163/951=95<95?;8A=9D@HDAJFCIDAGC?GC?GB>HC?ID?GB=ID@KFBLGCNIEPKGSOKWSOVQLXSOWRNRLHSNJTNJRMHSMIVPKZTO^XSZTO\VQ[UO\VP`ZUa[Ub\W`ZU`ZUb\Y\VRZSN`YUg`\ga]^WS[UQ[TPXRNWQM[UR_ZWa\Yb\Y_ZV\VR^XUa\X]XT\VR[VQUOKVPLYSOYSORNJrhbվϿпƶ׾ԼҺ̵ɳ̶θѻθͷϹйηɳȲȲyvmxd[s^UmWMkTJdLBaI?_G<\E:]G;[G:YE8XE8TB5N<1G6,D4*C3*@0(<,%=,%E*$E("[5+f;1`7-O-&<#1+-..../012312553210.,,,* ) ' & & % $ # "         ! 6"{ZwWbHM8p;*g6'a5)[4+T1*Q2*U7.Y<3]@7`C;^=6D+"010.,)'"     P:+kK9fG7aC5\A3X>1S<0O:/N:0N;1N<2O=3O>4P>4P?5Q@6RA6TB8YF)@+ @,!?+!>+!=+!=*!>,#@/&C2)F5,I7.K9/M:0N;1P=2Q>4S@6XC9\H>IE@EAIE@IFAIE@FB=B>9A=8@<7A=8D@;C>:D?;FA=B=8F@;HC=HB=ID>GAB?;B>:GC@JFCMJGROLTQNROLNJGLHDOLGRNJUQMTQNROLQNLSQNUQNSOLTQNTQNMJGKGDMJFQNJPMJQMJQMJSPLOKHGC?GC?JFBMIEPLIQNLQNLPMJQOLJGDGD@JEANJESPKSOJPLHVRNZVRXTPTQMPMINKGLIFKHEOLIQNKPLIMIEKGCJFBEA>GD@NKFLIDHEAC?;>;7;86><9C@=A>;C?1+%$%$  !! ###&'&./.344...(('--,..../..//222121.,)-*'*'$+(%5205305310.,10-52020-0.+741863753:85?=:;96?;8A>;GC@IFCJFCJEBEA=IEAOKGTPMWTQYURWSOQMIPLHSOKRMIRNJUQNXTPWRNWQMXSO\WS[WTYUQWSOUQMUQMVQMWSOWSOWSOSNJOIDNHDRLIRNKRNKYUS]YX^ZX]YWZWTXSPUOK[UPa\Wc^Z^YTVPKTNIYRL\VQ^XS^XSb\X]XSZTO[VQb]Y_[VXSNSNHTNHVQLTNITOJSNI[VR\WT\WSXSNXSOXTP[VRϚtﴋ첌鰌孋᪈ު۩צҡ͛~ȗzēvtpmkihgeca}_|^z]x\x\x[w[v[uZtYrWsXtXsXrWpUoUnUlSlRlRlRlRlRkQjPiOgOeMbK_IzZFqTBbH9?/'87;OMPHFJ@?CGEHMKNMKNFEI>>B99?88=99>77<216G;:T@8VB:XC;XC[E>[E>\E?\E?\E?[E?ZE>YD>XC=VB8Q>7Q?8R@9S@9S@8T@9VA:WB:WB9WB9ZD:[E:YC8WA6T?4Q<2N:0L8.I6-G3+E2)D1(C0'D1(E2)H4+Q9/O;2S?7XC<\G@`KDcNHePIfPJgRLjUOkWPnYRq[Ts]Uu_Vs]UcRN`PL`PN^OM\NKgTO]MI[LGbPIhTLbPHWHCPC?N@;A51.-/79?68=8:?:SC:M>5B6/6.'3+&1*$2*$8/(<2*<2*<2*<2*;1)90(6,&/&!! %%#'"-& *#G<6[LF*"("!-&%$#+ ,!3,.947C73I90H6-A/&" **032:#5׶ߺ״޻޽طӵҶежտs`YL951%%&-.-())''',-,./.*++(((111010--,./.+,,/10***        &"-(6/"?7)E=-G=1PD9F=4D<3OD:UL@TJ?XMAG>4XNC^SGPFA;4)++-..-..,--344233121+++%&&###()))**%&&())'((%&$ "!"!"!!'' )("))#'&!'&!&%&% ,+%-,'.,(/-)42.962:73=95?<8>;7<84>:6EA>GC@HDAKGCJFBIDAKGCIEAHC?GB>FA1T<0P:.M9.L:0M;1N<2N=3O>4O>5O>4O>4P>4R@5XE;J91 08"<'?*@,!?,!>+!=*!<*!;)!=+#@/&C1)F4,H7.J8/L90M:0N<1P=3R?5XB8QB;B>:B?:FC>HD?HD@GC>FB=D@;B>9C?:B>8C>9C?:@;6@<7E@;E@:GALIFMJFMIEQMIQMJQMKTQOTQOQNLSPMTQNSPLROLTQMVSPVSPURPSPMUQNQMJMJGMJGKHDIEBLIEQNKSPMTQNQNKPMJOKGMIEMJFPMJQMKPMJNKHNKIIFCFB?C@=HEAPMHUQMPLHMIEOKHTQMRNKPMIROKSPMTQNQMJHDAIFCQNKTQNOLHJGCJFBC?;FA=VRNURNOLHGD@?<9<:8;98A>GC@IFBD@<;84(((*+* !""'''%&&#$$$%$&'&'''%%%'(()**%&&"##$%%,,,/00())#$$()(*+*,..)++%&&()(****++###!""$%% $$$)**#$$$%%$%$%%%&&&'(('(()**())&'''(('))$%&#$$ !!'''%&%###)*)(((&'&$#"$#"&&%$$#&&& !!"#",,++,+*++*++'(("###$$#$$###%%%$%%!!!!""#$$"###$$$%%!"" !!  "##%&& +,+)*+E@9VMCTLBRJ@WMCXOETKAOF<-("&&&"#"##"###&%%''&//.565121))(,,+-.-...,,,./.000.,*+)&,)&-+(42/64242/0.,.-*31.20-0.+741;85853;95><8:74?;8A=:EA>GC@FC@JFBIDAKGCLHEPLIROKRNKSNKMIFHD@KFBPKFOJFTPLYUQXSOYUQYUQZUQWSPXTPZVSWSPRNKPKGQMIROLVSOXSOXRNYSOYUQUQORNLUQOWTRWSQWSPZURXSOTOJVQL[VQ`ZU`ZUZUOWQLYSNWQLYSN\VRc^Ze`]fb^fa^fb^c^Z_ZV\WQ\WR^YUXSOPKFLGCYUP[WSXSORNIVQMRRP{c챈뱋鰋残⫊ީۨئӣΞȘ{Ĕxtqoljihfdca}_|^{]y\x\x\x\x\x[vZrWqVsXrWqVoTmSnTlSkRkRjQkQkRjPiPgOfNdMaK^I{ZFtVDmQA`G:A0(015KIMGFJ=\F?\G@]G@]GA]G@]F@]FA\F@[F?YE?XD=WC6S?7R@9R?9R@9S@9S@:S@9S@:SA:UB;WC6XC;\G@`JDcNHfQKgQKhRLjUOkVPmXQoYRr[Tt^Vv_Wr\UbQNaQMcRO_PMaPLiVOZKGYJF[LFaOIgTLdRJ\LETE?E72/,,57=79?89?:;A9:@56;126238:;A?AHJBANB5F809/(/(#.("-'"1)$:0(<1*;1*;1*;1)9/(6-&2)$& $$!&!+%+%8/*XKD8.)#*#!%",!+ 6./>8;@74K=4P@6P?5P=2K7-* ('-0ܸմӴϳǭʴskcVMH>840#$$---+++'((--.011,--(((01100/--,-..+,,/00***        %!,'5.!>7(D<,E4YNB^SFQH=RI?A;5'))-..,-,,--233333121***&&&###&'')**$%%'(('((%&%"$$&$&#$ ""((!*)#**$''!))#)("**$00)21+32-53.53/961;83@=8B?:B>:A=9B>:GC@JFCJFCKGCMIFLHENIENIELGCLGCMHCLGBJE@MHDNIEKFBMHDRMIWRNWRNUPLRLHNIDLGCLGCNIERLGXRM^XS_YT^XS`YT^XR\UP[TN]WQaZUaZU`YTb[W^WR\TO_XSb[W_XSc\X^XT\VRWQMSMHTNJXRMWQLZTP\VR[UQ[UQZTP[UQ[UP]WRWSO~rjŮͽֺɭɬҶǷֻ|tkd~f^ofzouxz{xmyo}s{pukvz~s{q{qxxnve^o^Yrb\wg`qa[wf_td]paZm]Vl\Tve\n]TgVM^LCUB9S?6Q=4M:2L:2I80D4-B2+@1(=-%=.%<-$9+"9*";)"?'!>$T/'Y3*F)"8"-+++,---./1/0011211/ . * ) ( & % $ # " !        qJ6~]gLR+!<+!<*!;)!;*"=,$@/'C2)E4,G6.I8/J8/K9/L:0M:0Q=2UB8D?:=94A=9C@;IE@KGBHD@D@;A=8@<6?<6>:4B>8D@;D?:D?:D?:FAJD>JD>LF@LGALGAFA;F@;IC>EA;?<597054,11)0/'.-%,+$+*"*)"-,$-,$.-%/-&.,&%$#"!--+.-,863RNGpi^vkx|rxststx{qbSQOUSQSQOSQOTRPXVTUSRQOMMJHKHEGDAEB?GDAHEBLIFKHEGDAEB@IFCKHEOLIROLQNLKHFGC@HDANKHQNLROLSPMWTQVSQSQONKIGDAIEAJFBB?:B>:NJFOLHNKHOLHKHELHFNKHMJHMJGOKHNKGNKHKHEMJGMJGMJGKHEHEAB>:EB>NJGNKH@=:963<85B=:HD@IFCHDALHFPMKRPMLIFGC@JGDPMJOLIMIFLIEIE@DA=JGDIFCGDAEB?>;8:74:75>;8FC@KHEKHEA>::74(((+,,!"! ''''(($%% !!'('(((%&%())+,,(((%&&#$$*++.00)**#$$()))*)+-,+,,$%%'('*+*+++&&% !!#$$!""&'&())!"!%%%$$$%&&&&&'''())*,,*,,*+++,,+--(**&''$$$'''$%$%&%---+++))('&%%$#&&%$$#&'&"""###++*+,+,-,-..*++$%$%&&&''$%%$%%$$$###%&&$%%###%%%"#$#$$#$$!!! !! !! #$#'((  ! -..*,,IC;VMCSKASJ@VMCVMCSI@LD:%!%%%##"$$$###&'&(((..-344121(('))(,,,-..)**,,,.///-*'%#,)&/-*42/8646410.,,*(20-20-1/+741:74963;85=:7=:7@<:A=:D@=D@>C?JEAQMHRMISNKVRNVRM[WS]YUYTQTOKTOKZUQYURRNJOKFPKHPLIRNJVRNWROXSPXTRYVSVSPSPMQNLPMJTOLXTPXTPUQLVPLVQLTNITNIXRM]WS`ZV\VQ]WQ_YTa[Wc^Zea]c_\c_\d_\e`\`\XVQMQKGPKFTOJTOKWRNWSOTPLNJELHD\TMݢxﲈꮆ鮆诊残㬉ߩۧإԣΞșÔyvspmlkihfc~a}`|_{^z]z]y\w[w[x\x\w[tYrXsXsWqVpUnTnTlSkRkRjQiQiQhOfNeMbKaJ_I~\HyYFsUDnQBgL?]E9F4,+-1JIMGGK;;@AAEJHLJIMDDI=>D9:@::A99?45;?:=TB=XD[F?\G@^HA_HB_IB_IB_HB^HB]HB]GA[GAZE?XD=WC=WC=WC=VB84-,0388:@67=9:@9:?56;12712678>>@GIABL?:NARE?QD>QD>RC=OB5F80<0)0(#+% ,&!/("5,&:0);0):0)90(7.'4+%/'"'!!$ % +%,%0)$OC=A71&#!-#/$/''=68?63H:2M>6RB8UD9VD9YD8S>33%&'/44=նظϱ{uhoeZUPGD@863/###,,,,,,(((.//011-..'((111010--,-..+,,/10***        %",'5/"=6'C;+C:.M@6F=3G>4OE:UJ>PF;WL@F=3XL@\QDQH=SI?D=6&((./.-..,--233233010)))'(($%%&&')**%&%&''())&'&"$$&#$"#"# ! %%++$,,%.-',,&,+%,+%,,%0/(32,64/750972<94?<7DAM=7E5/G6/G6/F6.D4-@1+>0)<-'=.&?0'=.%<.%9*"<(!=$F(!Q.%D' 6!,+**++,-..0/0.110/ / - , ) ( ' % $ # " !        _EzZaGK6n;*c4']0%Y0'X2*V4,R2+O1*N1*O3-S60I0)* ,+*(&$    - bG4gK8aG6]C4X@1T5O?5P@6SB8P@6'. 7";'=*>+ =+!<* ;*!;*!;)"<+#>-&@0(C2*E4,G6.I7/J8/J8.K8/M:0T>4MA:B?:=94>;5>;5EB=HD?FB=A=7=93=93=:4=93@;6A=8A=8B>8C>9D?:D?:D?9D?9E?9GA;IC>JD>IC=JD?GB8B=7=:375-31)/.&-,$,+#*)"*)"+*",+$-,%/.&0/'-,%##+*)+*)20.B?;[VNrj_wkw}}ou{ws}pr{rKHGNLJOLJNKIIGDJGEIFDIFDKHEMJGKHFGDAGC@FC@GDADA>D@=GC@KGDIFCGDAHDAHEBC?;FC@HEBHDAIFCPMKSPNRPNOLJGC@LGCNJFEA=C?:JFBNJGPLIQNJMJFLIEOKHNKHIFCHEAJFCLIFMJGPMIMJFC@:6962?;8C?<<85:52<84<83C>:HD@JFCNKGMJGNKHQOKMJGFB?FB>IFBNJGROKNJFD@<@<8?<8B?;?<9@=:B?><:())*++!"!#$#()(&'&''''('%%%%%%'(((((&''###)))./.*,,#$$&'&'('()(*++&''&&&'''('')))$$$$%%&&&+,+())!!!%%%%%%&''%&&&''())*++*,,*+++,-+--())&''%&&'''$$$&&&-.-***''&'&%(&%('&&&&)))$$$###**)++*,-,-/.*++$%%((')**&'''((()($%$$%%$$$"""$%%$$%#$$""""##!!!"#"!""!!!   #$#())  $$$010+--LE=VNDSKAULBVMCTKBQH>JB9 "#"""!%%$""!'(',,,///455444+,+,,,-.-...)))*+*,--.,*!)&#/-*42/97586410-+)'/-*0/,0.+852;85:75;85852974>;9@=:FB?GC?FB>FA>JEBMHEMIFOKGMIDJFALHDOJENIEOJESNJUQMWRNWRNVQMYTPZVRVQMRLHQLGUPLURNSOKTPKUPLUPLTOLUQMWSPYTRZVT\XVYVTUROOKHNIFUOLZUR[VSYUQZUQWRNUOJXRM]WRb]Xd_[a[V]XS]XS]WSa\Wc^[`\Yb]Zd`]b^Z]XTXSORMHRMH\WRa\X`\X]XTWSOWRNOOMfﱆﱇ밇갇讆歇孉㬉ިڦפӢΟɚĖ}yusomlligf}`oUnUw\y]x\x\x\v[tYuZv[vZuYsXqWqWqVpVoVnUlSkRjQiQhPfOeNcMbK`J]I~[GyXFuVEqSClPAgM@aI=XB8C2+"(*.HGLIIN<?F?@G=>E9:@56\G@]HA^IB_JC`JD`JD`JD_ID_IC^IC\HB[F@ZE?XE>XD>WD=VC7R@9SA:TA;UA;UA;TA;UBYF@\HB_JDbMFcNEcMBaJ?^G<\E:YC9WA7U?5S>4Q<3P<2P<3R=4U@7XC;\F?_JBbLFeOIhRLkTOkUOmVQmWQmWQoYRpZTs]VvaYwaYp]VaQNaQMaQM^OLdSNhUNZKGZJF\LGZKFXJDZJC]LEZKCRB<>3/.05:9:@9:@67<34812656;=?FFBEL@;RE?SF@RE?RF@TG@TF@RE?PE?RFAPE@SGBbRIhWMhVLfTI_NCPB9N>5G8/=0)2)#*$*$,% 1)#7.'9/(8/(6-&2*$.'")$% ! *#,% ,% G=7B82 #"!-$ 1'"*#!601>41E91J=5N?6QA7UD9XF;[H<_I=_H;F6,'wlb޹ڸʪ׼Ȱ|}pcbYPNIC@>997131."##+,,+,,()(-...//./.'''/00010--,-..,--/00*+*      '"-(60#<5'B;+C:-K?5G>4G>5PF;UJ>ND:VK@E<2UH=ZOCPGG?8'()./..//,--01123200/()(***&''&''*++&''&'')**()(%'(*!()'( &' #$"#((!++#,,%..'0/)00)10)00)33+54,860971861;83>;6C@;D@;DA0)@2*C4+B3*@1(:,$7(!:$>$J*"A%0)()*++,,.-.././//.,- * ) ' % $ # " !         kOtV[B|F3j8(`2&Z/%X0&V1)V4+T5-Q3,N1*N2+R6/@*"' *)(& $ !    V>-fJ7aG6]D4X@2T=/O:-K7,H5+G5+G6,G7.H8/I8/I90J:0J:1K;1L<2M=3P?56*#%28$<(=* =+ <* ;*!:*!:)!;+#=-%?/'A1)C3+E5-G6.H7.I8.J8.L9/Q<2P@7C?:C@8C@:C>9B>8>:484-96/<82;72;71;71<82=93=93@;5?:5>94=94>95?<8A>:B?;6?;6?<7=:586/21)-,%++#,+$+*"+*".-&.-&0/(42+43,54.42.-+(.-*541641752><8KGB]XPph^{mx|n|nrsuqthuhr~yB?=GDBMJHOMJNKIOKIQMJPLINKHPMKPMKNKILIFIFCGC@FC@EB?HDAIEBGC?C@:B>:EB=EA:EA=JGCPMIUSPUROQNKROKTQMPMIMJFLHEIEBHEAHDAFB?>:6@<7EA=B>:@<8A>:DA>A>;FC>KGBGC>FB=LIEJGDFC?C?FB>B?HEBMIEOKGOLHJGD@><'))*+*!""!"! !!'(')**%&&%%%### ###)))%&&"##''',--+--#%%$%%)))*+*+,+*++'(('((%%%+,+)))())*+*-.-*++!""$$$$%%&''$%%%&&'((())*++*++*+,*+,&((&''%&&'''$$$%&&,--+++&&&%$#'%$'&%%%$))($%$###(((++*,-,-..*++$%%((()**$%%&''())%%%%&&&&&%%%%&%""#!"""##!"" !!"""!!! ! "#"""" #$#&''*++!"""""&''011...PI@UMCTKAWNDWOEQI?OF=IA8!!!!"!%%$!!!'('--,010444454..-./.------*+*-.-/00/-+ (%#1/,5308636411/,,+(/.,.,*-+(53075242053041.630;85=96A=:B>;GC@GC?KFBKFCJEAGB>E@>DFFLEELABI@AH?@G;SD@ZF?\G@]HA^IC`JDaLEaLFaLF`KE`JE_JD^IC]HB[GAZF@YE?XD>VC=TB;S@:Q?8P?8P>7P?7R@8SA:TA;UB;UBYF@\HB^JDcNHfPIfPGeNEcLBaJ?_H>]F5/A72!  .% 4*%)"1*+:1.B7/G;3K>5OA8RB9UD:XG<\I=`K?dM@eM?N;0&'3ɨڷȦѶ|ryl`_VNLGB?<8:9543.20-!"",,,+,+(((-.-+,,-..&&&-../0/---./.-../00+,+    &!,'3-!93%@9)A9,J>4I?5F=4OE:UJ>NE:UK@E<3PD9XL@PFHD@HD@IDAMIEMHEMHEJFBJEBMHEOJGPKGQLHQLHQLHRMIPKGNIENIEOJFPKGMGCMHDOJETNIUPKVPLYSOXSNVPK[UQ[UPZSM[TN[TNZSLZSM]VQb\Vc\Wb[VaZTb[Vd]XbZU`XSaZU`ZU^WSaZWa[W`ZW\VQYRNXQLVOJXRMTNJd]Xջ~ynxtfk^i^uj{qvitfvfxgwfscscucsbq`m\gWcU~bT}aTdUfWeV}aR|`Ox[LrVHnTFpUGwZK}]L}\KvVGnQDjNBdI>cI>_H>`KBZF>Q=6O=6Q@9M;5RA;]ME^OH]NGZKERD>M@:H;5C60.'@0(B2*D4,F5-G6.H7.I7.J8/N:0R?5G?9DA9C?:B?9@<6@<6?:484.40)62,:82==9@?=@@>BC@CCABB?==;9;9687586798:;::<;:=<;>=;>=9;:9;9:<:;<:=>;>><>?<<<:;;9<<9;:8:96A@LKFWTNf`Wph]zlqxoc|sg~uhq|xy}IFBIFBMJGQOLROMMJHLIGROMSQNQOMRPNRPNPNKPMKMJGMJGKHEIFCKGCIFAGD?FB>B>:EB>GD?EA=FB>JFCOLIQNKROLPMJJGDFCAB?A>;A>;GDAB?<@=:A>LD:@81 !"!""!$$# &'&,-,///232344..-/0/..-*+*)**,--1221/- (-5416411/--+)*)&0.,1/-/-+530641530630640852=:7A=:B>;B>;GC@HD@LHDKGCJE@E@:GB>LGCPKGPKGQMHQLHNIEOJESOKXSPYUQXSPSNJPKGOIERMIUROTPMRMISNJTOLVQNWROUQNQMJLHEOJGYUR^ZW]YVXTPPLHOIEXSO\XUZVSWRNYSO[UQ\VRZVRXSNXSNVQLXSN]WSa\Xb]Za\X]XT\WS[WR\XTYUQZUQ^YU\VSWRMQLHQLHQLHBCB}_﯂﯂쮃쮃뮃ꮄ譄欄嬃孅㬅੅ިۦ֢џΞʛƙ×~{zwurolkife~bz_w\v[v[uZv[w[w[v[tZrXpWoVoVnUmTlSkSkRkQkRjRhQeOcMaL^J\H}[HzXFvVEsTDpRCmPBkOBhNAfLAdKAaJ@]G>VA9E3-%&(,GGMGGN:;B=>DDDKBCJ>?F>?FBCK>?G79@E?BYGA\G@]HB^IC`KDaLFbLFbLFaLF`KE`JE_JE^JD]IC[GAZF@XE>WD=UB7P>7P?7R@9SA:TA;UB;UBZF@[GB]IDbNHfQKhSKhRIgQGfODdMBbKA`I@^H?\F=[E]G@_IBbLEdOHgQJiRLkTNlTNmTOnVQoWRnWQpYTs]Vt^Wv`Yw`YjXSbRN`PLZLI]MIiVOlWO^NHYJF[JE[LFZKEXJDVHBTGAQD>@40--.79>:;A8:?9:@8:?78=4593488:?BBHLC@RF@\MF`OG]MFYKD[LE_MFcPHbQI\MGXJD]OGgUKgUIbODUE;I:1=/(1'!)"'!'!*$1("4+%1)$-'"*% '#'"$  & ,%+$5-(E:4( /&!9.)*",&&7.+?3,E91I<4M?6PA8RC9SD9VE;[H=`L@dOBgPBkSDbJ<6( )ڷղֻqsdncX\TMMHCDA>?=:?=987220-#$$,-,,,,(((,-,)*)---&&%+,,.//---./..///10,,,    $ ,'3.!:4%@8)B:-J?5I?5E<3NC8SH:C?;FB>FB>EAcJ>_G<]G=[F7TE>[LEYLEPC=H=6@4.=0)=0)6*#5)"4)!2' 0 =#D'5%&'(()*+,,--..-,,**)( & # # !           9'|]mQU?sA/d6(]3'Y1'V1(U2)T3*T4+Q4+O3*M3*P6-0$ % # # !   P:*`E3[C2XA1T>0P;.L8,I7,H6,H7-G7.H8.H9/H90I:0J;1K<2L=2L>3N?4K<2%&16#:'<* ;* ;* :*!:*":+#<,%=.&?0(A2*C4,E5-F6.G7.H7.J8/L90R>4J@:B?;EA=C@<@=8?<7?<6=93;71:5061+52+0.*=>@?9<;6:8477354232232132254365354021132243231232343675787776887776343565787:;:88888799787522000.11112112112001/121222010/10354143+//',--10-10243.10143IIDvsiȾwx|{vOLINKIKGEHEBJGDFC@A>;HECIGEDBAIFEOLJSPNTRPSQNROLPMJLJGLIEOLHPMIMJGFB?FB>KHDOLHOLIPMKQNLQNKNKIKIFHEBDA>B?:EC@IGEJHFMJHOLIKHDHEAGDA><:--,***"#"$$#&&&###&''-..#$$#$$%&&%%%#$$())())())'((+,,.//'()$%%+++--,--,/..***+,++++**),,,)))+++*++$%% !!!"""##"## ####$$!!!!""#$$&'''(("###$$$%%$$$!"!$$$)**++++,,()(&&%%$#$#"'&%$$$$%%(((****+****())&''&&&$%%!""%%%%&&"##"##&''%&&'((%%%#$$ !!"""#$$### !!"###$$!!!!""$%%""""#""#####$$$"#"%%%())***%&& ! %&% !!**)120,,+F@8KD;F?7;5//+&+&"" !! ""!$$# %%$,-,...122233,,,//...-++*++++++01120. )'$0.+31.1/--+(+)')'%0/,32/0.,641531530630851852;85?;8@<8A=:FB>JEBQMIRMINJEKFAID?NJETPKWRMVQMRNJPKGQLGTOJVQMYTQ[WSWROVQMYUQZVR[VSZVSYUQYUQYTPXTOUQMRNJNJGMIEOKGUQN]YV^ZW[WTUQNPLGPJETOJVQNXTPXSNWRMYSO\XS\XSZUQXRNXSNYSNYTO_YUc^Z^ZVXSNYTOZVQZUQTOJQLGUPKPKFNIDPJETOJQMIYOG۠t﯀쮁뭂ꭁꬂ鬁笂欂媂㩁⩃᫄ߩۦ٥բО͛~ɛŘ~–}}{zwusomlied}az_x]v\uZtYtYuZuZuZtYrXpVnUmUlTkSiRiQhPdMgOgPfPdNaL_J\I}ZGyXFvVEsTDpRDmPBkNBjNBiNCgNCfMCdLBbKA]G>T@8B0*#&(,DDJBCJ89?=>EBCJABJ>?GCDMABJ<=D9:APDD[GA]HB^IC`KEbLFbLFbLFbLFaKF`KE_KE_KE^JD]IC[HBYF@WD>UC7Q>7S@9TA:TA:UA;UB;VBZF@[GA\HCaLGfQKiTMjTLjSKhQHgPGfOFdMEbLCaJB`JA_IA_IA`IBbKDdNGgQJhRLjSNkTNlUOmUPnVQnWRnWQpYTs]Vu^Wv_Xv_XkXR_PL^OK\MIaPKjVOp[QiVN^MHYIC[KE\MFYKEVICTGASF@D83/,,149;@AGRHF]NGdSJ`PHYKDUICUHC[KEcQJhUMdSKZLFZNFgUKfSH^LAP?6>0)0& (!$% '!-% 2)#.'!*$ +% )#(#'"$!#+$,%1*$B820'"-% ;1+/& ("!4,)<0)A5-E90I<3M?5OA7QB8SC9TD9XG<]J?bNAfQCiRDoVGlRCI8,l`T׳ŧrrfY[SKQLGKHDGDAC@>A?F>4G>4SG;NE:JB9G@8'''-./,--/00/00121121))(...,,,))),--./.***-..,,,')!+-#-/$,-$+,#)*!() ++#.-&0/(22)32*32+43,42+33*66-65-44,32+64-86/;93?=7B?:@=8@<7A=9C?;FA=IDAID@HC?ID@JFBKFAKFARLHUPLUPLTNJQKGKFAJE@KE@NHCRLGRLHQLHTOKPJEMGBPJEVPK[UQ[UPXQLYRM\UP_XRc[Ud\VaYS`YR`XR_XQaYSf^Yf^Yc[V]UN_WQ`YT]VQ_XT`YUe^Zd^Zc\X_YT^WRVQL~qi̴ʹk^vjwroo{lzixhufwh{mpo~n|m{lyjxhyivgrdnal_l^k]j[fV}aRz^Ox\LsWHmREkQDlRDkPCsTEnQBiM?kO@oRCmQBjPBfM@eM@cL@\G5M:3J82F60A2-?0,A1,E5/L<5N?8K>6QD=N@9K>7L?8@3-6*$0%-#* 1B&9"&&'&'')**+,,,,,,+)(&%% # !           fF4ÂbjOT>p@/c7)\4(X3(U3)T4*S5+R5,Q5,P5,P6-R8/)$ # !     #X@.ZA0W@0S=/P;.M9-I7,H6,G7-H8.H8/I:0I:0J;1K<2L=3L>4M?4N@5QB7:.'-2 7%:(;):) :*!:+":+#;,$=.&?0(@1*B4,D5-F7.G8/H8/J90L:0Q=3NB:B?;B>:C@9<<4672554888;:698354032/22/21010.0/,.-/10132132011/11021/0//0/01033223212101001/-.,--,/0/23233345466565421000.010121011021/0./0//0/010/0/121454243.10-/.,.-,.--/.-//675PNI{ouxvpJHELIGKHEHEAJGCKHDEB?GDAJGEKHELIFIGDGEBJHFMKHOLJKHEDA>D@=JFCOLIQNKPMJQMJSQMSQNLJGNLJURPVTQTROPNKLIFHEBGDBNKIPMJQOKQNKMIENJFRNJLIFKGDOMIQNKPMILIELIFJGDOLJROLOMKNLIMJGLIFLIFB?=GDAOLIROKRNKVSPXURSPMPMJSOLVROVSPXURXVRXURUROQNJJFCC@FB>IE@MJFNJFKGDFC?C@;HDAC?<:8-,+&&&&&&(((&'')**#$####$%%%%$"""&&&'((%%%$%$())*++'((%%%*+++++,,+-,,**))))))((((,,,*++)**&'' !!! !!" !!"##""# !!!"""##%%&!"""##"##%%%"""###&'''(')))%%%"""#"!#"!$#####'(')))***((('''%%%$%%%%%%%% !!#$$$$$!""!!!%&&%&%&''"##!"" ! !!!"##"#" !""###!!!"""%&&$$$  "##!!!!"""##!!!###&''())$$$ ! &'&!"",)&:5/!61,C=6<6//*%  ""!### ""!*++-.-010122++*//.--,++*.//-..0111/- +)&/-*0/,-+)*'%(&$('$21.542.-+42/30.0/,31/640974?<9B>;@<8A<8FB=JFBRMITOKQMHPJFOJFOJFOKFRMIUPLSOKRNKTPLVQMYUP]XU^ZW]YU\XT^ZV[WTXTPVQMWRNXTPXTPXTPXTPWROVROVROVROYUR]YW]YV\XUYURVRNWRNYTPYUQ\XUZVSVQMZUP^ZV[VSZUR]XT^YU_ZV_ZU`[Wc^Z^YUWRMVQLXSO\WSXSOPKFOIDRLGUOJTOISMHIIGz^}~~꬀ꬁ魁謁竁櫀嫁䪁⨁ীਂީۦףԡџ͜ș|ė|}|zxvtsrolkhe|bz`x^w\v[u[tYsYsYsYrXqWqWpWoVnVmUiReOhQhQfOeNdNcNbM`L]I~ZH{XGwVEsTDpRDnQDkOCjOCiOCiODiODhODfNDdMCaKA[G>R>6=-' ')-BBI@AH<=D?@GBCJ?@H>@G=?F@BJ<>FCAGXGD\HA]IC`KEbLFbLFbMGbMGbLFaKE`KE`KE_KE^JD\IBZGAXE?VC=TA;R@9R@9Q?8Q?8S@9TA:TA;UA;UAH<7721,.3;3+B6.F90J<3M?5OA7QB8SC9UD:VF;ZH<_K@dOChRDkTFqWHw\K_J;%׾԰ֽrqfXYQIID>HDAIFCHFCEC@DB>@=:75230-++*...+,,()),,,)*),-,---...-..,-,,-,---./.,-,   &".)60#=6(B;+C;.KA7J@6E<3PF;OD8G>4SI>H?5D;1QE:PF;KB9JC;))(./0,--233233343443+,+/0////*+*-...//**)./.-.-')!+-".0%,-#+,")* ((,,$/.'00(10(32*22*32+11(21)65,43+54,55-86.:81:81=;4DA;DA:B?9B>9D?;HC?KFBLGCJEAID?LGBKFBKE@PKFSNJRMIQLGNIEMHDNIDNHCRLGUOJRLHOJERLHRLHPJEPIDTNIXRNZTOWQLWPKZSNaZTe]We]WbZTbZTaYS\UO]UOc[Uf^Xd]W_VP[SM^VQbZUd]Xc]X`ZU]VQ_XS_XTXSO~uévhpbuh}nsvtp|l{jzjntxvtrtssr~nzkxjwgvfrbk\fX}bTu[NoUHiPDgMBjPCoSEkPCnQBnQBmPAqSDtVFrVEoSDkQCjQCfNA^I7J;5D60?0+@0+B2,B4,J<4J;3K=6M@9I;5B5/:.(4)$2'"."7!@%*#%%%&&)))**++**))&$ $ # "            oTÂchOT>nA/a9+[6*W5)T5*S5+R6,R7-Q7.Q8/S:1U;2&# !      /!X?.V>.S=.P;-M9,J7,G6,G7-G7.H8/I90I:0J;1K=3L>3M?4N@5OB6QD8N@6&04"8&9(9)9) 9*":+#;,$<.&>/(@2*B3+D5-F7.G8/I90J:1L;1O=2VC:GB=>;8<95?<8>;7<9596174/0-( ''%>??8::356255367366133/10/21023022122/10+.--/.021021/00.0//10.//-.-./.01000//0./0./0.,,+,-+...01023223244355400/01/010232132010-/..0/.0/010010/0/131243/21-/.,-,+-,,.--/./00=<:a^W|wrtuMJGNLINLINKHPLIROLPMIMJGJGDHEAGDAFC@D@=C@=GC@KHEJGEKHEOLHQNJMKHKHEOLISPMTRNQNKLIFOLIRPMOMJQOLQNLNLIHEBDA>HEBNKHNKHHEBJFCRNKUQNQNJMIFMJFNKHMJGKHDJGDJFCOLIPMKMJHGDAHDAHEAIFB@=9@=:GD@GDADA=IFBKHEFC@C?EA>GECJHFJHFHEBHDAC>;C@=KHEGD@B?<=:8,+*&&&(((***())$$$ !!!!!"""###"##$%%(((&&&###%&%$$$#$$%%%)*))*)''&%%%'(')***+***)))())))*)())!!! !!"#####!!!$%%$$%!!!#$$#$$"#####!!!"##"""%%$""!#$#%%%%%%&''!!! ! """!! !! (((((()))'(('''&&&%&&"##### !""  #$$###!"" !! !"!!"" "##### !""!"""""$$$"""###%&&&&& !!'('"##62-HA91,(>82KC;A:32-( !! ##"$$$"!!!! ()(,--/0/011***//./-,+*)111122121++),*'/-*0.+.,)+(&(&$'&$10.5410/,641741.,*0.,641;96A=;EA>D@E?@H>?G<>EACKACL;=ELBB[GA]IB`KDbMFcMGbLFbMFbMGbLFaKE`KD_KE^JD]IC[HAYF@WD>UBK>:=65*,/:78=9:?=@FYOLfTKgULhVMiVMfTL[MGYLF]OIgVMlZOfUL[MEeTHbODL<3-##!!!$)"(!""% % '!*#$(",%,% 90+2*%( 5,',$&2*&8.'<1*A5-D8/G:1K=4M@6OA7QB8SD9UE:VF;YG<\J>aNAfQDjTFnVGsYJ|aOuZH@1't׶к}lpfZaZQXSLPKENJFLIEKHEFDBCA>@>;:8431..../0/./.***---+,,----.....-..+,,,,,,--,-,+,,    %!-(71$>7)C<,E=/H>4J@6D<2QF;PD9H?5QH=F>4@80MB8QG;JA8KC;++*011.//344344555554..-011221---011122---121121+,$-/$-/#+-"+,!(*'(,,#/.'0/(11)44+33+43+44*11(21(22(66-77.;:1=<4>=5@?7DB;EC;CA9DA;GC>KFBLHDMHDMHCMHCNIDMHCIC>KEAMGCKFBOJFOJFNIDPKFRMHTOKTNIQKFNIDOIDRLGVOKTNIUNJXQMXRMVPKSMHVOJ^WQaYT`XR_WP`XR_WQ\TN^UOaYSbYT`XSZRLXPKYRL]UP`XT_XSYRMVOJZSN[UQ}qj~qxkzn`sdwiykqus|mxgwfxhouxwxvxxxwtssp{kvfrbo]hW{`PsYKoTHmSGoTGnRDhOAhNAmQBmQBqUEpTDpTDjO@fM?fN@cL?^H/);-'=0*=0*;/)$1 !##$%''))**)('&&%$ # "          ^Hѐn}_gNS>lA0`9,Z7+V6+T6+R6+R6,R8-R9/S:0V=3V=3$        >, W>-S<-P;-M9,J7,H6,G6,G7-G8.H9/I:0I:1J<2K=3M?4N@5OA6PC8UF;D80,16#8'9(8( 9)!:+#:+$<-&=/(@1*B3+D5-F7/G8/H90J:1K;1N<3UA7PE>><8:73973;85:7485052-52-%# $" $$":;:799577477266266244021021033123132022-//,...00/0/.0/./..//-..---,----,-.-..-./-//.-.-..-././0/010/0/120443110/0.010122021./.+,+,--/0/011010-.--/./10/10/10+-,+---/.-/.,..122FFCpmdMJHJGEHFDKHFNKGSPMUSPTROQNLMJFMJGLIFKGDIEALHDPMIPMJOMJNKHGDAGDAEB>FC?MIFTPMVROSPMMIFIEAHDALIFOMJOLJFCAB?D@=C@=D@=HDAOLHNKGKHEIFBHDAIEBJFCKHEMJGQNKROLPMINKGJFBEB>B>:@=9A=9B>;EB=EB?HEAHD@HD@FB?JFBOLHOMIOLIOLHROKQMJOLHQNKSPLURNPLHIFBB?;@<8B?:;85=:8=:7641632)('"""&&&(('())"##!""!"##$$$%%""""""####$#"""###!!!#$#$$$#$$###""""""$$$#$$### !!  ! %%% ! 83-:4."3/)B;4>81+&" %%$&&%'''$##!! ''&---00/./.**)..-/-,*('/0/232011**)-+)20-0.,0-+,)')'%&%#/.,4201/-752=:71/-.-*530;96@>;GDAIEBKGDLHDPKHQLIQMITOKVRNWSPVRNUPLRNJSNJWRNZUQ\XT_ZVa]Xa]Z_\X\XU]ZV_[W`\X_[X^[W_\Y^[X[WTTPLSOKZVS]ZX]ZX]ZW]ZW[XT]XU`[Yb^\a]Z[VS\WTYURRNJPKGSNJUPLWQMZUP\WRZUPXSNVQLVQMYTPXSO\WR^YU\XSYUPYTOXRNZUQ\WR\VRXSNWRMSQNq\z{|||||}~~~~ާݦܦڦ֢~ў|͜|ɚ{Ɨzwsrqrssssromkj~gzbw_u]t[sZrYrXqWqVpVoVnUmUnUnUnUmUlTjSgPdNeOeOdOdObM_K^K~\J|ZIxXGtUFpRDnQClPCjODjPEkQFkQFkQFkQGjPFiPFgOFdMD_JAWDE?AH=?FACK@AJ=?GA?EVGC\HB_KDbMFcMGbLFbMFbMGbMGbMG`KE`KD^KD]IC\HBZGAXD>VC=UCD:;@9:?9:@9:@89>9:@3("#  !#' & !!#% (!+#' & +$+$6.)6-(!0($*#!0($8.'<1)@5,C7/F:0H;2K=4M@6PA7QB8SD9UE;VF;XG<[I>_L@cOCgRElUGpXIu\LdQ}aNv\ްʬvzpbc[QVPHTOIZVPZUPTPLNJFMJGHEBDB>B@==:71/-//..///00-.-000011122./////-.-++++++,--++++,,      $ ,(71$?8)D<-G?0I>4I?5C:1QF;PE9JA7PF4>6.I@5QGF@;D>:KFBNIDNIDNIDPJETOJUPKSNIPIDOIDPJESLHSMHSMHWPLTNITNIUNIWPK^WQaYS`XR`XQ_WQ`XR`XQd[Td[U`WQ^VPUMHWOIZRM\TO\UOZSMUMHOIC\UOzqqrcsugo`pbseyiquqyiqaq`sbvdzh|kotrorvyyyxurq}ludl\eVy_Pw]NsZMqXJmTFmSEqWHsXHx[Iw[JkQBeL>]E9[D9ZD9UA7S@6R?6Q?6O=4P=4N;2O<3O=3M<3J91K:2L;4N>8M>8F82A3.A4/=2,3(#0% 2&"6+%7+'5,(7)$5  !!#%''((((''%$ $ " !           jL:Ԗsϐox\dK~Q4J4+      I4&U=-Q;,N9,K8+H7+G6,G7-G7.G8/H90H:0I:1J;2K=3L?4N@5OB7QD8VG<5,%#/3 6$8'8(8( 9*":+#;-%=/'?1)A3+C5-E7/G80H90I:1K;1M<3Q>5TB9A=8;9486175075196263.41-31,! #!! %%"7864656877::366255355243233244022022022-..+...///1//0//0/010/0/-.----,-,-.-./.././/.-.-/0//0/./../.-.--.-00/00/./.000/0////./.,--+,,/0/232111,-,-.,-.--/./10-/.,...00-0/,..+-.243TRM{n|}{{MJGMKHNKHPMINKGKHEHFCKHFMJGMJGOMJUROXURXURXURURPPMJLIFLIFJFBKHDHFCFC@HEBSPMYVS[XVUROJFCC@=@=;A>JGCJGDMJFNKGMJFKHDKHDNJGMJFIEBEB>IFBNJGUROWTQUROTQNTQNROKLIEA>;<96>;9A>A>:>;7;84962:63<9642/42075353053052/)(%"!#" %#!     !!!"#""#""#""##"##$$$#$$"##!!!   $%$%%$''&%$$%%%--,000---))(..-.-,)'&.-,00/./.)(',+)64153031.,)'+)''&$/.,5411/-32/9641/-/-+641:86@=:FB?HDAMIFNJFRMJTPLVROWSPVSOVRNWRNWSNWRNTOJVRM\XS^ZV_[W`\X`]Y`\Y`]Y`\YZWTWSPWTQ[XU_\Y`\Y_\X]ZV[WS[WTZWUZWT[WT\YV\YVYURYUR]YV[XUUPMQLIPKFNIDQLGVQLWSNTOJVQL[VR]YU^YU\XTZVQZUQXSN[UQ]XT^YT^ZU]XTXSN^XT`[V[VQXSNUPLNLIhzzzz{{{|}~~~ަ|ݥ|ܥ~ڤ~ؤ~֢~ўz͛yʚzƘy•wuqpooqqqqpnlj~h{dx`u]s[qYpXoWoVnUnUoUoUnUlTkSjSkTkTjSiRhQgPfPdObNaM`L]J~\J|[IzYIwWGsUEpRDmPCkOCjODjPEkQFkQGlRGlRGkRHjQGiQGfOFcMD]H@SA9E3-0#027ABI>?F;?G?AI@BJ=?F?@I=?GJBE[GA^JC`KEbLEaLEbMFcMGcNHbMGaLF`LE^KD]JC\ICZGAYE?XE>WD=UCXD>XD=XC[F@\GA]IB`KEcNGfQJhSLkUOmVQnWPnWPnWPmVOlVNkUNkTMjTLjSLjSLjRLjRLkRLkSMlTNmUOmUNmWPmVOmVPnWPpYSqZSq[Sq[Sq[RlWO_NIZJF^MH^NJgTNr\Sq\Rp[RmXO[LFYID\KE`OGaPG`OGZJBJ>:124138>@F<=D;4M?5OA7QC8TD:UE;VF;XG<[I>^K?aNAfQDjUGnXIr[Kw_N~dRt^طԼ~nogZ]WNZVNZVOZVP\XTYURSOLPMIOMJMKHHFCGEBA><10-000././00-../00011233/00///---,-,++*,-,)**,,,      $!-(60#?8)D=-H@0J@5J@6C:1QF;PE:LC8QG=G?5=6.H>4QG4@@6?>5A?7DB9B@8A?7DB;IFAKGBMHDLHCJE@HC>GA6Q=5N;3M:3N;3N;3N;2M91L:2K:3K;4H93D71D72C619.)0%".# + )('0%  "$%&&&&&$$# !                S<-̑oۚwgsW`GvL8d>.[9,W7,T6,R6,P6-P6-O7.O7.P9/V=3;)"        P9)S<,O:,L8+I6+G6+F6,G7-G8.G9/H90H:1H:1I;2J<3L>4M@5OB7RE:PC8&014"6%7'7(8)!9+#:,$<.&>0(A3+C5-E7.F8/H90I:1K;2L<3O>4VB8NB;<:5=;6=;7;95973:8453/2/*0.*! !! %%"242354354698345123133243455455011/10022-//,..-..///././/.010/0/-.-+-,+,,,-,,-,,-,..-./.121120-/.,-,,-,,-,---./....///./........//....../0/010..--.,+,++-,,--,..,.--//,..+.-*,,+--??;je\rz}}OLJQNLQOMMJFKHDKGCJFBOKHTPNTQOPMKQNLTQNUQOVTQTROQNKQNJPLIPLHNJGLJGLIGGDBFCAKIFROMOMJLIFLIEHDAEA>FB>D@;@<7@<8B?;IEBIFBKHDD@;7C@=C@=A?<64175285320..,),*''%#"!    %%$))(+**,,+++*++*,,+--,,--,,,,-,,--,--+++''%""!  ! ! " !%")%!($ *%!(#,($(%!##"##"''&%%%&&%//.221...*+*////.-*('0.-320/0/)(' *)&752863641/-+.+)*(&//,54120.10-20-.-*0/,530863<96>;8>:7D@=HDANJFQMITPMTOLRMJQLIQMIRMIWRMYTP[VQ^ZU_ZV_[V_[W_[X`\Yb^Z_[WYUQTPLSOKXTPYVSZWSXURXUQ[XT[XTWUQSQMVSPWTQXURXUQWSPWSPTPMNJFKFAMGBQLFWRMVQMUPKTPKVQMYUP[WSZVR[WS]YU\XTZUQ\WS\XSYTP_ZV_ZVWRN[VQ^ZU[WR[VRWTQm^Sٞrxyyyyyyzߦ{ߦ|ަ}ݤ|ۣ{٢{آ|֡|ա|ҟ|͛yʚxǘx•wutponnoooonlj|gzdxau^r\pYmVlUkSlSkSkRkRmTlSkSjRhQhRiRiRgQfQePePdObN`M^K}[I{ZHzYHwXGuVGrTEoRDmPCjNBjODjPEjPFkQGlRHlSHlSHkRHjRHhQGeOEaKBYE=N<5>-'*!57@H@@GVHF]IB_JD`KDaKDaLEcMGcMGbMFaLE`LE^JD]IC]IC[HAYF?YE?XE>WD=VCZF?\HA]IB_JCaLEdOIgQKiTMlVPnWRoXRoXQoXQnWPmVOlVOkUNkUMkTMkTMjSLkRLkSLlTMlUNmUNlUNlUNkTMlUOmVOoXQpYRpZRpYQoYQlWO_MH[JF\KG\LHfSLq[Rq\Sp[RoZP`OHYIDVHCTGBSFAVHA\KCOA<124+,.<=C?@G=>D<=C<=C:@FHHNdVPgWN`QKaRLhWOkYQ`RL]PJcTLlZOiVK^MB\J?4)#!$"#(!' )#+$.'"3+'"2)%2*%",-';1)>4,A6.C90E:1G;2I<2K>4M@5OA7QB8SD9UF;VG7)E=-IA1J@5KA7C;2QF:NC8LB8RH>H@6?7/I?5QF;I@7KC:/-+1210105544549:9887444332554221333565000//.34301+46*9:.78,45)23'23(11'32)54+66,99/;:0<<1<;0::/88-77,77,77+77,>>4@@6@?5B@7DB9BA8A?6B@8FC=HD>IE?HD>FA;B=8B<7B=7E?:HB=KFAID?KFANIDJE@ID?NHCRLGRLFOICLE@JC=MF@RKEQKFRKFUNHTMHSLFQJDTMGXQJ]UN\TM[SL`WQaXQf\Ve\V`WR[RL`WQaXRZRLVNIvjcį´y{joscreiYhY~bTdUiYp`sbjZhXgUiViVgVs[MmVI{bSfWfX}eWhZk\rb|kptsvvspnxgral[dT~cSv^Pw_Pv]Nw\LsXHkQBjP@lRBlRChPBeM@`J>]H=ZF;WC9T@7R>6O<4M:3P=5O<4M:3J81H6/D3-B1+C3-E70B4.>1+:-(5*&3)%+"$""&  !#$$$##"!                    |_ݜyƊky]iOX@mG4_<-X8,U7,R6,Q6-O6-N6-M5,L5,O7.Q9/)  ,U=,R;,O9,K8+H6+F6+F6,G7.G9/H90H:0H:1H:1I;2J=3L>4N@5PC7TG;H:1. 4 14"6%6'7( 8*"9+$;-&=0(@2*B4,D7.F8/G90I:1J;2L<3N>4R@6YG=JE@EB>@>:;9597375163031-0-)-,'%# $# /1/354132132/01122133254476344.//,..-0/-/.-..-..-/.-..-.-./.-..-.-+-,*,++,+*,++,+--,/0/110010-.-,,,+,++,+,,,,,+,-,---,,+,-,././00000./.--,-.-././1//0/./.+-,+-,+,,*,+)++)**(**(++453XUOysgwMKHHECJGDLIFNKHPMIRNKTQOTQOTPNOMJKHFJGDKHENKHTPMVSPWTQUQNSOLOLINKGLIFDA??;9>:8A>;EB?FC?IEBKHDKHEOKHNJGIFBGC@KHEOKHHD@C@<@=9>:7EB>FC?EA=HDAQNJTPLQMJIEBFC@LIFMJHKHEKHDJGCPMJURNQNKROKTPMSPMPMIIEBMIEPMHLHDFB?HEAOLHTPMVTPVSPROLKGDNIFLHDPLHRNJOLHB?<=:6=:6;8452.41-:62@<9B>:B?;GDA?=;.-,###"""!!!       ++*,+*,+*,+**)(*((+**-,,...///111010.0/,+*#! ###&&%(('.+(*'$&#!"" $!" !$ &#$!'$ ,(#,'!.)#+& 5/),'"  ""!!! '''''&''%/.-//.---++*//..-,)(&/-+20/.-,&%$ &%#53053053020-1.+/-+32075332/31/20-/-*1/-31.641=:7?;8=:6A<8D@?G=>F@AJ>@H=?G>@G<>FIBE\IB^JC_KD`KDaLEbMFbMFbMFaLE`KD^JD]JC]JC\IB[G@ZF@ZF@YF?XD=WD=XE>YF?[G@\HA[GA[G@\HA]JB_KC`LDbMFePIhRKjTMlVOnXRoXRpXRpXQoWPnWPmVOlUNlUMkTMkTMkSLkSLlSLlTMlUNlUNkTMkTMjSLjSMlUNnWPoWPoYQoXPnXOkVM^MG\KF[KFZJFbPJpZQq[Rp[QoZQfRJ\KEXJEQFBPD@SE@[KCSD>434()+569CDJBCHABGAAG@AF??E@AGCFMYRSdUNZNIaRLfUOkYQaRM]PKcTLlYNhUJ^LBRA7"#$&'!+$,%3,'& 1($3*%!,%#6-':0(>3+A6.C8/E:1F;2H<2I=3K?4M@6OA7QB7SD9TE:VG;XH.IA2H>5JA7B:1NC9LA7JA6RH=I@7@8/K@6SG>4A@6BA7A?6@>5?=4?=4@?6B@8C@8D@9EA:EA:B>7@;5B<6D>9GAKD?MFAOHCPIDPIDRKETMGTMGVNHYQJWNGSJDbYRtjdlc]g^Yg^Yd[UcZUh_ZznfԼ̼Ƹn_~lxhm`k]fU~aRtZLw^OfViX}eUyaQ{aPx^My_M|aOu\KaK?_J>oWIlTHiSGkUIlUIlUIsZNj[sd~nqvzywtyin`m^}eX|cU{aR~cScRz_NrXGoUErVFsWFqVEiQBdM@`J>\H6U@7R>5P<4N;3I70C2,?/*>/*=/);.(9,'9-(6,'1'",#$     !""!!                    `H؛vȌlz]jP\DsL7d@.[:+U7+R6+Q6+O6,N6,M6-L6-K5,N7-:(      >, W?.R<-N9,J7,G6+F6,F7-G8.G9/H:0H:1I;1I;2J<2K=3L?5NA6QD8UG;A*#65 24#6%6'7(!9+#:,%<.'?1)A4,C6-E8/G90H:1J;2K<3M>4P?5WD9TG@EC?EC?C@<:8464031-1/,0.*-+'*($&% )'!*'"&$%"%$!./.244021/10-.-.0/.00.00032133.0/+--,.-,..,..,..,..,..,.-,.-,--,--,-,*++*++*,++,+,-,././0/./.-.-,-,+,+++++,+,-,,-,,-,+,++-,-.-..../../.,-,,-,-/-/0/-/.+,,(*)(*))+*)+*)**(**'))'))-/.FEAgbZqtrvSPMPMJPMJQNKRPMPMJKHELHFPMKVSPSPMLIFIEBHD@KHDOLIQNLROMQNKROLROLSOLLHDHEAFC@EA>EB>B@=@=:B?;IFBNKHSPMUROSPMPMJOLINJGMIEMIEKGCEAJGBEB=DA=KHENKHKIFGDAEA>HEBOLIOLHIFBB>:D@;>;8C@9GB>RNISOKQMHPLHSNJSOKUPLSNJPKGPKGRMIRMINIELHCPKFRNJRNILHCNJDUQLXTPYVRSPLJFBJGBHEAJF@NJEVSO\YU[XTZWR^\Xa_[_\X\YVXUQVRMUPKUQLVSNWSO[WRYUOZVQ[WRYURVROSOKQMHSMHUPKSOJRMHXSN[WRYUQVQMRMHQLGPKFSNIZUPb^Yid_ȓntޢuޣvޤwݣvܡvۡvڢw١v١wءwנx՞wӜvќvМwϜx̚wɘvƖvÕvuspnlmlkljjj~j{hyewct_p\mXkVhSfQeOdOdNeOeNeMfOgPfOdNeOfOgPfPeOdNcNbNaM`L~^K|]Jz[IwXGtUErTDqSDpSEnQDlPDjOCiNChOCiOEjPEkRGlSHmSImTIlSIkRHhQGfOEbLC[G>R?8D3,5% $&*?@GBDL<=D=?G@AJ?@H>?F=>F==DUFD^JB_JC`KD`KDaLEaMFaMFaLE_KD^JD^JC^JC]IC\HB[G@[G@[GAZF?YF?ZF?[G@\HA]IB]IC]IB^JC_KD`LEbMFdOHfPIiSKkUNmVOoXRpYSpYSpXRoXQnXQnVOmVNmUNlTMlTMkTLlTMlTMlUNlUNkTMjRKiQJiRKiRKkTMmVOmVNmWNnXOmWNkUM]LFYJE[KG\LG^MHmXPqZQoYPoZQjUMZJEVIDQFBQFAQE@XICVF@;66&)-()+9:?>?F>>D>>D??D??D?@EBCIIIP[QO[NIhXQlZSlZScTN_RKeTLlXMgTH^LA>1* #!!$!% *#/'#(! 0'#4,'#*$!5,&9/'<2*?4,B7.D90F:1G;2I<3J=3K?5M@6NA6PB7RC8TE:UF;WH=3?=4>=3><3=;1=;2=;2><3><2=;2<91>:3@<5?;4B=7B<6C=7A<6C=8D?:C>9C=8FAJD>NGBNHBKE?JD?NGBPIDPICMFAPICVOIWPJYQJQIBULFc^_QMOSOQTPRicbӻǸŵԺʰ̳yranvel_jYfTrXJjREqXIrZKrZKpYJnVFnVEkSBiQ@lSBhO@bK>[F9^H5S=4P;3M:2J81I6/H5.D3,@1+>/*<.(9,'7+%4(#1&!,")&"                    2$iˑn|^kQ\EwN9gB0];+W7*S5*P5*N5*L4*K3*I3)H2)J4*D/&          N8)V>/Q<.M9,J7,G6,F6,F7.G9/H:0H:1I;2I;2J<2J=3L>4M@5OB7RE9SB7> :43 5#5%6'7)"9+$;.&=0(@3+B5-D7.F90H:1I;2K<2M=4O?5SA7ZH>KD@C@:A>:=:653/1/+/-*.,(+*%(&"#"&#(% &$,*%32.775244.00-/.,.--..-//,/.-//.10-/.+-,+.-,..-//.00.00-/.,--+--,--*++*++****++*+*+,++,+..-..--.-,--,--,-,+,++,,,--,,,,,,+,+,,,..-..---,,--+,++,+-.-+,+)*)())'(('))(**(*)()))++(**'*))++565VSM|ui~sgththXURUROROLSPMURPVTRROLNKHOLISPMMJFIEAJFBLIFQNKPMJLIFMIFKGDIFCIFCMJGQNJROLPNKJGDEC?DB?B?;A>;DA>HEBGC@EA>HD@PMJURNOLHIEAHD@SOKZWSROLNJGQNJTPMTPMVSPXURUQNQMIMIDOJFQMJSOLVTQXURROKOLIOKHNJFLHDLIDHEBEC?IFBDA>-,+#$$$%% !"  !!!###$%%%&%$%% """%&&###"##()))**###"""$%%&&&$%%&&&'''"## &&&$$$%&&&&&##"$$#$$#%$#'%$&%$&$#+*)(('&'&+,,,--*++)**''')*),,,,,,,-,010000,,-*++*++())...+,,())+,,,-,)**'(),--)**((((((--,-..#$$""!(('**(++****,,,***())%&&'((*+*++++,,,*(,)%%$"/+'($ #   "$!%"'$+'"+'"1,'1,&0+%1,&0*%($ +&"60*/*%&" !! $%$'''!! %%$,,+./.--,))(-.----(('+*)-+*('& .,).,)/-*/,)/-*/-*32/764542430420-,).-*/-+31.852=95?;7D?;HD@SOKVRNUPLRNIRMIUPLVRNRNIOJEOIEOJEQLGPLHPKFTPKTPKPLGJFAIE?OKFSPLWTPURNNKFKHCMIDPMHOLGUQM\XU[XSWTOWTP\ZV^[XZWSWSOTPLQLHRMHUQMWSOYTO[WR\WRZVQTPLQMISNIVQLXSMWRLVQLXSMWRMSNIRMHTOJSNISOJUPKWRMYTOVTQjZ۞q۟r۠tۡtۢuڡu٠u؟uןuןu֟v՞vԜuћuϚuΙu̙uʘuȖuŔt“tssqnigklkj}h|g|h{gxdvcuaq]mZjWhTdOcNaNaMaLbMbLaKcMdNcMbLbLcMdNdNdNbMaMaL`L~^K}]Kz\JyZIvXGtVFqSDoRCnRDmQDlPDjOCiNChNBhNCiPEkQFlSHmTImTImTJlSIjRHgPFdNE_JAXE=M;4?.'0",.2ACK>?G=>E@AI@AI>?F<>E;=EHCG]JC^JC_JC_KCaLEaLE`LE`KD_KD_JC^JB_JC_JC^IC\HA\HA]IB[GAZF@ZF@\HA]IB^IC^JC^JC_KC`LDaMEcNFeOHgQJiSKkUNmWPoXRpYSqYSqYRpXQoWPnWOnWPnVPmUNlTMkSKlTLlTMlTMlUMkSLiRKiRKhSKhSKjTLlVNlVNkUMmWNmWNlVMbOH\LG[LG_NH^MHkVNpZPoYPpZQmXO]MGWIDSGBQEAPE@SF@VF@C;9*.2!#&+-1;AHLJO\PMgWQm\TjZScTNaRKhVLkVKeQFZH=) !"   !,%!*#  .&!3+&%("4+%8.';1)>3+A6-C8/E90G;2H<2I=3J>4L?5M@6NA6PB7QC8SD9TE:VG;XH=[J>^K?aNAdPCgSEjVHmXJp[Ls^Nw`PzcR~eTiWo[lYi^RVUMZWP\YTYWTYWTWUQUROOLIHEBHEAMIEIFAC?:>;70.+)****)/00-..*++,--.//////0/****+*)*)******---   %".* 92'@9,H@1H@1D;2H?6@90LB8KA7J@6QG:2>:2?;4?:4@;6?:5A<6?94A<6B=7D>9E?:IC>JD>JD>KD?JD?KE?JD>JC>NGBMFAIBjRDlTFjSEgPCaI>cLAgPE|aSn^wewe}kqnyisdscn_pbo`j[dT~bPoVHpWIqVHlRCcK>`I=bK>`I=ZE:WB8U?6U>5W?5X@6XA7S>5P<3M:1H5-G5-E4-A2+=/):-'9,&7+%6*$4)$2'#3($4+'4+(/'$)"#                        vV@˒n`nR^FyO:hB0^;+W7)R4)O3)M3)L3)J3)I3)H3)I3*L6,-       9)Y@0U>/Q;.L9-I7,G6,F6-G8.H90H;1I<2J<2J=3K>3K>4L?5NA6PC7TF;O:091 04!6$6%6' 8*":,$1)A4,C6.E8/G:1I;2J<3L=3N>4P@6WE:YKCIFBEA=@=9@=8=:66401/+/-)-,'+)%(&"#"!# " &$ -,(452254/11-0/-/.-/.,..*--*,,+--*,,)++*,,+---/./11/10-/.+-,,.-.0/-..+,,*++*++*+*+,++,+--,-.-./.-.-+,,*++*+**+*+,,,,,,,,+,+,-,-.---,,-,,-,,-,+,+,,,*+*&('&('')('((&('&('%''(*))+*)++*,+,.-CB?nh^zn|pymVSPQNJQNJQNKNLIROMWURWURVSQSPMNKHNKGMJGKHEMIGOLIKGDJFBHEAJGDNKHSPMVSQUROROLMJGFC?JGCLIENKHKHEHFBDA>DA>GDAKHENKHQNKSPMROLROLROMNKILIFJGDIEAKHDOLIRNKNKGLHDNKGPMITRNSPLPMISOKWTPXUQQNKOLHPMITPMVSPTQNTQOYVSWSPUQMSOLTQNVSPWURUROLIFD@NKGQNJPMINLHJGDIGDDB@(('&''(**#$$"## !! !"! $%%#$$#$$$%%%&&$$$#$$#$$#$####()(+,,"#"%%%###%%%%&&%&&&&&"""'''%%%&''&&&#$#$$$$$$&&&)((+*))'&+)(+)()((,-,.//-..***'((+++--,)*)))(...///,,,+,,+,,)**-//***)))+,,*+++++)*++,,)*****))(,-,-..#$$%%$**),,+++*)*)+++***)**%&&&'')))*++*++,*(+)&+)&3/*2.*1-)3/+51,50+4/*61,72,72,:3-=70B;4F>6G@7G?7E>6D<4E>6E>6D=4A91>701,&%&%()(#""##")))-.-++*''&./.000++*..,0.-('& +)&-+(.,)0-+0-*.,)20-54142010-20..,*.,*.-*31/852A=9C?;D@;ID?QLGQMHRMITOKTOJSOJSOKTOKTOKTPKPKGNJFQMIUQLZVQXTOTPKRMHMJDOKFYUPXUQVSOVRNROKQNIURNVSOXUQZWSWTPURMSPKWTP\ZU\XSYUPWSOTPKTOJUPLXSOXTOYTOXTPXTOWRMUQLTOJUPKWSNVRMVQLXSNZVQWSMTOITOJQMHQLHVQMUPLVQMOOMy^ܞq؝q؞r؟s؟sמs֞t՝sԜsӝtӝuҜtϚt͘s̘sʗsǖsŔsÔsrqppnmkghh~i}h{gyfyfxeubsaq_n\kYiVfRbN~aN|`M|_L|^J}_J~`J~_J`KaLaL~_J~`JaKbLbLaLaL`K~_K}^J|]Jz\IxZHvXGtWFsVFpTDnRCmRClRDkQDjPCiNBhMBgMBhNCjQEkRGmTImUImTIlSHkRHhQGfOEbLC]I@TA9H6/;*$*239=>F<=C>?GABK>@H<=E<=E<UF?E;8'*.!#'$&(78>:;A9:?99>99>78=78=;=CBELULM\OLcUQcUP_RL`QJjWMiUIdPEP?6     #$ ("/&!3*%#& 2*%6-&:0)=3+@4,B7.D9/E:0G;2H<3J=4K>4L?5M@6NA6OB7QB8RD9TE:UF;WG0IA2I@3JA4=6+=6-=5,<5,B:0B:1=6-D<2J@5H?5JB861,//.22021/3318864313200/-0/-10.22065322///,55244-66*99-::-<:.98,66*43(10&32(64*97-:8.98-97,76*76*64)75*76*33'22&44(65)54)65*76+86,86,86+98-97,64*74+86,:7.:6.=82@;5@;5D>9@:4>93?:4B=7A;5?94B<6GAdNBoVI|bTl\xg{jwguetdrcyhucgYyaTw_PbNClUHqWIiQDlSEoUFjRDcL?]G;WA8V@6W@6W@5YA6YB7T@5P=3L:1F5-G5-E4,@1*>0)=/)?0*?0*>/*=/);.(=1,@50C95G>9F=8@8481-%                             wXdpS`G{Q0O;/L8-H7,G6-F7.G8/H:1I;2J<3K=4K>4L?4L?5M@6OB7QC8TF;=*"./26#6%6&7(!8*#:-%=0(@3+B5-E7/G90I;2J<2K=4M>5O@6RB7[I?SKEJFBFB>C?;@=8=:68511/*,*&-,(,+')'#$# # $!%#*($22/133/22/11,..,.-*-,*--+--+--)+*(**(**)++),,,//-..*,,)**(*)+-,-.-+--*++*+*)*)*,++,+++++++,,++,+*,+*+**+**+**,++,,,-,,-,-.--.-,,,+,++,++,++,+)**)*)'((&''&''&''$%%%'&$%%%&&&(()+++--,.-231PMF}shxm~tiUROTQMSOLQNKRNKSOMVTQXVSURPROMROLPMIMIFMJGOKHLIFLIFNKGROKVSPVTQXUSWUSOMKKHFPMJNKHMJGQOLROLOLILIFJGCJGDPMKSQNSQNSPMSPMRPMSPMTQORPMMJGMJGOLIRPMVTQYWTXVSTQNOLHKHDJGDLIFPLIROLRNKPMIOLHQNJQMISPLTQNRNKQMJTPMVRNZVSVSOROLQNKMJHOKIMJGLIEJGCNJGSPMRNKROLIFCGDA@>;&'&%&%'(("##!"" !!#$$ !!!"""#"$$$&''%&&$%%%%%%&&$%% &''$%%$$$###(((+,+!"!&&%%&&$%%$%%#$$%&&$$$%%%%%%&'&&'&$$#%%%(((**)+++....-,,*)+('('',--,..+,,)**()(,,+..-)))))(----.-+,,)*+**+))),--&'''''+,,*+++,,+,,*++***)**''&*++,--###%%$((')))((()*)***''''('$$$&'&'''(((*++,,,--,B=7E?8D>7D>7F@9F?8@:3=70>70>70?92A92C;4C<5E=5F>6E=5C;3A:2E=5H@8E=5?80<5./*%%%%(((###""!''&**)**)(('/0/232---..-1/.,*)"!)'%,*(+)'.,)0-+/,*1/,53121//.+10-.-*-,)/.+641752A=:FB>FB=LGCQLHOJFNIETOKXSOYUPYTPXTPWRNUPLSNIOJFOKFQLGSPKSOJRNJQMHNJEMHDSOKWSOXUQ[WSYVQURMURNWTPXUQYVRWTOWTOXUPXUQZWR^[U^ZUZVRVROXTPZUP^YT_[WYVQYUQYVQWTOXUPURMQLGRMHTPKVRMVRMYUPYUPRNIPLGQMHQLGUQLRNJVQM^XRh؜p՛p՜q՜qԜqӛqҚqЙpКqМrЛsΚr˗qɖqǕpŔqÓqpooonljjjg}f{ezeydwcubuctbsap^m[kXiXfTdQbO|`Mz^Ky]Jx\Hy\Hz]Iz]H{]I|^J|^J{]I{]I|^J}`K}`K}_K|_J|^J{]Jz\Iy[Hy[HwYGuXGtWFrUEpSDnRCmRDlRDkQDjQDiOChNBgNCgNChODjQFlSHmUImTIlSHlSHjQGgPEdND`KBYE=O<5A0*5% " "%:;B=>E;F<=E9;DD?B\JC]JB^JB_KC`KC_JC`KD`LEaLEaLDaMEaLF`JD^IB_JC_JD^IC]HB]IB^JC_JC_KD_KD_KC`LDaLEbNFcNFePHgQIiSKkTLmVOoXQpXQqZRrZRrYRqYQpXPoWOnVNnVOmUNmUMmUNmVNmUNkSLiRKiSKhRJgQJgQIiSKjUMkUMkULkVMlWNnXOgSKZJEXID]MG]MGfTKp[Qp[QoZQnYPiUMYJERFBMC?NC?KAH<8%'* !$!#237<4L?5M@6N@6OA7PB7QC8SD9UF:VG;XH`NAbPCeRDhTFlWIoZKr\Lt^Nw`PzbR~eThWmZq\ydSWQHKJCOLEURMWTOPMIEB>C@;A>;A>;1.,'''$%%,--,--()),--.//011//.,,++++()))))***--,   #!*'1,#82'A:-D=/H@1IA1>7*3.#3.#1,!/*1,!4/$3-"3-"2,!3-"92&0.'..)*)$((#(($''"''#))%))%*)&,,(--)/0+/1+45.6709:2>>6??7@?8??8=>6;<5<<7@A?9AA;CC>EE@FGCGHDFGCGHDIJFIJFFGCCD@BB>AA9?=8A=8?;6A<7@;5?:4;6152-51-63/;96DEBIKJFHGCEC>?>587EDB~ui=41{syu QHB}zltizmk^naobfZt\Qrgy^Ok\xaSnWKgZlRB`I<[F;\F:[E8\G9]H:YF7UB4WC5\G8ZF7M;.J8,H6*E3(F3(I6*T@2ZE7[E8WA5L9/K80M91T?6XC9lSFy_P|cT~gYl^xcVwbVn_scygr`v`RmYNhUK\KBmWLy]Oz_O}bQx^MmTEcL?\F;ZE:YC8T?5S=4WA6T?4M:1K90G6.C2+C1+B2+>/)@1*=/*=/)?/)?/)=.(8+&8*&7*%5)%7,'7.)5,(0(%)#                               2$^wXeJU>oG4a<,Y6)T4(P3(N3)L4*L5+K5+J5,J6-K7-N90A/(    +4$J5(^C2^C3XA2S=0N:.J8-H7-F6-G7/H90I:1J<3K=4K>4L?5L?5M@6NA7PB8SD:O@61235!8%8'7( 8)"9+$<.'>1)A4,D6.F90H:2J<3K=4M>5N?6QA7UD:\KBLHDJGCFC?C@<@=9<:69731/++)$,*&+*&('"%# " %#&#)'#21.133.00/11-//*,+),++--,..+--)++)**)**(**'))(***,,*,,)++())')()+*+-,+-,*+*)*)))))*)*+**+*+,+*+**+**+**++*,+*,++,,,-,+,++,++,+,-++,+*+*)*)*,+)**)*)'('&''%'&%&&$%%"$$!##"###%%'))*,,,..+--984zqg|qznUQNSOKQNKNKGRNKUROQOLOMKQNLTPMTPNQNKOLIROLUROMJGGDAMIFUROXVTXVTYVTXVTROLKHEMJGQNKPMKRPMQOLKHFJGDMJGPMKTRPVTRVTRURPROMROMRPMUROROKJGCJGCNKHPMKNKIROMXURYVSVSPROLNKGNKHQNKTQNVSPTQNNKGMJGOLIROLSOLVSOXTPTQMMIFVRNTQMLHDLHEIFBJGCNJGQNJPMIQMJTQNGEB>=;210*)(#""#$$$%$&'&###"""!!!#$$!""""# !!#$##$$&''&''%&&&''&''$%% %&&#$$"#" !!&''())$$$&&&#####$"##&&&'(("""%%$&&%(('%%$&&%(((+,+---,,,++*(&%*'&)('-..*++)***++)*)++*..-*+*+++--,+++*++)**))))*)+,,())%&&))**+*,,,+,,)*****)**###'((*++"""$$#$$$%%%%&%((()**%%%&&&$%$()(&&&$$$())+-,,,,E?8F?8F?8F@9E>7B<4C=5D=5@92?81@:3A:2B;3A:3D<4F>6H@8F>6G?6IA8JB:D=5=6.93,-(# &&&*+*)*)$$#&&%(('((''('/0/232.....-20/,*)#!+)&*(&'%#,*(0.+.+)0.+6524301/,10-.-*-+(-,)641641=:7EA>HD@OJFQMHQLHPKFRMHTOKWSOZUR[WS[VRYTPWRMUQLRNIOJEQMHUQMUQMQMIQMHQMHOKFTPLZWR\YU]ZU\YTZVR[WS\YU[XS[XT\YT_\X]ZU[XS^ZVb_[_\XVSPTPLXSOZUR^[W[XSYVQXUOURMTRMRPLRNIUPKXSOYUPTPKPLGPLGOKEMHCMIDNIDRMHVRMUSPo]ԙnәnӚoҚoњpљoЙoΗn͖n͘p͙p̘qʗpǔoŒnÒnnnlkllkjhf}e{dybxbwbt`s_q_p_o]n\lZiXhWfUdRbP|`Mz^Lw\Jv[IuYGuYFuYFuYFvYFwZGw[HwZGwZGx\Hy]Iy]Iy]Iy\Ix[HxZGwZGwYGwZHvYGuYGsWFrVFoTDmRClQClRDkQDjQDiPDhNCgNCgNCgNChPDjRFlSHmTHmTIlSIkRHhPFfOEbLC]H@VB;J81<+%/!*,0<=D:;A>?GBDL>@H;=D;9*'(,.1<=C:;@;;A9:?78=56;78=:4,@6-B7.D80E:1F;2H<2I<3I=3J>4K?5L?5M@6NA6OB7PC8RD9SE:UF;XH^M@aOBcQCfSEiUGlWHoZKr\Lt^Nw`PzbR}eThVmYr]nZdYMPOHQOHROJOLGLIDJGCHDAA>;A>;EB?20.())%%%,---..*+++,,-..011110//.,--))))))***,,,   !"!(('++)/.+20-52.52.42-41,51,:5/<81?:2@:2>90;6.=7/;6-72)94*:4)<5)=5(80#F=1WQGWWSKLJBCABCBDEDFGEEGFGJHHJHHJIIKJJLJJMKKONLPOJNMILKLNMNPPMPPPSSQVURWWRWVSWVRUTPTSOSRNQPKMLJMMJNNGKKHLLJNNHKKEIHEIHJMLLNMHKJEHHEHHEHGEGFEGEDFEDFEDGFFHHFIHFIHEIHFIHGHGGGFEECCB?996+,*))&..+775BDBHLJDFEEHG5=>wmfζݾ|fWe\XxƷrkiG;2ynuhgZg[m_tfugocy`UnVLzdYqYKv_QoZMpXJzcVcK<_I0I9,O=0E5*D3(J8+F3(?-#A/%N:.P<0L8.L8.N9/M80L80T?6UA7ZE:mUGt[MqZMwaTp\Pr]R|fY|eWiZwaSmYLoZNq\PoZPu_UeWfV|bRnVHbM@`J?[GaJ=ZD9ZC7YB7Q<2N:1P=3M;2K90M:1L:1E5.E6.D5.C4-B3,A1+?0*<-(;-(7*%4($0%!-"+!*!.&#.'%("                            P:+~]kNZBqJ6d>.Z7*U4)Q3)O3*N4*M5+L6,K6-J6-J6-J7.N903% 0"C/"P9*Z?/\A0aE3^D3ZB3V?1Q5M?6M@6N@7OA8QB9TE5N?6P@7RB8YF<9686264020,.,(+)%+)%)($&$  $"&$ )'#0/-244.11.00.00+-,)++*,,*,,*++())')((*)(**'))'))'**(+*(**(**'))()))+**++*+*)*)()()*)*+****++*+-,*,+*+**+**+*)*)*++,-,+,+*+**+*,,++,,)**()(()(())())')(&''%'&$&%#%%!#"! !!"$$%''')))*+*,,+-+a[Rzpe|rgURNPLGHD?FB=HD@KGDJGDIFCNKHURPROLMJFKGDHDAGDAFC@FB?HDANJGMJGJGDKHEOLJNKHMJGNLISPNUSQXVTVTQSQNSQMOMJHFDJGEOLJSQOTQOTROVSPURPVSPTQNNKGJFBIEAJGCIEAGC?JFCQNKUSPQOLKHEKHDPMJTQNVTQWTRSPLNKGMJGLIFPLISPMSPMQNKNJGMIFKHEFA>KGCLHDNJFOLHQNJTQMTPMROL221!"" #$$"##%%%"##!""   #$$"##"##$%%"##  ! $%%#$$'((&''&'''(('''$%$ ! """"##"#"$%%()( ###%&&#$$$%%$%%%&&'((###''&'&&(''('&(''''&))),-,+++***&&%&%$(((.//,-.*++*++)**))),,,+++,,,,,+)))&''&'')))****++())$%%'''(((('''((%&&)**()) !!%&&()*"""##"""!"#"$$$'''())$$$%%%''')**$$$ ()(*++++*E>8E>7F@9G@9F?8C<5C=5A;3>81?81@92>81?81@91E=5G?7JB:G@7H@7IA8H@8C<4<5.71+,'"!"""""'((,--...''&&&%'(''('&&&./.222-..--,1/..,+'%"+*'+)''&$,+)1/,-*(.,)5415311/-10-/-+-+),*(530530;74D@F;B[IC^JB_KC`KDaLDbMEcNFdNFdNFeOGeOHcNGbMFbMFbMEaLDaKD`KD_JC_JBaLDaMEbMEbMEbLEdNFePHgQIhRJjTLlUMnVOpXQqYRrZRsZSt[SsZRsZRqYQpXQpXQoWPoWOoWOnVNnVNlUMjTLiSKgQJgQIgQIiSKjULjTLjTKkVMlWNlWMjUL]LEYICYJDXJD^MFmXNnYPnYPmXOlWNeSKUGAOC?LA=J@;J@;M?9.&$(*,<=B:56;57<8:@LIMiYT`SOcUNiXNmYNjVJfRFTC9       ")""#".'#3*#7.':1)=3+?5-A6.C8/E91F:1G;2H<2I<3I=3J>4K?5L?6M@6NA7OA7PB8QC8RD9TF:VG;XI\L?_N@aPBdRDgTEjUGlWHoYJr[Lt]Nw_PzbR}eThVlYr]s]pbUVUMWTNXUPSPMNKGIFBD@=EB>GDA20-)))''&//./01.//-../0024323200/---))))**)*)+++"""   "!(%".*%50*94-;5.>80A;3D>6GA9HB:LE@??AACEEDGFCFFCGFCFFDGGDGGDGGAEEAFFDHHEIIFHHCFFADCADCACCBEEAED=@@;>>=?@=??=@?;>=9;;:=<;==;=<<><<=<:<<9<;:;;:<<:==;=<;==;><>A@?AA?AA;=<..,,,*686:;9;=<:@@ulֻбp>0($"#ƷYSQA0"hP:p^viobk_k^vg|mykocu\QjSHr\PnVHfRFcOCgOAlUIcL<]H;XE8S@4VC6Q@2M=0O>0N=/H8+D4(F6+I7+H6+I6*B0%;*!<+"E2(G4*G4+F3*Q;1S=2N:0P<2R>4Q>4_I=v\LsZLs\Ot_Rv`Tt^Rt^Qj[l]o_m]waTp[Pr]Qi\jZzaQq[KjTGgRFiTGpVGjQB]F:[D8T>4P:1Q<3T?5UA6VB7XC8R?5J90G70G70H80H7/F6.I70I80H81D5/=0+9,(7+'7+(7,):0-:0-8/,-&#                          aF4xY`FyQ;gB0\9*V5)R4)P3*N4+M5+L5,K6-J6-I6-I6-I6-K7/', C1#T=,[A0^C2^D2^C2_D3_E4[C3W@2S=0N:/J8.H6-F6-F6.G80I:2J<3K=4L>5M>6M?6N@7OA7PA8QB9TD0)@3,C6.E80H;2J<3L>5M?6O@7QA8TC9\I@RJENJGNJGNJGGC@<96:8485152.1.*-+'+*&)(#%$  #"%#'%!.-*122/11.00.00-..+,+*++(*))*)')(()()***,++-,)++'((&(('))(**)**(**())(*)()('(''(')))*+***)**)+,++,+)**)*))*)()()*)*++)**()(()(*+**++)*)'('%'&&'&()(()('((%''$&%$&%"$# !!! "$$$&&%''&(('))')(RMEwlauj`WTQTQMLHCID?IE@JGCNJFNKGMIFOLHROKQNKOLHJGBHEAHEBFB?GD@PLHLHDC?;C>;GD@KHEOLJPMKNLJMKIRPNTQOSOMSPMROMNLILJGPMJTQOURPSPMUSQXVSUSPXUSYVSVSPPMINJGMIEMIELIEMKHURPROLMJFJGDNKHPMJXUS\ZYZXUPMIMIEOKHOKHJFCHD@GD@HDAFB>IEAID@MIEPMHPLGNJFOKHROKNKHGDA..-&''"##!""%&%$%%"##!!! """ #$#%&&$%%#$$""" "#"!"""###$$)**&'''''())&''#$#!!!"##"## $%%&''""""#"$%%"##$%%&((#$$&'' $##''&%%$%$#(&%('&''&''&******(((((()))*++.//.00,--*++())'''(((++*--,,,,***%&&%&&&''%&&&''%&&"##%%%'''&%%%%%$$$())((("""&''''(!! ""!""!$%%&&&"#"$$$%&&''("""'((*++.-,F?8F?7G@9F@8F@9E>7D=5A:2@92B;3C<4?80<6.>70D=5F?7H@8E=6F>6H@8H@8D=5=6/71+)% ""!"""&''+,,//.('&%%$''&***)))///455011//.//.00/)(& *)&.,)*(&-,)420.,)-,)21/5410/,1/,.-*,*(+*'420430;84E@=JFBTPKUQMVRMTPKPLHVRMYUQYUQTPLRMHPKGLHDOKFQMIPLGPLGQNIRNISPLURNTQMXTO]ZUc`\a^Z\YU\YU\YUXUQZVR\YU_]Y^\XXVQURMVSNXUPYVRVSNSPKOKENICOJDOJFOKGSOJYVPYWRUSOUSNSPKRNHUQLROJNKFMJDLHCPLFVRLVRMQMGQMHQOKiXЖlΕk͖l͖m˕l˕lʕlɔmȓlǓlƔmœmÒlkjiiigffedd|bzbxau^r]p[nZlXiVhVhVfTeScRbR}`O|_O{_Oy]Mv[KuZJsYIqWFoUEnUEnVEnUDnUDnTCnTBnTBnUCoUDpVEqWEqWEqWEqWEqWEpUDpUDqVErWErWFrWFrWFqVFpUEnTEmRCkQCjQDiPChPChOCgNCgNCgNCgNCgODiPEjQElRGlSHlTIkSHiRGfOEcMC]I@WD-'1""$&::@:;A>?GACK>@H;=E:KADcTOp^Vn\So\QnYNiTIdPDF7/      & %!+$ 2)"6-%9/(<2*>4,?5-A7.C8/E:1F:1F;1G;2H<2I=3J>4K?5L?6M@6NA7NA7OB8PC8QD9SE9TF:VH;XI=[K>]M?_OAbQBeRDgTEjUGlWHoYJq[Lt]Mv_OybQ}eSgVkXq\v_mZ[YRVTPYVSTQNOLHLIFMJFIFC1/-())(''00/011011////00455343110-.-)))***())*+*"#"   $!*&!1+%5/(71)92*>7/A:2B;3D=4G@6IA7KC8NE:UK@]SFbXJdYLbWKg[Ng\OeZMaXLJKHCFE>>AAADDBEDCFFAED?BC>AB?BB=@@;>>=@@>@@=@?>A@>A@=@?=@@?BA?BA=@?;>>=@@:==9;<8;;9;;9;;9<;8::9;;:<<8:97:98:99;;;==:<;8;::<;:=<:;;:<;:<;8:99;:8;:7::899-.-''%454/43FEBԶp,$LGEöĶUMJgP;dKp`whugnan`yj|mxjobt[OfNCkUJjRD^J>ZG;[E8bMB^G:VB5VC7R@4UD6QA4RB4P@1G8+A2'@0&D4)J8,>/%;,#D2'E2&9(@.$F3)I6,H6,L9/L8.Q<1U@4S?4R>3Q>3_H;]G;bMAu^PgWwaSxaRm]xfyfl\{cTs]Pw`Sq`q_iX{cRs]Mp[Ls\NnVH`J>XB7ZD8U@5T?5ZC9[E:VB7S@5TA5Q?4M;2J80I81K:1L;2J91K:2L:3M;4L;4G71E60B3.A3/=0,8,(3($/$!'                       A/#sVwW[BqK6a=-W6)R3(O3)M3)L4*L4+K5,J5,I5-H5,G4,I5-O9/O:*ZB0]D2^E3_E4`F6`F6_E5^E4\D4X@2T>1P;/L8.H6-F5-F5.F6/G81I:2J<4L=5L>6M>6M>6N?6N@7O@8RB:Q@8<*#;(!;)"<*";*";*":*"9*#:,%1*A4-D7/F91I;3K=4M>5N?7P@8RA9VD;^LDNIELHDKGCLHEGC@>;7=:6<957401.*-,'+*&'&"#" #!&$ ,+(010.00032/22.//-.-./.*++')(())())())*+*+,,)++'))&((&((()))***++'))())'('%&&&'&()(*+***)++*)*))*)()((('()''('()()*)'((')(()))*))*)(*)'((%'&$%%&'''('')('((%'&$&&$%%!"!! !###%%%'''))'))#&%E@:k_Ti]RNKHKHDHD@JFAJFBIEAJFCOLHOLIJGCGC@HD@GDAJFCLIFKIEKHCNJFSOKOLGJFAMIEOKGLIFKHFKHFGDBFCAMJHPMKOLIOLIQNLQOMLIFOKHVSPWURXUSYVTZWUWURXVSXURRPMROLRNKPLHNKFLIEPMJTROROLPLIMIFOKHPLIOLJQPPTRQQNJPLHPMIQNJRNKQNJMIEJFBKGCOKGOJGQMJSPMPMIJFBHEAMIFOLHLIE..-''' !! !!&'&$&&"##!""   !! !!&''%''"##%%%%%%###"#"#$$"## !!###())#$$&&&)))%&& !!&''%&&&''&''$%%###!""$%%!"""##&((#$$$%%"""%%$%%%####""(&%('%'&%$##''')*)'''())*+*,--/00012-//*++())%&&&&&*+*-,+******&''%&&#$$""""##$%%!""%%%'''%&%&&&%&&''(&''##$''(&'' !!!"#"%%%$$$%%%&&&$$$$$$&&&&''"""()()**0.,HA:F@8C=6C=6GA9B<5@92A:2B;3A:2@91?80B;3E>6G?7F>6IA9F?7H@8IB9IB9D=5?8050*'#$##$%%&&&)**-.-&&&$$#%%$))))*)...565010//.,-,****(% &$"-+(+)'-+)7520.+.-*21.6421/-0/,.,*-,)+)'21.42/<95A=9D@S@8G6/:*$*//39:@:;A@AJ?AI<=F;s`Wr^Tp\QmYMhSHbMB8,%       "& !*$!0'!4+$7.':1)<3*>4,@6.B7/D80E:1F:1G;2H<2I=3I=4J>4K?5L@6M@6MA7NA7OB7PC8QC8RD9SE:UG:WH]M?`O@bPBeRDgSEiUFkVHnXIqZKs]Mv_OybQ|dSgUkXp[w`n]`YRWUSSQNOLINJGNKGIFC20-'('(''00/011133/0/.//132333/0/---(((*++)**+,,$$$   !'#,'!1+%5/(:3,=6.@91C<3G?6IA8MD:OF;QGZOC_TG`UI^SGaUH_TG_TF[RHCDB>A@;>=:<<9<<6995876884662443556989<;:=<@BA@CB>A@<@?;>=8;;7;;9<<8::;==;>=:<;9;;9;::<<;>=>@?=@?;>=:=<;>>9<<8::7996996988:97998::9;;9::8;:7997988:98995777998<<8::9:99;9688698699588577-/.YTOȱ®̪~m h`][TRkS?~dMk]~nyipcpbxiwitfi\kUI_I>ePD_I=XE9TA5M;/ZG>VA6WB5TA4P>2Q@3O?2Kv^OybRpYKw_PnXJoXJgX~fWybSr\Nr\Mu_Pq[LnXIiREhPBgOAdL?bJ?_G5N<4N;4M:3L:3K:3I82F60@1,=.):,'6)%2&",!$                    F4'aƑmsUX@iF3Z9*S4(O2(L2)K2)J3*J4+I4+H4,G4+G4+G4,I6.V?2\D2]E4^E5_F6_F6_F7_F8^E6[C4WA2S=0P;/L8.I6-G5-F5-F6.G70H81I:3J<4L=5L=6M>6M>6M>6M>6O?7SC;J92;*#;*#;*";)":*"9*"9*"9+$;-&=0)?2+B5.E70G:2J<4L=5N>6O?7P@8RA9ZF>[LFLIEIEAGC>IEAFC?D@=<:686230,/,(,+&*($&% "!" &$ +*&./.,/..11-00.0///.01/-.-(*)'))(*)()))*))+*(**'))&((%''&((())*++)**(*)'('%&%%&%'''**)++*++*))(()()*)))('('()('((()(')'(*)*+*+,++,+*+*)**)*)'(''(('((&'''('&((%''&''#$# !! !!!##$&&&(((*)$'&-,)TI?gYMHEBFC@FC?IEAJGCGDAHDAMJGMKHLIFJGDKHDKIEJGDJGEIFCEA=EA=LHDOKGNJFLHELIEPMJROLROMOLILIFOLJSPNSQNTROTRPVSRTPNOKHROLRPMROLUROXVSVSQQNKNLIUROYWTYWSWTPTPKSOKTQNYVSURORPMQNKSPLQNJKHEJGDOLIOLHPLHOLHPMJPMJOLHQNKSOLSPMQMJKHEHEBKHEJGCIEAC?;@<8B?;B?<''''(( !!&''#$% !!  !! !!!"!'))(**#$$%%%%%$###"""#$#$$$"##"""%&&!"#$%%&''$$$ !! '))'((*++)++#$$"## ! !""%&&#$$"##"#"$$$%%$###"""&&%%%$"!!! %%$(((&'&%%%$%%*++.00/11-./))))**%&&%&&))()('%%%&&&$%%%&&%&&"##  "##&'''''$%%$%%$%%'((&&&"##&&&&&&"#"!!!!!!%%%"#"###$%$$$$$$$&&&&''"##*+*+,,0.,E?8D=6@92A:3B<5>81>70?81@81@91B:2C;3D<5D=5F>6H@7KC;F>6F>6IA9IB9C<4=703-'$! %$#'''&'&)))---''&%%$**),-,+,+..-555011./.---()(+)& $" ,*'*)&-+)8642/--,)21/75221.21.0.,.-++)'10-31.=96@<7@<7HD?KGCLHDNKGWTPYUQVQMUQLZUP\WS[VRYUQSOKQNJURMTQLXUQ[XUXVSWURUSOQNJOLHNKFQNIQMHUQL\YT\YUXUQXTPWTPURMTQLURMXUPZWSXUPUQLSNITOJUQKUQLUQLTPKSPKSQLRPLVTP^\W`]Y^[VZWQ[WQ^[U`\W]ZTXUPYVQ[XSYVPVSN`XPg˓iǑhǑiƑiŐiĐiÐiihhiihhfeddcc}b{ay`w^u]r[oYnYkXhTfSdRcRaP|`N{_Ny^Mx]Mw\LuZKrXIoUFnTEmTElSDjRCiQChQBgPAfO@fO?fO?fO@gP@gQ@gQ@gP@gP@hQAiQAhPAgO@gO@gO@gO?gO?hO@jPAkRBlSCmTDmTEmTElSDlRDkRDjQDiPChPChODgNCgNCgNCfNCgPDhPEiPEkRGlTHlTIjRGgPEdNC`KA\H?WD<>F?AJ<>F;=E:9D:5D822)%""&++0+*.*(*%$' !$ "%#%)+-1*+/D;9r`Wr^Tp[PlXMgSG]I>+   &!)# .& 2)#6,&9/(;1)=2*?5,A6.C8/D90E:0F;1G;2H<2I=3I=3J>4K?5L@6L@6M@6NA7NA7OB8PC8QD8RE9SF:UG;WH]M?_N@bPAdQCgSDiTFkVGmWHoYJr\Lu^Nw`P{cR~gUjWoZv_s^i]TNMKMJGKHDJGCJGD530'('('&0///00244/00-../00121..-,--'''*++***+,,%%%   $!)% /)#4.'93+=7/@80E=4KB8LD:QGSI=SI=WMA\QD^SFZPD\QE\QEZOBZQFACA>AA9<<6994761432543552440331445888<;:=<;>=:>=8<;9<<8;:6885776776888;;8;;8;;9;;8;:9<;;=<>?=?A?=??:=<9;;7::7:97::8;::;;;<;9:98::9;;9;:8::7:96885764653555777::8::8999::577587688577.22GDAֽټȦ˧ƥťp`& rjg~VNJnVA}dO|dX|mugnan`teqcm`xbVeQF\G<_J?YC8[F9S@4H6,P?6UA7YB4R>1K9-F6,E7+:.$.$/%0%0%6)!=/&;.%5(!2&1%0#2#9)!>/'G7.I9/R?3S?2S>1O;0S>2J7-K9.YD7^I;[H:^J<]H:UA4S?2lSEfQC\H;w^OmVHfPCw^P~eUfWu^Ov_P{dUr\Mt\Ms[LqYJoVGgOB_I=XB8P<3N;2P=3O;2N:1O;2T@6T?6R>5P<4R=5Q=5L92J81J92G70E5.@0+;-(7)%0$!-")%$##"               G4'^FfؠxjnRyT>cB0U6)N2'L1'J1(I2)H2*H3*G3+F3+F3+F3+F4,J7.ZC4]E5]E5]E6]D6\C5[C5ZB4XA3U?1R7RA:?.':)!:)!9) 9)!8)!8)!8*#:,%<.(>0*@3,C5.E81H:3K<4M=6N>7P?7Q@8TB:\H@XMHOKGKFBKGBNJFHD@B?<:8475042-0-(/,(*($&% $#!%#)(%./.-//+./+../22011110-.-)++'**(**)**)**(**(*)'))&((%''%''&('()))**()(&'&%&%%%%%&%**)++*++*))()*)*+*))(&'&&'&&'&'('(*)*+*+-,-..,--*+*()(())()('((&('%&&%&&&('&'''((%&&#$$!"#!##$&%&(((*)'((,+)f\Rth\IFCB@=FC@IFBLHEPMJPMJLIFJFCKHEKHEMJFNKGOKHSPMROLJFBD@;LGCTQMVRNTPMQNJQOKWUQVTQQNLOMKPNLQOMROMRPNSQOSPNVSPUROURNROLSOLWTQYWTXURWTQVTQ[XU[XVXUSYWTYVRXURWTQUSPQNLLIGHECHDAJFBMIENJFIFBFC@JGCHEBFB?GC?FC?NKGQNKSPNPMKJFCEA=IFBNJGLIEHD@D@;D@7C=6@:3=70<6/=70?91D=5D=5B;3A:2B;3D=5E=6G?6IB9JC;E>6F?6IA9F>6@91;5.1,'" #""&&%$$$'('+,,&'&$$#*+*/0/...010566011,-,,-,**)-+'#!/,)+)',+(7520.+,+(32054142032//-+.,*+*(20-20-<95EAJFBJFAIEAKFBQLHRNIRMHRNIUQLWSOYUQZVRWSOTQLURNSPLNKGOLIUQNXUQVSORNINJEKGBNKEUQL\XT`]Y`\XZWRVSOURNVSNURNYVQ]YT`\W\XTYUPUPKPKFPLGSNITOJTPKURLUQLWSM\YT_\W_[Va]X_\V_[V_[V]YTYWRQOJSOJXTOURMMMHhT̓iƏgďgÏgŽgghggffgffdccba|`{_y^w^u]s[pYnWlViUgSdQbP~aO|_Nz^Nw\Kv[JuZJsYIqXHoVGmUFkSCjQBhPBgOAeN@eN@dN@cM?cM?bL?bL>bM>bN>cN>cM>bM>bM?dN?dN?dM?cL>bK=bK=bK=bK=cK=dL>fN@gOAhPAjQBkRCkRCkRCjQCjRDjQDhPChPCgOCfNCgOCfNCgODgPDgODiQEkSGlSHjRGgPEdNCaKA]I?YF=SA9J92<,&. ++/67=9:A>@H>?H;=E:4K?5L?5L@6M@6M@6NA7OB7OB8PC8QD9RE9SF:UG;VH;XJ_M?aOAcPBfRDhTEjUGlWHnYJp[Ks\Mv`OycR}fTiWnZu^v`r`SPMJNLIMJGMJG863&'&%%%...///233/00-.-./////--,,,,&'&*++*++*++%%%    $!($.)#3.'92+=6.?80D<3H@6JB8LC9OF;QG?A@;>=9;;7::7998;;:<<<=<<=<:<;9;:9;:9;:6985886997:97985766888;;8:98:98:9033!()#$$++^ZWǪ~nàshTH/'#yro|tSICnVCx`LoZPqfj_i]i[n`l^|gZvaUlWJ]H3P?4I8-D3)E3)H5*R<0Q<1F5+M;0XD7[G9[G9ZE7[E8ZD6jQBiRCfPA}cRy_OhQCpXJx`QhWzbRv_PxaRs]MzbRu]NnXIkUGgPCdM@fOA_J>[F;\F:XC8UA6VB7[F:XC8WC9ZD:[E:XB9R=5N;3K92E5/E4.B2,=/)8*%3&"/$ -",".#.# -"-# +!&$          B1%dKbɓnؠxҜvefLrO:^>.P4(J0&I0'H1(G1)G2)F2*F2*F3+E2+D2+E2+N90ZC5ZC5ZB4YA3W?2V>1U=1T=0Q;.N9-L7,J6+H4+E3+D3,D4-D5.E5/G71H82I93J:4J:4J:3J93J93J93K:4O>7K:46'7'6'6'6' 6(!7(!8*#:,&=/)?1+A3-C5/F81H:3K<5M=6N>7O>7Q?8TA:[HBSNJQMIOJFPLHOLHIEAB?;:7353/31-20+1.*,*%&$ #"!%"'&#./--00+..*...11/11/0/--,)+*)++(++)++)**())&((&((&'(%''%''&''&('())'((%'&%&%%&&%&%(('))(**)))(***,,,***'(('((')()*)*++*+**,+-..-.-*+*'(''('''''(('('%'&$%%$&&&''())'((%&&#%%#$$#%$&(()++(**$%%tkavFB?B>;HDAMIFPLIXURWURQNLLIFOLIPNKPMJQMJSPMXVTWVTPNKFB?HD@PMJUROYVSYVSVSPQMJPMKQOMPMKNLJPNLTROSQNQOLMJGKHEKHEPMIUQNVSPYVT]ZX\YW[YV\YW\ZXYVTUROVSPVTQSPNQNKQNLOLJLIFJFCHEAKHDOLHROKNJFKGCIEAFB>D@;GC>IEANKHNKHPMJROLROJQMIROLTROSPMNLHIEAD@=?=:%&&$$$ !""$%%!""""""""!!!&''"##)**())"##$%%"""  !!!"#" !!!$%$#$$"#####"######$$"#"'((()))**'(( !!"""$%%$%%!"" ###%%$$%$%%$!!!!! "!!!!!!!!!"!''')**)*+%&'##$%&&!!" !!%%%&'&&&&''&%&&$%%#$$ !!!""#$%%&&'"##$$%#$%%&&$%%"#"###!!! %$$##" "#"$$$##""""$$$###!!! ***+,,630HA9D>7>71<5.>70?91A:2D<4F?6JB9LD;JB:H@8F>6D<5F?7HA9F?7H@8IB:E>6@91;5.1,&""!$$#%%%)))+++'''%%$(('+,+./.232555/00-.--.-)*)-+'2/,.+)+)'42//,**(&21.64242021..-*/-+-,)10-20.;85GD?LHDLHDJGBKFBMIDPKFNICPJEQMHRNIRNIVROYVRXUQWTOYVRXUQNKFJFALHDUQMZWRZWSWTPVSNZWR_\W^\X^[W]ZVWTPROIQMHTQLURM[WS`]Ya]Y]YUZVQYUPRNIOKFSNIXSNYVQ\XS_[V^ZU_\W`\X`]Xb_Z]YU[WRYVQWTOTQLQMHSOIWSOVTOPQL}_ɑhŒeefeeeeeddddcba~_|_{_y]w\t[sZqYoXlVjThSfRdQaO}`Oz^Mw[Jv[JtYIsXIqWHoVGmUFlTEiRChQCgPCeOBcM@aL>aK>`K>`K>_K=_J=_J=_K=_K=_K=_K=_J<_K=_K=`K=`J=_J<^H;]H;]G:\F9]F9^H:`JeM?fOAgOAhOBhPBiQCiQChPChPCgPCgNCgOCfNCfNCgODgODhPDjRGjRGjRGgPEdMCaKA]I?ZG>VC;O>6D4-7'"$33988>;=D>@H<=E;PC>^MEeSJgTKgVLgVLeTJaPG[LDOD>F>:B:6B94>4.:79`^`pklldb_VSTKHF=;SJGod`_Z[SPPjXPq\RnYNjUJdODPA9#     '! $*".& 1)"4,%7.':0)<2*>3+?4,A6-B7.D80E90F:1G;2G<2H=3I=3J>4J>5K?5L?6L@6M@6M@7NA7OB8OB8PC8QD9RE9SF:UG:VH;XI^L?`N@bOBdQCgSEiUFjVGlXIoZJr\Lu`OxbR|eThVlYs]w`hXOMJONKPMK:86''&$$#/.-/0/122/0/-.-./../.--,,-,'((()))**)**%&&    %")& 1,&71*:3,=6.>7/C;2G?6F?5H?6OE:QG;PF;QI=SJ?UL@XNB[QEXNBSI=WNB=><9<<7::034/11.00/11/11.01.00/112553664664764764665775875873651432445876986983774777:::==>@??A@>?>>@?<>=8;;7::9;;:==<>>=?>=>=;=;;=<:<<9;:687465365466688588267277.//,,+KEBkd_ξҵosb{hygpn_lXK=0(unkQHClUDw_Mp[Orfk_j]zcV}gZydWvbUu_RpZLaK=WB7XB5[F7K9-;,"E4)TC:I6+P=0C3)8+"6*!+!( ,"0&4'2&0%4( 5)!2'/$1%."4'C3*J:0G8.@1(C4*E5*J7+L8,L8,B1(C3)J:.SB4dO?^J:TA3F6*M;/gP@jSBmUDqXHhPAmVF~dSp]v_OkVHxaQjX~fUlWIjUGmWIoYKr[KoXJiSEfPCbL?\G;YE9XC8XC8XB7ZC8XC8VA6V?5R=3O;2L91C3-?0+=/);.(;-'>/)=/)<-(<.);-(9+'4'$2&"-# * ($"    pU>~]ÓmΚtӝvҝvluY[DkI6Y;,M2'G/&F.&E/'E0(E1)E1)E2*E2+D1*C1*F3,R<2WA3U?2T>0R;/P:-O8,M7+K6*I4)G3(E2)D1(C1)B0*B1+C3-D4.E50F71H82I93I:4I:4I:3I93I92I82J93O>8>0)2#3%3%3%4&5'!6("8*$:-'=/*@2,B4-D6/F81H:3J;4L<5M<5M;5O<5T?8UHCNKGNIEOKFQMIMJFGD@@=997341-0.)0.)/-(+)$&$"!!$"%$ +,**--),,),,-00.01-//-.-*,+)++*,+)++(*)'(('(('))'))'))')))**(*)(*)'('%'&%&&%&&'('((()*)*+*)*)())+,++++)***,+*,+)+**+**+**,+,.--.-+,+()(&(''('(*))**())&'&$%%#$%&((')(%''$&&#%%#%%'((*,+)++"#wndKGDMIEOKGTPLSOLROLSPNUSPVTRUSQSQOQOMMKIIFDIFEOLKSQOMJHJGDKIGLIGNKIPNLTRPTQONLIKHFJHFOMKRPNSQOOMKIGDEA=EA=HDAHD@QNJSPMQNLQNLUROXURZXU\ZW\YW[XU\YVYVSUROSPMQNLMJGGCAGC@HDALHEOKHROKUROWUQWTQURNSPLQNJPMIPNJNKHKHEOMISQMSQMPMJPMJQOLMJHGDAC@<<:7"""$$$ !!!"" !! !!""""""#" $%%!""'))$%%!""%%% ! "##!!!!!!$%$$%%!""%%%###!"""##!""%&&&''$%%#$$ !""$$$%&&###!!! ! !!!   ###&''())#$$"##&''"##"""%%%%&&%%$%%%&&&%%%#$$  !!#$$%&& !!!"$%%$$$"#""""$##"!!!!!$$$###"""$##!!! +,++,,41.D>7D=6B<5@:3>81>81B;3D=5G@7H@7H@8G@8F?7E>6C<4B;4E>6F?7HA9IB:F?7>8171+,(#  ! ""!###$$$''&&'&$$$&&%((()*)./.443343////0/121)))+(%20-/-*+)'0.+-+(('$10-76364221.-,).,*.-+32/541974C@_I<^I<^I<^I=]I<]I<]I<\I<\H<\H;\I;[H;\H;\I<]I<\G;[G:ZF:ZF9YD8XC7XC6YD7ZF9\G:]G:_IdL?dL?fM@fOBgOBgOCgPChPDgOCgODfNCfNCfODgPDhPEjQFjRGiRGgPEdMCbKA^I@[H>XEF<=E;94         #( ,#/'!2*#5,%7.&:0(<1*>3+?4,A6-B7.D8/E90F:1G;2G<2H=3I=4J>4J>5K?5L?5L@6M@6M@6MA6NA7OB7OB8PC8QD8RD9SE9TF:UF:WG;YI<[J=]L?_M@aOAcQCeREgTFiVGkWHmXIp[Lt_OwbQzdSgUkXp\v_~gWXRMLKJ;97(('%%$0/.000012010....//.//--,+,,)**'((())())%&%     %"+'!2-'60)82*:4,<6.D<4IA7H@6H@6OE:QGUK@WMBZOD[QEUL@QG;YOB>>;9<<689/22-00-00.10-//,//,/.-//0332553665886995885675775782552543656886884764675999;;;===@?BED>@?;=<9;:7:97:::==:==<>==?>=?>;>=;=<:<<8:9798586254(./788WPL\RLWHAнsnl\~cR}eUn]r]O_L@;,#ga^]VRhSCt]Kr[Mtem`|fZw`SwaSnZMr]PkUHgQC_I:U@4VA4WB3A1%6)?/$O?6L:/P>0=/%5( >/%B4)B4)B3(B2';,"8*!A0&I7+F5):,#5( ,"%$,!3(!9,%0*=/)=/)@1+I81L:3J92I92E5/@1,:-(4($-# * )%$#!! "$"fO;vWgĕp͝vҠyΚtl}_gNuQ-&>.'@/)A1+B2,C3.E50F71G83H93I:4I:3I93H93H82H82K:4H821$0#0#0#1$2%4&!6(#8*%;-(=0*@2,B4.D60F82H93J:4K;5K;5L:4N;4SB;763/1.*-+'-+&,*%)'"$"!!$!%# ++*),,)+,(*++.--//,..,--+--)++)+*)+*()('(('))'*)),,),+)++)+*)+*)**())'))())&((&'''''()()*)()((((*+*+,,*,++,+)+*()(()))*))***+++,++,+)*)'(('('())()()*)'('$%% """##%&&$&&$%%"$$$%%&(')++*,,!"g`X}SOLQMJURNXURUROPMJMJGOMJWUSZXVVTRPNLIFCC@=A=;A>;DA?FDAEB@B?=?;9A=:EB?JGDOLHNJFOKHROMTQOURPPNLHECFC@GDAKHDNKHB>;@<9EB?GDAIFCNKISPMSPMUROWTQVROTPLQNKQOKPMJMJGMJFJFBFA=E@<9 !!&&& !! ### !!!""!  "$$!""'('#$$!""!""!!!$%%!"""""%&%$%% &&&"##!""#$$%&&%&%%&%#$$!""!!!"""$$$%&&  "##$%%'(($%%"##%&&!"""##%%&$%%$%$%%$$%$&''&'' !! """&''### "###$$"""  !  %%$$$$###&&%""" "#"-.-,--740D>7C=6A;4B;4B<5C=5C<4B;3D<4F?6H@8H@8F>6C<5@92<6/5/*1,'.*%.*%4/)%"  ! ##"%%$'('***(((&&%))(***)*)-.-333110---/0/121**),)&/-*.,*,+(1/-.,)'�/,764642531/-+-,*.-*420753974@=9EB>JGCKHDKGCKGBQLGTNIUPLWRNWSNUPLSOJTOJTOKRNJNJFTPLZVQZVQWSN\ZVa^Zb_\`]Y^[VYVRXUQXUQUQMXSO]YU^[VXVQROKQNIOLGKHBKGAMICPLGPLGPLFRMGRMHTPKXTOYVQYVQ[XSZXU\ZV^\X_\X\YU\XT\YUXVSURNSOKTQLURMRRNyeVƏgcbbcbbcbaa`_~^~^}^z\w[uZsXqXpWnWmVkTiSeQbMaN~aN{_My]Lv[JtYIsYIqXHoVGmUFkTEjSDhQCfOAdNAcNAbM@`L>_J=]I<\H<\H<[H<[H;[G;ZG;ZG;YG;YG:YG:YF:YF:YG:YG:YF:XE9WE9VD8UB6UA6TB6UB6VC7WD8XD8YE9\G;_I<`J=bK>cL@dMAeMAeNBgOCgOCgPDfOCfNCeNCgODhPEiQFiRFhQFfPEeNDcLC_J@\H>YF_NFdSJeTJeTKeTKbRI_OF[LCTE?F<7>637.+#346?@DGGKCBFDCGIHMJJOGFK>>AKMSk``q\QnYMhSHbNCfaZgd][XQ+%"      !   &*!-$0(!3*#5,%7.':0(<2*>3+@5,A6-B7.C7.D90E:1F;2G<2H<3I=3I>4J>4K>5K?5L?5L@6M@6M@6MA6NA7NA7OB7PB8QC8QC8RD9SE9UE:VG;XHSI?WMBWMBXOCUL@QH;8::466/11,..,..,/.,..+--+-,,../211333555675775775886886996995873645655763543557999;;9;:7999<;;=<9;:7:96996999;;8;:7::8::8:98:9687044044+11(./WPLpgrhp_Uunúٴyg~nu]OiPBaM?iTEaM@N<17) SLH}f^[aM>pZJmVIiZk\u_Rs\NoYKlWImWIcN@aK=aI:S=2S>2H5)3&7*>0$E6,H8.A2'8*!F4)K8-?1',#") 2&5( 7*!4( .#*/#0%,#.$;/&/%XC5lSBgP@bL=cO@`K>`K>]I<_K?fPCoXJqZLoXJkVIhSGcOCcNCfQDfREdOBbM@bL?\F:XC8S?5P;2K7.F2+C2*@0*B3,F60N=5UB9XD;UB:O<5L:3I70B3,=/)6*%0&"-#+!(''%#" E:4K=6 6* jOhkĕoǙsǘsǗqi}^lQZCjG5Y:,N2'G.%C,%B-&B-&B.'B.(B/)B/)B/)B.(D0*L6.K7+J6*H5)G3(E2'C0&A.%@-$>,#<+#;*";*#;+$<,&>.(?0*@1+B3-D5/E61F82G93G93G82G82F71F71H82K:48*%.!/#/#0#0#2$3&!6(#8+&;-(=/*?1,A3-D5/F71G82H93I93J93K82O=7QIESOLSOLPLHNIEMJFMIEJFBEA=<9553.52.1/*-+'+)$)'"%## %#+*)),+(**)++),,+..,..+--+--*,,)++)**)))()(())'))(***,+*-,)++)+*(*)())'))(*)'))&'''('()()))()('('()()*)*+*())&((&)('((())')(')(()(+++()(&('&''&''&'&()(&('%&&"#$ ""#$$$%%#%$!##"##$&&(***-,"&'\UO{ROLQMJVROUROPMJMIFNJGNKHOMJVSQRPMNLJLIFGDAC@=B>;D@>FC@GDAIFCGD@C@KHCJGDIEAMJEQNJPLHNJEOKFOLHOLHQNKROKROKROKWUQUTPRPMNLHNLHONJOMIJIEDB>HFAMKGRQMLJGIFCIFC;:8!!"%%% !!  !!$%$!"" ! "## %&&#$$""" !!!!!#$$&''$%%#$#"##!!! !!$%%!!!!!!&'')**)**'((%&%!"" #$$$$$!"" !!#$$"##"##"## !!"""#$$#$$######!""%&&%&&  $$$"""""#$$$ ##""""!!!$## "#"-.-.00:72B;5A;4B<5B<5A:3B<4>81<6/82,<6/82,71,-)%)&"# #  4.(&" "!!%$$(('*+*()(''&*+*,+**))--,010...+++///110**)+(&0.,/-++)'1/,0.+'&$.-*65253153110-0/,/.,21.652863B@^J>]J=\I<[HaK?aK?cLAeNBfNCfOCfOCfNCeNCfOChPEhQEhQEgPEfOEeOEdNDaLB]I?ZF9:A;3+?5,A6-B6.C7.D9/E:1F;2G;2H<3H=3I=4J>4J>4K>5K>5K?5L?5M@6M@6M@6NA6NA7OA7OB7PB7QC8RC8SD9TE9VF:WH;YI=\K>^M?`NAaPBcRDeSEgUFiWHlYIo[Kr]Mt^NxaQ|eThWlYs^r]^MB$)*'''0//011-..011-..121011-.---.011***)**())'((   '$/*%2,&1+$2-&50)5/(;4-C;3E=4H@6MD:QG=RI>TJ?TJ?UK@RI?TL@TK?RI=VL@?=9687244.10,--*,,)++*,,*,+)+**,,-//0113555774664765886986885984864655765653543557889;:7985775877::8::7:96986998::8::798688/34(+CA>~pgbZT\RM˯ym[QLƟq~l|llVKVA5Q?3WD7_J=B2)4( =50|v{q|rh`\ZG:jUEgRDu^N|eViTGlVGlUFiRCeOAcN?fP?aI9R<0O;0E3(;,":,"9,!:,"A4,9,#H5+<-$ *6*"4(!,"0& *"!"'* 8*"?1'7+":.$C4(I9,L;-G6*J9,G6*:-#;.$C4*O3L8/F4,E3,N<3XD;^J@dNCaK@\F=T@8R?7Q=5J81E5.?0*7+&4)%3)%1'$/%".$!,","$J?:uaW'N=.bƙsoklkgc{[kP\EqL9_>/S5*K0'F-&C-&B-'B.'B.(A-(@-'@,'@-'A.(G2,H4+E2'C1&B0%A/%?.$>,#<+#;*"9)"8(!8(!8(":*$;,&=.(>/)?0+A2-C4/D60E71E71F71E61E60D5/E50I82?0+/#/#/#/#0#0$2% 4'"6(#8*%9,'<.)>0+@1,B3-D4/E5/F50F50G4/L93TKGVRNQMIMIELHDLHDJFBFB>EA=B?:;8474063/31-/-(+)$(&"%#"#!"!((&(**')))++)++*--,..+--*,+*++*,,*,,*,,)++)++(**'))'*)*,,*++)+*)**(*)')('(('))')(()())()*)')'&''(('((')))()('((&((&('&((&('%'&'(')**(**&('&''%'&$&%&('%&&$&%#%%!##!"""$$#$$"#$"$#$&&')((**%((B?;ulOKHOLHTPNUROTQOVSPWURTRONKINKHNKIPMKPNKKIFGDAD@=D@=FC@IFCFC?HD@OKHTPNWUSWUSWURVTRTRPTRPUSRQOMNMKJIGFCAEA>B?GC?HD@HD?KFBIEBFC?IEANJFPMJPMJOLHKHEHFCGDAJGCIFBGD@PMIVTPVTQRPLQOLOMILJFLJFNLGPNIRPKUTPOMJIFCJHF976#$$$%% ! !""  !!"#"  "##""" !!""""###$$"#####"""!""!"" !!$%%$%%&'&#$$!"""#$!""#$$!!"###"#""##"""!!!!"""###$$#$$"##!!!#$$#$$ !!! ! """!!! !!####$$### !! !  !!!##"&%$"!!###*++*,,52/83.73.2/+1-)+'#1,'&$ (%!)&"93-:4-72,0+&4/*,(#+&"%!!5/)&" ! $$#(('()(''''(',-,..-++*---110...++*00/110,,++)&/-+20..,*42/1/,)'%.-*76364253120.0/,.-+10-541531@>;GD@JGDLHEKGCNJFMIDMHDQLGTOKXSO[VRZUQWSNXSNZVQ\XS]YU\XTZVSWTQSPLQMIVSN^[WZWRWTOWSNXUPXTNWSNWSOVTPURNURNSQLRPKPNIQMHRNIUQL[VR[WR[WR_[W^[W[XSXUOVSMUQLVSOWUQ\YV^[W]YTYUPWSMWSNZWS\YUYVRVSNTRMac`___^^^^^}]|\yZwYwYvYsWqVpVnTkSjSiRhSfRdQbO}`Nz\Jw[IvZHtZIsYIqXHnVFlTEkSDjSEiSEgQCePCdOAbM@`L@_K>]J=\I=[I=[H4M=2M=2N>3O?4P?4P?4R@5UB7WD9YE:[G<]I=^I>`J?bLAdNBeNCfOCfOCeNCeNCgPEgPEfPEfODeOCeODdODbMC_K@\H>ZG=XF=VD:NA4J>4J=4K=4K>4L?5M@6M@6M@6N@6NA7OA7OA7PB7PB8QC8SD9TE9UF:WG;YI<[J=]L?_N@`PBbQCdSDfTFhVGkXInZKp[Ls^NwaQ{dTgVkYr]q[iSE&'&*,,010.00243/00121011-..,--/00*++*++())())  $ *%/)#.("0+$50)60*:4-?80D=3HA7LD:PH=QI>QH=SI>RH>PG=SJ?UL@UK?XNA@=8243032/21-/.,.-*,,*,+)++)+**,+.//1323555775774765876995773663665766775663654767878:86985775886885885875775887::577'-/'*]UPıҿշвåaPG|snȺududk]hTHQ>3J9.A3(K:-5(9,#8.&ynixz}te\XM>4aM?cO@gPAlVG_K=cM>jRA`J;TA3S@2VB3T?1N:-K8-E4);,"/#/$0%:.&J9/8*" ( ( #$!/$,#,#:-#B3'M;.G6*?0%D4(H7+F6*D4)9+!B1%O;-WB3^I;bM?]H;fRCq[KaL?WC8_K@gRElVHcOBcPEr]Qu`RoZMjVIkVGcNA^J=\H3Q=2O;0O;0S=3]F[E9H>9F<8D:6A73J?:rhiUKJ:*k̟xĘsia_}\wXqTeKYApL8a?0V7*O2(I/'F.'D.'C.(C/(C/)B.(A.(@-'@-'B.)F2+B0&@.$>-#=,#<+#;+":*"8)!7)!6(!6'!6'!7("9*$;,'<.)=/*>0+?1,A3-B5/C50D60D50D50D50D50F61A2-1%/$0$0$0$0$1% 3&!5(#6)$7*%9+&:,'<.)>/*@1,B2-C3-D3-D1,I71QHDRNJQLHLGCHD?JFBNJEMIEGC?D@9;7396153.31-1.*+*%)'"'&!#"%#'$ !''%)++(**(**(*++...00,..(+*)***++*,,),,(**)+*)+*())'(((*)(**())(*))**())'(('(('))()(()(()('('%&&&'&'('()('''&''%'&%'&%'&%''&'''(''((&('$&%$%%$&%$&%%&&$%%$&%&('$&%!#"!##"$$!##"$$#%$%'&'))&()DA=zOLHKHDKGCPMITQOURPURPTRPROMROLUROVTQUSPROMQNJNKHNLHOMJNKIKHDKHDNJGOLIPNLNLJNKIRPNQOMPOMKIHEBA@=;?=;A>;B>;B?;HEAHEANKHNKHHEAGD?EB>DA=EB>EB>C?LIESPLUSPUSPTQMPNJNLHKHCJGCHEAB?;DA=PNJVTQUTPXVSXVRUSOSQMRQLUSOSQMPNKKJGEC@GEB=;943232131/,*( !!!!! !!! !!  ######"##!""!"""#"%&%&&&&''&&&'('&'&%&&%&%&''&'&%&&&''&''())())'('%&&%%%'((())*++*+++,,+,,+,,*++)*)*+++,,+,,+--,--+,,*,+*++)++*++*++())'(((*))**())())'(('(('((())())()()***++))))))***+,,-../00///./.----.-././//010010/0////-.-,,,++++++,,,)*))))))))))++*,-,./.-.-------*+*((('((&''())()*740/*%1,'.*%3.)50*;5.<5.:4-4/)72,3.(3.(0+%*%!5/)$  """&&&$%%%%%'('-.-///,,,-.-00/--,,,+00/210,+*/,( -,)31/0.,53031.,*(.-*54153143031/1/-.-*/-+31.31/@>:HDAFC?FC?HD@LGCLGCNIDSMIWRN[VR^ZV_[W]XT[VR\XS\XTYUQVQMRNJQMIQMHSOIRNH[VQ_\W]ZUWTOURLWRMXTOUQMSPKSQLURMURNSPKQMIQNIQNIRNJZVQ^ZV^ZV]YV^ZV\YT\XR^[U]ZU\XT^[W`]Z`]Ya]X_\W]ZU[WS\YU[XSURMROJbWNca^^]\~\~]}\|\|\{[xZvXtWsWrVoUnTmTkSiRgPfPfQdPbO}`M{_Mz^My^Nv\LsZIqXGoWGmUFkTEkTEiSEgQDePBdOAcNAaM@`L@^J>]J>\I=ZH3N=3N=3P?5SA7UC8WD9YE;[G=\H>_J?bLAdNBeNCfNCfODeNCfODfPEfODdOCcNBcOCcOCbMC`LA^J@]I@[H?ZG>UC;J92;+$%%'*9:@9:A9;B:SGEhRIiSIjTJlULlVMlULlULlVMlVMlVMlUMkTLjRJjSKjRJjRJiQJiRJjSKkTLkTLlTLlTLmUNnVNpXPqYQs[Rt\Su\Tv]Uw^Vx_Wx_Vx^Vx^Vx^Vv]Uu\TsZRpXPnVNmVNmVNmVNmWNmXOlVMjTLgRJeQIaNF^KC\JA\JB[JB[JB[KBZJAQC=I>9L@;NB=WIBbRIaQH`PGaPH`OG]MEYIBVF?RD=J>87.+&'+6679;>BCGEDGA@B?=@B@CGFJJJNHGKMNUj]ZmXLeQEcVMgd]eb[fc[ge[je[uk^$!       !%( +#.%0'!2)"4+$7-&9/';0)<2*>3+@5-A6.B7.C8/D90E:1F:1G;2H<3H<3I=3J=4J>4J>4K>4K>5L?5L?6M@6M@6M@6N@6NA6NA7OA7OB7PB8QC8RD9SE9UF:VG;XI^N@_OAaPBbQCdSEgUFjWHmYJo[Lr]Nv`QzbSfUjXq\t]v]K<51*.//11344010011010-.-+,,,--*+*+,,)**())   % ,'!1,%1,&50)93->80C<4F?6IA7KC9NF;NF;NF;QH=QG8/11.00.00-/.-.-,.-)++(**)++*,,./.021243455465243354476365244144355466466265476698798688688587365476476255&-/(,BA?~pgκdzǧsfvĻýľɼµm_q_~eW^L@TB6E5*9-#D4)@1&;.$-#ridsjeB5-XF8[I;WC6]H:\G9UA3ZD5L9,B1&C3&H6)N;,M:,F5*?/'4'+!'(8-%C70!"+"9,#:-#;.$H8+L:-C3'E4(8* 4&F4'VA2[F7aL=]I;ZF8^J_K>YF:UB6S@4R>2XB6`HWC:R?7N<5I93I93H82J:5QC=WIDXLFWLGWLGogqhK;5kQʞxØsj_tUnPiLbG~ZBtP;jG4`>.W7*Q2(L0'H.'F/(E/(D/)D0*C0*B/)A.(@-'@-'D0)B0'>-#;+"9*!9)!8)!7)!6(!6(!6("5("5(!5("6(#8*$:,'1+>1,>1,?2,@2-A3-A3-A2-A2-A3.B3.<.)1% 0$0% 1& 1& 1&!1&!2&!3'"5($7*%8+'9+'9+&:+'<-(>.)?/*@.)B0+I;6RJFTPLPLHLGCID?E@MIDNJFKGCHD@D@<>:6<9474031,1/*.,'*(#'&!$#$"'% !((%,.-(*+'))(**-00/22.00),+(**)***+,'**&(('(('))')((**)+*(*)')(')((*)()(')(&(('(('(''(''('&'&#$$$$$%&%''''''&'&%&&%&&%&&%&&%'&'('&''&''%&&#$$#%$$&&%''%&&$&%&('&('#%%"$$$&&#%%!###$$$%%&))(*+21/zURPROLROLUROVSQPNKNKHPMKTRPWTRWURVTQRNKOLHQNKROMQNLTROTQNQNKQNKRPMHECC?=GDAJGDOMJMKIIHFA><<96952;74C?;EB>FC>IFBFC>B?;C@DAHEAJHDLIEJGCFC>FC>KHDKHDOKGPMJOLIROLTROPMJOLIMJGNLHMJGLIEHEAB?:GD@OLIOMJNKHPNKTSOSRNQOKOMILJGJHDHFBFC@=;8/.-,,+,++.-,++*&''&'''''(((()('((%&&%&&"##"##%&&())+,,,.-+-,+,,*++())*++*++-.-...-..-...//+,,+,,+,,*++)))()(*+**+++,,+,,)*)())*+*+,,+,,+,,,-,-.--.--...//-..-./-./,..,--+,,*++*++()*'(('))())&''&''()(())())()))**()))**)**()('''())++++,,,,,,---.-.//011121000.//.//./../../.,-,,-,....//-.-+++******))))))(('(((****+*+++++*,,+,,+**)))())))*)*+++,,<72-(#50*61+72,:4-=7/>7/;5.93-<6/60+5/)3-'.)$%!4/)#  ##"'''!""###&'&./.121...,-,---))(**)00/210**))'% '&$0/--+)1/-420.,*10.5420/-0/-0/-.,*-,)-,)31.20.;96A>;?;8=:6@<8JEAMHDPKFUPLYTP\XUa]Yea^d`\`\X\YT]ZU]YU\XS[WRZWRXUPZVPZUP]XS]ZV]ZU^ZU\XS\XRYUQTPKROJURMYVR\YU[YUYVRXUQSQLOKGRMIZVR]ZV\XT_[X_\W\YTc`\ec_c`]c`\_]YZWS]YT]ZU\XT[XS]ZU\YTWTORQMvaRc_]]~\|Z|[|[zZyZyZwYuXsWrVpTnSlSkRjRiQfPdNdNcNaM}`M{_My]Kw\Ju[IsZIqXHpWGnVGmUFkTEjTFhRDfPCdOAbN@bN@`M?^K>]J=[I=ZI4O?5QA7SB8TB8UC9WE;YG<]I>`KAbLAcMCeNCfODeNDeNCfODeNDdNCbMAaMA`LA`LA`LA`LB`LB_KA]J@ZG?RA9E5.5& 2399;B89@:;B:;B:;B:;B79?;:>^LGiSIjTJkULlULmVMmVNmVNmVNlVMmVNlUMkTLkTLkSLkSLkSLjSKkTLlUMlTMmTMlTLnUNoWOqYQrZRs[Rt\Sv]Uv]Uw]Ux^Vx^Vy_Wy_Xx_Wv]Vt[TsZRpXQnVOmVNmVNmVNnWNnXOlVNjUMhTKfSJbPG^LC[IAZJAZJAZJB[JBZJAVG?K?:H>:K@^OF`PG_OF`OF^ME\KDXIAVF?TE>PB;B720032478:=BCGEDGBAD>=??>@ECFIHMGFJKLRd[\mWLePDeZRgd^fc[c`WecYoj`}zm^zd]QB  !    #&( +#-%/' 2("4*#6,%8.':0(;1)=2*?4,@5-B7.C8/D90E90F:1F;2G;2H<3H<3I=3J>4J>4K>4K>5K?5L?5L?6M@6M@6M@6N@6NA7NA7OA7OB8PB8QC8RD9SD9TE:UG;WH\L?]M@_NAaPCcRDeTFhVGkXJnZLq\Mu^Py`R}dTiWnZu^jVPD<&,.133/00000/00...+,+*++())+++)))'((   $ *% 1,%2-&5/(<5.?80F>5JB8LD:NF;QH>OFRI>PG=RI>VMAUL@WM@A=7-//-/.,..-..-..,..*++(**)+++-,,.-.00022022022/00/110321431430331332443652542555987:9788798366 )*044SMIc[Tul°ȵΰ|qc~m{ƴĶƾɹŶľ˿masZIgRDM<2K;/?0&6+!?2'B3(8+"*sjfA96M=/TC5P>2O;.P=0K:,M;-G6)?0$?/#G5(F4'D3&B1'<.&;-#4)(/%@2'0& #4)!>1'?1'3(4(0%,!7(M9+YB3YD5WC5M;.S@4K:/D4*Q?4[H;\H;_K>gRDjUG]J?dQEt^Or\MdPC`M@bNA]J=WE9UC7VC7bK>lSFsXKnTIdMCbKA^I@_J@`J@`I@[F1,>1+>1,>1,?1,>0+>/*>/*8*%0$0$1% 1&!1&!1'!2&!2&!3'!4'"5($7*%9+':,':,':+&:*%;*%=+&E51KA=PKGQMISOKRNJPLGOJFJFAID@NIEQMHPKGMIDGC?D?;<9485041-1/*.,'*(#&% $#"!%#'$ # %$!+-,*,,)+,)+,-00/11-//*,,(**(**)++(**&'''((')(&('()))++(**'((')(())'('&''&'&&'&%&%%&%'('%&%#$#####$#%&%&'&&'&&''&''&'&&'''(''('%&&&'&&''&''%&&%''&''&((&'(%''$&&%''$%%#%$$&&"$$#%$$%%&))*,,..-xURPVTRXURXUSWURVTQURPURPUSQSQOMJHMJGJGCLHDPLIPMJLHFKHEOLJPNLMKHJHECA>A>:B?;HEBMJHFCADA?B?;A>:?;8A=:HEAHFCHFBMJGMJFGC?C?;B?;A>9C?;IFBMJFOLIQOKPMIMJFLIENKGPMISPMOKHLHEQNKSPLURNURNSQMROLPMJNKGKHCHE@KHDLJGLJGPNJRPMONJQPLONIMLGGD@FD?CA=--,$%%$%%$%%%%%&''()('((()(*+**++((($%%$%%"##!""#$$'((*++,--+,,*,,+,,+,,,--.00011/11/00.//.//+,,+--,--,--+-,,.../0/00.00/11011/11/00/00-..+,,+,++,+*++*++*,,*++*++*++)**())'))()))**'((''('(('(('(('((())())((()**+++*+**+*******)*)*++,-,----.....,--+,,.//011-..,--,--++++,,---,-----,--,--,--,,,***'''&''%&%%%%&&&)))+++++*++*++**)))('((')))*+++++-..=72,'#<6/<6/<6/>81?81?81<5.;5.?81;5.71*5/(.(#&#3.(#   "  $$#)*)!!!!!!&&&00/232///-.-.//'('()(//.10//.-+)' $#!.-+)(&/.+5301.,10.54132032/31/.-+-+),*(20.31.:85?<9@<9A=8A=9LGCOKGRMIUQMYUR[WT[WT]YV^ZW\XTYVQ\XT`\Xa^Za^Z_\X\YTZVQ[WR[XS]ZV_\W[WRXUOYTOYUPYUQYUP[XT^\X_]Y_]Y^[W]ZV[XU[XTVSNUQMZVR[WS\XT\YU[XU_\Ya_[^[WWTPROJQMIVRNTQMOKGPLGSOJXUP\XTWWSnXa]\}[{ZyXzYyYwXvXuWsVrUpUnSlQjQjQhPgPfOdOcMaM~`L|_L{_My^Lw]Lv\Jt[Js[KqXIoWHnWGlUFkTFiSEgRCeOAbM?aL>`M?`M?^L?]K>[I=ZI=ZH5M>4L=3K<2K<2K;2L<3M>4N?5QA7RA7R@7SA8VD:XF<[H>^K@`LAbLBcMBdNCeODeNCeNCdMCbLB`L@_K?]J>^J?`LAaMBbMCbMCaMB]JAWE=N=6?.()"$(79?89?8:@:@eQJkTKkULkUKmVMnWNnWOnWOmVNmWNmVNmUMmUMlUMlTMkTMkSKlUMmVNmUNmUNmTLnVNoWPpXPrYQt[Su\Tv^Uw^Vw]Ux^Wy_Wy_Wy_Xx_Ww^Wu\TrZSqYRoWPnVOmVNnWOnWOmXOlWNkUMiULgTKdRI`NE\KBZJAYIAZIAZJBZJAZJARD=K?;MB=K@<>B@BGFJEDHKLRc\_lWLdODcZSfc\fc\caXcaWrmbѸʩװaUF"   !#&( *",$/& 0(!3)#4+$7-&9/';0)<2*>3+@5-A6.B7.C8/D90E:1F:1G;2G;2H<3H<3I=4J>4J>4K>4K?5K?5L?5L?6M@6M@6M@6N@6NA7NA7OA7OB7PB8PC8QC8RC8SE9UF:VH;WHPH=RJ>RI>OH=OG=RJ>TK?VL@@<6,/.-/.-..,..,.-+--*,,)+*)++)++*,,,...00.00.//-//-/0.00/11/21022133133143022022466366.23255#+,tjӹǵ˸λ˹ȵֹũuwto`nvy~öƹƕ~aI7[G:>0';-#8+"0&4*!;.%8,"5*!zqmPKIB3'J;.K<0H7,K9,J9+D4'@1%8* >/$D3':+ 3%9*!<-%>0&7* 7+!?2'.%"""%$%6'E3&D3'I7*F5)K:-I8,A2(J9.R?3R?3UB5\H<_K>\I<^J>jUGiTFaM@`N@dPC]J>QA6RB7YFiK6_B/Y<+T6'O2$M/#K.#I.$H-%G-%E-&D.'C.(B.(A.(@-'@,'@,'@,&>,$9*"7)!6( 4'4& 3' 4'!4(!4)"5)#5)#5*$5*$6*$6*$7+%8-'9.(;/);0*<0*<0*;/);/);.);-(7*$2&!.$/$0% 1& 1'!2'!2'"2'"3'"3'"4'"5(#6)$7*%8*%8(#;*%?0+E;7F>:MHDNJFNIEOKGQMIPLHNJEOJFOKGOKFOJFOJFKGBIEAEA:C@:C@=DA>HEAKHDIFAEB>EB>EB=D@;JGCLHDJGCOKHROLSPLROKSOLUQNTQMRNJOLHMJGKHEJFCPLITQNUROUROUSOSQMNKGJHDGEAHFBMJGNMIKIFLJFLJFJHDFD?HE@<;7&''%&&$$$$$$$%%$%$$%%$%%''')***++'(($%$#$##$##$$$%%()(+,,+,,*++*++*,,+,,+--/00/00.//.//.//-//*++())'((())()),---./-..,--,--,--,--,..-..,--+++*++*++)***++*++)**)**())&''%&&%&&'((())'''&''&&&&'&&'''(()**+++,,,,-,,-,-.-...-..,,,*+++,,-......//-..,-,+++,--.//.//-//+,,*++*+++,,+,,,--+,,*+++,,-.----***)*)''''''((())(*)()(())())((('***+++*+++,,+,,///<61.)$A:3?92>70>80?92A:3>70=6/>81<6/71*70)/)#&#1+&!  ##"**)""" &'%121443/0/...000()))))010332443.-+!'%#*)'('$.-*52/1.,1/-54132032/43110..-+*(&/-+20.974?=9B?;IFBKGDUPLXTPXTPXTQVSOSNJRMIRMIUPLSOKSOJUQMXUQ[XU_\Xa^Z^[VXTPURMUQLVSNYVQVRMTPKXSN\YT^[V^[Wa^Z_]Y[YT\XS]ZU[XS\XT_[X\YUYVR_[Xb^[\XUXTQXVRZVR[XTZWRVRMURMTPKRNIQMHOLFPLFRNHXTO^[V[ZWu[_\}Z{ZxXvVwWvWsVrUpTnSnSlRjPhNgNgOeNdNdMcMaL}`L|_Kz^Lx]Kw\Kv\Kt[IsZIqYHoWGnWGmWHkUFjTEhSEgRCdOAbM@aM@`L?_L?^L>\K>[I=ZI=YI=XH4L=3K<3L<3L=3M>4N>5QA7RB8RA8SA8UC9WE;YG=]J@_LAaLBcMBdNCeODeNCeNCdLBaK@`K@]I>[H=\I>_K@aMBbMCcNDbND_KAYF=UC;J928)#.049:@89@:;B;128MDCiTLkULkUKlVLmWNmWNnWOnWOnWOmUMmUMmVNmVNmUNmUNlTMmVNmVNmVNnWOnVNnVNpWOpXPrZRt\Tu]Tv^Vw^Vw^Vx^Wy^Wy_Xy_Wy_Xx_Xv]Vs[TrZSpXPoXPnWOnWOnXOmWOlVNkVMiULgTKeSJbQG^MD[JBYH@YIA[JA[JB[JBXG?NA@><>@?AEDGFFIMNTf\\lWLcOC_WOc`Yhf_ge\ge[wrgͯƂsb   "#%( )",#.%/& 1("3*#6,%8.':/(;1)=2*?4,@5-A6.C7/D8/D90E:1F:1G;2H;2H<3I<3I=4J=4J>4K>4K?5L?5L?6L?6M@6M@6M@6N@7NA7OA7OA7OA7OA7PA7PB7QC8RE9TF:UF;VG;WG;YI=[K?\L@^MA`NBbPCeREhTGkWJoYLr[Mu^OyaQeTiWq[u]x_O./.),,---,-,,,,+++&&&(((())&''  !&#+'"/*$3.'60);4,B:1G>5MC9OF;RI>TJ?PH=RI>TJ?RI?PI?PH>RJ>SJ>WM@@<6-//.//.//-//-/.+-,+,,*,+)++)+*+-,,...0/-//,..,..-./-//,..,---/..00/10,//$&!%898]UOaVOm`XVKCIJ̰ǪzĦvq~luvw}ϮM7&I8,5( 1&7*!2'1'3) 7+!7-$sjezv{_YW6) A3(C5*C4)J8+E4';-!@1$6(7*:,!2%/"5'6)!;-%B2'A3(+" 2%6(:,":,"<.$B3(D4)?0&<-#@0&K9-TA5\H;_J=XD8aL?gRCiTEdQC[IiUHv_Rw`SoZNkUJgQGfQHmXNpZQv^Ru]Qs[PsZNtZMuYKnSFdKA[D;R=6K71F1)gUMtj\G@WC=D5/eN:pTfMyZBnP:bF3W<+N4&H/"F, E+ D) C) C+"C,%C-&C-&A,&@,&?+%>+%=*%=*$?+%:(!4&3&3&2&2&2' 3'!3(!4)"4)#5*#5*$6+%6+%6,%7,&7,&8-'8-'9.(:/):/)9.(9-(8,'6*$1& -#-#.$/%0%1& 1& 1'!2'!2'!3'"3'"4'"5'"5'!7'!<-(E94NFBQLHRMIJE@HC?KGBLFBQLHOKGOKGPLHPLHOKGPLHMIEMIEKGBGC?D@;A=9<94:7252-30,/-)+)$'% $"!$"%#&#&$,+'/0/+--'**%'('))+--.00+,+&''#%%$&&&''&('&(((*)(*)&((%&&%'''))'(('('&'&&'%&'&'(''('((()*)*+*)*)')(&('&'&)*)()('('''&&'&'('(*))+*()('(('((&''(((()(&'''(('((&''$&%"$$$&&%&&()('))%('&((())(**"&'pg_TQNVSQVRPVSPXUSYWUWUSUSQROMSQOVSQXUSYVTWTQXUSUSPNKHJGEHFELIGFC@EA>EA>MIENKGIFCHEBGDAHEBIFCEB@B?:FB?OKHRPMQNKQNLROLPNJKIEFC?FD?HFBFEAFD@FD@IFBGD@DB=HEA442'()())'(('((())'((&''&'&'(()**)**())())())()))**+,++,,+,,***)**)**)***++,--.00-//,--,--+-,+,,'))'(('((*++*++-..-..,--+,,,,,,--,--,-----,,,+++*+*())())())()))**)**'((&&&&&&'''((('((&''''''('()(()(()((((()(,-,-.-,,,+++,--/00-./+,,,,,+,,**+)**)**)**)**)**)++*+++,,+,,+++)**())()(((('((%%%%%%%&%$%%###"###$#$$$&&&))),,+,-,,,,*+*'((,,**)(,+*--+.-,31.=700+&B;4@92>70?91A:2C<5?81;5.=7/<6/70)71*/)$'$ 0+%"  ! (('$$$"! &&$110343.....-/00))))**232565344--," )'&'%#&$",*'30-2.+/-+43132021/32/32/420,*(.,*0/-974A>:@=9FC?KHDUPMXTPWSOUQMXTPXTOVQMQLHQMHROJQNIQNISPKVSN[WS`]Yb^Z]YTZWQZVQYUPURMQNJQNIVQMZVQZVR\XT^[XYVRURLUQKVRLWTOYVRYVRYUQVROXTR[WUZVS\YU_\X\ZUZWR]ZU^[V_\WZWRSPJOLGPMHQMHSPJZVR]ZV]ZV{]]}ZzYxXuVsTsUrToSnRlQlQkQiOfNeMdLdMbLbLaK}`J|_Jz^Jy]Jw\IuZGuZHt[IrYHqXGoWFnUElUEkTEjTEjUGiTFgSEeQDdPCbOB`NA^L?]K>\J>[J>ZI=XH5L=4L=4L=4M=4N=4P@6RB8SC9TC:UD:VE;XF<[I?^JA`LBcMCdNDdODeOCeNCdMBaK@_J?\H=ZG<[H=]J?_LAaMBbNDcNDaLC\I?YG>RA9E4-/# "%56<9:A9:A;MA\MD]MD[KC[KC[KCZKCYJCVHAM@:=65/13;<>98:BACDCF?>@>=?@?ADCFHHLNOVeXUlWLbOD_XQa^Xgd]hf^ig^vqgϳ񹤌    "#%' )!+#-$/& 1(!3)#5+$7-&9/':0(<1*>3+?4,@5-B6.C7/D80E90E:1F:1G;2H<3H<3I=3I=4J>4J>4K>4K?5K?5L?5L?6M?6M@6N@6NA7NA7OA7O@7OA7OA7PB7PC8QD9RD9SE:TE:UF;VG[K?]K@_MAaOCdQEgSGjUImXKp[Mt]Ox`Q|cShVoZt]x_M>72#(*,,,++++++%%%&'''(('((  '#-(#.*$3-'50)82*@80F>4KB7OE;RH=QH=OGQH=PH=OG=PG=SJ?RI>UK?@<6,/.-/.-..././0/,-,*++)**)*)(***,,,.-,.-+--+-,,---..,..+--"&' %)*LGCbYSxn}m`D5*NEAƶt|nse}m|ltf˩~~{uyyq~mtv{âƧN>4?0%3'.#5) 0'3( 4) 3) 7-$k`Zrgatpe^[-%!9-#;/%;/%?0%;,!0%8*6)0$/#-!,!."0$C4*@1'# '&) 4(;.$9,#8+!4'8) ?/%D3)I7,O<0WC6UB5]I;Q@4E6+I8.Q@6gTHs^Qt_St_Ss]RoYNnXNp[QydZi^l^k]h[hZdVv]QlUJbLBZD;Q<3M7-gRIur]TR=6R=6L90C2&xYCrU?gK7\A0R8)J1$C+ @)?(>'>'>'>(!?*#?+$?+$>*$=*$<)#;(#;(">*$8&!-.!/#0$1%1& 2'!3("3)"4)#5*#5+$6+$6,%6,&7,&7-&7-&7-'7-'8-'8-'8-'7,&6*%2'"-#,",#-#.$.$/%/%0% 0& 1& 2& 2& 3%4%9)#A4.G=8QJFRMISNJVQMQMIJE@GB=JE@QLGVQMRMIQMIOKGMIDOJEPKGOKFPKGOKGIEAFB=B>9>:5:7263-41-0.*+*%'% $#! #!$"%#%#,*'/0/+--'**$'(&((*-,022,--')(#%$#$$$%%&'''(('(('))&((%&&%&&'))'))')('(''('&'&'('()(*+**+*+,++,+(*)')('(')*))*)'('$%$%%$&''()))+*)**')(()('((()))**&''%&&&('&('%'&"$$!"""##$%%&((')((+**,,*,, %&^WOROLSOLRNKSOLWTSYWUXVTYVU[XV\YWYVTXVTXVTUSQYVTXVTSQOJGFECAGECGEBLIEKHDPMJROMNKHMKHNLINLIMJGHECC@=@=9EB>FC?GD?HE@IEAHD@GC?LHDPNJROKROKTPLOLGOKHQNKROLQNJSPMUROUROPLIIEAGC?B?:B>9?;7A=:B>;A>;KIFQOLQOKMJFHEAFC>FD?CA:=;8*,+)**)**)***+++,,*++***)***++*++()*'(('(('((&&&&''())())'(($%%#$$#$$"###$$$%%%&&&''&''&''%&%$%%!!!!!!"##$%%#$$"#""###$$"#####$$$  50+,($94.@93A;4A;4?800+&C=5A:3?92@92B;3E>6@92<6/=70=7092+;3,.(#*&".)$!  #"!(('%%%""!%%$-.-010,,,++**++((()))122455021++*&$"&$"*)'3/-30-/-+21/21/21/420420530-*(/.,32/975B?;A>:EA=LHDTPLWSOXSOUPLTPLUPLVRMTPKTOKVRMXTPXTOXTPZVQYUQ\XT`]Y`]ZZWSYUQVSOPLHNJFPMHVRMYUQYUQYUQXUQSPKOKENKERNHVSNZWRZVRYTPWSOVRNYUQ\XT^ZV_\X]ZVZXT\ZV^ZWa_[`^ZYVQSOJSPKTQLURLYVQ[XTb[T~\~[{YxXvVsTpRpSnRkPjOiOhOgNeMdLbLbKaK`K~`K|_Jz\Hx[Gx\Iw\IuZHsXFrXGrYHqYIpYIpYJnWHlUFjSDiSChSDgSDfRDeRDcQCbOB`NA^L?]K?\J?[J?ZI=XG;WG;VG;UF:UF:TE:SE9SD9SD9SD9SD9SD9RC9RC8QB8PA6P@6QA7QB7RC9RC9RB8Q@7O?6N?5M>5M=4M=4M=4O?5QA7SB8UD:UE;VE\J@_KAcNDdOEePEeODeODdNCaK@_J?\H=ZG<[H=\I>^J?_K@aMBbNDbND_LB\I@XF>O>6=-&$)+/9:@9:A:;B:;B9:@89@78=77;66:WKGmWMmWMmWNmWNmWNmWNnWOnVNnVNoWOoXPoWOnVNmUMnVNoXPpXQpXPpXPqYRrYRrZSs\Tt\Tu]Uv^Vw_Wx`Wy`Xy`XzaZ{bZzaZy`Yx`Xv^Wt\Tr[RqZQoYPoXPnXPmXOmXOjVMiULgULeTJcRHbQG`OF]MD[KBZKBZJBZJBZJBYIAQC=L@;NB=NC=WIB\LC[KC[KC\LD\LD[LDWIBL?9954247??C878B@CFEIBAD@?ABACFDHIHLNNUcXUkWKaNDa[Ub_Ydb[ge]hf]tofд3-(    "$%')!*",#.%0'!2("4*$6,%7.&9/(;0)=2*>3+?4,A5-B6.C8/D80E90F:1F:2G;2H<3H<3I=3I=4J>4J>4K>5K?5L?5L?5L?6M@6M@6N@6NA7NA7NA7OA7OB7OB8PC8PC9QC9QD9RD:SE:TE;UF\K@^MA`NCcQDfSFiUIlWJoZMs]Ow`P{cRhUmXs\jUOB9 %'**)+++$%$%&&'(('('  %"+'"/*$2,&70);4,B;2G?5H?5ND9RH=SI>PGPH>QI>RI>PG6U>3:,"U=-_D2W=-N6'G0#A* =';&;&;';';' ;( ;)"<)#<)#<)$<*$<*$<)$>+%6&!$*,!.#0%1'!2("3)#4*#4*$5+$6,%6,%7,&7-&6-&6,&6,&7-'6,'6,&6,&5+%3("-$*"*"+",#,#-#-$.$.$/%0%0$2$8,&?4/G>:PIDUOKPJESNJQKGPJEVPLRMILGBIC>KFARMHUPLTPKTOKPJFKE@MHCOJFOKFRNISNJOJFID@D@;B>:=:585063.31,/-(+)$&$ " ! " $!*)%010,.-()*')*')*+--.00)*)'((&''$%%#$$%&&()('()'))')(&''&'''(((*))++)**)+*'(('(''(()*)*+*+,,+++)*))*)()(()(()(&'&#$##$#&''()))**)+*())())()(()(())&''%&&$&%$&%%'&"$$!#" !!$&&&(('*)),+)+*"&'VPJTPMUQNROLSPNVTRXUTZWV[YW[XWWUSSPNOLJNKIMKINKIOLJQNLLIGDB?B>;B>;JGDNLIQOMRPMPNKKIFLIFMKHJGEGDAB@=>;7EB>C@:EB>MJFLIEJFBMJFJFCFC@IEBNJGOKHMJGOKIROLQNKMJFMIEIEAGD?EA=C?;C?;B?;DA=IGCOMILJFIFBIE@JHCGE?EC=EC=FD>EC?A>9B@;=;8;96<:8:97:96763#$# !!   !! ! !! 61+,($<60A:3A;4C<4<6/2-'E>6B<4A;3@92D=5E>7@92?81>80=70:3,<5.+'"+'"-)$   !"! $#"''&%%%""!&&%..-/00..-*)(%%$'''***122455,-,'&%&%"%#!+*(6416300.,0/-10.31/42021/31.-*(0/,320642CA=GD@HD@MIFVRNYUQYUQYUQWSOVQMVQMWSNXTP\XT^ZV]YUYUQXTPYUP[WS^ZV^[XVSONJFPLHTPLROKSOJYTP\YT_\X_\W\YUZWRYVPXUPYWR\YU\YU^ZV^ZV^ZW_[Wb^[^ZWXUQUQMZWS^[X^[X[XT_\X_\XZWRYUOYUPXUPVSMXTOZWRi\S}[{YyXwVsTqSnQmQkPhMfMeLdLcKbJ`I_I~_I}^I{]Hz]Hy\Hw[GuYFuZGtZHsYHrYIpWFoVFoWFnVFmVGmWHlWIjUGiTFgRDfRCeQCcQBbOA`OA_N@^L?]L?[K>ZJ>YI=XG5M>5N?5P@7RB8UD;VE;WE[I@^KBbNDePFfQFfPFfPEdNDbLA_J?]I>[G=[H=\I>]J?^K@`LBbNDcOE`MC]JAZH?WE=K:34'" "349:;A:;B:;B89@89?::?;;?77<87XJB\KC\LD]ME]NF\MEWIBL?987768;DDI:9;BACHHKHGJDCEEDGGFIJINNNT`[_kXNaNC`[Va^Yc`YdbZfd[toeԸsb  "$%'(!*"+#-$/& 1(!3)#5+$6,%8.':/(;1)=2*>3+@4,A6-B7.C8/D80E90F:1G:2G;2H;3H<3I=3I=4J>4J>4K>5K?5L?5L?5M@6M@6M@6M@7NA7NA7NA7OA8OB8OB8PB8PC9PC9QC9QC9RD:SE:TE;VF;WG[J?]LA_NCbPDeRFhTHkWJnZLr]Ov`PzcRfTjVqZlVQA7!%&*++$$$%&&())&''   $!)% -("2,&:3+?8/D<3F>4F>4MC9SI=TI>QGRI?QH=PG@;5*,++,++,+-.-132.0/*++)**)**)+**+**++,---..-/.,..!')nc[ֹdzӿٽsO=2[TQї{lopux|utd~nxktforbfV~cTdS{irie3$0%,#-$5+"/' 0( 7,#;3.g[S_TNtli}}ur\QJ61-' +!,#,$2&+ %#!*4'B1&C2',!&&+ 4'=.#9+!8*!?/%G6*R?2S@3YF9aM@iUGjUHlWJu_QiZj[i[h]kaxl{n~o{kn`xcXt_Uu_SnWKkTGw]Otg|rjSJYC:R=4K91O;1<-"4%J2%H1$C-!>)<(9&8%8&9':' :(!:)!;)";*$<+%=+%=,&>,&>,&6'! &*-#/& 1'"2)#4*$4+$5+%5,%6,&6-&6-&6,&6,&6,&6,&5,%5+%5+%2("+"'' )!*"*"+"+",",#-#-"/#5*$=3/H@:584/63.42-0.),*%)'""  !" '%"./-+--)+++..)+,*,,,--()(&'''((%&&$%$%&%'((')('*)'))())())'))()))**()))**)**())'(()*)****+*)**())+,++,+)*)'('&&%$$##$"&'&()))**)+*())()(')(&''&''%&&$&&#%$#$$$&&#&%"$# "##$''%'(&((&''#&&ID@OLHQMJQNKTQOTRPSPNTRPYVU[YWWUSTQOROMPMKPMJMJGPMJQNLPMKMKHIGDC@=A=;FCANKIROMSQNQNKNKGOLINKHLIEKHEHDAHD@EA=FB>IFBKHDKHEHEALIEROKQNJMIELHDIFBFC?GC@JFCMIGKHELIFMKHMJGLHENJGMJFLIEKGDJFBGD?GD@GD?DA?=9<95>;8=:7=;8;96"#"!""!"!"##   !""!""   ! "! ""!61+-)%?82@92B;4D=5=6/71+E>5C<5B<4A;3F>7E>6?81>70>70<6/81*;4-&"-)$-)$  "! !! """###""!''&...010100.,+&%$(((--,455899./.,+) '%#&%#,*(7538643200/-0/-20.21.1/-0.,,*(20.874531B?\K>[K?ZK>YJ=XI=WG5N?5O@6RA8UD;WF=YG>YG>ZG>[I@]KAaMDeQGgRHgRGgQFdODbMB`K@^J?\I>[H=\I>]J?]J@_LBbNDcPFaMD]KA[I@ZH?UD;C3,!'(,9:@:;B:;A9:@9:@;;@==B::@56=IBCkVNmXOnXOmXOnXOoYQpYQpZQpZQqZQqZRpXPoVNpXOqYQqZRrZRrYQrZRsZRt\Tu]Uu]Uu]Uv^Vw^Vy`XzaZ{bZ{c[{b[{aZzaZyaYw_Wu^Vt]Us\Tq[Sp[RoZQnZPmYOkWNhTKfSJeRIcRHbQGbPGaPG`OF_NE]MD[LC[KB\LC]NEWIBPD>LBACADHGJLKOGFIHFJJHLMLQQPVXW^hWOaND_ZU_\Wa_XcaYdbYrmbӶɯ,'" "#%&( )!+",$.%0' 1("3*#5+$7-&8.':0(;1)=2*>3+@4,A6-B7.C8/D8/E90F:1G;2G;2H<3H<3I=4J=4J=4K>4K>5K?5L?5L?6M@6M@6M@6M@7NA7NA7NA8OA8OB8OB8PB8PB8PB8PC8QC9RC9SD:TE:UF;VGZI?\KA^MBaODdQEgTHjVJmYLp\Nt_PxbR|dShVnYlW^L@*+,!$$%&&())&&& #($,("2,%:3+@8/C:1>5,:3)F=3RH=TJ>PF:4)*))*)()(++*010020-.-+,++,++,+*++)+**--,..-//?=;sȪͮ˷βj\+:53߮w||xtwgZmVJg[~{lueomjXkSDaL=lTEp`t|psjfvqp~xvskh0#,#+"*"'!*$&!,$<62e[VaWSnhf|vt{tr`YWOFAD@>(&'&'' (# -!=,"@/$/$#((,!0$0$1%>/%G6*G6*WC6ePAmVGpYJx`Q}dUjZl]l_pcuh}orvgg[h\j]m_|cU~eWoax_TkTJ`H>R>5O;2D2*9*#'3#;&:&9&8&7&6%6&7' 9(!:)":*#;+$;+%<,%<,%=,&=,&/"   !'+".% 1("2)$4+%5,&5,&6-&6-&6-&6-&6,&6,&6,&6,&5+%1("&"%' )!*"+",","-"3)$<3.E>;LGEMIFQLIRMJUOLVPLTNIUPKSMHRLFSMHQKEPJEOIDSMHPJEMHCOIDSMHWQMQLGOJESLGOHCRLGUPKSNITOIRLGPKEJE?C>9@<795085/64.1/*/-(-*%%#! !" '&"-.,)+++...11*,-)++)+*&'&$&%&''$%%$%%&'&())(**(*)(**())())'))')(')('((()))**())()(()())))*)*+*()(+,+--,*+*'''%%%$$###"%&%'(('))()('(('(''('&'&%&%%&&%'&$&%%&&$&&$&&"## !  "#!$$$&&$&&$&&&''430NJGOLIPMJROMTQOTQOSPNVTQYWUURPROMROMSPNTQNQNKPMJPMKURQSPNOMJJGEA>;A>NKHLIFHEBFC@JGDOLIPMJNJFJFBGD?KGCLIENKGNJFKHCHEAIFBOMIRPLPNIJHCIGAIGADB>GFBJHDCA==;7>;6=:6:73<:6:85!""!!!#$# !! ! !"""## !!  !! !"""#$!""  "! " ! !!!%$#72,+'$A:3@:3B<4E>6=6/83,C<4C<4B;4A:3F?7D=6>80=7/?81<6/71*92+# /+&,'#      ! ###""!'''./.233110+*)$$$&''--,555899///1/, &%")(&-,*753;9798632010.10.21.10-.-**)'31/=<9753B?YJ>YJ=XI=WH5O?6QA8TC:XG=ZI@[I@[I@\I@^KB_MCdPFhSHhSHhRGePDbMB`LA_K@]J?\I>\I>]J@^KA`LBbNDcPFbOE^LB\JA\KB[IAO?70'%"138:9TF?]ME_PG_QH^PGXJCG=8568;=AIINDCGBACFDGLKPKIMHFIKJNONSSRXUU]dXVaODa\V`]W_\Ub`Wb_Voi^гҹ "#%&( )!*",#-%/& 1'!2)"4*#5+$7-&9.':0(<1)=2*?3+@4,A6-B7.C8/D90E91F:1G:2G;2H<3I<3I=3J=4J=4K>4K>5L?5L?6L?6M@6M@6M@6N@7NA7NA7NA7OA8OA8OB8OB8PB8PA8PB8QC9QC9RD:SD:TE;VF[K@]LA_NCbQEeSGhUIkXKn[Mr^OvaQ{dSgUlXnYoXI&&&"$%'((%%%  !&")$/*#92)?7.A8/7/&6/%C;0ND9PG;NE:OF;OF;OF:SI=UJ?OF;LD9PG<;71&''***++++,+./.010./.+,+*++(***,+?:7@94<51rc[{qĥïiSG' ǻ~nug{~pydXVB9fQF}nyt^PkYkY`L=J9.K9-WB4qYJk\j]wf_d][hcbe^\.%%&' !'!$ 951e]Yb[Xe_^hcbga^SMKGA>HED/03""## )2%4&*  (&!(:,"D3(S?2T@4YE8^I;bL?nVGfUkZfXj\m`zj}kgY~dWm^m_p`iZn`ufqWKfNC_G.&&$*3"5$4%4%4%4&5' 6(!8)"9*#:+$:+%;+%;,%:*$*    ") -$0'"2)$4+%4,&5,&5-&5-&6-&6-&5,&5,&5,&1("& "$'*!,"-"1'$B;7KGDMJGMIGNJGQLIUPMVQMXRNVPLQKFTNIWQLTNHRLFOHBOICRKFQKFMGBLE@QJEQJESMHTOJUOJWQLSMHQKFSMHRMGPJENHCPJEMGBE@:E@;A=7>;596030+1.)-+&&$  !"!(&"/0.)+++---//,..,..*,,'((%&&%''%'&%&&&''())())')(')('))'))'(('((&(''('(((())())')('(()*)))))*))*)**),,+*+*'('%&%$$#"#"%%$'((&('&'&&''&''&'&%&&$%%%'&'('&''%&%$&%#%%"$#"#" !! ""!##%''%''%''%''))(SPMSPNROMROMUSQXVUZXVWTRVSQTQOPLJPMKOLJMIFNJHOLJLIHQNLOKIMJGMKHHFCIFCIEBLHENKHMJHOLIQOLROLPLILHENKGPMJOLIOLHOLHJGDFC@GDAFC@A=9?;7B>:GC?JGDMJFJGCB>;EB?EC@DA>EA>IFCNKHRPLSPMROKPMIOMIOLIOMINLILJFLJGMKHONKRPMTSOMLHLKFMLGIHCKIEMKHGEB@>:@=9@=9@>:CA>=;8!"! !! !!   ####$$ !! !!"## !!  "##!!!"""!!!  !""#$%"##""!! !! $%$((&72,(%"A:3@:3B<4C<5:4-82,C<4C<5A:3@:3E>7D>7>70>70?91<6.71*92+# 0,'+'#!! !! !!! !!!""!(('-.-444111((($$$%%%**)332666...30. #" ('%*)'21.:97<;:76432043021/21./-+*(&0/,:96531?=:HEBJGDSOLVROXTQXTQVQOYURYUQZUR\YU_\X_\X_\X_\X_\X`]Y`\X_[W\WSZVQ[WQ]ZT]YTZVQYUQ\XT\XTXTOUQMSOJVRM_\X`]Y]ZU^[V_]Y[XUWRNVQMTOKRMIQLGTPKYUQYVRZWT]ZW`^[da_`]ZXTOTPJSOISNIWRMXTOYUPTSOdQwUsSrRnPjNhMeKdKbJ`H_H|]Fz[ExYEvYDtWCsWCrWDqVCpVCoUCnTBnUCnUDmUDlUDlUDkTDjTCjSCiSDiSDgQBgQBfQCePBcOAbN@bO@aOA`OA_NA^N@^MA]MA[K>YI=XI[J@\JA]JA]JA^LB_LCbOEgSHiTIhSHgQFcMBaMB`LA^J?]J?]K@_LAaMBbMCcOEdPFcPF_MD]LB^LC]KCWF>C5."!"%'*68>89?::@==B==B<E;=EHBF^IClUMnXOnXPoXOpZQq[Sr[Sr[Rr[Rr[Ss\Ss\Tr[SrYQrZRs[Ss[St\Tu]Uu]Uv]Uv^Vw_Wy`XyaZzb[{c\{b[zaZzaZzb[yaZw`Yv`Xu_Ws]Tr\Sq\Rp[QoZPmYOlXOjWMhUKeSIcQHbQGaPGaPHaPHaPG`NF_NF`PG`PG_OF_OF[LCNB4K>5L>5L?5L?6M@6M@6M@6N@7NA7NA7NA7OA8OA8OB8OA7OA7PB8PB9QC9QC9RD:SD:TE;UFZJ?\LA_NCaPDdRGgUHjWJmZLp]Nt`PybR~fTjWlXgRD2-* $&#$$  !%!($0*#92*=6->6-5.$91(F>3MC9KB8MD9QFPG74TG@VIC6.,_QKxsoȨڻS=/JC@½x{u{np\RVD9UB5t_Qw|miTGYE8\HB>;@<8@<8@<8C?;GC?IEAIFAD@=FC?IFCKGCLHDMJFQNKSQMUROUROTQNSQNPMJNKHPMJOMINMINLIKIFKJFQPLRQMPOJPNJMKGLJFLJFHFCDB?CA=@>;@>7<6/>70@:2;5-81*:3,# 0,'+'#!#"!##"##" #$#)*)+,+232010(('''&''''''000343+++/-+ &$"'&$0/-::7>=;87643165321/21/0.,*)'.-*54120-=;7FC@IFCPLISOLSOLSOLUQNZWT\XU\XT\XU]ZV\YUYVQXTPXTOZVR^ZV^ZV`\W^ZU[WS[WRZVQVSNVRMXTPWSOUQMSPKPLGPLFVRMWTNXUO\YTa^[^[XTQLNIDNIDRMHTPKWSOXTPYVR`]Zb_\b_\b_]]ZVYUOVRLVRMVRLURLVSMWSNRPLfOtSpQoPkNhMeKbIaI_H}]F{]Fy[EvYDsVBrVBqUBoUBnUBmTBmSAlSBkRAkSBjSBjSBjSCiSCiSCiSChRCgQBgRBgRDfRDeQCdPBbNAaM@`N@`N@_N@^M@]M?\L?[K>ZJ=YI=YJ>XJ?WI=VG;UG;UG;TG;TG;TF;TE:TE:TE;UF;UF>C??C==C<=D?@H?AI>@GOBBiRInXOoYPpZQpZRq[Sr\Sr\Sr[Rs[St\Ut\Ts[SrZRs[St\Tt\Su^Uu]Uu\Tv^Uw_Wx`XyaZzb[{b[{c\{c[zbZzaYyaZx`Yw`Xv`Xu_Ws]Tr]Tq\Rp[QoYPmXOmXOkXNiVLeRIcPHbPGaPFbPHbQHaPH`OF`OFaQG`PG_NE^ME]MEUH@H?:C;7E<8MA>AIHMLLQJINCACGFIMLQKIMLJOQPVVU\UV^YY`_QKc^Xfc]b_Xb_Vb_VhdZtũ޿veW!"$&'(!*"+#,$.%/& 0'!2)"3*#5+$6,%8.':/(;0)<2*>3+?4,@5,B6-C7.D8/D90E91F:1G:2G;2H<3I<3I=3J=4J=4K>5K>5L?5L?6L?6M@6M@6M@6NA7NA7NA7NA8OA8OA8OB8OB8PB8PB9PC9QC9QC9RD:RD:SE;TE;UF;WH=ZJ?\LA^MB`ODcRFeTGhVIkYKo[Ms^OwaQ{dShVlWz_N>50!   "%!*&!2,&93*=6->6-4.%70'E=3KB7H@6I@6LC9NE9JB6OF:RI=OE:KB8OF;850'(')*)------+++ $$---@83J<6B513,*XLFupkå~oO8,ga^ɽܹͬp||wr}opdzdViTE;-#E6-t_RycUI9/@1(D4);-$;,$;-$5)!9,"P?2UB5S@4I>95-'& !%!GA>VPMOIGGBAB@@:89744+*+++-,.1.15" !"! !&&'+,++-,)*)$%%)3'?1%G7+U@3ZD6\F7ZD6K8-Q=3^I=lTEpUF`H;`H;cK>aL?rZJ~eSx`Pv_Qu\NbJ=_H:P<0:,#%!*/#1$2& 2' 3'!4("5)#7*$9+$8*$'         "#',$/'"1)$2*$3+%3+%4,%4,%2*%"#!#1.0D@@JFCJEBGB?GC@JGDMIGKGCPKGWPLVOJSLFRKEOHCQJDUNHTMGSLGUNHPICOHBMFAPICOHCLF@MGBRKFRLFNHCOICOICPJDMGAIC>HBHBC@>FDADA?B>;C?KGCNJGNJGOLHTQMWTQWTQTQNPMJOLJPMJKHFLIFLIENJGQNKPNKPNJPOKLKGIHDJHDLJFLJFJIEJIDHFBDB>@>;@>;A?<9>;8542!"" !""#$$"## ! !"!"""!"! !! !! !!  """ !"!$%% !!#$$#$$$$$!!!"## !!***&&&!""!"!$%%"##!""!!!!!!!! !!!"""%%%&''  !! !&$#$$$##"$%%&&%('&)''.+):4.,($A;4@:3B<4C=571+61+A:3C<5C=5B;4D>7B;4>7/?80@:2<5-93,93,!0,'*'# ! ######!! !"!%&%()()*)011.//''''''))))))111343++*,+)$#!&%#0.,<;8?>;:874317546527530/,+*',+)21.20-?<9GD@HDAMIFPLISOLTPMWSOWSPXTQYTQWSPWSOYUQZUQZUQZUP[WR^ZV^ZV`\X`]Y_[W\XTXUPUQMVQLUQLTPJSOJUQLTPKRNIQMGSOIXUO[XS`^Z_[WWSNUQKUPKVRMTPKXTO[XT\YU_\Ya_\_\Y`]Z]ZU[VQ\XR]YTZWRYVQYVPYUPUSNgPqQmOlNhLeKbI`G_G|]FyZDwZDuXCrVBoT@nS@mTAlS@kR@jR@iQ@hP@hP@gPAgPAgPAgQAgRBgRCfQBePAdO@dP@dPAdPAcPBbOAaNAaOB`NA^M@^M@]M@\L?[J>ZJ=YJ>YJ>XJ=XI=WI[JA]KB^KB_LB`ND`MC`MCdPFhSHiTIiSHePEdODdPEcOEdPFdPEdOEgRGhSIhSHgRHeQGcPFaOEaOEbPGaPFZIAJ;4(%&#&*,179>=>C??D>?E=>F@BJCEMACKB?CePHoYPoYPp[Rq[Qq[Rr\Sr\Sr\Ss\St]Ut\Ts\Ss\St\Tt\Tu]Uv_Wv_Wv^Vv_Wx`XxaYxaYyaY{b[{d\{d\{d\zb[zb[xaYw`Xu_Xt^Vs]Tr\Sp[QoZQoZPmYOmXOlXNiVMgSJdRIcQHbPGbPHbQHaPG`PF`OF`PG`PG_OF^NE^NE]NESF?E<7B:6E<8PE?\NF\NFTF?B<9235@?CFFJJJONNSDBEFDGLKOMLQLJNQPVVU\VV^TV_^WXb]Veb[ebZcaWc`Vc_Uyg̵߿}k\ "#%&( )!*",#-%.& 0'!1("3)#4*$5+%7-&8.':/(;1)=2*>3+?4+@5,B6-C7.D8/D80E90F:1G;2G;2H<3I<3I=4J=4J>4K>5K>5L?5L?6L?6M@6M@6M@6NA7NA7NA7NA8OA8OB7OB7OB8PC8PC9PC9QC9QD9RD:RD:SE:TE:VF5IA7NE:MD9SI=RI=ND9H?5LC7740'('()(+,+(**!%&KD?}kaYIA2+)! SF@vqko}yk`K@A;8Ⱥ|Ȩ޺ͪ{zeWtg|sstfoZL_L>Q@5=/&/$:-%?1(F7->/&:,#8+"A2(A3(0&A3)%"%!JECSONHED743+**))*((*%%'(*,*+./37*,/ ""  ""#''(*+,,.-.00133465354,.-''''&% .$?1&B2'A0%B0%H5)?.%=.%K9.^G9[E8R>1WA4VA5XC6mTCrZHpXHdN@aJ=YB6O:/>.%'&+!.$1& 3'!4)#5*#6*$1& &   !#$( ,$.&!0("1)#0(")"($$1/.>;:D@>HDBKGDJFCGC@FB?FC@IEBJFBNHDLGBGB=B>9?;7851630852862974;96:85;:7:96:96985985984985;96;96;96;:6<:7=;8<:7:8576364143043043075265143/0/,)(&*,,*,,*--+..*--),,*,,(**%''%&%%&%%&&&'&'((&''%''&((&''%&&%&&&''&('%&&%&%%&%&'&&''&('&('&'&%&%'(''''&&&#$#!! ! !"!#$##$$#%$$&%%%%%&&%&&%&&%''')(()(()(')('((&('$&%!"""##'(((*)()))**())')) $%QNMROMROMOLJJGDKGDMJHOLIROMTRPURPUSQVSQTQOPMJLIFFC@DA>EB?D?D@=JGCOLHPMJMJGNKHNKGOLHKHDKGDJFCKHEPMJQNKPMJSOLUROPMJIFCFB?GD@NJFRNJQNJKIEMKHOMJPNKKJEGFADB=GFAJHDEC?ED?A?;?<9<:7=;7@>;B@=A?<><810. "" ! !!!%&&"## """"""!!!!""!"" !!###!"!""" !!!!"!"!$$$%&&"#"""""##"##$%% !!"#$!##    !! ! ***((( ###"""!"!!!!"##### ! !!"##$%%!!!!! #""  ! !$#"&'&#$####%%%((')((2.+=60-*%B;4@:3B<4D=550*94-A:2B;4E>7A:3B<5A:4?81@81@:2<5.:4,82,1-()&" " #"!&&%$$$!!!""!''')))*+*011011,-,(((()()))111454+++''& %$"'&$0/,:96;:865343175476476410--,*,+)10-0.,<:6HDAHD@LHDNJFRNKUQNYUQYURZURYTQXTPWSOYTP[WR\XS[WR]XT_[W`\X_[W]YU\XT[WSYVQXTO[VQYUOUQKTPKTPLSOJVQLUQJTPIVSLZVQa]X\XSWRMZVQ[WR[VRXTO[VQ]YU][W^\Y_]Z_\Ya^Z^ZU^YT]ZTYUPXTOYVQWTPTQLTRMfNmNjMiLfJcI`G~]F|]ExZDuXCsWBqVBnT@lR?jQ?jQ?hQ?gP?gP?fO?eO?eN>eO?dO@dO@dO@dP@dPAdPAdPBdOAcOAbN@aN?aO@aNA`NA_M@^L?]K?\K>\L?[K?ZJ>ZK>YK>XI=WI=VH[J@^LC^LB_MB`ND`NCaMDdPFgRGiSIiSHfQFfQFfRGfRGfRHgRIgRGiSIkVLjTJiSJgSIeQHdQGdQHeSIeRI_NEUD=>2-#%("%)+.289><=C=?E?@HBDMFHQDFN?@GOA3+?4+@5-B6.C7/D8/E90E91F:1G;2G;2H<3I<3I=4J=4J>4K>5K>5L?5L?6L@6M@6M@6MA7NA7NA7NA7NA8OB8OB8OC8PC8PD8PD8PD9QD9QD9RD:RE:SE:TF;UG@,,-%%&%%&'()&')*-0-04038149%$% "! !""###$'&(++,,-,+,+,-,-/.132365244/11432<968520.,*)(  $&') 4';+!C1&:*!8)!K8-^G8XB4V@2YB4S=0V?1]F6dMFB?EA>FB?IEBA=:-,)00-664AB@?A?9:8:;9;<:>?=??>?@?BB@AA?AA@??==><<=::;9:;:9:99:99:88979:8:;:;<:9:8665443553453565564443342120''&  *,+,./*-.*--(++&**'))&''%&&$&%$&&$&&$%$$&%%&&$&&%'&%''%&&%&&%&&&'''('&&&$%%''''(('('&''%'&&'&')'(((&'&$$$!"!""!$%$&('&'&%&&%&%$%%$%%$%%#%$#%$%&&'((')(&''%'&%'&$&&"$#"$#(*))++()(*+**+*)+*#'(OLJSPNTRPSPNNKIKHELIGPMKTQOXUSWTRVSRTQOQNLOLJMJHLIGKIFKHEHDADA>DA>LJGMJGIFCDA>JFCMJGNKHMJGMJGMJHLHFJGDIFCHEADA>C@JGDNKHROLOLIMJFNKGMJFIEBGDAJGCKGDKGDIEBIFBKGCMJGLHEJGCJFBKGCNJGNJGKHEA>:DB>LJGPNKNLHIHCEC=DB=FE@EC?GEABA=?>;@>;A?;B@=CA??=;;96//.#%%%&%$$$!"!"""&(($%%  !"!"###$# "" !!"## !!####$#"""!!!!"!###%&&%%%%&%#$$###%&%""" !!"## "###$$  !!!  !""!"! !!!())())!""!"!$$$!!! !!""""##!!!!!! !!"## """""""#"##"!  !!! """&&%)))$%%"#"$%%(((&'&1.+<6/.*%@:2@92B<4C<55/*>81B;4B;4C=6@:3A;4A;4?81@92B;4=6.:3,71+1,((%!"#"!&&%%%$""""""&'&'('+,+344233110))(&&&(('/0/333+++((' '&#*(&10.65365310.4309858747631/--+),+)21.0/-863FC?HDANIFOKGPLHRNKXTQZURYTQXSPZUQZVR[VRZUQ[WS\XS[WT[XT]YU\XT\XT[WRYUPXTOXSOYUQXTNVRLWSOZVRYUPZVPVRLVSLVSMURL[VRZUP[VPb]Yb^Z^ZV]XSa\Wc_[b`\a^\`]Ya]Y^ZVWSNWSMWSNWSNYUPZWSYVQVRMZTNgMjLgKfJcI`G~]F{[DxZDuXBrVApT@mS@kQ?hP>gO=fN=eN=dN=cM=cM=cM=bL=bL>aM>bM>bM?bN?aM?bN?bO@bOAaN@`M?`M?`NA_N@^M@]L?\K>\K>[J>[K>ZK?YI=XIXH>XH>XH>WG=WG=VF<>E@BIDFOIKUGIRACK/++dRKpZQpZQq[Rr\Ss\Ss]St]Tu^Uu^Ut]Uu^Vu^Vu^Vu^Vv_WwaYxbYw`WxaXycYycZzd[zc[{c[{d\|d]|e]{d\zc\xbZwaYu_Xt^Vr\TpZRoYPnYPnYPmYOmYPlXOkWNiVMgULeTKdRIcRHcQHcQHbQHaPGaPG`OF^NE^OF_PG_PF]NEYKBQE>I?9H>9I@;RGAQE??<<78;EEJGFKDCGQQWKJODBEHFJONSONSPOUTT[VV^TU^WYcdaafb[ebYebYdaWeaWnԼӸڽH=6  "#%&( )!*",#-%/& 0'!1("2)"3*#5+$6,%7-&9.':0(<1)=2*>3+?4,A5-B6.C7/D8/E90E91F:1G;2H;2H<3I<3I=4J=4K>4K>5K>5L?5L?6M@6M@6M@7MA7NA7NA7NA7OB8OB8OC8OC8PD9PD8PD9QD9QD9QD9RD9RE:SF:TG;UHZL@[MA]OC`PDbRFeTGgVIjXKmZLp\Nt_OxaQeT}bPI8-   #&"-)#1,%2-&71*:3+81(:3*D<2G?5F?5H@7KC9IA7KB8KB8KB8I@5E=2JA6IC=OGBRIEsjtf/'$ @;9naZvm}{tsxxyeQC^XVȹŷy̪ġ|kRD:o\Q}g[mZOr_Svho`zdVmYK]J=WE8L:0Q>2L;/8+"-#&#'/$,#*"'!(!"$3'+"++,9;@148)+-((*()*()+*,.-04/26037048,/3 !"!  ##$%$&*)+..../.,-,+,+,.-,/./00132133021764B>;B>;A>;GC@C?=975.-+$#"# #."3%3&E2(YA2Q;-L7)N8*N7)E1$D2&M;,S>/F4'7))!!!$"!%##  #%!% #&"!'#"(''976HDBNJHOLIOLIPLJLHEIECC?;8B?;D@=HEAJGDLHFKHEKHERPMQOKMIFKGDHEADA>EB@GEBJGCMJGQNLROLOLINKHJGCFB?FC@IFBFC?FB>D@B@DC?B@=A?;:74:73A>;<:730-**)&''&''&&&#$$"#"&''#$$ !! !! """"## !! !!"##"## !! ""!"#""""$$$&&&%&%'(($%%$%%#$$$$$%%% ### !!"###$$ !" "! !!!#$$$$$!! !! """!"!""!"""&'&)((##"!!!&''### !! !! !! """""""""!!!!!! !!!!!!"!### !!!""$$$$$#!  ######&&&''&''&$%$###'((+,+)**52.<601-(>81>81B<4C<53.(>92B<5A;4A;4@:4A:4A;4=70@92D=6=6/:3,5/)1-((%! "!!&'&%%$""""#"%&%&'&-.-565333211*))$$$&&&---222./.+** *)&+*'430542320.-+32/98687598620.,+)-,*32010.652DA=HD@JFBLHDMIEOKGVQMXSPWSOVQMVQMVRNYUQYTPXTP[VRZVRYTP\XT`\X_[W\XTYUPWSNUQLWRMXTOYUP[VR[WRXTOVRMVRM[XR\YTXUPROJQMHWSN_[Wd_\d`]d_\c^Zea^b_\][XZVS[WR\XSYUPXTOYUPZVR[WR\XS\XS\XS^YSeKfIdHcH`G~^E{[DwXCtWBqVAoT@lR?jQ>gO=eN_M?_M?_M?^L>_M?^M@^M?]L?\K>[J=[J>[J>YI=YIXI>XI>XI>XI>XH>WH>WG>WG=VF\LA^MB`NCaODaNCbNDcOEeQFgRGhSHhSHiTIjVKjWLjVKjULlWMnXNoYOmWNkULiTKgSJgSJhTKjVMiVLeSJ_NFYHAG94((*%(,#&*.05::=<=:;>HHMIINA@CMMRPOUFDGGEHMLQQPVOOTTT\VW_TU^UW`cbghc\gd\gdZfbXc_Tzgɳ޾շαūϵ~qh]U91- !#$%'( *"+#,$.%/& 0'!2("3)#4*#5+$6,%8-&9.':0(<1)=2*>3+@4,A5-B6.C7/D8/E90E91F:1G;2H<2H<3I=3I=4J=4J>4K>5K>5L?5L?6M@6M@6M@7MA7NA7NA7NB7OB8OC8OC8OD8PD8PD9PD9QD9QD9QE:RE:RF:SF:TG;UHYK?[LA]NB_OCaQEcSFeUHhWJkYKnZLq]Nu_O|cRz_NM:/   &#+&"/+%3.'4/(82*<6-<5,A:1G>5H?6JB7ME:OFJFCHEBJGDNJGMIFHEB>;:10.!!) 0$=-#A/#A.">+ >, <*/"0$3'3&*  &%'547" !#  *)*A=:6A=9B=:D?C@B=9B>;DA>EB?JFCJGDGEBKHDGDAB?;@=9@=8A?:C@;8963()(&&&'('&''#$$"##%&&""" !! !!!!!!"""""#$$$%%"##"""""""""!""$$$&&%'''$%%$%%"###$$"##$%%###!!!  !!"#""## !! $"!#"!"#"#$$%%%"! !!!#########""!%%%%%%!! !!!((('''!"# !!! $$$####$$#$$ !! !!$$$"##"##$$$"""!""&'' &&%$#""""$$$%&%,+*,+*)(''('&''())*+*)**940:4.4/*@:3@92C=5D=62-(>92D=6C=6B<5B<5B<5A:3<6/?92D=5<5.:3,3.(!1,''$  ! #""&&%##"!!!"#"%&%''',-,454111,,,%%%$$#'''-.-343122//- " -,)*)'4315424310/-4209757648754310.,..+541320541DAHC?PKGTOKUPMRNJSNJTPKVRNXSOXTOYTPZUQYUQZVR]YU^ZV\XT[VQXTOVRMWRNWSOXTOWSOUQLTPKTQLZWR`^Y^\XYWRTPKVRMZWR\XU]XT_[X_[X^ZVc_\b_\\ZVVSNYTO[WRZVRYVQYVQZWS\XT]YT]YT_[Va\WcJbF`F_E~^E{[DwXBsVAqU@nT@lR?iP>gN=dL;bL;aL;`K;^J;^I:]I:]I:]I;]I;]J<\I<\I<\J<]J<]K=]K=]K=]L>]K=]K=]L>\L>\K>[J>ZIXI>XI>YI?YI?YI?XI>XH>XH?XH>VF7.+%)-&(,!$'35:?AIEGPOR\QRZVIF?75=:3+@4,A5-B6.C7/D8/E90F91F:1G;2H<2H<3I=3I=4J=4J>4K>5K>5L?5L?6L@6M@6M@6MA7NA7NB7NB8OB8OC9OD9OD9PD9PD9PD9QE9QE:QE:QE:RF:SF;TG;UHXJ?ZK@\MA]NC_PDaQFdSGfUHhVIkXKnZLr\Mx`O|`OZD6  '#,("0+%4/(71+71*93+>7.D<3E=4F=4H@6JA7ND:ME:JB8C<2G?4[NDobgWM,&%xkXK61/Ŷ}ѭŦĥzk3*&ſ}~{iu^OA5,ydUq\O[I>' B>2O>2K;0G8-;DA>IFCGDBEC@DB?EB@LHFLIFIFCMJGPNKPMKROMSQOROLRNLQNKQNKQNKNJFNKGKGDHEBNLHPMJMJHMJGJGDFB>NLHMKGMJFLIFGDAHEBKHFIECHDAC@=DA=JGCNLGOMHMKGLJGJHDFD@HFBJICDC=EC=JICKIDJIEFEACB>A?<97330-630;85><9))(%%%'('&''"##"##$%%""" !!!!! ""!"""!!!#$$#$$%%&!""$$$$%%###!"!$$$%&%'''%%%!""!""##$!""$%%"## "##!"!$%$$%% !!! !$! "! ""!$$$((($$###"######$%$"##$$$$%$"""#$$'(('(' !!"""%&&"##!!!%%%####$$$%%  #$$#$#$$$'(''''  &'& """'''&%% ! #$#'''(((-,+.,++)('''()))**()()**;6171,62,C<5B<4D>6C=51-'A;4E>7C=6C=6B<5C<5@:3<6/@:2C<5;4-82+0+%# 1,''$  !"! $$$""!##"##"%%%()(-.-454233,,,%%%##"'''+,+232111//.  .-+,+)76465387443132/64243186465210.//,652652541DAiP>fN=dMXJ?YJ>YI?YJ?ZJ@YJ?YI>XH>XH>WG=UF78:BBFJJPKJPCBEFDGRRXPOTFEHJHLRQWSSYSRYWW`WX`ST]X[ejjmebYfcZfcYb_Tyhůӵѵ{vlne_`ZVZTQYTPUPL:31 #$%&( )!+",$-%/& 0'!1("3)"4*#4+$6,%7-&8-&9/';0)<1*=2+?3+@4,A5-B6.C7/D8/E80E90F:1G;2H<2H<3I<3I=4J=4J=4K>5K>5L?5L?6L@6M@6MA7MA7NA7NB8NB8OC8OC9OD9PD9PD9PD9PD9PD9QD9QE:QE:RF:SF;SG;TGYK?ZL@\MB^NC`PEbQFdSGfUHiVIkXJoZLu^N}aO`H: $ +'"1,&4.(71+93,:4->8/C;2C;2C<2D<3H@6KB7IA6IA7wko]R0*(sr]ONHEɻ˾έִ}åƧj\RKHźǼtqs_iUGePCA4+iUG\J>TB7,#OIFPIEGA=@72EA>C?IFCQNKSPNQOMSQOROMSPMQNLQNKOMJKGCIFBHEBFC@IFBLIFNKHPNKKIFHEBKHEKHENJGNKHHEBDA>EB?HDAHEBHDAJGCNLIRPMTRNSRNRPMONJLJFKJEKKEEE>CB:97331-30,630:85%&%$%$%%%### !""$%%"## !!"#"###%%$$$#!!! !!###!""$%%#$$$$%!"""""##"#$##$#&&&'''#$$"##!"" !!$%%"##!!!#$##$$"##$%%%&% !!!""!!! !!!"" #""(&%'%$%$#%%%&'''('##"$%$%%%%&%&&&#$$###'('())&&&$%%&''!""!"""##"##$$$%&&!""!!!###"""!"!&&&'(("##!""&&&$$$ %&%$$$'''%&%!"!%%%'('***,,+-+*('%&%$****++())*+*;7172-=82F?7D=6E>6C<51-(B<4E>7D>6D=6B<5A;4@:3=71A;3B<5:3,71*/*%"/+&&#   $$$!! ##"##"#$#&'&-.-121233//.*)($$#'(',,,33300010/  31/20.:9787598642010.320432:9676410-.-+420642531C@kQ>hP=fN=cM;aK:_I:]I9\H9[H9ZG9YF9XF9XF8XF9XF9XF:XF:XG:XG:XG:XH;YH;YIWI=UG;UF:UH;UHXJ?YJ?YJ?ZJ?ZK@ZK@YJ?XH>XH>WG=UE;SD;RC9RC9RD:TE;UFYH=[J?^KA_MB`MBaNC`LA_KA_LAbNCeQFhSHkWKlYMlYNlYOmYOq\Rt_Ut^Ts^Tp\SmYPkVNkVNkWOlYPmZQkYPhVMdRJ^MERC<6.,%)-*(*24:FHQTT\H83C:5ECCGHKTSZo_[r\Ss]Tt\Su^Uu^Tv`Vv`Vv_VwaWxaWxaXyaYx`XyaXyaXzcZzc[zd[{d[{d[|e\|e]}e]|d]|e]{d]zc[zc[yb[xb[waYt^Vq[SoYQlXOkWNjVNiVMiVMjWNjWNjWNiWMiWMiWLhVLhVLgTKfTKcSI`PG`PFaQHdTJfVLdUKaQH^OF]OF[NEXKCPD>A?>779CBFLLQJJODCGEDGPOTWW^LJOJHLQPUUU[SSYVW^XYbST\UWajltfcZdaXa^Ta]Rxhݸ۾ѷ}qwmeib\^YT[VS^XU^XT_ZV\VS>63!"$%'( *!+#,$.%/& 1(!2)"3)#4*#5+$6,%7-&9.':/(;0)<2*>3+?3,@4-A5-B6.C7/D8/D80E90F:1G;2H;2H<3I<3I=3J=4J=4K>5K>5L?5L?5L@6M@6MA7MA7NB8NB8NC8OC8OC8OD9OD9PD9PD9PD9PD9QE:QE:QE:RF:RF:SF;TG;UHXJ?ZJ@[LA]MB^ND`PEbRFdSGfTHiVImXKs\L}aOaK= %!*&!.)$3-'50)61*82,=6.A91C<3E>5G?5D=2@9/\QF{չw1*'uin`UOM¼׶ήwŦgUH_YV}¸}hs_lWGH9/[H;?2(]I=VD9O=2-$^XVkdaib`_XULEA3+&,"2'4) -$)!  ""&$$*-1-15.15+.2+-1)+/&'*%')#%(#$'$&)#%((+/.16&%'!#$ &"%!!"!#&%'*)+-..-..*,++,,,-,,-,+,+)**)***+*,-,,-,-...///00011010:75:63=:8FC@HDAHD@IEAOKGVROQNJRMISOKTPMUQNVQNUQMSOKLIE=:7*('*()202$$%%$%!!#976OLITPMQLIOJGPKHNJGMHEPKHSNKRMJQLISNKRNKOKILHEIDAEA=B>;B>;B>;B>;@;952.$"'%!*($00-554/0///.010/0/./../-/0/12122234355411/./-./.././0/01001//10./.././/.+,+()(&'&'''**))*))*)**)()((('&&%  ()(+,,)**()((*))++())&((&''&(((**')(&((&'''(('((&''&'&&''%'&%'&%&%%&&&'''(('((&''%'&&'&&'&'((()((('&&%#$#$$#$%$$%%%&%%&%$%%#$$"$#"##"#"#$$#$$#%$"##!#"#$##%%#$$!""    !###$%&((()) URPWTSYVUWUSVTRWTRVTRWTRUSPTQOPMKLHFIFEJGEKHFHEBDA>EA>EA?HEBLIFKHEGDAIFCLIFMJGHEBB>:IEBQNKSPNRNLPMKNKHOKINKHLHFKHEKHDEB>C?<@=9B?;C?9372-=82E>7D=5D=6C<41,'A;4D=6E>7C=6A<5A;4@:3>82A;4B;3:3,60*/*%$!.*&&#  $%$"""######$%$%&%---111233..-.,+&%$((',,,343/0/11/!32121/764653764531541764664:97653/.,.-+21.53121.C@;IE@HC?E@=C>;IDAMIEPLIRNJRMISNJTOKSOJTOJSNJQLHQLGQLGOJFNJEOKFPLGRNITQLRNJPMGPMGQNHPMGOLFQMHSOJTQKWTNZWR[XTZWS\XU[WTZVRZVRZVR]YU]ZV]ZU]YU]YU`]XZWSXTO[WR^ZV\XTZWS\YU]ZV]YU[WS^XRxXBzW?xW?uV@sV?pT?mR>kQ=hOYJ?YK@ZK@ZJ?[K@[K@ZK@YJ?XI>WG=UE;SD:RC9RC9SD:TE;UE\J@^LA_LA`MB`MB^J@\I>^J?aLAdODgRGkVKlXMlYNlYNmZPp\Rt`Vu`Vt_Uq]SmZQkWOlYQmYQmZQmZQlZQjXOfTKaOGZJCD72&(+*(* %'+EHPLFIA1*@:7LJJHHKJLR^X\q]Us]Tt]Tv_Uv_VwaWwaWwaWxaWxaXxaXyaXyaXzcZzcZzcZ{cZ{d[|e\|d\|e]|e\}e]|d]|e]{d\zd\zd\yc[yc[xbZu_Wr]UoZRmXPkWNiUMhULhULiVMiVMiWMiVMiWMiWMiWMhVMgUKeTJcSIaQGaQGbQHdSJfWMfWMcTK`QH^PG[MEVIAMC><;<<3+?4,@5,A6-B7.C7/D8/E90E90F:1G;2G;2H<3I<3I<4J=4J=4K>5K?5L?5L?5L@6MA6MA7NB7NB7NB8NB8OC8OC8OC9OC9OD9PD9PD:PE:QE:QE:QE:RE:RF:SF;SF;TGXJ?ZK@\MB]NC_ODaPEbRFdRGgTHjVIqZK|`OaK<( $!)% .)#2,&4.(4/(60);5-@90D=4G?6G?5;5+_RHxϵRB8wcZyw7,&843˿ϯuʪWF:e_\ø½ĺ~bOaL=L=1G9/ZF:5*!VC7UC7K://'!kfdyw{usmfc^VRSKF@:7*"*!.%$ !"'(**-1(+.),/$&) !#$&)%'*&(+'*..16**,"$ &"'#%! ! "''(+++-.-./.-/.+-,+-,,.-,.-,.-+-,*,+*,*+,+*+*,-,-../00233021;86@=:A>;DA?KHEMIFMHDMIESOLQMIPKGQLHTPLVRNUQNWTPXTQZVQZUPTOKPKHC@=31/"! #! 98;0/1$$%"!",+,?<:OJFRMIOJGOJGNJFNJFPLIPLIRMJRNJQMJQLJQMJRNKNJGKGDFB?C?:C?;@<9852#!%#(&"..+232-.---,./.-.-,-,,,+,-,,-,--,..-11000.--,-.-.//010121010/00-/.,-,-.-+++'((%&%$%%'('()(()('(')*)**)((' "#"(**)*)'((')(*,,()*&()&((')))+*(*)'(('(('(('((')('((&('%''%&&$%%%&%&'&'('&''&''&('%'&%'&()(*+*(((%&%""""#""##"#"#$##$##$#"##!#"!#"!"""##"#"!"" !  !!!"#"!""!"" "" "" ""!##"$$%''&((!"PLITQOUSQQNLOLJOLJNKIOLJLJGHEBJFCKHFKHFJFELIGLIGFC@FB>A=;A>;EB?EB?FC@KHENJHMJGIEB@=9E@=MIFNKILHFJGDNJGOKHOKIJFDLHEMJFKHEIEBC@A>:?;8GC@KHEOLIOMKLJGEB?FC@FC@EB?JHEFCAB?FD@ED?FEALKFQQLRRMQQLNNILLGED?>=8;:686220,20-863=<89741/-&&&%&&%&&!!!"##$$$#$$%''#$$#$#%&&)*)'(($$$$%%%&&###%&&%&&#$$!""##"%%$!"! ###%%%###"##$$$#$$&'' !!!""$%%%%% ! '('*++&''$%&$%%####$$%%%$$$!!!%%$%%$%$###"###%%%###!! &&%&'&%%%&'&&''!""&&&*+*+,,$%%%&&)**(**%''%&&())'('&''$%% &'&!""&'&+,+*++&'''(()**'('%%$ ! $$#)))&''"""%%%&&&)*)+++-,+&%$'&%,,++,+*+*)))?:42.*=81E>7E>7D>6D=5/+&@:3C=5E>7D>7B=6A;4@:3?93A;4@:2;4-71*-)$)&".*&'$   $$$####$#"#"%%%&'&---010233/0/0/.(('))(-.-454111221! 00/00.10.542875753652985986;:7653-,*-,*10-5310.,@=9C?uToS=lR=jQ=hOXJ?YJ?ZK@ZK@[K@[LA[K@[K@ZK@YI?WG=TD:TD:SD:SC9TD;TE;TE;UD:WG=ZJ?\J@_MB_LA_LA_LA_K@\H>ZG=\H=_J?bNCfRFjVKlXMlYNlYNlZPo\Rs_Ut`Vs_Up]SmZQlYPmYQmZRn[Rn[Rm[RkZPhVMcRJ^NGPA;/*) !%BCJE;:;.)B?=PNOLLPGGLRRYj^^s]St^Uv`Ww`WwaWxaXxbXxbXybYybXzcYzcZ{e\|e\{d[{d[|e\}e\}e\}f]}e]}f^}e]|e]{d\zd\zc\yb[yc[yc[u`Xr^Vp[SmYPkWOiVMhULhULhULhULhVLiVLiVMiWMhVMhVLgUKeSJcSIbRHbRHcRIeUKgWMgXNeVMbTJ_RH[NETG@HA>;;<@AELKQMMRIHLJIMLJMHFIUU[XX_NLQONSVU\VV]TT\WXaWXaUV_osnnodcX_]Q`]R|se®Ѱζ}rih`Zb\Wb]Yb]Zb\Y^XU[VR[VQ]XT^YU`[Wd^ZLFC&"%&') *",#-$.&0'!1("3)#4*#5+$6,%7-&8.':/(;0(<1)=2*>3+?4,@5,A6-B7.C7/D80D90E91F:1G;2G;2H<3I<3I=4J=4J=5K>5K?5L?5L@6L@6MA7MA7NB7NB7NB8NB8OB8OC8OC8OC9OC9PD9PD:PE:PE:QE:QE:QE:RE:RF:SF;TF;TG7/D>5G?6?8/od|~׻vgmZP|nm[P{|rxq{QA5mgcvn~wmTCH8,?3(QA5YE8,#L:/M<0F6+( hcbywunlh`]WMGTJDZSPE=91*&"!  !"# %&)&(,#%( "#%("$'$&)"$'%'+139--1(&% "$ %!&!&!#"!"**/./4#$$$%%)*)+,+-.--.--.-./--/.-/.,.-+.-,..-/.-.--.-,-,+,+*+**++,-,./.021.//:85B>;C?;?;8<8563/# $"'%!/.,231-.-++*,,+,,+++******)))()*(*+*--,./--.--.-./.110343443232/10-.-,-,+,+')(%&&$%$$%%$%$$%$%%$&'&)*(((' (*)*+*)*))+*,..)++&((%''&(()**())())(*)'))&(((*)()('('%'&$&&$%%$%%%&%&&%%&&%'&%''$&%$%%''&))((((&'&#$#"""!""!"!"#""#""#" !!!"!"##"###$####!"" ! !!!"#""$#!##"$$#%%&((%&&#%%%&&%''"#OKHOKIPMKKHEIECGDAEA>GDAHEBJFDMIGMJHNLJOLJMJHIFDFB?EA>B?JGDLIFMJGKGDGD@B?:D@=GDADA>@=:D@=EB>DA>EA=JFBLHEEB@IFCIECEB?B?<@>:DA=JFDOLJOLICA><96C?;LHDNKHNLIPMKOMJMKGKHEEC?=:5:72=;5DB=GE@IGBNMHLLGLLGLLGLKFFE@?>9;:497242.32.31.752530.,*%&&$%%"## !!#$$$%%%&&'(($%%$%%'''()('('"##$$$$%%"##$$$""#""""""!!!%%$"#"##"$$#%%%$%%#$$#$$%%%'(($%%!""$$%&&&"#""""'((*++&''%&&%%%$$#$$$&''%%%##"&&%$$$""!!! """%&%##" ##"%%$%&%'((())$%%###)))./.'(''((,--+--'))"""%&&$%%&'')**%&&&''$%%'((***())#$$#$$'(('('&&& !! ###((((((%%%&&&"""&'&)*),++%$$('&.-,0/..-,**)@;42.*@:3E>7F?8F?8F>6/+&B<5D=6D>6D>7C=6@:3?93A;4A;4?91:4-60*)%!+'#.+&'%!  "! '''%&%$$$"""&'&)))-.-/0/344011...))))*)...343110332! #!110210/.-2203200/.10.653;:8<;8875.-+.-*31.7530.,;85A>;=96A=9C?;IEBLHEPLHRMJRMIQLHQKFPKFVRM\XS]YUXSNTOJRMHQMGPLGSOJXTOXUPXUOXUPWUPTQLROIRNHQNHRPJUSNWUOTRMTQLVRNZVQ\XS]YU^YV\YUZVSZVRZWS_[Wc_[d`[a]Y]YU]ZV\XTZVRYUQXTOVSMWSNVRMYTMmP=pP:nP:mP;kP;iO;gO;eM:bK:`J9^I9\G8YF7XE7VD7UC6TC6SC6SC6RB6RB6RB7RC7RC7RC7RC7RC8SC8SD9TD9TD8TE9TE9TF:TF:TF:TF:TE:TF;TF;UF;UGXJ?YJ?ZK@ZLA[MA\MA\LA[LA[LAZK@XH>UE;UE;UE;UE;UE`MBeQFiUJjWLkXMkXNkYNn[Qq^Sr^Tq]Sp\SmZRmZRmZRn[Ro\Tn\Sm[RlZQiWOfUM`PIWGAA50 "%=:=>1-?85ROOYW[PPVKLQOOU_]dr_Yt^Uv`Vv`VwaWxaXybXycYzcYzcZ{d[{e[|f\}f]|e\|e\}f]}f]}f]}f]}f]~g_}f_}f^|d]{d\{d\zc[zc\xb[u`Xr^Vp[SnZRlXOjWMhULgTLgULhULhVLhVMhVLgULhVLhVLgUKeSJdSJcSIcTJdTJeUKfWMgXNfXNdVLaSJ[NFQD=EA@=>@GHMOOVMLRDCFKJNOMQIGIPOT[ZbSRWPNSVV]XY`TU\VW_Y[dVXalozoqw^]Q^]P`^SxpcӴħx}shnf^ga\e_Zc]Ya[X]XT^YU^YU]WS^XTb]Yd_\`[Xb]Ye`]OIE*"%&()!*",#-%/& 0'!2("3)#4*$5+$6,%8-&9/':0(;0)<1)=2*>3+?4,@5,A6-B6.C7/D8/D90E91F:1G;2G;2H;3I<3I<4I=4J=4J>5K?5L?5L@6M@6MA7MA7MA7NA7NB7NB8NB8NC8OC8OC8OD9OD9PD9PE:PE:QE:QE:QE:RE:RE:SF:SF;TFXJ@ZLA[MB\MC^NC_OD`ODcPDhSEpWH~`NxZHD3( $!'#)%*& .)"1,%50):4,=6/?9082)wg\~|zmŨqZMxjqq'ga^Ӿƹwtqy~wsnB4)qjfz||u`I99-#@2(L;.I8,+"L:/J9-:-$#d_]uomlebbZWUKEYPJ_YVWOLRJFA95-'"!!  "" " !$"$'"#&"#&#%(%(+,/355:88;435-*+)'',*,.-0/.1+*-2289;@246')'()(+,++-,+-,+-,.0./0//10021021-/.,.-.//...-.-,--*++*****)*,+-.-/0/-/.975C?=C@>C@>JGDJGCKGCRMJTOLXSOYTOVQMXSOXTPXSOVRMSNJUQLXTP\XT[WSZVRZVRVSOTPMSPMTPMVROSOLIFC?<:742+)(  %#"87:=B>;C?:7;7462/# "%#.-+00/--,**)**)*+**+*)*)))(''&'(')*)-.-./../../../-00/110221232./.+,+)*)(((%&&$%$"#""#""""""""#"$%$&'&&&% ')(*,+*+**,+,--*,,()*%'(&''(*)())'(('((&((%''&''&'&%&%%&&$&%#%$#$$#$$$%$%%%$%%$&%%&%$%$$%$&&%&'&&'&$%$!"! !!!"!#$##$##$#"#"!""%%%$%%#$#"#""""!"! !   ! #$$$%%!""!##"$$%''%''$%%#%%#%%"#HDBEB?JGEKGEJGDJFCHEAHEAFC@JGDPMKQNLMJHJFDJGFIFCEB?EB?C@=C@:@;7B>:FC@FCAGC@HEAGC@IEBGDAFDAGEAGC@EB>B>:?:6>95?;7?;7GDAMJHMJHJGEHEBGC@GC@FC@EA>>;7951951D@GE@IHCFE@JIEIHCGFAJIDKJEFE@A@;>=7;9486275242.53/9730/,$%%$$$###!!!#$$#$#$%%())$%%#$$&'&&&&'('#$$$$$"##"###$$!""""""## ######&&%%%%$$$!""!""%&&'''(((%&&!""$%%'&&"###$$'))*++'()'((%%%###$%%%&&"""""!%%$$$$""!!! !!!$$$!!! !!!&''***,--)++%&&*++---&&&'((+,+,--+--$$$)***++)**())%&&%%%%&%)))***)))&''$%%&&&%&&!!!%$#%&%'('(((&'&&&&!""$%%***,-,''&+*)10/0/.,,+-,*A;53/*C=5F?8G@8G@8D=50,'D>6C=5D>6E?7C>7?93@:3A;4A:3=7093,4/(# +(#.+''%!  $#")))(('%&%$$#++*,,++,+000344010***'(''('*++/00///343! !! .-,0/.,+)0/-/.,--,10.542986:97753.-+0/-4306521.-741@<9=96B>;C?;IDAKGCNJGQMJRMJRLHRMHSNIVRM[WS]YUZVRYUPZUPZVQXTNWTOZVQYVQWTOSPKSPKVSMVRMVRMVRMXUOYWQWTOWTOYVQZWR\XT`[W^ZV\XT\XTYUQWTOXUP[WR[XR]YU_[W^ZV^[V\XTZVRXTOYTOWTNWSMXTNZVPhM;kL7jM8iM9hM:fM:dL:bK9`J9^I9\G8ZF7XE7VD6UC6SB5RB5RB6QB6QA5PA5PB6PB6PA6QB7QB7QB7QB7RC8RD8RC8SD8SD8SD9SE9SE:SD9SE:SE:TF;TF;TF;TG;TG;TG;TG;SG;SG;SG;SG;SF;SF;SF;SF;SF:SG;THXJ?YK?YK@ZL@[MA\NB\MA\MA\MB[LAYJ?XH>WG=WG=VF\K@`NCbOCaNC]J?[H=VC9UC9WD:ZG<^K@cODfRGhTIiVKjXMjXMlZOo\Qo\Qo[Qo\RmZQlZQm[Sn[So\Tn\Sm[SlZRjXOgVNbQJ[LDQB;5-*3*)A72SNMa^a^]cSSZOOVPPVWYalbcu_Uu`Vv`Vw`WxaWxaXybYzdZzcZ{dZ|e\}f]}f]|e\}e\}f]~f^~g^~f^~g_~g_~g_}f_|e]{e]{e]zd\yc\w`Yt^Vr]Up[SoZRmYPkWNiVMhTLgTKgUKhULhVMhULgULgULgULgUKeTJdTJdTIcTJcTJdTKeVLfXNfXNeWMaTKZMEOE@BAA?@CMMSPPWJINCBEKJNOMRKILKJMVV]VU[ONSUU\YZbWW_TU]XZc[]gjmxtw\\P\\O^]Rqk^txjjcZ`ZTa[Vd_[e_\d^[c]Y_YU_YU_YU^XS\VQ]XSa\Y^ZV\WS`[Wa\XMFB-"#%'()!+",#-%/& 0'!2("3)#4*$6,%7-&8.'9/':0(<1)=2*>2*?3+?4,@5-A5-B6.C7/D8/D90E91F:1G;2G;2H;3H<3I<4I=4J=4K>5K?5L?5L@6M@6MA7MA7MA7NA7NB8NB8NB8NB8OC8OC9OD9OD9PD9PE9PE:QE:QE9QE:QE:RE:RE:SE;SF;UGXJ?YK@ZLA[LA\LB]LB_LBaNBgQDpVH`NbMS>1#!)% *&!,("1,%61*93+5/&IC;}oe|nqlbypk]yswdX#"#ȹ½Źwnxf{jnwfntc?2'c]X{zofz|sn|snwqUA42'I7+F4(:,".#A2'?0&5)!QLJib`e^[^VRXPKYQM_ZX\WUVQOJDAA;8943'$"    !    !#"$&$&)%'+%'*&(,%(+)+0,.2--1..2127016+,/*+,*++)*))*()*))*),--./.-/.-/./0../..0/010242/00-.-,--+,+*,+*,+*+**+***)*+*,-,/00.//:86D@>FB?EB?HDAHD@GC>MHDQMIZUQ_YU^ZUZVRXSOTPKUPKTOKSNIWSNZVRWSOVRNXTPVSOXURSOLSOLVRNUQMROKPLINJFLHDHEAEB?=:81/-&$$  !".-/>=@214%%&211422643=:8C@>KGDSOKWSOUPMRMJTOLSNKSNJTOKXSOYTQUPLVQMUOKQLHQLIVQNUQNPKHNHDPKGKGCKGEIECIECEA>A=;B>;A=;>:8;74841%"!$!-,)..-++*()()*)*+**+***)**)'(''(''((*++,-,,-,--,--,--,+,*--,110..-**)'''%&%$%$$%$"""!!! ! ! !!!!"!#####" %&%'((()())()*))++)++&((&'')*)(*)&('%&&%''%'&$&%#%$#$$$&%%&&$%%$%%#%$$%$%&%$%$$%$$%%$%$$%$&'&&'&'('%&&"#""#"#$#$%$$%$$&%$&%#%$%&&&''&'&$%$#$###"""!!"! !!!"""## "!!""!##$&&&((%''#%%"$$!##?;8A=9A=:D@>JGDMIFPLIQNKNJHKHFLIGJGEGDBDA>A>;B?C@<@=9C@9?;7C?KHEMKHMJGIFCIEAGC?C@<@=8:62?;7B>;C?IFCMJGKIEJHDIGCJHDKJFKIELKGHGCDC>FE@IHCFE@DC>CB=@?:A?:?=8?>:=<8:95:85?>:210##$$$$$%$#$#%''%&&%'''((#$$"#"(((&&&&'&$$$%&%#$$"##$%%#$%!""!"" !"!#$#''&&&&&&&"##!""#$$###%&&&''#$$%%%&&&"##%&&)**(**&(('((&&&##"##"$$$"""!! $$#%%$$##$######$#  &''()),--,--'((*++---&&&)***++,-,-..%&&()),--+,,&''#$$#$$$%%()()**)*)*+*'((&'&%%%%%$#$##$#%%%%%%#$#!!!#$$)**+++%%$))(10/..-)*),+*@:32.*D>7F?8F@8E>7B;42.(E?7C=5C=5D>7D>7A;4A:4B<5@:3<6/82,4/)"+'#.+&(%"  %%$*+*))(''&&'&..-./.(((111455.//''&&'&()(+++...///454#! !$" '%#)&$*('0/-)(&.-+.-+-,+21/874764874652.,*/.,4206411.,20-962:74A=:D@YJ?YK@ZL@[MA\NB]NB\NB]NB\MA[LAZJ@YI?XI?XG>WG=VF_LAbODeRGgTIiWKjXMkYMlZNmZOmZOm[QlZPlZQn\So\So]To]Um[Sl[RjYPhWNdSK_OHYJCN@9A61# (#%QMMb`ba_d]\cVW^RSZRRYTU]a]bs_Vu_Vv`Vw`Vw`Vx`VxaWzcYzbX{cY|e[}f]}f]}f\}e]~f]~g^~g_~g_~g_~g_~g_~f_}f^|e^|f^ze]yc[v`Xs^Vq]Up[RnZQmYOkWNiVMhULgTKgTKgULhULgULgULgTKgUKgULfTKeTJdSIcSJcTJcTJdUKeWMeWMcVL_RIWJBMGD@@BDEIOOUPOUGFJDCFJHLONRNMQKILRQVXW^POUSSYXY`YYaTU\WXa_akknxy{^^T\\P\[OhdXvf~lm~ugibX^XP^YSe`[ic`f`]d_[f`]c]Y`[V`ZUa[V`ZU^XT^YU\WT[UQZTPXSOUOJJB=0'""&'()!+",#-%/& 0'!2("3*#5+$6,%7-&9/':/(;0)<1*=2*>3+?3+@4,A5-B6.B6.C7/D8/E90E91F:1G:2G;2H;3I<3I<4J=4J>4K>5K?5L?5L?6L@6M@6MA7MA7NA7NA8NB8NB8NC8OC9OD9OD9OD9PE9PE:PE9PD9QD9QD9QD9QD:RD:RE:SF;TGWI?XJ?YI?YI?ZI?]J@aLAgPCpVGaNePoSA;0( ,'".)#2-&2-&=6/zsdvit`Ty}{kyrsM@7_ZXɿ½·ƻuq`p_p`qaiYsajZB4)_YV~xukdzpk{so{sppgctkf|wJ9/8+!J8+>/"7) 3'9,";.%.%>97`ZV\TPTLHXQMUNKYUTXUUROOEAA;76854534'%&  !!!   !! "$'"$&!#%#%($'*$'*#$'$%(&&*/-0100'(&**)*+*+,+++*,,+,,,--,././0/.0//0/.0/-.-././0/./.-/.,-,*,+*,+*,++,+,-,)**)*)+,+.//-..:85FB@FB?FB?JFBOKGLGCLGCQLI[VR\XS]XT]YU[WSVQMWRMXSNRMHRNIWSNTPKPLHRNJRNIURMQNIPMHQMISOKTQMSPLQNJOKGRNJPMIPMIPLHOKHJHE@><20/$##     !&$$87:769  0./NKI[VSWSORMIQLHUPLVQNWROWRNTPLSMJUOLUPMSNJRMITOKUOLUPMZTQZUQVROTOLUPNWRPSNKLFBLGDHD@HDAFC@FC@A>;>:7?<9?<9=97<85:63&# # -,)--,*+*(('((')))))())('(&%&%&'%&'&()(()(()(++*,,+**)%%$&&$,,+,,+))(%&%"#""""#$#"#"!!   ! !! ! !!!!!! '((&''&''(('&''&(((**())'(()*))*)'((%&&%&&$&&#%%#$$#$$$%%%&&$%%$%%$&%$%$%&%#%$#%$%&%%&%%&%&'&'('(('&'&$%$$%$$&%%&%$%%$&$$&%$%%$%%%&%&'&&&%%%$$%$#$#"##"#"!"! !!! !!!""#$$&('&('%&&"%$#%%@<9GDAB?<>;8GDAOMKTQOURPTQOPMKKIGGDADA>B>DA=GDAKHEJFCLIFMJHIFCFC>EB>C@IEBJGDPMKRPMQNLOMJOMJLIFIEAD@=GC@GDAB>;GCAMJGQNKQNKNJGGC@B>;FB>HD@HD@EA=?;7=95B?EE?FFAHHCFFABA;A?:A?:CA<9=<9?>;110$%%&''%&%###%&&%&&$%%&''$%%###&'&$%%%%$"##%%%$%%$%%%&&%&'"##"## #$#))(''''''&&&$%%$%%#$$$$$%&&#$$%%%####$#%&&)**)**&'''((&''#$###"$$#"""##"%%$''&'&&'&%$$#"#"  $$$(((,,,/00)**'((+,,(((*++)**+,+-.-'''&''*++)**%&&$%%$%%#$$%&%())'''%&%''''(($%$ ! $%$###"#"$$$'('&'&$%%%&&)))+,+&&%((',+*++*'''*)'?932.*D=6E?7E?7D=6A:33/*E?7C<5B<5D>7D>7B<5A:4@:4>81<6/93-5/)#!,($-)%'$!  ('&+,,**)(('(('-.-./.(((011344,,,$$$%%%)))+,,-..111777%$"!! )'%21/)(&-,*0/-10.541:96:97;:7753.-+/.,21/31//,+1/,;73<85A>:GB?PKGPKGQLHUPMVRNUPLTOKYTO[VR^ZV`[X^ZVYTPTOJRNIVSMZVQ\XS]ZU]ZU[XSXUOWTOURLTQKVSMVSMVTNWTOYVP]YU]YU[WS^YVd_[fa\a\XYUPWRNURMUQLVRMXTOYUQWSOWTOYVQXUPVRMUQLXTO[WR]YTWTO\G:aD1aF3aG5`H6`H7_H7]G7[G7ZF7XE6VD6TC6SB5RA5QA5PA5OA5O@5O@5N@5N@5N@5N@6N@6N@6OA6O@6PA7PA6PB7PB7QC8QC8RD9RD9RD9RD9RD:RD9RD9RD9SE:SF;SF;SF;SG;SG;SF;SF;RE:RF;SF;SF;RE:SE:SF;SF;TG;TGXI>YJ@ZK@[MA\NB]OB]OC]OC]NB]MB[LA[KAZJ@YI?XH>VF=VE`NCcPD_MBYG5P>4Q>5TB8WE;[I>_LAbODeRGgUJiXLiXLiXLjXMkYNlZPlYPm[Qo]So]So]So]Tm\Sl[RjZQhXOeVMbSK\NFSE>L>87.*  ;:3+?4,@4,A5-B6.B7.C7/D80E90E91F:1G:2G;2H<3I<3I=4J=4J>4K>5K>5L?5L?6L@6M@6MA7MA7MA7NB8NB8NB8NC8OD9OD9OD9PD9PD9PE9PD9PD9PD9PD9QD9QD9QD:RE:SF:SF;TGaK@hPBrWFaMnUjQR@3##)'#/*$>7/}İpa}mfSJvfrrtwiug ~źwm}gWkZzdUjZ|fVs]Nu^OJ:/QKHof`pgbh_Zd\Wngdyrowok|}ysjeH909+ =."3',"-"5) :.$(!$-)&LEAKD?IB;FB>NJFPKHSNJUPMYTPVQLVQLXTOYTPXSOYTPYTOWRNRMHQLGQMHOKFQLHPLGPLGTPLTPLNIELHDUQMZVRVROQMJRNJOKGMIEJGCLIFROLTQNRNKLIGKHFDB@654('' !/.0558'')##$;98QMJXTPYUQWRNRMISNJVQMWRNVQMUPLRMIQKGUOLXSPVPMRMIPJFQLHSMJUPLUQNTPMSNKQLJSOLTOLPKGPKHOKHHDAB?;>:7<86=96>:7;85<84;74)&"",+(..-,-,)*)&'&'(''('()('('%%%%&%&'&'('&'&%&%'(&))(''& !!''&(('&'&%%$"#"!"!""!"#!!!   !!   &''')(%&&'('&''%''')))**())())''''('&''%&&#$$"$$#$$$%$#%$$&%$&&$%%$%%$%%%'&%'&%&%&'&&'''(''(')*)()(&''%&%%&%&('%&&$%%$%$$&%$%%$%$#$$#$#$$##$#$$$%&%$%%$%$#$$"##!"" !!!"""$#&(''(((((%'&$&&EB>IEBGDAD@>FB@IECNKIQNMQNMOMKJHEEB?EB?IFCIFCKHEKIFMJGLIFIFBJGDNLINKHLIFLIFGDAA=:EA=D@:HDAFC@HDAKHEIFDKHEOLINLIIFCDA=B?9A?:CA6E?7E>6?810,(D=6C<5C=6D>7D>7B<5@:4=82<60;5.93-3.(" +(#,($&#   ('&)**(((''&))(-.-...(((/00455000'''&&%**)*+**++011777'%#!$" #! *(&642+*(-,*0/-10.320986>=;><:541.-*/.,32/0.,,+).,*:63<95B>;KGCUQNXSPXTPYURXTQXSPXSNWRNWRNYUQ[WS\WS\WSZVQXTOYUP[WR\XSZVQZWR[WRVSNSPKSPITQJWTNYVP[XRZXRYUP[WR_[X_[X^YUb]Yd_Z`[VXSNQMHNKERNIURMYUQ[XSYUPWTNZVQ\XS[WR[WR^ZUb^Y`]XZWRYG;Z>+\B1]D2]E4\F5\F6ZF6YE6WD5VC5TC5SB5QA5P@4P@5O@5N@5N@5N@5N@5M@5M@5NA6N@6N@6N@6N@6OA6OA6PA7PA7PB7PB8QC8QD9QD9RD9RD9QC8QB8RC9RD:SF:SF:SF;SF;SF;SF;RF;RE:RE:RF;RF;RF;RF;RF;SF;SF;TGWH>XJ?ZK@[MA\NB]OB]OC^OD^OC]NC]MB\LB[JAZI?YI?WF=VE^LAbPEeTHgVJgVJhWKhWLjXMkYNkYOm[Qn]Rn\Rm[Rm\Sm\RkZQjYPhXOfWOcTL^OGVHAN@:A5/'$'" #;>CSU]WX`WW_WW_ST[TU\Z[embas^Tu_VwaWxbXxaWyaW{eZ|e[|e[|dZ|dZ}e\~f\~f]~f]~g^~g_~g^~f^~g_~g_~g`}f^{e]ze]zd\xc[vaYt_Wq]Up\SnZQkWOiVMhULhULgTKgUKgULhULhVLhVMhVLhULgULfUKeTKdSJbRIaRHbSIcTJcUKbUK_RIYLDNFA@@@BCHPQXTU\LKOA?AFDFIGJNMQSRWRQUOMQTSYWW]RQWUU\WX`VV^QRZ]_hlozsu{]^O^_Q[\NYXL]ZRb_W`\T^[S]YRa]Wd^Z`ZVa\Xa\Xb\Xf`\gb]gb]e`[c^Yb]Yc^Z`\Wa[We`\e`\_[WZUP\WRZUQUPM;41%%'(*!+",#.%/& 1'!2)"4*#5,%7-&8.':/(;0)<1*=2*>3+?3+?4,@5,A5-B6.B7.C7/D80E90E:1F:1G:2G;2H;3I<3I=4J=4J>4K>5K>5L?5L?5L@6M@6MA7MA7NB7NB8NB8NC8OC9OD9OD9OD9PD9PD9PD9PD9PD9PD9PD9PD9QD9QE:RE:RE:RE:SF;SE;SE;SD:SD:TD:VD:XE;\GjQAuYFbLqVy[jP[F5LB:}y}lykj^Wv|m}mysewdX1/.ɾriu`P|fVs^Oq\MzdTlXIhSEJ:/82.YPI]UOZQK\UQf`]rliohe|z|yridf\VD7.1%1&0%(%-#3( *!&"<51D=:B;7C>;=98<;=79<68<014.02014-.0$## "!! %!"3.1545...,-,+-,*+***)))(((''('**),,+,,,-..010/0//0/./-,-,+,+-.-./.-.-+,+)*)()(()(..-./--.-..-010/0/753EA>B>;A=9EA=NIEPKGSOJTOKUQLVQLYTOYTOXSNZUP^YU]XS^YUZUPVQLTOJUPKUPKTOJRNJSOKVROUQMQLHUQLYVRWTPQNJNJFKHCLHDIFBIFBLIEMIFMIFPMJTQNYVSYVSXUSPNLECA10.""!*)*113'')##$$$$;98MJGSOKRMIQMHTOKVQMTOKVQMXSOXSOWRNTOKSNIQLHUOLWROXROWROTOLUPMQKHRLISNKSNKUPMUPMRMITPMSNJQLIPLIHDAA=:@<9>:7>;8<85>;7<85;74<86+(%!+*'..-,,+++*))(((((('()((('%%$$%$$%$%%$%&%%&%%%$&&%$%#$$#$%$#$#$$###"""!!"!!"!!! !     "#"())&''&'''((&'''(((*))**(((&''&'&&''%'&$%%#$$$%$%&%%&&%'&%''%'&%%%$%%&'&&('%'&&'&&'&&('&'&()'(('&'&%&%$%$&''&''%&&%&%$&%$%$$$$#$#"#""#"""!##"$&%%&%$%$$%$#%$"$$ "! !!"##%&&&'&((('('&''IFCIFCJGDLHEOKHOKHLIGJGEKGEOLJNKIKHFMJHMKHHEBGDAIFBMJFJFCGC?IEBJHFLJGNKHNKHJGDHD@MJFLIEEA=EA=FB>FB>IEBIFBHEAJGCJGDJGCKHDJGCJGDOLINKILJGFC@B>;C?B@;EC>ED@CA>BA>;:7541641741(((#$$$%%%&%#$$$%%%&&%&&'(($%%"""!! """!""#$$$%%&'''(('()$%%%&&$%% !!$%%''&&'&'('&&&'''(()$$$"""%%%!""&&&'('())%&&#$$%&&$%%"##!"""""#$#"""##"%$$%%$''&##" ! !!""""#"!!!!!!'((&'&,--,--&((&&&())'(()**'(('('&''((('''(((%%%"##%&%'('''')**'((%&%&&&())())%%%'''(('&%$!! $%$()('''***'((%&&*++()(((''&&**)''(0-*C<550+C<5D>6F?7F?7=701-(C<5C=6D>6D>7D>7B<6@:3<71=70;5.93,2-(" +(#+($$!   '&%())(('(('**)---,,,(((...233444--,(('**))))(((/00566'&$" %#"%#"$#!531.-+0/-10.21/431975>=:=<9652/-+,+)10..-+*('-,*;84A=:EA>KGDOKHSOLUQNTPMSOLVRNYTPYUQWRNTOKTOKUPLZVR^ZV]YT]YT[WSYUPVRLVRLZVQZVQVSMUQKURKVSMZWQ\ZU[YTUSMUQL[VS^ZV`[X_ZV[VQVQLUPKSOJQNHSOJTQLWSOYUQXUPWSNVQL]YT^ZU]YS^[Vb_Zb_[`]XZMET9'W>.X@0YB2YC4XD4XD5WD5UC5TB4SB5RA4P@4O?4O?4N?4M?4M?4M@5M@5M@5M@5M@6M@6MA6NA6N@6NA6OA6OB7PB7PB7PB7PC8QD9QD9QD9QD9QB8QC8QD9RD9RE:RE:RE:RF;RF;RF;RF;RF;RF;RF;RF;RF;RF;RF;SF;SF;TGYJ?ZL@[MA\NB]OC^PD^PD^OD^NC]MC\KA[J@ZI?WF=VF5RA7VD9ZH=_MBcQFdSHeTHgVJgVKiWLjYMkYOm[PlZPlZPlZPlZPkZQiXOhWNhWNgWOdUL_PHYJCQC=B5/&%'" %%(+DFMUW_VV^UV]UU]UU]Z\eicfr]St_UvaWwbXxaWybX{e[|f[|f\|eZ|dZ}f\~g]~g]~g^~g_h_h_g_~g_~g`~g`}g_|f^ze]zd\xc[vaZt`Wr^Vp\TnZQkWOiVMhULgTKgTLgULgULhULhVLhVMiVMhULgUKfTJeTJdRIbRHaQGaRHbSIbTJ`SJ\OFUIALGE>>AIJOQRYQRXJILDBDGDFHFILKNRRVTSXPNRQOSWV\SRXSSYVW_VW_RSZWYbnp{rtz\]M\]NXZKVUIXUL[XP\XP[XPZUN[VP]XS^YT^XT]WS]WSb\Xe`[_ZU_YTc]Xb]Ya[W]XT_ZVd_[_[WXTPUPLWRNVQNYUQXSPC=9)$'(*!+",#.%/& 1'!2)"4*$6,%7-&9.':0(;1)<1*=2*>3+?3+@4,@5-A6-B6.B7.C8/D80E90E91F:1G;2G;2H<3I<3I=4J=4J>4K>4K?5K?5L@6L@6MA6MA7MB7NB7NB8NC8NC9OD9OD9OD9OD9PD9PD9PD9PD9PD9PD9PD9PD9PD9QD9QD9QD9QD9QC9QC9QB9QB8RA8SB8UB9XD9^H;eM>nTB{]HiPx[enƷu{nZP}stzk{j|nsug]LBYUSƽviagSCq\LeRDUD7fSDdQCcOAJ;//*&SJDQJDRJESKGSMId][icaupnzus{usxuvolja\i`ZE;4&)!*!%#''( #0*'82/40.310223/03/15.15+-1/26149+-0#"!  !!!% +%$1+*2,,0+,0,-;7::8:..-./../.,,,+++)*)(('&'&&'&()'***+,+,-,///00//0//0//0/..-,-,-.--/.,,,)**'((''',-,/0/110110111/00210D?:B>:D?;KFBNIDPKGUPKUPKUPKXSNYTPXSOYUP]XT^YU\WRZUPWRMUPKVQLUPKUQMUQNSOKQMISOLUQMUQMTPLQMINKGKGCHD@JGCJGCHEALIFPLINJGSPMTQNUROWTQZWU\YV\YVXURSPMKHFA?=,++%$&.-/##% ! "! "!"'&'10/B?=MJGTQNVROQMJRNJUPLVRMVRMUPKUPKVQMVQMUPLTOKRMHRLHSNKTOLXSPZURXSPUPMOJFNIEPKGRMJSOLOJFJFBOJGQLHRMJQMJIEBFB?EA=C?:7=:6=96=971.+ +)&00/*+))*())(()((('''&''&#$#""!$$#$%$%%%%&%$$$#$"##"""!#$#######"#""#"!"!""!!" !"!""!  ""!""!   (**'))&(('))'))'((()))**'((&''%&%%&&%'&$%%"$$#%$%('&((&(($&%%&%$%%$%$&'&'((&''%&&&'&&(''('()(((('('&'&$$#$%$&''&'&&'&%&%#$$"#""#"!"!!" ! !"!$%$%&%$%%$$$#$$"$# !!!! !!#$#$%$'('&''&''HECIFDLIFMIGNJHLIFJFDFCAGDALIFLIGIGDIFCJGDIFCIFCKGDPMJKHEJGDNLIMKHNKIQMKQNKPMJPLIROKPLIIFB>;7:62?;8FC?LIFKHEGDAGDAJFCKGDKGDJGCOKGJFCFCAB?;EA=KHDJGDC?9BA=CB?A?<@?<98632/20-530''&$$$%%%&'&$%%%&%'((&''&''#$$#$$!!! !""!!!$%%%&&&'''((()*%&&&&'$%& !!$$$'(''''((('''&''%&&!!" !!!#$$#$$%&&&'''()$%%"###$$"## !! #$#"#"##"$$###"&&&%%$"#""##$$$#$#!!!!""())$%%)***,+&''%&&*+*)++)**%&&&''())%&&!""%%%###"##&&&)))())())&''$%%!"!$$$&'&$$$'(''('###"#"'(''((---*++&''***()(''&&%%**)***3/,D<561,B<5D=6E>7D>6=704/*B<5C>7C=6C=6E@9C=6@93=71<60<6/:4-3.(,($+($$!  $"!%#!)('*++*+*+++++*--,,-,)))--,121566432,+***)((('''./.555)'&!$" $" " 631/-+10-320653764<:8><:=<98630.,+*'0/--,*)(&+*(963?<9D@=MHEJEBJEALHDPKGRMITOJSMIPKGOKFQLHVRM[VQ]YU^ZV[WS]YU]YT\YSZWQYUOXUOWTNURLSPIQNGPMGQNHUSMWVPSPKSOIVQMWSNXTPTOKOJEMHBPKESOJTPKTPKTQLVRMYVQ[WS\XT\XS]YT`\W^[V^ZV_[W`]X[YTUMGO5%R:*T=-U?0UA2VB3UB4UB4SB4RA4QA4PA4O@4N?3N?4M?4L>3L>3L?4L@5L?5L?5L@5M@6M@6MA6M@6N@6NA7OA7OA7OB7OB7PB7QD9QD9QE9QD9QC8QB8QC8QD9RE:RE:RE:RE:RF;RE;RF;SF;SF;RF;RF;SG;SF;SF;SF;SF;TGQ>5H7.D3+C2*C4+E6-H8/J;1M=3R@6VE;[J?_NCaQEcRFdTHfUJhWKiWLjXMjXMjXNjXNkYOjXOiWNhWMgVMgWNgWOeUMaRJ\MFTG@G:4+)*#"' 148LNUTU\TT[VV^VV_\]fbain^Xs]Tu_VwaWxbXycY{eZ|f[|f\|eZ}e[~g]h^h^~g^~g^~g^h_h_g_~g_~h`~g_|f^{e]zd\xc[vaZt_Wr^Vp\TmZQkWOiVMhULgTKgUKgULgULhULhVLhVMiVMhVLgUKfTJeSIcRHbRHaQG`QG`RH`RI^QHXLCRHCHFFBCGPPWRSZMMSGEIDBDFCEGEHJHKPOSTSXPOSNLOTSXTTYQPVTU]UV^ST\SU]lnxuw_`R^_P]_P\\OZVN\YQ[WOWSKWSKZUO[VQZUPYSO[UQ_YTb\Wb]X\VP]VPd^Yfa]c^Y]XS[UQ^YUYTPWQLVQLVQMWRNXTPYTPXSOKEA-"$') *!+",#.%/& 1(!3)"4+$6,%8.&9/':0(;1)<2*=2*>3+?4,@5,A5-A6-B6.C7.C8/D80E90F91F:1G;2H;2H<3I<3I=4J=4J>4K>5K?5L@5L@6L@6MA7MB7NB7NB8NC8NC8OC8OD8OD8OD9OD9OD9OD9PD9PD9PD9PD9PD9PD9PD9PD9PC8PC8OB7OA7OA7O@6P@6P?6R@6VB7[E9bJ;kR@x\FhNvXhxuf\Vr|m}msfykqb=0(vqoy|wuje^JQA4+&!KC>NFALE@KD>JC>UOL]XWd_^ojhohengci`\_UOd\WLC>"#!#$( "!% )%$&$#))*+,.+,.,.1-/3,.204926;-/3"!"!"$#(%$,*+858<;=...+,+-..-..,-,*+*)*)))('(''('()(*+*,,+./--/-/0/110120332121./-..--.-,-,*+*(*)%&&'''*+*00/34323211111/GA=IC?FA9KD?OIDQJEUOJUOJXRMYSN[UP[UP\VP\WQ\VQWQKWRLXSNZUP[VQZUPYUPXTPVSOOLHMIESOKTQMQMJKGCGC?GD@HEAIFBHD@IFCROLVTQURORNKQNKROLUSPWTRYVSWSPURNWTQZWT]ZWYVTQOMDA?0., ''(;88KGDKHELIFIEBFB?D@=C@D?:B>:?<9>:7@<9@<9?;92/,+)&332*+*))(()()*)))(&'&&'%%%$""!$$#%%$$%$%&%###!"!!"!!! !!""!$%$$$$#$##$#$$$#$#$%$$%#$$###""#! ! !! !" !!   (**'))'))(*)()*())())()(()((*)'((')(&((&((%'&%''&(''((&('$%%$%%%&%%&%&'&&('&'&&'''((()(()()))()())('('$$#"##$&%%&&%&&%&%#$$!"! !!!! !" !! "#"$%$$&%$%%$%$#$$"$# "!  ! "$#$&%'('())&((MIGKHEJGEKHFLIGJGFHECFC@D@=GC?HEBIFDJGDLIFIFDHEBJFCLIFPMJQOLSQNQNLPMJNJGNJFMIEOJFNJFNJFNJGFC@DA=IFCJFCGDAIFCEA>A=:FB?HDAD@=A=9GB>JFBHDAD@=FC?KHDKHEIFCD@=C?;C?;FB=IE@GB>HD?LGBLIDIGCFD@B@;<:5@>9BA=A@HFAFE@;:6750983;:6<;8=<975242/31-1/,$$$$%%$%%$%$#$$$%%&''&&&%&&"##$$$ !! ""!"""""""##&&&())())$$%%&&%&&"##%&%(((&'&((''''%&&$$$ !! "##"##$$$%&&'(('(('((%&&#$$ "#""#"%$$&&%&&%&&&&&%"#""###$$$$$!"!!"!&''$%%%&&'(('(($%%'('*++)**$%%'((*++&''"##%&%"##!""%&&)*)()(&''%&&%&&$##""!"## ! $%%&&&""" $$$(((())+,,())())-.-,,,++*,*)**))**40-B;4;50C=6B<5C=5C<5=7072,B<5D>7B<6B<6F@9B<5@:3<60;5.<6/:4-3.(+'#+($%" " #! (''+,,++*--,**)++*-.-------011565543-,+)))&'&%&%,-,454&&%5300.,10-541986865;:8>=;=<9741/-+*)&0/-,+)*)',+*852?;8B>;LHDLGDLGCLGCPKGUPLVPLQKGPKFQLHUQL[WR`[Wb^Za]Y]XT\YT_[V_\W\YSZWQZVPYUOZVOXUNXTNVSMTQJTRLUSMSQKTPKTOKQLGPLGNIDMHCNIDRMHVRMXTOWTOVSNVRNZWR^ZVa]Y_[W[WRYVQWTOVSNVSN[WRZWRUOHH/"L5'O9+Q<.R>0S?1S@3RA3RA3Q@3P?3O?3N?3M>3M>3L>4K>3K>3K?4K?4K?4K?4L@5L@5L@6M@6M@6M@6N@6NA7OA6OA7OA7OA7PC8QE:QE:QD9QC8QC8QC8QD9RD:RE:RE:RE:RE:RE:RF;RF;RF;RE:RF:SF;SG;SF;SF;SGYJ?ZJ?[L@\MA]OC^PD^OD^OC^OD^NC]LB\KAZI?XG=XG=XH>UD:SC9VF;VC9G5-A0(>.'>/'@1(A3*C5+F7.I:0N>4RB8WG<[K@^NB`OCbQEdTHfUIgVJhVKhVKiWLiXMiWMiWMgVLgVLgWMgWMgWNeVMbSK^PHXJCM?82--"%)#&)>@EQRYTU\WX`[\e\\eXZbc^cq]Vs]Su`WwbXycYzdY{eZ|f[|eZ}f[~g]h]h^~g^~g^~g^g_h_g_~g_~g_~g_}f^|f]zd\yc\vaZt_Wr^Vo[SmYPkXOjVMhULgTKgTKgUKgULgULgULhVLhVLhVLgUKfTJdRIcRIbRHaQG`QG_QG^PG[NFUIAKEB@@BJKQST[QQXJINGEIDBDECEGEHIGKMLPSSXRQVNLPPNRTSXQPVRSYTU^TU]RS[fisux`bV^`Q_aS^^R^ZR^ZSYUNXTKWRKWRLYSNYTO\VR^XT_YUa\Wga\ib]ib]hb^d_[^YU]XS]WS[VQYTN[UP[VQZUP]WS\XS[WS[WR]XSSLH5-)$') *!+",#.%/& 1(!3)#5+$6,%8.&9/':0(;1)<2*=2*>3+?4,@5,A6-A6-B7.C7/D8/D80E90F:1F:1G;2G;2H<3I<3I=4J=4J>4K?5K@5L@6LA6MA6MB7MB7NB8NC8NC8NC8NC8OC8OD9OD9OD9OD9OD9OD9PC8PC8OC9OD9OD9OC8OC8OB7NA7N@6N?5N?5N>4O>4Q?4T@5YD7bJ:lR@z]GkPxZv}m~fWtib{pwgnwbUt^QnYL) |yrkyojZG8\K2H8.M<1SA4TB4M>0(#A;7JC>HA9D?:C>9FAIE@MHCMIDMIDPKFOKFOKFNJEMIEKGBNIEPLGPLHQMISOKSOKPMIROLVSOTPLROKPLIOLGMIEJGCKHEJGCFB?EA>LIFTROURPROLLHELIFKHEPMJURPTQNWTPVSOXURXURXTQXURZWT]YVZVQNJF@=;0/.$$# $$%0//EB?QLISOKUQLWRNTPLQMIPKGOJFPLHSOKPLIRNJTPMQMJPLHQMJSPLSOKRNJTPLVQMWRMWRNUPLSNISNITOJWQLWQMTOJTOKVQNVQNVQNTOLRLHOJFNIEMHEQLIOJFMIENJFLGCID@KGCLHDIDAFB>C?;8@=:B>:GC?JFCNJFNJFNJGOLIMJGKHFJGDMJGMJFLIEHDAFB>IFCIFCA=:>95C?:GB?LHEGC@B>:GB>HD@JFCNKGNJFJFBA=9HC?LHCIEAEB=C@:><7@?:ED@GFBCC>@?:?=8;9565/10*0.*32.:85<;954142/641420#$#$$$#$$"##"""$%%$%%#$$$$$#$$"""!!!##""""!""!"!$$$''(())$%%'((%%&$%%%&&&''$%%&&%%%$&&&'''!!"  !!###%%%'((()))**())%&&%&&"""#$$"""%&%''&''&'''%%$!!!###$$$###"""!"!%&%"#####)**-//&((&'&+,,-..)**())())'(("#$"##"##!!"#$$'(''''$%%"##$$$''&$##""" ! %&%((($$$!"!&&&(((())+,,''')*).//---,,+.-,-,++++73/A:3;60E>6C=6B;4@9283-72-C=6F@9D>7C=6E?8B<5@93;5/:4-;5.93-1,'+'"*&#$!  #!&%%---.-,//.++*++*...-..,,,00034310/)('''&&&%%%%*+*343&%$  20-.,*.-+320986764986:9776430..,**)'31//.,,+)/.,852@<8A=:HDAJFBKFCLHDNIFRNJSNJRMIUPLWRNYUQ[WS\XT^ZW^ZV]YU]YU`\X`\W]ZT^[T_\V_\V^ZT]ZT][U^\V][TYWQXVOZWQ[WR\XSYTOXTOUPKTPJVRMUQLVSMWTOURMUQLURLWSN\WS_\W_[W[XSXTOWSMXTNZUP^YU^[V\YSF2)F0#J6(M9+O<.P=0P>1P?2P@3O?3N>2N?3M?3L>3L>3K=3K=3K=3K>4K?4K?4K>4K?5K?5L@5L@6M@6M@6M@6NA7OA7OB7OB7OA7PC9QE:QE:QD9QD9QD9QD9QD9QD9RE:RE:RE:RE:RD:RE:RF;RF;RF:RF:SG;SG;SG;SG;SF;SF;TF;TF;UGXI>YI>ZK@\MA]NB^PD^PD^OD^OD^OD]MC\LB[KAYI?XH>XH>VF<30&)-&$)!148KLRVW^YZbabkYYaSSZVW_g]_q\St_VvaWxbXycYzdZ{eZ|e[}f\}f\~g]h^h^h^h^~g^~g_~g_~g_~g_~g_}g_|f^zd\yc[vaZt_Wq]Uo[SlYPkXOjVMiULgUKgTKgULgULgUKgUKgVLgULgUKfTKeTJeSJcSIbRHaQH_QG^PF\OFXLCQGADBA:;>NOVST[OOUGGKGFICACC@BFDFHGJJIMPOTQQVONRNMQSRWRQWPPVTU]UV_RS\cfouwceZ_aSacU]]Q]YQ[XQWTLUQIUQJTOIWQMYTP]WS^XT]XSa\Wje`lhckfbid`d_Z_YT`ZUc^Yd^Yb]Xa\Wa\W_ZU^YUVRMUPKYSOa\Xb^ZWSO<52$') *!+",#.%0& 1(!3)#5+$6,%8.&9/':0(;1)<2*>3+>4+?5,@5-A6-B7.B7.C8/D80D90E90F:1F:2G;2G;2H<3I<3I=4J>4J?5K?5K@6LA6LA6MB7MB7NB7NC8NC8NC8NC8NC9OC8OD8OD9OD9OD8OD8OC8OC8OC8OD9OD9OC8OC8NA7NA6M@5M?5M>4M=3N=3P>3T@4ZE7dL;qVBdLoTjyltcdRG~ndw{jp`{i^LAdPDiTH4-)z{u}rl|ywzqmZH:K<0>0'M<0K;/M=0J:-D6*+$83/D>9B<8?:6941:53@;8KFDYTRZTQUOLVOMSLIOGC?61*$  !! !!!# $$%''()*++,.)*,)+-,.225;37<.15)*.$%' !"$!"$"#%  !!!!! ! %%&$#%*)+.-.++++,*,-+//./0/-..-.--.-+-+*+**+*--,,-,,,,,-,--,-.--.--.--.-,-,./-00/./.-.--.-+,+&(&%'&'('&&&()(+,*00/232232//.//-11/331564675786997897786898::9;<;;<:;<:<=;;<;887786998:<:=><>?=>?=AA?QNJURNVSOSPLMIELHDPLITQMUQOQNKLIEIEBKHETQOTQNSPMPLIMJGMJGPMKUSPTQOTPMQMJTQNWTQTQMROKSOLWSOWSOSOKTPMSPMQMJLHD@=:632-,+(''%%%%$%'&'+**310=:8IEBNJFQLHQLHNJFOJFQMIQMJQMIOJFOJFPKGQMIQMIUQNUQNTPLUQMRNKRNKQMIOKGPKGTOJWRNWRNXSOUPKSMHUPKVPKVPLWRNWRNWROUPMSNKUPNTOKPKGOJFPKGQLIPKHNIFQLHNIEJEALGDLGDHDAEA>B>:8=:7?<:<9730-%#110)*)&'%&'%&'&'('(('(('()(((''('''''(''''&'&%&%$%$$%$%&%&&%$$#""!##"$%$$%$$$##$#$%%%&%%%$"#"!"!!! ""!!"! (**)++)++)+*),++--,--*++(*)())())')(&((&('%&&%'&$&&%'&$&&%&&&(''((&''&''%'''('()(((('''%&%%&%%&%()''('#$#!"!!"!"##$%%%&&$%$!"! ! "##$%%$%%#$#"$#$%$%&&&''$%$#$##$#!""!""$&%'((')()**(*)MJGMKHKGEJGEIFCJGDLIFLIGIFDFC@IFCKGEIEBEA>C@=IFDKIFLIFOLJPNKOMKLIGEA>:63840>96C?:6?;7EA:ED@IHDBA:?>986143-42-43.64198566321.31.641430###%%%###"#"###%&&$%%#$$%&&$%% !!##"$$$#$$!!!!!!###%&&))*%%%&'(#$$#$$%%%%&&$$$$%$"##&''')) !! !!!! !!$%%%&&&'''(('((&''$%%%&&###"#"#$#&''$%$'(()))())'''%&%""!$$$&&&$%$""""""'(($%$"##)**-//$&&$%$)**+-,)++&'''('())#$$ !""#$$'((((($%%#$$%&&'('&&%$##&&&)*)&''"""'('((()))+,,&&&()(,--+++**),++..,,++94/?81<71F?7D>6A:3?9261+94.E>7GA9D>7C=6D?8A;4>82:5/:4-:4.82,0+& *&")%"$!!$#"+,+,,,+++''')*)---+,++++010454110)((&&%%%%#$#'('122&&%  0.,,+(+*(/.,53243176565342020./-++*(21/0/--,*.-+530=96=96D@=JFCMHFKGDLHEPKGPKGQLHVRMZUQXSOUPLVRNZVRZUQYUPZWR^ZU_\V_\V_\W`]W^[U]ZS[XR[XR]ZU\ZTYWQZXQ]ZUa]Yc_[_ZVZVRVRMUQKYUPWSNVSNWTOURMURLVRMWSNWTP[XT\YT^[V]ZUXUPURLYUP_[Wb^[`\XI;5?)E1%H5)K9,M;.M<0N=1N>2M?2M>2L>2L>3L>3K=3K=3J<2J<3J>4J>4K>4K>4K?4K?4L@5L@6L@5M?5M@6NA7OB7OB8OB7OB8PD9QE:QE:QE:QD:QE:QD9QC9QC8QD9RE:RE:RE:RD9RD:RF;SG;SF;SF;SG;SG;SG;TG;SF;TG;TF;TF;UFXJ?YJ?ZJ?[L@\MA^OC^PD^PD_PD^OD^MC]LB[KAZI?XH>XH>XH>UE;UE:B3+5(!6(!6)"7*#8+#:-%<.&?1(B4+F8.K=3PB7UF;XI=[K@]MA`OCbQFcRFcRGeTIfUJfUJeTIeTIeTJeTJfUKfVLfULfVMdUL`QI\NGVHBE93+,.(*/""'*-1CEJVW_]_gabkSSZQQWSSZWW_j^]s^Ut_VwbXxcYycYzdZ|f[|f[|e[}f\~g]~g]~g^~g^~g^~g^~g^~g_~g_}g_}g^|f^zd\yc[wbZt_Wr]Uo[RkXPkXOjWNiVLhUKgUKhULgULgUKgUKgUKgUKgTKfTJeTJeSJcSIbRHaQG_QG]PF[NETH@LEB>>?@AEOPWOPVGFJHGKHGKDCFB@AECEIGJJJMONSRRXRRWONSPPUSRXPPVST\VW`SU^`bkvxgjb`cUadV^_T^[S[XPYUNUQIUQKWRM[VR_ZV`ZW`[W_YUa[Wfa]c_Zb]Xd^Zb\Xb]Xe`[id`hd_gc^gb^fa]a\X]XS[UQ[VQ\VR`[Wa]Zb^[]YVC=:%&)*!+",#.%0& 1(!3)#5+$6,%8.&9/':0(<1)=2*>3+?4,@5,A6-A6.B7.C8/C8/D90E90E90F:1F:2G;2G;2H<3I=4I>4J?5K?5K@5L@6LA6LA6MB7MB7MB7NB8NC8NC8NC8NC8NC8OC8OC8OC8OD8OD8OC8OC8OC8OC8OC8NB7NA7MA6M@5L?5L>3L=3M=2P>3UB5^H8iQ>y^GjOy`w{ǨvkZRE1I9-G8,D5)A4',$0+'>95=84;6272.50-831EBBFDDGDCJEDPKKNJIE@?:520,+!! !""$$%)*,+,.+,/**,()++-104915:.27(+.%&)#$'"#%##&!!#!"% !# #$'%')(*-%&)!#####$ #'%%.-/,+-+*+''&''%+,+..-//../.-.---,-.-+,,*++*+*,,+--,,-,,,,,-,-.-,-,,-,,-,,-,,-+-.-/0//0/..-,-,**))*))*)''&'(&)*),-,./.00///.**)**))*)+,,---..-/0//0.01/121232565554342343343010//.110011010221343887MJGMIFKGDMIELHDMJFQNKTQNSPNTQOSPMNKGNKHUSPUSPWTQUROPMJPMJQOLQNKROLOLIKGDOKHQNJQNJOLHMJFPLHOKGMIDNJFQMIUPLWRMXSNWRMWSNWSOWROQMIMIDNIEPKGQLGSNJQLHLGCKFBKGBNIEOJFNJGPLHPKGOJFRNJVROVROVROWSPWSPWSOQMIOJGOKFOJFQLHUPLWRNVQLVQMUPLRMHUOJUOJUOKVQMTOKUPLVQNTOLUPMVROQLHPKGSNKRMKPKHQLISNJQLHPKHOJGNJGKGDFA>A=:@<9A=;?<9=97=979631.+" 110--,()($%$#$#$%$%&%'''()(((''(''(''''''&%&%$%$$$$$%$%&%%&%$%$!" !"!!"!!"!!!!####$##$#!" !"!!! !"!!"! ')((++(**(**)+++..*++())'(('((')(&((&((&('%&&%&&%'&%&&$%%$%%&'''(('('&''&'''(()*)'((%&%$%%%&&%&%(('(*)%&&"##!""!"!"$##%$#$#"##"#"$%$%&&&''%&&$%%$%%$&%&'&%&&%&%$&%#$$"$#$%%%&&')()+*)**OLINKIMJGMIGLIGMJHOMJPMKMKHKGENKIPMJMJGHDAFC@HEBFC@B><@<9EA>IFDJGDGC@>;7=95@<9B>:C>;HD@IFBJFCPMJPMJNKHNKHOKINJHKGEKGED@;7=95A>:DB>FD@HFAHFBEC?BA@@;>=8;:6:94:93;:5:8397364142/31-53076210. !$%%"###$####&''$%%#$$$%%#$$!!! $$#%%%$%%!""#$$%&&$%%'(($%%%&&""""##$$$%%%$%%$%$!""&&&&'' !!"""!!!%%%&'&&''%&&&''%''%&&$%%!"!%%%&&&&'&$%$'(()*+'))%&&$$$ ! ###&''%&% !! ())&'&###()(+-,#$$$%%()(*++)**###&'&()(###!"! &''((('('$$$###%&%'''&&%%$$"""(((+++)*)$$$''''(('((+++'(')*))**)))**)+**-,+,,+;61?81A;5F?8D=6@:3?9251+94.D>7GA:F@8E?8D>8?93>8294.93-93-60*-)$! )%!(%"$!! ##"***--,++*'''+++322//.+,,000565443.-,++*))("#"&&%000('&0.,-,)*)'+*)0/-0/-54331020.763541,+)/.,0/./.,/.-42/<84;63?:6D@=IDAIDANIEOJFMHDMHDOKGRNJSOJUQLVQMVRMVQMTPKUQLYUP^[U]ZTXUNWSLYUN\YR\XR\XR[XRXVOWUNYWP^ZU`\X\XTUQMRNJQMHQMGTOKRNJUQMXTPXUPXTOWSNUQLPMHPLHUPK[WR]ZVZWRVQLVQM[WS_\X]ZUPGB:"@-"D2&G6*I9,J:.K;/K<0L=1K=2K=2K=2K=2J=3J<2I<2I<2J>4J>4J>3J>3K?4K?5L@5L@6L?5L?5M@6N@6NA7OB7OA7OB7PC9PD9QD9QE:QE:QE:QD9QC8QC9QD:RD:RD9RE:RE:RE:SF;SG;SG;SG;SG;SG;SG;TGXJ?YJ@ZK@[LA\MB^OD^PD_PD_PE_PD^NC\LA[J@YH>WG=WG=WG=VE;TD:=0(1%2&3' 4(!6)"8+#9-%[K@^NB`PEbQFbQFcRGbQFaPEcSHdSIdTIdTIeTJfVLfVLeVLdTKaQI^PHYLDOA;60.(,0"$((,/;=BWX``ajYZaQPWRQWRRYRS[ZY`m_[r]TuaWwcXxcXzdY{eZ|f[|e[}f[}f\}f\}f]}f]}f]}f]~f^~g^}g^}g^}g^|f^zd]yd\wbZu`Xs_Vo\SlYPjWOiVMhULgTKgUKhULgULgTKfTJfUKfTJfTJfTJeTJdTIcSIbRH`PG^PF\OEWJBPF?FDC<<@GHMNOUJJOCBFHGJGFJFEHA?AB@BHFIJIMNNSRSXTU[RQWQQVTT[RRXQRZVXaUW`Z]frt~eha]aS]`R\\Q]ZS^ZS\XRYUNYTO\XS`\Yc^[c^Za[X^XT^YT_ZU[VP[UO_YSb\Wc^Yb]Yc^Zd_[gb^kgcjebe`\a\Wc]Yd_[c^Zb]Xa\X_[X\XUYTQF?<* %)*!+",#.%0& 1(!3)"5+$6,%8.&9/':0(<1)=3*>4+?5,@5-A6-B7.B7.C8/D8/D90E90E91F:1F:1G;2H<3I=3I>4J?4J?4K@5K@5LA6LA6LA6MB6MB7MB7MB7MB8NB8NB8NC8NC8NC8OC8OD8OD8OD9OD9OD8OC8NC8NB7MA7MA6L@5L?5L>3L=3M>2Q?3WD6bL;qYDfMuZ{ͭmzaSZOH|qnj[yaPu_P8,$P>3H9.-($pf`upyojyqnzrpzsp|zyw~wuVIAF6)C4)F6)A2&B3'>1%8,"*#(#62/72/72.71-0,*-**556889<;=@?@EDECBC;99312.,-  "''(*+-+,.,.0+,.+,/,-0/26/27-05(*.%'*(*.%'+%'*$%(%'+!#& "#%&(+&(+%')&(+'*-$%(!###$$% $$!"202758101()(((&((&)*(,-,--,,-,+,+*+**+*+,+*++*+++,++,+,,+,,+-.-./..//...//.01001/00/010/0//0.00/01/-.--.-+,+)*)*+)*+**+*,-+..-&'&$$#%%$'('()))*),,+--,..-//./0/221231010/0/00/./.--,/0//0//0/010232342EB@KGCJGCKHDKGDMJGROLPMJOLINLIQOLNLIMKHURPTROTQNPMJOKGMIFMJGMJGOLIMIFKHDKHENJGSPMRNKLIELHDJE@MICNJEQLGTOKVQLUPLUPKVQMYTPYUQTOKRMISNJQMHQMHTPLQMHMHDKGBMHDPKGPKGOKGQMISOKRNJRNKTPMSOKRNKTPMRNKSOKPLHMIEOKGOJFOJFSNJUQMUPLTOJTOJTOJTNJRMHRLHSMIQKGSNJXTQUQMQLIPKIMHENIFPKHPKHOJGQLITOLUPMUPMSOLRNKPLJMIFFB?EA>A>;>:7<96;85852/,)!//--.-+,+''&$$$$%$%&%'('))(*+*))('('&'&$%$##"""""""#$##$$#$###"##"!! ! ! ! ! #$#$%$$%$"#"!!   !!  &('(**'))'))(**),,)++'))&''&'&&''%''&('%''%'&%&&%''%'&#%%#%$%'&')(')((((')(')((*)'('%&&$%%&'&&'&((')*)')(%&&#$$###$%$%&&$&%$%$#$#%%%&'&'(''''&''&'&%&&%&&%'&%&&%&&$&%#$$$%%$%%'(()+*)**MIENKHOLJMJHKHELIGNKIOLIPNKOLJNKINKILIGFCAIFCJGEFCAC?<@<9@=9A=:DA=C?:B=9HDAJFCIFCHD@JEAJFCMIEOKHMIEKHDGC?EA=HD@JFCD@=FC?LIEFB>ID@MHELGDKGCIEAD@<=96@;8@<8=95A>9HEAJHEGEAFD@HGBIGCCA=BAA@;=<7?>9A?;?>:><8;9553042/752531864/., "## !!#$$"""$%%######""" !!!!!!!!$$#''''''#$$$%%%&&#$$%&%$$$%%&!"" """$$$%%%%%%###(((''' !"! $%$%&&%&&&&&())'))%&&#$#"""%%$&&&&'&%%%&'''((&''%&%$%$ """$%%$$$'((&''"##&&&)**$&&#$$%&%&'''((%&%&'&'''&&%""""""#$$&''$$$''''('&&&&&&&&&$$$%$##$#(((*++)**&&&&'&&&&&''***()()**''''('**)+*),+)*+*<72;5/@:4D>7B;4?92?9272,=71E?8GA:E?8F@9D>8>81?9294.83,82,5/)+'#" )%!)&"#!!!$#"***--,++*''&+*)432100*++/0/6776552000/..-,$$$'('121('%.,)/-*,+)+*(-,*.,*32021/43/=;9<;8/.,-,+0/-//-/.-530>:6?;7A=9D@=GC@IC@JEAID?ID?ID@MHDQLHPLGQLGQMHPLGSOIVRLXTNZVQ\YSYVOTPITOGVRJ]YR`\V_]W^[UZWPVTMURJXUO\XTVRNRMHSNHSOJSNISOJTOKUQLVRNUQMUPLWRNVRMQLGOJESNIZUQ_[W^ZV[WSXTPZUQ[WR]XRZTN<';(?.#C2'F6*G8,H9.I:/J<0J<1J<1J<2J<2J<2I<2I<2I<3I=4J>4J>4J>3K?4K@5L@5L@6L@5L?5M@6MA6NA7NA7NA7OB7OC8PD9PD9QE9QE:QE:QD9QD9QD9RD:RD:RE:RE;RF;SF;SG;SGWI>XI>XJ?YK@ZK@[K@\LA]OC^OD_PD_PD_PD^OD]MBZI?WG=VF1(A4+E8.J=2OA6SD9VGLEB??AABGLMSLLREEIEDHGFJFEHGFIB@CA?@FDGJIMNMRQRWUV\VV]UU[VV]TU\QQXTV^VXaZ\enq{figX[M[^Q[[PZWQ\XR\XR^YTb]Yc^[b]Zb]Yb\Y_YU]XS^YT^XS\VP\VP_ZTb]Y`\W_ZU`ZVc\Xhb^kgckgdea]a\Xd_[hc_hd`ea]a]Y\XTYUQ]XT^YVPKH/% $)*!+",#.%/& 1'!3)"4+$6,%8.&9/':0)<1*=3+>4+?5,@5-A6-B7.C7/C8/D8/D90E90E91F:1G;2G;2H<3I=3I>4J?4J?5K@5K@5K@5LA6LA6LA6LA6MA6MB7MB7MB7NB8NC8NC8NC8NC8OD9OD9ND8ND8NC8NC8NB7MA7MA6L@5L?5K>4L>3N>3SA4ZG7gQ>v^HlRp~t{q|ȧsblWKj`Z~sudybTkTElXJ.%K;0@4*.("`TLshcskgmfcqkhtmkzwzy|wv_WR>/">0%D4(<.#8,!5* -$+#'!/*'5/,3.+-*('&&&&',.1037/14/0256978;112**+$""  ('(.03.03026.03,.1*,.,.1-04049-05*-1*-1,/3+.2&(+%'+#%(#%($&)#%(%'*'),#$'$%'$%'#$&#$&"#%"#$ !!#$$# # -,.112001,-,+,**+)**)()(()()*)+,++,++++**))*)))()*)*+*+,+,-,,-,./.././0/./....00/110/0.//../--.,/0.010-.-+-+--,./-./-,-,+,*,-+..-'('&&&&'&%&%''''('**),,++,*++*,-,010231110010010./.+,,-.-./.././0/010010<:8GC@IFBJGDLIFMIFOLIOLHOKHQNLURPQOLNLITROURPSPNOLHNKGMIFMJGOLIPLINJFPLHSOKROLUROVSQSPNQMIOKFOKFOJFOJESNIWRMVQLRMHRMIUPLUPLQMHQLHSNKUPMSNJRNIPLHOJFMIDOJFQMHQLGPKFQMISNJQLHOJGQMIRMJQMIRNKNJFNJFQMINIEOJFQLHOKFPKGRMISNJUPKSNHSMISNIRLGQKGQLGQKGTOKVQNUPNOJGLGEJECMIFNIFMHEOJFOJFSMJSNJRMIRMJPKHOJGLHEFB@DA>C@=@<9?;8<869530-* ,,)+,+*+*))('''%&&&'&&'&&'&((''('&'&%&%#$#!"! ! !!!"#"$$$#$##$#$$###" !  !! ! """$%$$%$#$#"""   !! (*)(**'))')(&(('))'))&((&((&('&''&''%''%''&'&&''&''%'&$&&#%$%'&'))())')(())(*))**'('(((()(')(&'&()(*+*())&''$&%%&%%&%'('&''&'&&&&''&()()*)())'((&''&'&%&&%&&$%%#%$#%$"$$#%$#%$&('(**)+*E@C?;A=9DA=FC@C?@<8C?:DA=B?:B?;C@;FD@EC@A>;A?;DB>EC?ED?DC>CB=A@;=<7;:5874763:85;96974:85763763,,*!"""## !!#$$"#"$%%####$$"##!""###""""""&&&&''"##$$$%%%$$$&&&%&&&''"## "##$%%&&&(((&''((($$$!!!$$$#$$ !!$%%%&&%&&$%%&((&((#$%#$#"#"%%$'(''''"#"##"%%%&&%&&&%&% ! !"!#$$###&&&%&%!"!$%$')(%''"##$%%'''(((&''$%%###%%%$$$$$$'((())$$$'''()('('&&&$%%""!! ###((()**())'''&'&$%$'((*++)))+,,((('('+++-,+0/.0/.?93:4.@;5D>7A;4?92?924/*=71E?8F@9C=6E?8E?8<60?9382-82,82,4.)*&"$")%!(%" ##"***..-+**(('**(2101//))).//788555//.0/.1/.&&%()(011+*' .,)20-/-+.-+0.,.,*10-10.541<;9:97-,+++)/.-0/./.,641A>:B>;EA=GC?IEBJEBLGBLGBMHCMHCPLGRMIOKFPLGSOJTOJUQLWSMWTNXTO\XR^[T_[S`[T`\Ua]W`]X\YTYVQXVOYWPXVNVSLWSMUPKVQKYTNXSNWRMWRMZUP[VQ[WRZVQYUP[VR[VRYTOZTPXTPWROYVRYVRXTPZUQ]WS\WS^YT_ZUE825!;+!?/%B3(D6+F7,G8.H:/H;0H;1I<1I<2I<2I<2I<2I<3I=4I=4J>4J>4J?4K@5K?5L?5L@6L?5M@6M@6M@6NA7NA7OB8OB8PC9PD9PD9QD9QD:QD9QD9QD9RE:RE:RE:RF;SF;SG;SGVI>WI>WI>XI>XI>YJ@ZK@ZK@[K@\MB^OC_PD_OD^OD_PE^NCZJ@WG=UE;TD;SD:SC:TD:E7.-!/#0$1&3' 5)"7+$9-%<0'?3*C6-H;0L>4OA7SD:WH=ZJ?\LA\MA]MB^NC_OD_OD`QEaRFbSHcTIdUJeVKeUKdTJcTKbTJ_QH\NFWJCJ=71--679+.2<>CY[dXX`OOUOOTPPVQQXOPVTU]SU^a^dqa[t`UvbWwcXxbXzcYzdZ{eZ{eZ|dZ|e[|f\}f\|e\|e[|e\|e]|e]{e]{e]ze\xc[wbZvaYt_Wp\TmYQkXOiVNiVMhULhULgUKgUKfTJeTJeTJeTJeSIdSIcSIcRHaRH`QG_PF\NEWJAULFHFF<>AHJPNNUGHMCCFEDHFEHEDGFEHDCEA?@BACHGJKKOOPUTU\UV]UV]WW_VW_PQXQS[UWa[]gkmxikkWZK[^QYYOYVO^ZT^ZU_ZUb]Yb]Z]XU_ZW^YU\WR_YU_ZU^YT]WQ_YSa\Va]X]XS`ZVc]Xc]Zc^Zc^Zgb_c^[b\Xd^[ieahd`fb^d`\a]Y^YU_ZV`\Xa\YWQM6.*"(*!+",#.$/&1'!2)"4+$6,%7-&9/':0)<1*=3+>4+?5,@6-A6.B7.C7/C8/D80D90E90E:1F;2G;2H<2H=3I>3J?4J?4J@5K@5K@5K@5K@5K@5L@5LA6LA6MA7MB7MB7NC7NC8NC8NC8NC8NC8NC8ND8NC8NC8MB7MA7LA6L@6L?5K?4L?3O@4TC6]J:kUB{cLs^}r}lal`qg}cUbPEyojzpl\xaRkTEoZL.%H8-=1'/(#XKCkb]unljeclgfxrq|{~}}}}yy{wvf`]:+:-"=/$4),#2'.$&'!)%!0.,,**(&&$##'')-/3-03*,0)*-.15359+,.$%& % .03.14/15,.1,-0)*-*+-,.1/2615:/26,/3,/4,/4(+/%'+%'*&),'*-&(+')-'*.$&)""$""$!"$!"$!"$$&)#%(#$'#%' !#""#**,)((''&(('***+++*+*+,+,-,-.,--++,*)*)()()*(+,+,-++,*()(*+**+))*(()(*+*,,+,-,---+,+,-,..----,,++,**+)--+./---+--,/0.-.-+,+,,+//-010-.-,-+..-./-''&%&%%&%#$#$%$&&%**),,*)*(*+*-.-232232010/0////,,,()('((+-,+,+,-,././0/;:8KGDNKHMJFPMJSPMTPMQMJLIEMJFROMQOLOLJROLVSQTQOTQNVROQMJPMIQNKSOLSPLUQMYVRYVSZWTYVTVSPLHEMIDQLGTOKPKFSNJWRMUPKSNISNJSOJSNJRNIUPLTPKVRNXSOXSOSNJNIENIEQLHQLGPKFOJFRNJTOKSNJQLHRNJUQNUQNTPLMHDLHDQMJQMIQLHRMHRMHQLHQLHRNISOJRMHSMIUOKVPLTOJQLGPKGSNJQMJOJGNIGOKIMHFKFCKFCJEAKFCMHDPJGQMIOKGOKGOJGOJGMIGHDAC?;A=:>:7;853/,*)&+++()('('''&%&%%&%&'&&'&&&%&'&'('&'&$%$"#"!!!!!!!"!""""#""#""#""#"!"! ! !"!!"!"""$$$$%$$%$"## !    !!##")*)(**(**())&''&''%''$&&%'&')(')(')(&((&(''(''(''''&''%''%'''())+**++)+*+,,,.-+,,)*)*+**+**,*)*(**),,+*+*())'('&('&'&&('%&&%&%&''&''()()*)())&('%&&%&&%&&%&&$&&$%%#%%#$$#$$#$$%'&')(*++C>9HD@LIFLIFMIFNJGOLIPMKOKIOLIPMJPMJQNJPMKMKHKHFMJHQNLROLPMJNKILIFLIFNKHJHEIGDGDAFB?EA>HD@MIGKGDIEAFB>?<9A=:LGDNIELHDNIFOLHMJFIFBC@:6;94973851=:6B@:CA>BA=BA=@?;?>9><7>;675143/31.20.20-31.42/42/**)#$$"##"""$$$#$$%&&%&&%&&&''$%%"##!!! #$$&''"## !!#$#$$$"#"#$$&''$$%"""$$$'''''''''(('***$$$"""%%%&&&###"##$%%%&&%&&$%%'))&''#$$%&&%%%%%$'''%&%!!!!! ###%%%&&&%&%  "#"!!!''''''###%%%)**')) !!$$$&&&'(')**'''$$$&&&&''%&&'(''((%%%(('()())('''%%%""" ###'((())'('''&&&%%%%)**+++(((()(()))*)-..//.10/0//>8394.C>7F?8A;4@:3@:30,'<60D>7D>7B<5E?8E?9:4.?9351+93-82,3-('$ &# (%!(%! #! #! &%$***...***''&))(21/20/)))./.666444...0/.321))))))/0/+*(  /-+53121.0/-/.,-,+-,*1/-642<;8:97+*)**(21/4310/.21.?<7B>:D@HC?JE@ID@IEANIEOKFRMHUPKWSNVRMTQKWSMYUO_[Uda[fc]eb\ca[b_Z`]X[XRWSMVSLYVO]ZS^ZT^YS]XR]XS^XS^YT]XS]XS]XTWRNRMIRMISNJYTP`[Wa]Y^[WZVRYTQ\WT\XT\XT_ZVa\X^YU_ZU_ZUMD?26';,">0&A3)C5+D7-F9.G:0H;1H<1H<2H<2I<2H<2I<3I=3I=3J>4J?4J?5K?5K?5K?5L@6L@6M@6M@6M@6NA7NA7OB8OB8PC8PC9PC8PC9QD9PC9PC8QD:RE:RE:RE:RE;SF;SG;SG;SHVI>WJ>XJ?XJ?XJ?YJ?ZJ@ZK@[K@\LA]NC^OD^OD^OD^OD]NCZK@WG=TE;SD:QB9QB8RC9I:1,".#/$1&2' 4)"6+#8-%;/'>2)A5+E9/I;1L>4PB7TE:VG=XI>YJ?ZK@\LA]MB]NB^NC_PDaRFbSGbSHcTIcSIcSIdUKcTK`RI\OFWKCMA;=6357:+/2?AGYZbUV]POUNNSOOTQQXNNSQRXTU^RT]`\`sc\t`UvcXwbXxbXycYzcY{dY{dZ{dZ|e[|e\|e[{e[{d[{d\{e\{e\zd\yd[xcZvaYuaXt`Wq]TnZQkXOjWNiVMhULgUKgUKfTJeTIeSIdSIdSIcRHcSHcSHaRGaQG`QG^PFZMDTH@SNLABDCEKMNULMSCCGBBEDCGEDHDDGEDGEDGB@BCADGFIJJOOPUUV]UV^WX`WX`WYaQRZOQYTV_[]ghkvqswSVGY[OXXNYUO_[V`\W`\X`[X]XUZUR\WSXSOWQMZUP\WR\WQ_ZUd_Zc_Zc_Za\Wa\W^YU_ZV[VRWQM]XSc]Yhc_ea]d`]`\Y`\Xc_\d`\c_[c^Zc^[d_\e`\[VQ:30#&) +",#-$/%0' 2)"4*#6,%7-&9/':0(<2*=3*>4+?5,@6-A6.B7.C7/C8/D80E90E90F:1F;2G<2H=3H>3I>4I>4J?4J?4J?4K?5K@5K@5K@5L@5LA6LA6MA6MB7MB7MB8NC8NC8NC8NC8NC8NC8NC8NB8MB7LA7LA6L@5K?5K?4M?4PA4VE7`MFB?LHEJFCD@=>:7630# )'$+,+'('$%$%&%%'&%'&&'&&'''('&'&&''&''$%$##""""!"! !  !"!!"!!"!!"! ! ! !"!"""#$#$%$#%$"##"#"!! !"!  "" ()((**)*+(*)&((%''#%%#$%$&%&''&(''(('((')('((&'&&''')(()))***,,+,,+-,,-,-/../.-.-+,+,-,,.-,-,*+*)*))*)()('(''((')('((&('%&%$%%'((&'''('()(()('((%'&%'&%''&''&((%'&$%%#$$"$$#$$%&&&''*++EAEA?KHEPMJROMQOLNKIGDBDB?><8@<9DA=DA=@=9>:7B>;HDAFC?EA=C?;@;7E@:;74:62;7495172.<73B=9C?<8@>:><8><8?>:?>:?>:>=9=<7;:5:8375175165121-0-*2/,53/530))(#$$"#####$$$%&&())())'(('()$%&"""!""!""%&&###!!!### !!"""$%%$$%$%%$$$$%%&&&(((()('((#####"((()))!!!$%%&''%&&'((%'&'('%&&"##%&&#$####%&%##""!!%%$)))'(( !""&'''((%&&&&&)+**,,"##&''))(*)))))''''('&'&&'&&'&'(''(('''))))))**)(((&&&%%%!"!!! %&&(((&&&''&&%$&&%*++*+*((())(+++*++-.---,//.0.-=8283-E?8D>7A;4@93@:3/+&=81C=6D>7C=6E?8D>882-?923.)93-71+1,&%"'$ &#&$  " (&%&$#*)()**-..)))'&&(('1/.20/)))-..455444./...-332,,+()(...+*)!%#! ,*(75242020.0/-21//.,431652:97:97+*)**(22054221/21/B?;EB=FB>D@=D@1'@4*B6,D7-E9/F:0G;1G;1H;2H;2H<2H<3I=3I=3I=3J>4J?5K?5K>4K>4L@6L@6L@6M@6M@6NA7NA7NB8OC8OC9PC9PC9PC9PC9PC9PC8QD:QE:QD:QE:RE;SG;SG;SG;SHVI>WJ?XJ?XJ?XJ?YJ?YJ?ZK@[K@[LA\MB]OC]NC]NC^OD]NC[KAWH>TE;RC:OA7N@6PA7K<3.$.#/$0&2'!4)"6+#8-%:/'=1(@4+C7-F9/I<2M?5PB8SD9TE:VGZJ?ZK@[LA]NB_PE`QFaRGaRGaQGbRGcTJbTJ`RH\OFWKCOC4+?5,@6-A6.B7.C7/C8/D80E90E90F:1F;1G<2H=3H=3I>3I>3I>4J?4J?4J?4J?4K?5K@5K@5L@6LA6MA6MB7MB7MB8NC8NC8NC8NC8NC8MB8MB7MA7LA6LA6K@5K?4K?4M@4QB5XG8bO>oZHzdRvf\l]S~nd{yveoYLRD;ynhtd[jUHfQC^J;XF9*#7*"2(,&!QHC`YVd^]njjdaa^ZYWRPa\[ga`e`_a]][WW:1+2'.%(!'%*!$%& $! '&&''(##""""&')(*,-/3)+.*,/,/3')+   $(# .04038+.1*,0)*-%&'+-104937=26<37<26<26<049/38/38/38.26*-1')-')-$'*%(+'*.%'+#%(!#& ""#%%&''('((&++*--,,-,)*)()(******((()*),,,-.---,*+*,,+,-+++*''&$$"&&$))')*(*+*++*+,++,++,++-,++*))())(+**''&%%$%%$**)..---,++*,,+--+,,+,,+*+*+,*--,//.01/11/(('"#""#" !"!&'&'('(('++*--,221120--,*+*()(&''$%%&'&&'&'(')**,.-543LIFPLIOKHSPLPLHPLILHDJFCJGDLIFMKHLJGLJGLIFLIFPMJQNJQNJRNKOLHSPMSPNTQNVTQVSPURNUQNQMIOJFOKFSOJXSOVQLSMIPKFRMIVQLXTOWRNWRNYTPYTQWRNTPLQMIPLHSNJUPLTNJUPLTOKTOKTPKSNJPKGNIEPKGTOLTPMVROVROUQMWSPWSPWSPZURZVRXSOSNJRMITOKTPLTOKVQMXSOUPLRMHPKFPJFPKGNIFOJGOKINJGMIFLGDLGDNIFMHELGBNIEOJFLHDJEBMIEPKGOJFOKHJFBIDAKGDJFCEA>A=9962&$!)'#--,()(%%$$$$%&%%&&&'&&'&'(('('&'&&'&$%$"#"""!""! ! !! !! ! ! ! ! !!!!"!#$##$$#$#"""!"!!! ""!   ')()++())'((&''%''#$%#$%$&&%'&%''&''&(('))'))'(('((()))+**++,--./.-/.-...0/./.-.-+-,-.-./.,-,*+**++*+*)*)'((())(*)())&('%&%%'&'((&'&&'&&'&'''&''$&&$&&&'''(('(($&&#%$#$$"##"##$&%&'')**EA=:7=97@<:HDALIFHECFC@@=:@=9?<8<83840951740;72?;7FB>HD@FB>EA=HD@EA=FA>C?<<85:64630:63;8573/3/+3/,3/+0,(3.*62.<84>;7@=8C?:@=8<94:83<;5=;6=<8>=9=;7=;7<;6><8@?;==876164/862<:6=<898464142.42/53042/''&"""#$$$%$%%%&'')**)**())'))&((#$$#$$ &&&$$$!!!"## ! $%$&&&#$#"##"##$%%%&%'''())%&&#$$((()**!!!%&&&''%&&'((&'''('&''#$$%&%"""!"!"#"""! ""!%%$(((%&% !!''')**%&&%&&)***++$%%())**)+****)((('''&&&((('''$%$###%&&(((((('(''(('(('''""!%%$&'&$$$%&%$##('&+**)**()(++++,,'''+++***,,+0/-=8240+D>7C=6@:3?82@:31-(@:3C=6C>7B<6D?8B=782-=713.):4-60*0+&# %"%"&# !" '&%'''--,(((&&%'&&/.-310**),--111343000--,332...)))-.---, " %#" )(%86464142//.,431420875985=;8<:8-+**)(10.21010..-+?<8EB=GD@GC@HDAHD@ID@GC?IEALHCNKFROKXUQYVRYUQYVQYUQWTNWTNWTNYVQXVPTQJSOHURKXUNYVO\YR\YS][T_]Wb`Za_Yb^Yd_[fb^hd`gb^d_Za[W]WS^YT_ZV`[W`[V_ZU`ZV_[Va\Y_[X\YVZVSXSPVQMUPKTPKXSN\VQYTPVQLA4/.3%7*";.%>2(@4+B6,D8.E9/F:0F:1G;1G;2H<2H<2H=3I=3I=4I>4J?4K?5K>4K>4K?5L?5L?5M@6MA6NA7NA7NA7OC8OC9PC9PC9OB8PC9PD9PC9QD9QD:QD9QD9RF;SGVI>WJ>XJ>XJ?XJ?YI?YI>ZJ@ZKA[KA\MB]NC]ND]NC]NC\MC[LAXI?TF4M?5N>54)"-#.$0&2' 3)"5+#7,$9.&<0(>2*A5,C7-F90I<2L?5OA6QB8RD9TE:UF;VH=WH=YJ?ZL@\NB^PD_PE_PE_PE`PFaSIaSI_QH\OFWJCMA:>::.2636:FHOST\ST[PPWLKPMMRPPVQQWLLQOPWSU]QSZTW`eaeue_s^Tu`Vv`VwaWxcXycYycYzdYzdZzdZzdZzcZycZzd[ydZycZxbZwbZvaYt`Ws_Vq^Uo[RlYPkXOjWNhULgULfTKfTJeSIdSIcRHbQGaQGaPF`PF_PF^PE\NDXJAVKDUQP?@BDFKNOWKLRDEIDEIBBEDDHFFJEEIDDGEDHEDHBACDCFGGLKLPOPVTV]TV^UW_WZcUW`OPXQT\Y\ffisvx\]PXZM\[R]YT]YT`\Wb]Ya\Xd`\a\Y\VRXSNYTOZUOXRM]XSa\WYTORMGTOJ]XSe`\d`\c^Zb]Y^YU[VQ^YT^YUb]X`ZU[VQZUPa[Whc`mifnjglhee`]d_[fa]b\X]WRLFA,"#(*!+"-$.%0& 1(!3*#5,$7-&8.':0(;1)=2*>3+?4,@5-A6.B7.C7/C8/D80D90E:1F;1G<2G<2H=2H=3I=3I>3I>4J>4J>4J>4J?4K?4K?5L@5LA6LA6MB7MB7MB7MB8MC8MC8MC8MC8MB7MA7MA7LA6L@6K@5K?4L?4N@4RC6YH9cP@mYHo\Oj\SobZzsazbSeQEG<5pe_jZQ^L>WE8ZG8P?3(!2'/&/*'WROb][^YWb`aTRTLIJJGFQMLXSRYUUPMMPMLA952')"& &"%#$(!$$#"$$#$#"#""')+(*,-04-/3+-1+-1)+.#$&!##'!-+-048/26/26-/3)+.-/326<5:@6:@37<038/27049/38/38.27,04+.2(+.')-$&*%'+#%)"$'$&)&(,-/4+-/(((''&&'&''&(('++)++*))(()(+,++,++,+*+*+,+*+**+**,+-.--.,))(#$!!"%%"++*+,++,+,-+./../.,-,*+**+*,,+++*++***)''&%%$(('..-..-,-+,-,,,++,+)*))*)++*--+00//0/./-&&%!"!##"  """&'&(('))())('(&--+00/,-,()(&'&&'&%&%%&%%&%'''()()**210GC@KGDNJGRNKNJFOKHMIFMIFHD@C?EB>IFBKHDKHCHD@EA=HD@IEBIEBJFCOLIQNKSOLQNKGDAFDAGDBEB?EB@FC@EC?FC@GC?FC>DA<>;7<85962=95<95=95>96?;8@<9EB?FC@D@=>;740-0,)3/,74163/40,51-41-62.62.73/951<84=:6>;6=95961<:5?=8?=9><8><8CB=CA=@>:@>9A@;@?:>=8:83;94;9597475164121-/.+/-*20-42/(((#$$$%%%%%%%%'''+,,+--)**()*%&&"""#$$ $%$$$$"""$$$"## !!$$$'''%%$$##$$$$%$#$#'''*++())$%%&'')**$$$$$$%&%$$$%''&''&''&''$%%%&%!""!!!"""#$#  " %#")('%%$ ! ''')**'((%&%'(''''%&&)*))))'''''&(((((('''''''''%&&"##$%%((((('((('((()((('""" $$#%%%$%$'''$$#'&%'&&$$$%%%+++,--$%%'''(((+++1/.=7173-C=6B<5?92>81?81/+'@:4C=6A<5A;5D>7B<683-<602-(;4.5/).*%%"$!&#  "! ('&(('./.++*(('&&&+++000)*),,,111454221..-333000)))---..." ! '%#6416425310.,32031/753;:7A?<@>;/.,*)(0/-20/10.-,*>;7DAFC?GC?HD@KGCKGCOKGSOKTQMVRNVSOVSOWSOYUPVRMTPJURLVRLVRLVSLTPISOHVRJYUN[XR^\V\YSZXQYWPYVO\XR`[Vfa]jeakgchd`d`\a]Ya[Wb]Xc^Ze`\fa]ea]a\X`[W^ZWZVRXTP[VR]XT]XT[VRYUP\WR^YT\VQ\WRULG00"4' 8,#;0'>3*@5+B6-D8/E:0E:0F:1G;1G;2H<2H<3H=3I=4I=4J>4J?5K?5K>4K>4K?5L?5L@6M@6MA6NA7NA7OB8OC9OC9OC8OB8OB8PC9PD9QD:QD:QC9QD9RF;SGUI>VI>WI>WI>XJ?XJ?XI?XI>YI?ZJ@ZKA[LA\MC]ND]NC\MB[LB[LBXI?TF5<0(,".$/%1' 3)!5*#7,$9.&;/'=1)?3*A5,C7.F90I<2K>4M@5OB7QC9SE:TF;UF;VH=XI>YK@[MB]OC]NC^ND^OD_PF_QG^QG[NEWJCK@9889-04583+?4,@5-A6-B7.B7.C8/D8/D90E:1F;1G;2G<2H<2H=3I=3I=3I=4J>4J>4J>4J>4K?5K@5L@6LA6LB7LB7MB7MB7MB7MB7MB8MB7MB7MA7LA6L@6K@5K?5K?4L?4OA5SC6ZI:bO@hUEk]Spe^shbtv`Pr[McOCB93pgaeWNSA5I9.P?2F7+' +",#.*'[WV\XVSOOUTULKMDBDGDDB>>FBASPQKHHDBB@;91((!$%""$$%#"!###$$$$$$)+.,.1038/26,/2*,/&') !!$ %)$ .04.16/38038/16.1515:48>7;B37=26;26;26;15:039.27+.3*-1*-1(*.$%)"#&!#&$&).05-/2)*+%&%'(&))(()''(')*(+,***))))++*./.,-,-.-,-,+,+*++)***++--,//.+,*$$" "" ++)//.00//0.//./0/,--*,+**)**)**)**)++*++*()(()'-.-/0/./../...-+++**)+,*//-00.110/0...-%%$ ###!!! !"!$%$%%$'(&''%"" ''%,,+*+*(('%&$%%$%&$$%$%&%&'&'('(((..,DA=HEAOKGPLHOKHOLHPMJNJGKHDGC@D@=B?;D@JFAOKFRMHUPKWRNVQLVQLXTOUQLWRMZUQYUPVRNUPLTPKUPLRNIMIDNIDOJEOJEQLHSNJUPLWSNUPLTOKTOKSNJRMJPKGTOLSNKPKHPLHRNJTOKTPLTPLUQMQLHPKGPKGMHCOJFQLHPKGRMIRNJSNJRMHSNJTOLQMJQLISNKSOLRNKRNKOJGNIFNIEMHDMHDNHENIFOJFSNKTOLQLHOKGJEBIDAIEAGC@E@=A<9;73,)&&#./.*++')(%&%$%$$%$%&%%&%$&%%'&'(''('&'&$%$$%$#$#!"! ! !! ##"$%$!"!   ! ! ! !!!$$#%&%$%$#$##$#$$###" %&%(++(+*'(''((&((%&'%''(**)++)++(++)+++,--//.//+-,)++(**(**+,,-/..00/10011/11./.+-,,.-.0/,.-+,,,,,,,,+,,*++)**())(*)()('(('('&'&&'&&'&&'&%&&%&%#$$#$$$&&%&&%&&#$$!"" !#""$$%&&)**OLHNKGOKHOLHNJFLGCKFBJFBMIFQMJQMJOKGPLISOMTQOLIGC@=A>;A=:B?;GD@LIENKHMIFHEAFC?FB>D@:@<8@=9=:6<8495151.51.8418418513/,0-)0,)30,51-73/;84=95>;6>;7>;7=:6<95;8385153-52-:83?=9@?:@>:?>9B@DA=?=9A@9?=8<:6:8453/20,20,1/,1.+31.42/(('#$$%&&&''&''((()***++)**())$%%!""#$$ ###&''###!!!%%$"#" %&%)))%%$"""#$#$$$"""&&&)**'((#$$&'&***&&&#$$"## !!!""$$$&&&&&&$%%$%%""""#"####$#  ! ##"&&%""! !"!())()))))&''&&&%&&()(+,+*++$$$#$#'((()((('&&%''''''#$$$%$(((((')))&''((((('###!!!$$$&''###&'&#$#&%%%%$!!!#$$+++-..%&&$$$%&%)*).-+=7172-A;4A;4?92=70=71/+'A;4C>6A;5A;4@;4?9393.;5//+&93,4.).)%&##!%"!" $#"*(('('./.,,+(('%%$*+*---(((+,,121344010+++...,,-&&&***//.  !   21/6427520/,10.10.542:97A?<@?<21/+*)0/-21/21/-,+;95C@GD@IEALHDNKFPLHTQMXTQWSPURNWSOXUQYTPWSNUQLVRLXTNYUPXTNVRKVQJVRKWSL[WQ\YSYWQXUOYVO\YR^[T_[U_ZUc^Zfa]gb_iead_\\XT\VR^YUe`\hc_id`jfbgb_c_[b]Z]YTYTOZUQ]XT`[W^ZW]XT]XT^YT_ZVb]Xd]YA3.-2%5*"9.%<1(>3*@5,B7.D9/D90E:0F:1G;2G;2H<3H=3I=4I>4I=4J>4K?5K?5K>4K?5L?6L@6M@6M@6M@6NA7NB7OB8OC8OC8OB8OB7PC8PD9QD:QD:QE:QE:RF;SF;SG;SG;SF;SG;TGXI>XJ?XI>YI?YJ?YK@ZKA[LB\MC\MC\LBZKAZJ@XI?UF4*@5,C7.E9/H;1J=3M@5OA7PC8QC9RD9TE;UG9136-1479>KMTPQWOOUNOUKKQKKPLLQOOUOOULLROPVTU]TV_SU^SV_jfkufar]Rt_Uu`UvaVwaWwbWxbXxcXxcYxbXxbXxbYxbYwbYwbYvaYu`Xs_Vr^Up]Tn[RlYPjWNiVMgULgUKfTJdSIdSIbQHaPF`OE_OE^OE]ND\NDYKBTG>ZPKTQQ@BFFHNIKQGINGHMHINEFJBBFAAEDEIEEJEFKDDHEFJCCGBBEDDGHHMKLRPRZSU]UX`WYbY\eRU]NPWRU]ehsz|de`WXMQQHRNHXTNWSMRMHWQL]XS_YUb]Xa[W^XS`[Va\Wb]X^YT\VQ\WQ]WR\WRYTNZUPYTPUQMSNJVQLZTP\VQZTP^YTd`\fb^fa^d_\b^Z^ZV]XTa]Y^YUa[Wc^Zd_[c^YZUPRLG<40%%) +",#-$/&0'!2)"4*#6,%7.&9/':0(<2*=3*>4+?5,@6-A6.B7.C8/D8/E90E:1F:1G;2G<2H<3H=3I=3I=3I>4J>4J>4J>4J?4K?5K@5LA6LA6LA7LB7MB7MB7MB7LB7MA7MA7LA6LA6K@5K@5K?4K?4L?4OA5SD7YH:_M>l]Rxmhh_Y`TNvr{{eUePBkUGZG;=50qje]QKD5*=0&H8,@2''%,#'"MIIOLLMJJJIJ??B:9:<::-**732GDDECC<;<744+%%$$#!$%##!##$&&&)+-,/2-0415:048,/2)+.%') !! "$,))-04/2726;26;03725:49>9>D7:HEAJFBFB>GD@KHEMIFIFBIEBIEBGD@EA>HDAOLIQMJSOLPLIQNJQNKOKHOLIQNKPMJNKHNKHMIFGC?IE@MIDPKFQLGTOJUPKVQMXTOVRMUPLTOKSNJSOKTOKVRNUPLQLHLGCNHDOJFSNISNIVQLWRNXSNSNITNJUPLSMIQLIMHDRNJQMJNJFPKGPKGPKHOJFPKGSNJPKGOJFMHCID?LGBOJFQLGRMIQLGPKGPKGSNJTOKSNKPLHPKHRMJSOLQMJKGCIDALGDMHDLGBOJFOJGPLIQMIPKHPKHNJFKGDIEBHDAGC?FB?B>:;73.+'$"./-)+*())'((&'&%&%%&%%&%$%%%&%&'&&'&&('&''&'&%&&$$$"#"##"#$"$$#"#" "!  ! !! !!!"!"#"#$##$###"$$###"""! #$#(**)+*)*)')))**(**(*+*+++-,+--*--,--.//.//./.,--)++)**)+*+--,...0/021011021.00,.--/..0/,--*++*++---,-,)++)**())'(('('&''%&&%&%%%%$%$$&%$&%$%$####$$%&&&(''((%''"$$ !! !!!#"$&%&((),,PMJKHEGDBLHEPLHOJEOJEQMIQMJKGDHD@GC?FB?JFDNKIKHE@=:>:7>:6@<8C?;HDAMJGNKHMJGLHDIFBFC?EB>?<8<8484195195173/51-51-3/+51-63/:74:74962951<95><8=:7?<7?<7?<9>;785163.41,53.65/:93:94=;7@?;@?;A?;A?;@>;><8A?:BA<><9:849738738635300.+-+(.,(20-64120.&&%$$$&''$%%%%%&&&%&&&&&&''%&&#$$ ##$ ""!)))%%%###""" %&&***%&&"##$$$%%%"""#$#())())"##$%%)*)%%$###"#""""%%%%&&#$$#$$"##"#""#"""! !"!$%$'''##"!!!!!!###%%%())&''&''()())))*)*++'&&%%$$%%&'''''$$####### $%$())'('(((&''%&&&&&$%%""!!"!$$$!"!&'&$%%''&'&%! ###*+*,--&''"""%%%)*)/,*>8283.B<5@:4>92<60<6/+($B<5C=6A<5@:4=82=82:4.:4.-)%82,3.).*%%""%# " ! #!!" #"!(&%'''./.---)))%%$***())(((...344333...))(**)))($$$()(..- 0/.542642.-+/.-0/-543986@@=?>;31/+*(20.652431/.,751<:5=:6DA=FC?KHDOKGQMITPMVSPSPLPLHRNJVSORNJQMHSOJVSNXTOWTNXTNWSLXTN[WP\XR^ZU^[VXUOXUO[XQ\YR]ZS_[V_[W[VSXSO[VR_[W_ZV`[Vc^Zc^Zhc`jfbea^c^[b^[c_\d`\e`]b^Za\X_ZV^ZVa\Yb^Zb]Y`[V`[W_ZW`[WPGC,0#3(!7,$:0'=2)?4+A6-C8/D9/E90E:1F;1G;2G<3H=3H=4I>4I=4J>4K?5K?5K?5L@6L@6L@6M@6M@6M@6M@6NA7OB8OC8OB8OB7OA7OB8PC9QD:QE:QE:RF;RF;RF;SG;SF;SF;SGWH>WH=WH>XI>XI?XI?YJ?YJ@YJ@ZKA[LB[LB\LBZKAYJ@XI?UF=RD:N@7I=3F:1G:1G901'!-$.%0& 2(!3*"5+$7,%9.&:/'<1(=2)?4+@6,C7.E90H<2J>4L@5MA6NA6PB7QC9RD9TF;VH=WJ>XI?YK@YLAZLB[NDZMDXKBRF>C>=-04.149;@IKQKLRKLQMMSKKQJJOJJONNTOOVNNTNOUSU]UW`QS[QSZQT]hejsd^r^Ss^Tt_Uu`UvaVvaVwaWwaWwaWwaWvaWvaXvaXuaXt`Ws_Wr^Vq]Uo\Sm[RkXPiWNhVLgUKfTJeSIdRIcRHaQG`OF_OE^NE]ND\MCYKBUH?THAUPN@AC@BGJLSHIOEEJIJOGHMDEIABE?@CBCGEFKFGLEFKEFKDEIBAECCFEFJHIOLNTRT[TW_UX`VYcSV^MOVOQY[_hsvhigTVIQPGRNHUPKTPJQLFVQK[VQ\WS_ZV`[V`[V_ZV\WR[VQ\VR^YTa\Wd^Zb]Y]XS[VRZUPWQLXRM[UQ^XT]XT\WR\WS\WSb^Zd`\`[X^ZV^ZV\WS`[W^XT\VRb\Xb]Y^YTXRMXRLYSNIB=*#(*!,#-$/&0' 1(!3*#5+$7-&8/':0(;1)=3*>4+?5,@5-A6-B7.C8/D8/D90E:1F;1G;2G<2H<3H=3I=3I=4I>4J>4J>4J?4J?5K@5K@6LA6LA6LA6LA6LA6LA6LA6LA7LA6LA6L@6K@5K?5J?4K?4L?4OA5SD7XH:]L>l`Xja\VNIkb_}vs~vriUF[H:`L?TB770,rkh]TP=.$:-$B3)=/%'")!&!B??MKKGFG@@C89<,,/++,$##*'%2//767113''(&"#% $"!#$$#$&'('(),.1-/303825:36<.15)+/(*-%&( !"'!-,/,/314948=59>7C?;D@;EA?EB??<9>:8@<8B>:?;7>96?;7D@=MJGLIFIFDIFCGDAD@=D@<@=9>;6A>:A>9?<7>;6;84740840=96A>:@=9>;7<95;85862751752753.-+751=;697176054.760871<;6><8><8;95973;94;94?=8@?:=;787297386331./.+,*'-+(.+)31.75231/$%%"##%&&"""$$$%%%"##"##$$%#$$"## "##!""$#"!!!'('%$$$$$###$%%+++'''######%%%%&&"""&'''(("###$#())%%%"##!""  !!%&&'((#$$##$!!! ! $$#$$#"""#$#$%$$$$#$$  !!! !!######$%$&''$%%&''*++())&''((('&&''&###&''()(%&%"""#$$#$$'('&&&&'&$%%#$#%&%%&%""! !!! %&%&&&((''&% !""(((+,+)*)$$$'''*++2/,@93;60C=6?:3?93<6/<6/,)%C=6B=6A;4?:4>93>93;5/72--)$72+2-(,'## !$" #"!%#"(&%$#")'&%#"%#"('&&&&+,+-.-+++''&++*&&&())/00343343000**)******''&**)00.#! 0/-431530-+)-,+/.,654986A@>>=:420)('0/-753753210752<:5<:6DB>FD@LIFROKSPLSPLRNJPLHOKGQMISOKPKFMHCQMGSOITQKTQKUQKXTM[WQ]ZT\XS[WR]YT_[U_\V_\V[YRZXQ[XR[WRUPLRLHWQL]WSa\Wd_Zgb^_[WZURZUQYUQ[VQ_ZVb^Za]Za]Zb^Zc_[e`\gb^e`]d`\b]Y]XTXSOSMISMIWPL5'"-1&5*#9.&;1)>3+@6-B7.C9/D90E:0F:1G;2G<3H=3H=3I=4I=4J>4J?5K?5K?5L@6L@6L@6MA6M@6M?6M@6M@7NB8NB7NB7NA7N@6OA7OC8PD:QE:QE:QF;RF;RG;SG;SF;SF;SGXI>XI?XI?XI?XI?XI?YJ@YK@ZKAZKAZKAYJ@XJ@UG>RD:NA7I<3D8/D8/F908,%,#.$/&1' 3)"4*#6,$8-&9/';0(<1)=2)?4+A6,C8.E:0H<2I=3J>3K>4M?5M@6NA6PB7RE:TGWJ?XK@YLBXKBUI@OD=888-03-03;=AGIOHIOIINLLRJKPJJOIJNMMSOPVOPVPQXRS[UW`QS[OQXPRZSV_dagqc]q]Rr^Tt_Tt`Uu`Uu`Uu`Vu`Vu`Vu`Vu`Vu`Wt`Ws`Wr^Vq^Uo\Sn[RmZQkXOiVMgULfTJeSIcRHbRHbQG`PF_OE^ND]ND\MCYKBVI?QD;UOKFFG:<@CEKIJQCDIEEJFGLFGKDEIABE>?B?@CCDIEFKEFJEFKEEJAAEBBECCGGHMIJPOQXQT\SU]UXaTV_NPWLNVUXaor}gihVWKTSJQMGOKEUQKRNHVQL[VQXSOWRMYTP\WS]XS[VQ\WR]WRa[V`[Va]Xc_[b^Z_[W^ZU\WR]XS^YT`[V^YU\WR]XTZUP_YU_ZW]XT^YU`[X`ZVb]Xd^Za\Wd_Z`[WZUPXRMXRM[VQ\WRMGC1)&"&) +"-$.%/& 1(!2)"4+#6-%8.&:0(;1)<2*>3+?4,@5,A6-B6.C7/C8/D90E:0F;1G;2G<2H<3H=3I=3I=4I>4J>4J>4J?5K?5K@5K@6LA6LA6LA6LA6LA6LA6L@6L@6K@6K@5K?5J?5J?4J>4L?4OA5RC7VF:XH;`UPc]Z]XVvomxrpwnkZG8TB5WE8SA62+'lfd[TP?0%5*!7,"7*!) "%% 988EEGDCE<;HEAHD@EB?DA>EB>HEBKHELIEKHEGD@EB>GD@LIFPMJLIEJFBLIEPLISPMTQOTQOSOLPMJNKHQMJPLHRNISOJRNJPLHSOJUPLXSOVRNXSOVQMTOKSOKRMITOKUPLVQMQLHNIEQLHRMIOJEPKGXSO\WS\WRYTOWQLUOJRLGOJFQLHQLIRMJQMJPKGOKGOJFRMIRMITOKSNJOJFMGCPKGQLHPKGRMIRMIQLHQLHPJFUPLWRNTPLRMJPLHNJFMIFLHELHDMHEKFCIDAFA=KEALGCLHDLGCKFBLGCMIEKGDEA>FB?FB?D@=@<9<853/,!,,*,.-*,+')(%'&%&&&''&('&'&&'&((('(()*))*)()(()('('$%%#$#"#"!"! !    !!!!""!"!!!! !   ! "#"+--+,,*,,(**(**(++*,,+--,..-//.00021232/0/./.*+*))))++)++)++*,,*,++-,,..-..-/.,--.//.0/-/.+-,*,+*,+*+*())'))())(*)')('((%'&&('&'''('&''(*))*)'((')(&('%'&%&&&((%&&$%%$%%%''&('())*++KGBIEAEA=HD@IE@KGBMIEOKHNKHIEBJFBKGDOLIJGDFB?FC@FCAC@>DA>C@<@<8=95>:6EA>LIFHECA>;EA>HEAJGCIFBDA=>;7@<8D@;EA=C@:;85:73:73@>:A?<<:8864653764432**) 984DB=A@:??8<;4982992972=<6BA=8>=9=<85411/,,*&-*'0-*52/63/0.,#$$"##%&'!!!#$$$$$!!!!"""""!""""# !! !!"""%$$"#"(((''' %%%$%%!""'((+,,())$$$"""###%%%"""%&&())'(("##%&&!!!!"""""!"! ! """())())$%%"## !! ###$$#%%%$$$$$$%%%### ###%%%"#" &&&''''((())'''''',--*,,()))**(''##" %&&***&&&!!!$%%!""%&&%&%%&&#$#!!!####$$!!!!"!###"##&'&%&&&&&#$# ! #$#()(,-,***%%%'('+,,40-@92=82C=6?93?:3<60;5/.+&C=6A<5?:3?93?93>93;6051+.*%71+1,')%!#   %%%,,,.//---(('*+*%%%())/00122344111)*)***)*)&'&)*)00/ # %#!)'%#! 0.,21/20.*)())'-,+543764?><=;941/)(&0/.652753420641><7?=9DA>GDANKGOMIOLHROKWSOWSOVRMRNIOKFOJEPKFQLFPLFNJDPMGTQJWSMYUOVSMPMHNJDPLF[VQa]X`]W`_Xb_Ya^Y\XTWRNVPLXSNXSO_ZUb]Xc^Z`[WZTOYRMYSOXRNYTP^YUa\Ye`]jeblhelhemhegc_a]Yb]Yb]Y]XSXRMUOIWRMG>:+/$3)!7-%:0(=3*?5,A6-B8/C90D90E:1F;2G<3H<3H=3I=4I>4J>4J>5K?5K?5L@6L@6L@6MA7MA7M@6M@6M@7NA7M@6N@6NA7NA6OB7OB8PC9QD:QD:QE:QF;RF;RG;SF;SF;SF;SG;SGWI>WI>WH>WH>WI?XI?XI?YJ@YJ@YJ@ZK@YJ@XJ@UH>RE;NA8I<3D8/B6-D7/=1),#-$/%0' 2("4*#5+$7,%8.&9/':/'<1(=3*?5+A6-C7.E9/F:0G;1H<2I=3J=3K>4L?5OB7QD9RF;SF?DEFLFGLGGLJKPJKPKKPJJOLLRPQWOPVPQXSU\UX`TV_RT[SU]TV^QS\cafufap\Rr]Ss_Ts_Ts^Ts^Ts^Tt_Ut_Ut_Us_Us^Ur_Vq]Tp\Sn[RmZQlYPjXOhVLfTKdRIcRHbPGaPF`OF^ND^ND\MC[LBYKAVI@QD?AFEFLEFK@AEABFBCGCDICDHAAE>?C=>BBCGCEJCDHEFKEFKBBGAADBBEDEIGINMOVORZPS[SV_SW`ORZLNVQT]koznptWYLZXPVRMMICOKEPKFSNIXSNUPKSNISNJVQM[VQ]XS`\X]YT[VQUPKXRM]XT`\X\XS[WSWSOVRMZUQa\Xc^Yb]Yb]Ya\Xa\X^YU]XS]YU_[Wc^Zc^Ze`[_ZV_ZU`[WZVQYTOYSOWRNXSOXSNSNJ81-$%(*",#.%/&0' 2)"3*#5,$7.&90(;1)<2)=3*>4+?5,@5-A6.B7.C8/D90E:0F;1G<2G<2H=3H=3I=3I=3I>4J>4J?4J?5K@5K@6K@6L@6LA6L@6L@6K@6K@6K@6K@6K@5J?5J?4J>4J>3L?4NA5RC7TE8YKAd]Z`[ZYUTqkijed~zzld`VB3L;/N=1M<1*$ c_]ZUT;.%*"2(3( ( $"#224??B;7;A5:?37=149-/3(*-&(+&(+$&(%'*,/3&'*     !%.+,,.2,/4,.3/2737<48>48>26;14:/38,.3-05.27/3826<59?349/00-.-+,+)+**,+,--,--,-,))(&'&'''(('()'**(,-+-.,++*++*)*))*),-,..-00/121564::877511/))'((%-,*22033244244223100/-.-././0/./.-.-./../../-*+*)*)*+)+,+./--.-,-,*+*+,+)*)''&,,+01000/..-$$#   !"!"#"  !"#"#$#$%%%&%&'&%&%$%$%%%%&%;97EA>C?;>;7=:6?<8EA>GD@JGDLHEIEBEA=JGCPMJOLIJGCIEALHDMIENJGQNKSPMTQNURPTQOSPMQMIRNJQMHQLHSOKSOJTPKVRNUQMVRNWSOTPLTOLUQMTPLTOKUPLTOKQLHSNJQLHPKFSMHUOKZTPYTPXSNUOJSMHVPKSMISNJUPMRNKOJFNHDRMIQLHQLHSNJTOJSNJQLHPKGRMIRMIOJFRLHSNIPKGPKGQKGUOKTNJQLHMHEJEBJEBLHDMIFLHEMIENIFMIFLGCOJFNIELGCKFBKFBKFBLGDJFCD?:6=96730! ,+(+-,+,,)**'('()()*)(*)'((&'''(''(()))())(((()(()(%&&%&&$%%"##!"! !! !! ! !!!"! !   $%$-..+,,+,,*++)++'**)+++,-+--,.-.//010010./.+,+())&((()))***+,,..*,,+-,+-,+,,+-,,---..-/..0/,.-,--,.-+-,),+)++)**(*))**())'(((*))*)()))***,++-,*++(*)')(&((%''%''%&&$$$$%$&('()()***,+IE@ID?IE@GC>C?;EA=FC?HEBJFDHDAJGDIFDMKHKHFKGDMJGOLIJFCHEAFC?D@=A>:@=9IGCKHFC@>;85=95C?;EB>EB>DA>@<9=95=95>:7?<8<:7863531321543654664664221++* 751@>8?>7?>8?>7==6>=6=<6>=8CA:?<8B?;EB>MJFPMHOLGQNJVSOXUQWSOSOJQMHPLGQMHRNHRMGQMFSOHYUO]YSZVQRNHLHBMIBOKESOI\YSa_Ya_Y\ZT^[Vb^Ya]Y]YTYTPWRMZUQXTOXSO_ZVb\W`ZU\WRZTO[UQ_ZVf`]hc`kgdlhfiebhdaea^b]Ye`\gb^d_[a\W]WRYTOWQL5(#- 1'5+#8/&;2)>4+@5,A7.C9/D90E:1F;2G;2G<3H=3I=4I=4J>4J?5K?5K?5K@6L@6LA6LA7MA7MA7M@6M@6NA7M@6NA6NB7NB7OB8OB8OC8PC8PC8PD9QE:RF;RF;RF;RE;RE:SE;SF;SGWH>WI>XI?XJ?YJ?YI?YJ?WI?UH=RE;NA8J=4E90B6-B6-B6-0'!-%/%0' 2(!3)"4*#6,$7-%8.&:/';0(<2)=3*>4+@5,B6-C7.D8/E90F:1H;2I<2J=3L@5NB7PD9QD9RD:SG=TH>SG>PE?C=>A?AEACGABGCDIDEJCDH@ADABEBCGEFKKMSOQXPRZRU]RU^ORZKMUPR[dgqvyZ[QZYQXTORNHRMGSNIPKFRLHSNJTOJUPKVQM[VRYUPXTO[VQ^XS\WR`ZUb]Xe`]`[W[VRVQLUOJWRMZUPYTP^YUa\Ye`]c_[d_[d_Z_[W`ZVfa\gb^e`[\VQXRN\XS\WRZUPVQMSNIVQLWRNSNJKHB;6/'$')!,#-$.%0' 1(!3*#5+$7-%9/':0(<2)=2*>3+?4,@5-A6-B7.C8/D90E:0F;1G<2G<2H<3H=3I=3I=4I>4J>4J?5J?5K@5K@6K@6K@6K@6K@6K@6K@6K@6K@6K?5J?5J>4I>3J>3L?4N@5PB6SD7`VO^YWMIHMHGfa^^ZZ~|gde_WUJ8+=0&F7,F6,!QMLROP5+%%,$,#""""../9;>459037026-/2%%'  !#$&#$%" #$#!!"$%'%$-.125:6:?7149037.15*,/*-0*-0(+.&(+'*-(*- "!   #*$",*,%'*)+/04937<25:-/4,/3.16,.3(*.*.2-166:A47=./2---,-,...-..)+*)*)*,+*+++,+(*)%'&&&&'('((())(++*,-,,,,,,+*+*)*(++*..-11022145399789766422011/342443332231442332221010120232010,.-*,++,*,,++,+,,+--,--,01///./0/-.-,-,+,+))(,-,01000///.#$" ""!  ! "#"$%$$%%%&%%&%$%$$%$%&%;97HDAFB=A=9A=9D@=IEBJFCMJGOLHPMILHDOKGTQNURORNKQNJQNJMJFMJFOKHTQNXVSYVTWURUQORNJSOJPLHPLHPLHQLHPKGPKGPLHRNJQMHMIDPLHRMIRMHRMIUPKVQLSNIUPKSNIPKFNHCQKFVQLUPKVQLVPKUPKXSOXSOXSOWSPUPMRMJPKFTOLSMJOKGPKHRMIRMHPKGOJFPKFOJFPKFPKFQLGPKFNIEPKGTOKSMINIEIC?HC?MHDQLIQMJQMJPLINIFLGDPKHPKHPKHPKHPKHKFCHC?KFCJFCD?<@<8@<8=95:62:62730#  +)&+-,*,+)**()(()))*)()('('%&&%'&'''(('(((''&'(')*)&''%&&%&%"#" ! ! !"! !     !     !  ##",--+,,+,,*,+*,+&((&))(**)+++,,,-,---..--.-*++')(%''%''&((*++-..*,+)++)++*+++-,-/..0/.00/1/.0/-..-.--/.,.-+-,*,+*++)++(*)')()+**++*+++,,,--+-,)++'))'))'))'((&('%&&#$$#$#%&%()(*+**++HD?HD?FB>EA=@<8?:6@<8EA>HDBD@:C?>7==6=<6<;5;94=;6@>:@?:@?:?>:=;7:8475142.1/,1/,0/,20.20./,*.+(,)&'&$"##"""%&&%&&$%%$$$ !!$$$!!!  ! ###!""$$$'('!""'((---&&&"""%&% %&&(((&''#$$###"#"""""""###&''*++&''!""!!!#$####"##!""%&&#$$"##### !!##"$%$()((((&&%#$#!!!"""$$$%%%""!"##((()*)+,+*+*()('(')***++'((&''&&% #$$%&&!""!!!"""!!!#$$&&&'''$%% !! ! $%$""!!!!###''')))))))*)$%$$$$#$#'(''''(('))((('())840<71<71A<5<71?93>8193--)%@:4?93?93=71<71;60:5/1-(.*%4/)-(#&""   "##*++000...***,,,(((()(,,,...454343**)**)))(''&+,+110!! $! $! 730974975.-++*)/.-432310:86;96530*)'//-64252/1.+42/>;7><7C@4+A6-B8/C90E:0E:1F;2G<2H<3I=4I=4I>4J?5J?5K?5K@6LA6LA6MA7MA7MA6M@6M@7NA7NB7NB7NC8NC8OC8OC8OC8OB8OB8PC8QD9RE:RF;RE:RE:RD:RD:SF;SFXI>XI?XH>XI?WI?VH>SE;OB8K?5F:2B6.A5-C7.7-%,$.%/& 1'!2("4*#5+$6,%8.&9/':/':0(;1(<2)>3*?4+A5,B6-C7.D9/F:0G;1H;2J>4L@6MA7NB7PC9QF;RFBBCGDEIGHMHJOIJOJKPIJOOPVOQWMNTRT[X[eWZcQSZSU]TV_RU^MOWPS\e`eo^Vn[Pp\Qq]Rp\Rp[Qq\Rq\Rq\Rp\Rp\Sp]To\SmZRkYPjWNhVMgULeTKdRIbPG`OE_ND^ND]ND\MCZKAWI?UG>PC:SHATOM::;235;<@?@D>?C?@C=>A:;><<@?@DABF@AE>?C<>A=>B@BF@AF@BF@BG@AE>?C@ADABFDEIJLRMOVORYRV^RV_QT]LNVMPX]`j}ab]UTKVSMUQKTPJSNIMHCOJESNIWRMXSOWRNYTPWSNTOJXSN^YT_ZUa\Wa\Wea]b]Y`[V^XT_YU_YU[WRVQMZUQ_ZWfa^gc_hd`jebkfcid`gb^fa]c]Y]WRZTO[UQ[VQ[VQVQLTOIWRMWSORNJOKELKACA6.' #&) +",#.%/& 1(!2)"4+$6-%8.&:0(;1)<2*=3+?4+@5,A6-B7.C8/D90E:0F;1G;2G<2H<3H=3H=3I=4I>4J>4J?5K?5K?5K@5K@6K@6K@6K@6K@6K@6K@5J?5J?4I>4I=3J>3K?3M@4OA5SE9YPJF?;842B=:UPNSPQ|usRRTRMK@1%+#>0'@1(#KGEYVW4.+"' % ##"(()35935958=376:@6:?25:15:049,/3+.2),0&(+&(+&(+'*-%') "! !",''*),*-2049/27.15'(+&'))*.(+.%'*+-2<>F8:A!!!## +,+*+*,,,-..+++)*))*)()(()(()(%&%%&%&'&&'&&&&()(*+++++++*+++**)*+*,-,//.010442775775665553342453564342120231454332232232343132./.+,,+,++,++,+-.-00///.//.00.01//0.-.-,-,,,+----.-//.-.,##"  ! ##"##"!"!!"!$%$$%$%&%&'&%&&%&%$%%&'':96NJFUQLOKFKGCLIEOKHMIENJGPMIRNJSOKVROVSPTPMRNKSPMQMIKGCKGDPMIURPSPNUROSPMSPMSPLSOKPLHQMHMJEOKFQMINIEMIEOKGPLHMHDNIEOJFSNITOJVQLXSNTOJSNIRMHRMHRLGUOJWQLUPKSMHUOIWQLWQMYTPYTQXSPXSPZURXTPWROSNKQMIRMIRMIPKGPJFPJFRLHQLGSNJSNJQLGRMHRLHOJFPKGPKGNHDLFBLGBQKHSOLQMJRNLRNLNIFLGDNIELGDLGDOJGRMJMHEHC?JEBJFCGB?A=9@<8@<8>95<84952%" *(%-.-+,,)**()()*))*)(*)'('%'&%&&&'&&&%%&%$%$%%%%&%$%%$%$#$$!!!! !   ""!##" ##"*,+*,,*+,)**(**&((%((&)((***,,-..///..-,-,*+*&('%&&%&&&'()+*,.-,..+--+,,*+++-,.0/021021132021/00/00/10/10,.-*+**++)++())'(()+**+++,,,--,.-,..+,,)++)++(*)&(''('%'&#%$"###$$'(')**)++D@HEBC@=DA>HEBHDAJFCHEBEA>C@=>;7:73;86:86764553543542331442220+*)""!%%#10-:84?>8??9@?9@@:@@9==6>>7;<5992881:92872861:94=<8?>9A@9=<7:847621/,0-*.,)0.,0.+1/,/-*+)&''&#$$###%&&%%%$$$##$ !!#$$!!! !!"""#$$"##%&&)*)!!!&&&---''' !!#$$!!!$%%%&&&&&"""""!######"""$%%'''*++*++"## """!""!!!"##&'&%&&#$%$%%### """##"(''''&%%%!"!!! ##"### !""'(')*)+,,())&&&%%%&''())&''%%%####$$%&% !""%%%$%$###$%%((((((#$#"##%&%$$$#####"%&%&'&(((**)%%$###"""'((&'&'('(('(('())950<71;60?93=71>92>7171*+'$?:3?93?93=82<71;60;5/3.),($2-'*&!%""  #$#***/00.//*+*--,)))))(*+*,--333454--,*+*))))*)+,+//. !!%"!%#"" 40-:74853/-+-,+0/-43221/:97;97642*)',+)32/41//,*1/,851:83B?:DA=GD>D@;EA4J?5J?5K?5K@6LA6LA6MA7MA7MA6MA7MA7NB8NB8NC8NC9OC8OC8OC9OD9PD9PD9PD9QE:QE:RE:RD:RD:RD:RE:SF;SFVH=WH=WH>XH>WH>WI>WI>VH=SE;OB8L?6G;3C8/B6.C7.@4+.%.%/%1' 2("3)#5+#6,%7-%7-%8-&8.&9/':0(<1)=2*>3+@4,A5,B7-D8/E9/F:1H<2J>4K?5LA6NC8OD:OD:MB9GA=468,.1.13=?D?AF:;>AAECCGEFJGHMHINJKPHINMOTOPVLMROPVUX`VYbQS[PRYUXaTW`MOVLNURU^oikn\SmZOo[Qo[Qo[Qo[Qo[Qo[Qo[Qo[Qo\Sn[RlYQjWNhVMgTLeSJcRIbPG`OE^ND]MC]MC[MCZKAWI?TG=PC9K?7TNLA@A34789<;:;>=>A>@D>?C=>B<>A;<@?AE?AF?AE?AE?@D=>B>?B?@CABFEGLJLSMPWRU^SW`SW`NPXKNUX[ez|ijjQPFUQLSOJRMHMHCGB=ID@NIETOKVQMTOKTOKUPLQLGOJETPKUQL\WR_ZV`\X[WS_ZV_ZV`[Wc^Z`\X\WS\XT_ZV^YVa]Zhc`kgdlgejfcgb_c^Zb\X]XS\WR\WSYUP\WR^YTXSNXSNXSOWROTRLPPFNNBLKA83,$&( *!,#-$/&0' 2)"4*#6,%7-&9/':0(<1)=2*>3+?5,A6-B7.C8/D9/E:0F;1F;2G<2G<2H<3H=3I>4I>4J>4J?5J?5K?5K?5K?6K@6K@6K@6K@6K@5J?5I>4I>3I=3I=3K>3L?3M?3TH>NFA;51-*)942A=59>26;-04*-0')-%'*&(+$&)%'*%'*"#!#0+,003*-2*-1(*.""$"#%&(+'*--/4>@H>@F$&&$$",-,,-,./.-.----*+*)))'('&&&&''%&&&'&'('&''%&%&''())()(())*,+*,++,+-.-//../.221787887886886786564554443221231443343231121121121/0/,.-,-,,-,+,*+,+//.00/./.-.,./--.-+++)*))*)+,+./.221..-!!   ! !"!!"!  ##"#$##$##$#&'&&'&'''()(()(())()('((:97OKGVRNQMHLGCOLHQMJOKGPMIQMIPMITPMWSOVSOSOKROKSOLRNJKGDLHERNLVSPROLQNKOLHMJFMJENJFLHDMIEMIDOJFSNJRNJOJFOJFQLHQLHOKFMHDQLHQLGSMHUPKVQLWQLVPKVPKXRMVPKSMHTNIRLFRLFVPKWQLYTPXSOVQMYUQ\XT[VSWRORMJPKGQLHOJFLGBNHCOIETOJUPLWQMXSNVPLTNJSMIRMIRMHQKGPKFQKGRMIUPLSOLNJFNJFOKHKFCMHEPKHMHEIEAKFCNIFJEBD?;GB>NIFIDAE@EA=B=:<85(&" )($,.-+,,*,+)+*)**())(*)')(&''%&&%&%%&%$%$###$%$#$#"#""#"##" !   "#!#$" ())()*(**'))'))&((&(('))(***,,,---.-,-,*+*)+**+*(*)&((&((),+,--,..-..,--,.-/0/122133133132/10/00/11010021.0/+-,*,+*++(**(*))**)+*+,++-,+,,,---..,..+--)++&((%''$&&#%$"###$#%&%')()**KGCMIFLIFMJGMJGLJGJHEGDAFC@JFCHEAKHENKHKHDGC@KHEMJGLIFIFCHEBEB@C@=A>;C@=CA>DB?FDAEB??<9=:7;86654654553543443321332321-,+""!*)'/.+0/,**($$$/.+992==6;<5;<5::3;<4<=6<=5::3:93982;94><7@>:=<8<;8<;8?>:=<8;9531.20-0.+0.,.,)2/,20,,*'%%$ !!""!$$$###"###$$ !!! #$$#$$%&&*+*"""%%%+++&'&!!! !! "##%%%!"" ######"###$$()))*) !! !  !!%%%%&&$%%%&&%%%"#"##"!!!&&%&&&%%% !! !!!!!!''&()(*++'((%&&#$$#$$$%%%&'%&&####$$$%%!!!%&&%&&"##&''%&&&'&((($$$ !!"""#$##$#"""######&&%(('##" !!((('('&'&''&''')**:61;60<71=71=82=71=606/)-)%>92=82>93<72<71:5/:5//+&,($0+&($#!$"!$#"%$#)('&&&*++000010,,+-.-++*)))(((+,+222455110+,+()(,-,--,./. !%"!$"! 3/-:6431/,+)/-,10.32121/<;9><:975,*),+)31/30..+(0/+972?<7B?:EB=GD>DA;GC=JFANJENIEQMHTPKUQLUPKVQLWRNVRMTQLQMITPKUQKUQKYUOZVP[WR_\W]ZUZWPVSMURLVSMUQLTOISMIWPLYSN[VR]XT[VRZUQ\WR\VRYTPXTP]YUd_\c_\_[X]XU]YU_ZW_ZV[VQ^YU`ZV[UP^YTc^Z`[W[VRYSNWRL[UPG@;)/$3)!6-%9/'<2)>4+A7.B8/D90D90E:1F:1G;2H<3I=4I>4I>4J?5J?5K?5L@6LA6MA7MA7MA7MB7NB7NB7NB8NC8NC8NC8NC8OD9OD9PD:PE:PD:QE:QE:QE:QD:RE;RD:RE;SF;SFWH>WH>WH>WH>WH=WH>WH>UG=SF;PC9M@6H<3D90B7.D8/D7.5+$-$/&0' 2(!3)"4*#5+$6,$6,%6,$6,%7.&90';0(;0(<2)>3*?4+A6-B7.C8.D9/E:1G<2I>4J@5LA7MB8LB8J@7?=<136,/2025>@E:;?89;?@DABFCDHDEJFHMHIOGHMKMRNPVKLRLNSRT\TW`PS[NPWVYaTW`JKQGHNIKRTV^f^^lYOlYNmZPnZPnZPnZPmYPmZPmZPmZPlYPjWNgULfTKeSJcQHaPG_OF^ND]MD\LBZKAYKAWJ@TG=PC:L@8SMJHGH78:67;9:>78;44666788;:;>89<89<:A=>A<=A:;?<>B?AE>@D=?D>@D<=A<=A?@D?@DACGGIOKNVOR[TXaSV`OR[KMUTW`qtopsPNDSPJTPJRMHKFAE@;GB=MHCTNJVPLRMHQKGSNIQLGNICRMHSNHWRNXTOXTPWSO[WS^YU_ZV_[W^ZV`[Xa]Y`\YUPKWRN_ZVea^ea_c_[d_[d_Zb\Wa[Wc^Y`[WYTPYTP^YUZUQZVQXSOVRNSQLQQHPPETUJTUKA>7) %) *!,#-$.%0' 1(!3)"5+$6-%8.&:/(;1)=2*>3+?4,@6-A7.C8.D9/D90E:1F;1G;2G<2H=3H=4I>4I>4J>4J>5J?5K?5K?6K@6K@6K@6K@5J?5I?4I>4H=3H=2I=2J>2K>2J>1TIAE>:3/-$""3/,755::;qlj:=A954/%5)!<.%#20089=**+$$  #'!%" ),/0386:@26;-/3&(+ !&(++.2$%("#%%&) !#% %! !!!#$#'&&-/31496:@6;@59?/26)+.%&(!!"!"##$'%&)&(+%'*#$&!$ #!% 2./0/2%'+#%(""$!"$$%(,.3>@HEFN013#%$$$"--,./.121121./.*++)+*()(&'&%&&$%%&'&((('''$&%&''()(()()*)+,+-.-./.00/232010132776898898998998775664553443232121232232132010010/0/-.-*+++,++,+*+*,-,/0/././0../...---,,,+*+*+,+..-110-.-   ! !"!"##$%$###"""!"! !  #$#$$$$$$#$#%&%'('()(()(()('(((*)())875KGCMJFQMIPLGROKUQMTPLTQNUROUQMUQMWSOXTQVROXURYURUPMPKHQNJSPMXURTQNMJGKHENKGNJGLHDHD?IE@KGBLHDRNIVRNSNJOKFOKFRMHRMHOJEOIEQKFRMGQKERMGVQLWRMXRL[UPYSMUOITNHUOIWPKZTO]WS\WSZTPXRNXSOVQMWQNVQNUPLOJFKFALGCNHDPJEPJEVPLZTP[VQZUPWRNTOJSNJVQMUPLQKFOIEPKGQKGRLIRMJNIFLGCMHEPKIRNKQMJLGCMHEJEBLGDLGCGA=HC?KFCIDAGB?HC@IDAGC@B>:=96+(% (&#,-,*,++-,*,+*+*(*)')(&((&('%'&%&%$&%$%$"""#$#"#"!! !"!##" ! ""!#####"  &((&(('))'((&((&()&))(**)***,,+--,.--.-,--,---.-+-,)++)**+--.00/11.00-/..0/011132243243233021032132021021.0/,.-+,,*,+(**(**)**)**)+*)+**+**+++,,,..,..*+,(**&((%''$&%$%%$%%$%$%&&'))IFCMIGLIGKHFHDBFB?FC@EB?FC?MJGPMJPMKQNKPMKNKHOLIMJHJGEKGEIFCC?<=96841;74?;8A>;A=;><9:86654443554776665553331332,,+""!##!++(-,)/.+&&%&&%(((&&%%%$--*;<5<<488078067/67/670771;:4:94862973<:6<;7>=9=;8><8;957411/,,*(+)&-+(-+(/-*0.+.+(%%%  """  !!#$# !"!  !!!!!"##()(!"""""'((''' !""!""#$$!!! !""#$#$$$$$$$%%''''((!""!!! !!!!!&&&'))%&&$%%$%$#$#""" ###$$$$%$ !!  %%%(((())'((&''$%%$%$#$$$$%%&&%%% """%&&$%% !!"""&''&''#$$#$$$%%'''''' !!#$#$$$!"!!!! !!$$$&&&!!! ! '('%%%''&))(**)***<72:5/=82;60<71;60<5/3-(.*&=71=71=82;61;61;5/83-)%!*&",(#$"  #" #! &%#&$"&$#+)(&&&+++121122,,+..-/0/./.(((*+*111233110++*'''+,+,,+//.&#" $#"%#"#!  2.+62/,*(('&.-+20.10./.-764><:><:0/--,*3211.-,)'/-+861=:5?<7HD?JFAGD>HD>KHBNJFNJEMJEMIDNJFQMHSPKUQMTPKSOISOIUPKVQLXTN[WQ\XR\YSa^Za^Z^\W^[V\YT[XRZVQYTPYTO\WS\WS[VR_YU^YUYTOYSO\VRZTPZTO]WS]YU]YU\WS\WS_ZV`[Xa\X`ZVa\Wf`\c^Yc^Yc^Z^YTYTPXSNXRM[VQZUP3*%,!1'4*#7-&;1(=3+?6-A7.C8/D90E:0F:1G;2G<3H=3I=3I>4J>4J>4J>4K@5LA6LA6MA7MA7MB8MB7MA7NB7NB7NC8NC8NC8OD8OD9PD:QE:QE:QE:QD:QD:QE;RE;RE;SF;SF;SFVH>WH>WH>WI>WH>VH=VG=UF4F:1C7/D80F90=2*.%/& 0' 1(!2)"3*#4+$4+$4+$4*#5+$7-&9/'9/':/';1(<2)>3*?5,@6,A6-B7.C8/E:0G<2H>4I?5J@6I@6E>878:/14-0346:<=B67:78:>?C@AEABGBDIDFKGINEFKIJOMNTJLQJKQPRYTW_RT]NPWSV^TV_HINEFKFGLHJQUW_i_^jWLkXNlYOlYOlXNkXNkXNkXNkXNiWNhVMeTKdRIbQH`OF_NE]MD\LC[LBYJAXI?VI?SG=OB9I=5QKHLKL:;=79<9:>78;44632422355789<78;78::;>;<@<=A<=A<=@:@D=?C?AF=>B<<@>>B>?B?@DCEKHKRJNURV_QU^PS\JMTOR[ilwwyNMDSOJSPKPLGOJFNIDPKFQLHQLHTPLUPLTOKRNIUPKVQLZTP[VQYTPVRMVRNXTP\WS^YU^YU\VR[VR_ZWb^[a]ZYTOXRM\WS_[Xa]Zb]Yd^[d_Zb]Xa\Wb]Y^YU[VRZUQWRNTPLTPLXTP[VSVTORRITUKUVLUVLUVKLJA2+%&)*!+",$.%/&1'!2)"4*#6,$8-&9/';0(<2*=3*?4+@5,A6-B7.C8/D90E:0F;1G;2G<2H=3H=3I=4I>4J>4J>5J?5J?5J@5K@5J@5J?5J?5I>4H>3H=3H=2H=2I=2I=2J=2VMGEA?/--  .+)212779c_^248423( .$7*"$%$$025*+-##$!!'!)$!()--0537=48=149,.2&'*"#%(*-,/3')-!!# "#% $""!!"$& % ,,//3748>48=26<,/3$%'  ##%&'*%&(#$& !"$$ &! 5013/1#"$ ##%)&(,24:@AG134,-,())&&$./.00/01/010,.-*+*)*)()('(''('%&%'('()(&''%&&'(()***+++-,./.00012101012112145489867667688788777555344355323211012123134312112001/..-*+*,,+./-,,+./.221./../../...--.---,++*+,+-.,00/,-,  ! !"!#$$$%$$%%$%$#$#"#"!"! #$#$%$"#""#"#$#%&%&'&()(()('(')*))*)542JGCMIFTQMVRNVSOVRNUQNUQNTQNTPLRNJQMHWTPWTQWTQWTQVROVRNVSOUQMVSPWTQTQNTPNVSPROLLHDHC?KGCPLHNJFQLHUPLVQMVQLWRMWRNRMHPKFOIDNIDOJEMGALFARLHTOJXRMYSMWPKXRLYSM[UO\UO\VQ_YT[UQZTPYSOWQMUPKXSOZUQYTPSMIMGCKFAOIEQKGRLGVPKXRMZTOXRMTNJQLGQKGSNJRMHNIDKE@IC?LGBPJFRMJQKHPJGOJFPKIPKHNIFKFBPLINJGMIFNIFHC?HC?JEAJEBJEBIEBIDAHDAC?<>:7/+(!'%!-.,*,+*,+*+*)**(*)')(&('%&&%&&%&%$%%$%%"##!""!"" ! !"!!! !!" !!    ! !"!#$##$##$#"#!$&&%'''))())&(('(((***,,+,,+,,+--,../11/10/00/00.//-./-///11022133/21-/..0/022133244243132133244355364143/00,.-*,+*++(*)())(*)(*))**)**)+**++)**+,,-//+--)++'))%''$%%#%%$%%#%$#%%&('KHFMJHMKIMKIIFCGD@JFCLHFMJGPMJOLILIFNJGPMJMIGKHFHECEB@IECHEBB?<>:7:73:73;85=:8:86553443443443665987876443,,+##"!!%%"$$"%%#$$#('&'%$&%$''&''&(('))(//,::39:178/89089167/56/66076243.42.540873:96<:7?=9<:675231.*(%&$!*(%.,)0.+/,*,*(%%% ! ! "!  %&%!!!!!!!!!!""&&&!"" #$#&&%  $$$!!" !!"""!"" !!%%%%%%%%%%&&%%%%&%***(((!!!   "###$$%&&'((%&&"##!"!!"" ""!!!!##" ! !! !  ! %&%'''%&&&''&'&#$$#$$$$$"##$%%%&%!!!###%%%"##"##!""$$$&&&###"##$%%$$$""""#"   $$$&'&#$# '('&&&&'&(('&&&&&%:5083-<61:4.:4.;60;5//*%0,'=71<71=7194/94/61,3.)%"($ '#&$!-*'/,(*'$#! %#!)'%'%"*('''&+,+010000--,..,00//00'''()).//222...)))''&*+*,-,...&$# $"!# ! /*(5/-)'%&%$.-+10./.--,+3319869860.-..,4310.,,*'/.,:84=:5:72B?:FC>FC=HD?MIDMJEJFAHD?JFAKGBKGBNJERNISOJUQLZVQ\XSWSMTPKTOJPLFPLFUQLZWR][V[YSWTNYVPYUQVRNTPLTOLWSO\WSb]Yd^Zb]Y`[Wa\Xa[Xa[Wb\Y`[W]WS[VQ]XT]YU^YVb]Yd_[c]Yd_Zb]X`[V`[W`[V[VR[VQ[VQWRM[VQG@<)/$2(!6,$9/'<2*>5,@6-B8/C90D:0E:1F;2G<2G<2H=3I=4I>4J=4J>4K@5K@5L@6LA6MA7MB8MB7MA7MA6NB7NB7NC8NC8OD8PD9PE:QE:QE;QE:QD:QD:QE:RE;RE;SF;SF;SGVH>VH=UG4+?5,@5,A6-B7.C8/E:1F<2G=3G=4F=4=:9247-0313679=8:>457568<=A>?C?AEABGBDIGIOEGLFHMJKQHJOHINMOUQT\QT\NPWQT\UW`GGMDDICDICDIFHOUU]eYVhVLiWMjWMjWMiVLiWMiVMhVLgVLeTKcRIbPG`OF^NE\LC[LCZKBXJ@WH?UG=RE:<>B<>B<>B=?C<=A:;>;A=>B@BFFIOILTNRZRV`PT]KNVLOWcfqwyMLDOMHTPMSOJPLGMHCOKGLGCID@JFBRNJTPLVQL\WS`[W_[W^YU^YU_[W_[X_ZW`[X]XTWRMWQLZUP_ZVd`\ea^e`[a[Wa\Xb^[b^[b]Zc]Y`ZUaZU]WQXRMXSNXSOWRNRMISNJPLHRMJSOKQNIRRIUVLWWNTTKTTJVVLQPG;6/((*!+",#-$/&0' 2(!3*#5+$7-&9.':0(;1)=2*>4+@5,A6-B7.C8/D90E:0F;1F;2G<2H<3H=3H=4I=4I>4J>4J?5J?5J?5J?5J?5I>4H>4H=3G=2G<2G<1G<1G;1H=2RKG;88$## (%$**+457ZVT/15/02#'4(!&'),&')$ "$# & )#$""$&)-0437=48>36<-04*-0+.1+.2)+/"#% #%#""""#'!' +'%/2625;37=15:+-1""#"#$! ! $%'##%"$"%!3..:561/1*)+0-/@GB=LFBQKGRLIPJFQKGPKHQLIOKHJEAGB>MHDJEAKFCOJGLGDJEAHC?IEALHEIEBGB?FB?B=:;73.+'!'$ ,-+*,++++)*)(*)')(&('%'&$&%%&%%&%$%$$%$$%$"##"##!"! ! ""!#$"#$#$%$##"""!   ! !!####$#$$#$%$ $%%%''&'''((())*++,--/00/00.00.00./0/11/11.00/11/11.11.11244233132022.0/.//132243243133133244465566565343010-/.+-,*,+*,+*+*)+*)*))+**++,--,--*,+*++-..-//,/.*,,'))$&&$&&&((&)(%('%''GDAHEBLIFLIGLIGMJGLIGKHGMJHKIFIFDGDAHDAHDBA><9=:8A=:C?<@=:>:7=:7974543432332443654887876876443**)!! !! "" $$" %%$&&%&&%&&%%%$&&%''&('&**))((.-+66/<<4=>6<=6;<5<<6;:5::576298387365142/32/974652/-+-,)(&$&$!)'$20-31..,)+)'"#"!"! ! #"! $%$""""#"!!! !""$$$!!!!!!  !!'(($%$ !!!### !!%&&$$$$$$%&&$$$"#"()(%&& !"" !!"##$%%"## !!!!"!!"! %&&"##!"!$%%!"" !!!"" !"!!"!!!! !! """ !!  !""### !  %%%$%%$%$''&))(+*(74/62.950950840:61:6130,30-A<6=71<7173.72-3.).*%# )%!+'$.+'2.*4/*51+2-((%" " $#!(&%-+))(&,+)()(*+*...,-,..-..-00/---'(()**010677111+++()(,,,//....$"!!!  ,(%4/,)&$&%#--+10/-,+--,320653642/.,/.,542420/-+0.-<:6A?9=:4A>8D@;EA4I>4J>4J?5K?5K?5L@5LA6MA6MB7MB7MA7MA6MA6NB7NC8OC8OD8PE9PE:QE;QE;QE:PD9QD9QD:QD:RE;SF;SF;TG2*.%/' 0'!1(!2("2("2)"2)"3)"4+$5,%6-%7-%7.&8.&9/';1)<3*>4+?5,@6-A7.B8.D90E;1E;2E;2A;6568.14.1446:8;?67;234456;=@=?B>@D?AE@BGFINFHMDFKHJPGIOFGLJLRPS[PS[MOVNQXVYbJLRCCHDDIABFBCIILTWW^h\XgUJgUKhVKgUKgUKgUKfTJeTJcRIaQH_OF^MD[LCZKBYJAWI@VH>SF5E91PJFIGG67813568;9:>45723422401200122445767956957989<:B;=A:<@9:>9:=<=A<=@>@DDGMILSJNVQU^QU_MQYJMU]`jvxPOIKHCPMIQMIPLHKFBQMIRMIOJFMHDSNJVRMWRNZVR]XUZVR[VR]XU^YV]YV^ZW[WTVRNSMIWQL_ZVb^[fb_gcafa]ea]b^[c_\c_\`\Xa\Xb\Wa\V^XSYSN[VQXSOVQMTPLUPLQMHMHDJEAMJDSRJUVMTTLSSISSISSISTJRSIC@8.&') +",#-$.%0' 1(!3)"5+$7,%8.&:/';1(=2*>3+?5,@6-A7-B8.D9/E:0E;1F;1G<2G<2H=3H=3I=4I>4I?5I?5J?5I?4I>4H>4H=3G=2G<2F<1F;1F;0E9/G<3LGE311! ##$$##%%%./1PLL026./2# .$$ !#"$& !$% $'!"(*.15:59?48=25:038038*-0'(+%&(!!# %%"!!!#% '!(!-+,04836<26;/26*,/'(*%&(! "%%((+.#$&!#" +&&4/0935E@CEBD.//,--+,,'(' ))'11/00/00//0/./.-.-,,,+,+,-,-.--/.-/..0.*++')(()(****+*+-,./.121232011/10010011232242232343454454454233122132021./.-.,331665997997553220231120-.-+,++++)*)+,*//../../.110...--,--,..-*+*  ! "##$%$%&%%&%%&%$%%"##!"!"#"$$#"##!"!"#"$%%%&%%&%&'&&'&&'&'('110JGDLIERNKSOKQMIPMIQMJOKHNJFOKHQMJOKGOKGMIEPMIVRPUQNTPLUQNVRORNJSOLTPMSOLSOLTPLOKFOKFMIDPLHPLGOKFNJENJENIENIDNIDQLGUOJWQLWQLVQLVPKVPKWQLXRLYRLXRL[UO\VP]VP^WQ^WQaZUc]XaZUa[V`[V_YU^XS\VR_YU`[W\VRUOKTNIYTO\WRYSNWPKTNHSLFSMGSLGSMHPJEOIDPJENHCKFAKFBMGCOIFRLHNHDNHDPJGPKHOJGKFBJEALGCKFBIDAJEAID@ID@FB>IDALGDHD@FB>EA>C>;;74/,( %#+,*)+*)*)()((*)')(&('%'&%&&%'&%&&$%%$%$#%$"$##$#"$#"#!##"$%$%&&&'&%&%$$##$##$#!  !!!!!!"!"#"$$# !""%&&%'&')()**)**+,,.//.0/.//-././//10021/11/11133144143255244132022/11.///10132022132143244566676465343121.0.,.,,-,+,+*++*+*)+*)+*)+**,+*,+*++,-.122122.0/,..*,,'(('))*,,(**'))%''FC@FC@LIFMJGMJGNKILIGFCAFC@GD@FC@DA>FC?DA>>:8;84;84=96?;8?;8;86753442332432554654665876886543++*!!!""!##!""  """##"%%%%%%$$$%%$$$#%%$%%$''&)(')((('&*)'660<<5;;5::466165033/10-32.31.10,0.++*&,+(0.,.,*,*'(&#+)&-+(41/5300.,-+) ! !"!""!!!!#$#   "##!""#$$ !!$%%""""######$$"""$%$  !! !"! !!!"""     !!!!!! "#"&&&##""""$%%#$$"#"#######$#$$$"#"###%%%''''''((''('((())())(***++*++*++*++*++*,+*-,+,+*+**,,+-,+,,+,+*+*)++**+*+++***,,,.../////.///00/000./....././/////..-D?:=72:5/3/*1-(0+&/+',)%1.*51-62.73.62,50+4/*/+&'$!!# %$"&%#)'%'%#-,****()(+++,,,//.-.-+,+***)))***010787565...)*),-,000000!   ,(&40-)'%'&$..,210-,++*)00.5425420/---+54242/0.,.-+973A>:A>9FB9FB=JEAKGBMIDMIDNJEOKFSPKTQLRNINJEPLGUQLXSNYUPYUP[WR[WR[VQ`]X^[V^ZU\YSZVQYUPYSNXSNYTPZTPVQLSMIVPL[VR^YVc_[gb_fa^gb^hc_idaiebgb^f`]d_[c^Zd_[a\W\WQ\VQ\VQ]WS^YT]XSXSNVPKZUP_YUIC?(.$2( 5+$9/'<2*>4,@6-B7/C8/D90E:1F;2G<2H=3I>4I>4J>5J?5K?5K?5K?5LA6MA7MA7MA7MA7NA6MA6NB7OC8OC8OC8PE9QE:QE;QE;QE:QD:QD:QD:QD:RE;SF;SF;SF;TG4+?5,@6-A7.B8/C90C:1C90A92;99135+.0-0257;8:>458123346;=@=>B<>B=?C>@DCEJDFKCEIFHNGINDFJGINNQXORZMOWMOWTXaMOWCDIBBGAAE@AEDFMEHP\[amb^dRHeSIeSIeTJeTJdSIbQG`PF_OE]MD[KBXIAWI@VH?TF=RE;OB9I<3I>8SMKKJJ89:13635868;56833522411300200201223445745845868;9;>:<@;=A9;?8:=8:=;=A:<@:;?:9:>;=@;<@=?DBDJGJQHLTOS\PU^OS\KNUWZcz|]\ZMIDOLGOKFPKGLGCKGDNIFPKGPKGSOJXSPUQNYUQ^ZV[WS[WSZVRXTPZUQ_[W\WSVQLOJESMH]XT]YV_[Xa]Z[WS\XTZVR\XU_ZW\WT\WS_ZU_YU^YT\WR\WTWRNVRNXSPVRNTOKPKFOJESOIWVMXXPVVMQQHPQGRRHSTJRTIOQFHH>94,))+",#-$.%0& 1(!3)"4*#6,%8-&9/';0(<2*>3+?4+@5,A6-B7.C8/D90E:1F;1F;2G<2G<3H=3H=4I>4I>4I>4I>4H>4H=3G=3G<2F;1E;1E:0D9/B7-G>6B??)))!! """"!!""",,-URR68<-.1#+!$ !$&(,%'* #%!#%#!&(++.2/37.26,.2-04049'),"!"%&(%&( #$"! !"#$$(# ..0037149149037-04)+.&'*$$&##$ #$%(*.*-1$%'## !# $!"&%'))*.-.444122-/.-..*,+%&%**'33100/./../.120232000-..-.-,-,-.-010343,.-(*))))*+*+,+-.-./.221232121121131343243343242343243121232010.///10022/0/,,*00-664<<;==<887453454233010-.-,-,,-,..-00/010010221///--,--,--,))( !!!###%%%%&%&'&%&&%&%$%$"#"!"!"##!""!"!!"!$%$$&%%&%&&%%&%$%$&'&//.IFCKHDOKGMIELIELIENJGNJFMJFOLHTQNQMJOKGNJFNJFTPMWTQTQMVSOYVSXURTPMQNJRNKSOLVRNSNIQMHQLHQLHPKGQLHNIEKFBNIEPKFQLHQLGRLGUOJTNIRLGSMHWPJYRM\VP_XS^XR_XS`YSaYT_XR_XRc]Wd^YaZUa[Vc]Yb\W]WRYRMYSNZTOZTOXRMWQM[UQ]WS\VQ[UPZTOXQLYRMWPJWPKTNIRKFRLGOICLFALFBMHDMHDQKGRLHRLHTNKUPMRMJNIENIFNIENHDKFBIC?GA=ID@GB?IEAKGDGB?FA=C>;@;8;631-* &#+,*)++)*)()(())')('(''('')()**(*)&''%&%$%%#%$#%$"##!"! "!"#"$%%%&%%&%$&%$%$$&%"#"  !!  ! !!!"#" """%&%&'''(('))')(())*,++,,+--*,,*,,+.-,/.,..,../11132133033133022022/11-//-/./10/10021032022243454232021/0/-.-,-++,+)*(()((*)(**(*))+*)+*)**)**,--022022-//*,,())'(()++,.-(**'))$'(FC@FC@GDAHFCJGDGDAGEBC@=C@;>:7?:7C>:C?;=:7875543443543442543776887997876//.""!&%$""!"""%%$###"#"#####"%%$$$$##""""&&%)('('&&%$'&%'&%('&..+//-//-0/-00./.-.-,.-,-,*/.+/.++*&'%"(&#+)&*(&('%*(&,+)0.-1/./-++*)$$##$#!!!##""""""!##"$$$!!! !!! ! ""!"""###$$#%%$&&%&&%%&%$%$%%$%&%%%$%%%$%$$$$###$$$%&&&''''''''())'(''('*+*+++)******+*)*)'('''&&&&%%%%%%&&&&&%%&%%&%&'&(((***))(***,,+++*))((('))))*)'''%%%'''()())))))(((*+*,------.-/0/00000000///.1000/./-,0.-/.--,+-+*/-+-,+,**/.-00/00///.,-,*++***++++++,-,-.-...././///0/...-----,--,-,+,+*+*)C>972-61,2.*2.*62.:50;61:5083.84.94/72-61+2.).*&)%"#!#!'&$'%$(%#%#!*)'**+%%%''')**///...++*++++++*+*///566677000++*...010110!!! +'%720)'%'&%.-,420/-++*)00.7756530/-.-+54220.-,+,+*873B?:A>9DADA;B?9D@;GC>JFAKGCNJFOKFOKGRNISOJRNJPLGLHBKHBOLFTPKTPLUQMYUPZUP[WQ^[VZXSYVQ]ZU[WR\XS^ZVa\Xa\Y_ZW\WSXSOYSO\WS]XT`[Wd`\b^[d`\ea^gb`hdajeciebhc_d`\a\X`ZV]XS]WR^XT]XS^YT`[V`[V[UP\VQa[W\WT5,(+ 0&3*"7.&:1(=3*?5,A6.B7/C8/E90F;1G<2G<3H=3I>4J>4J?5K@6K?5K?5L@6L@6MA7MA7MA6NB7NB7OC8OD8OC8OD9PE9QE:QF;QE;QE:QE;QE:QD:QE:RE;SF;SE;SF;SG4H<3F:1F90H<2J=3?4+/& 0' /& 0& 0' 1(!1)"3*#3*#4+#4+$5,%5-%7.&8/':0(<2*>4+?5,@7.A7.B8/B8/B8/A7.=86567,/1*-//1458;56:013001234:;?;=@<=A<>B=?C@CGBDIBDHDFLEGMCEJEGMKNTMPWLOVLOVRU^NQYEFKCCH?@D?@DACHACHCELaafmb_bPFcQHcRHbRHaQG_OE]ND\LCZKAXI@UG>TF=SE79<:<@:<@9;?9;?8:=8:=9;?;=A;=A>AFCGMFKRMQZPU^OT]LOWQT]y{jilLHCOKGPLHPLHMHDIEAMHDOJFNIEPKFOJGMIESOKXTPWSOYUQ[WS\WS`ZWfa]d_Z]WSYTOYTP]YV]YV^ZWa\Y[VRVRMWRNYTPZVR^YU[VRWQMWQLYTOXRNXTPYSOYTQZVRVQMUPLUPLTPLTQLVVNXXPWWNUUKTTJRSITUKQRHNOEPQFPPEC@60' (*!,#-$/%0& 1(!3)"4*#6,%8-&9/';0(<1)=2*>4+?5,@6-B7.C8/D90D:0E:1F;1F;2G<2G=3H=3H=3H>3H=3H=3G=3G<2F<2E;1D:0C9/B8.@6,E<5756&'(!! ""!$$%%%%()*IFG359*,0"&" "%),0'*.!!#!#$#$$$%')-,.3,/3'(+*,0.26(*-!!"""$'),%%("#%!""""#"! "$*%$,,.,.2.14/15/15-04,.2'(+'(+(),&')%&(%%'(),+.2+.2#$% !!!!! !"#$%#%+)*10133312001//0//00-..+-,&''((&442110//../.010221111//...-+-++,+..-110-.-)***+*+,++,,---010443343343343242343354454232232342454343/00-.-./.02112101/220663887776565343343232232010--,,-+./...-//./0/01000/./...--.,&'% !"!!"!#$$$%$%&%%&%&'&%&%#$#"###$$"##!""!"!"#"$%$%&%$%$$%$%&%&'&..,HEBKGDLHDID@GB>HD@IEAJEAIE@KGBNKGPLHOKHSOKQMHRNJWSPWSQWTQWSPVSPPMIROKVSOVROTPLQLGPKFPLGNIDMHDQMHOKFKFBLHCMHCQLGTOJUOJTNIRKFRLFTMHWQKYRL_XSc\Vc\Wb\Vb[UbZT_WQ_XQaZTb[U`YTb\Wd]Xc]X_XSYRMXRMVPKXRM[UP]WRZTPZSN[TO]VQ_XS_XS\TOXQKWPJVPKVPKUOJQKENHCMGBNHDMGBNGCOHCPJFUOKVQMTOKNHDKFBIC?MGCTNKRLIOIELGCC>:E@=EA=E@FB?HDAHDAFB?@<9>:6B>;GC?C?<@>;:8654344255365466566577677676500/&&%!"!$$##$###"#$#%%$%&%&&%$##""!""!$$#&&%))(++**)(('&)('*)()('('&,,*10/21011010/2101100/.++)*)())'('%'&$$#"$$$&&&'''''&&%%'%%'%%%$#&%%(('(('&&&&&&&&%%%%$###""""""#""#""""!!!###%%%%&%'('**)++*,,+-.-..----+,+)*)*+****)*))))'('&&&&'&'(''((((()*)*+*)*))*))*)()(((()))*+***))*)++****()())())(''&''&%&%%%$%%%&&&&&%'''''&&&%&&%''&(('(((''&&&&)*)*+*+++*+*)))+,+---******.-,/.--,+,,+,,+-,++*)**).-,/.-//...-.-,,,++++..-122122/00///-..///./.--,-,,---..-...,-,*+*()(()()))*)()(')(')('A<7:61:62<83=83@:4@;5=71<7194/94/83.51,51+3.)-*%)&"#!" '%$&%#'&$+)'+*(())$$$'''+,+000..-++*,,++++(((,,,454788232+++---///00/!'$"831+)')('/.-6431.--+*11/8756531/.-,*21/.,**)(*)(531?=8@=8C@:A>9=:4;83@<7B>9EA=JFAKGBMIDKGCHD?IE@LHDOKFLHCHD>GC=LHCMIDLHBRNIWSOYUQZWRVTOTQKYVQ\XU[VSYTQ[WS]ZV\XU\XT]XT]XU_ZW_ZWUPLTOKXTP\WTb^[gc`fb`d`]b^Zc^Zd_[a\X_ZU_ZUa\Wa\W]XSYTP\WSa\X_YU`[Vc]Y`[WLFB(.$1(!5,$9/';1)=4+@6-A7.C8/D90E:1F;2G<2H<3I=4I>4J?5K@6K@6K?5L@6L@6MA7MA7NA7NB8NC8OD8OD9OD9PD9PE9QE9QE:RF;QE:QD:QE:QE:QE:RE;SF;SF;SG83777/13*-/,.0136469013/01//01249:>:B>AE?AF@BGCFKDGLACHCFKHKRKNUJMTJMTPT\PS[FGNDDJAAF>?CABG?@E>?DDGOaahf[Y_OD_ND_PF^OE\MCZKBXI@VH?TF=RD9;?8:>7:=57;7:=9;?9;?8:>8:=8:=8:=:<@:;?;>CADJFJQINVNS\OT]MPXMPXuxrrxJF@LHDNJFNJFID@IEANJFQLHOJFLGBHC?ID@PKGVRNSOKSOKVQNZUQ_ZVb]Yfa\b]Y^ZV\XT[WT[VT\WTZUR[VR[VRa\Xa]Y^YU_ZW^YUWSNUPKYTOSNISNJWRNVQNZURVPMRMHQLHNJFNKFQPHSTLSSKTTKSSJRRHQRHLMCLMBPQFPQFTUILK@94,)),#-$.%0& 1(!3)"5*#6,%8-&9/':0(;1(<2)>3*?4,@5-A6-B7.C8/D90D:0E:1F;2F<2G<2G<3G=3G=3G<3F<2F;2E;1D:1C90B8.@6->4+<4-,+,)*,%&''()*,.*+.*+.;:;137*,/&!!" (+/(*.%&)!" #"$#%&(%'))+.'(++.2/27-04'),#$&&'*%&( !!!#$%("#$!"###! "$& -)(-,.)+.*,.+-/.15027-04038048.15-04-04,/3+-1*,0'),##%  !"%##,+-0/20/1-..-....-////0//0//00...+-,')(''%11///.-.---,-/-./../../.-.,+,++,+--,/0/./.+,++,++-,+,,./.222343443555454232232343454453342343554565232010020242343443453675665332232232121121232332//.,,*--,----..,-,,,+./-//.-.-+,+"#" !  !"""#"""""""#$#%&%%&%$%$!"! !   !" $$##$"$%$&'&()(..-HDAMJFMIELGBGB=E@;E@;C>:B>:A<9<852.+ $!-,*,..-//+,,(*)'(('((&('&('%''%''%''&('%&%###"""!#"!## "" "!#$$#%$"$#$&%&'&&'&&'&$&%"##!"!#$##$# ! !"!!#"  !#""%%$&&&''&''%&'%''&((&)('))')(&((&((%'&$%$%'&&((&(('((')(()(()))*)'('%&%$%$#$##$""#"!"! "!!""#$##$##$#$%%%'&&''&('%''%&&$&% !"  JGDKIFIFCFC@EB?FC@HEBIFBFC@HEBGEBFC?FB>D@93?93A;5A;5?:4=82:5/73.51,62-51+1-(,)%'$!%""!&$#&$#)'%.,+)(&$$$$$$(((...121...,,+..---,(((*++222787454+,+,-,,-,---" "  %#"631*('*)(0/.8751/..,*10.7646420.--,*420/-,,*)**)32/@=9@=9DA8FA5,@6.B7.C8/D90F;1G;2H<3H=3I>4J?5J?5K@6K?6L@6M@6MA7NB7NB8NC8OC8OD8PD9PC8PD9QE9QE9QE:RF:RF:RE:RE:RE:RD:RE;SF;SF;SG5,?71987012+-/*-/-02236013,-/../-..02379<8:=9;?9;?;=A=?C>@D=@D@CHBEJ@CGADIFIOILSILSHKRNQYPS\HIPDEJCDI?@D@@E??D;<@>@EFIQZZaldc\MDZK@ZLBYJAWI@TG>SF=PC;M@8H;3E8/J@:ZTQPNM>>>357247459347013013013012012012/01/01./0./0//101312412524757;79=8;?7:>79=57:58;8;>8;?7:>8:>79=68<9<@9<@;=B>BGDHOGKSLQZNS\MQZKNUlozgglGC:GC?LGCRMIRNJOJFKGBKFBNJESOKRNJMIEMHDSNJWSOVQM`[Vb^Yb^Z`[X`\X_[X_[XYUQWRNYSNd_[gc_b^Z_ZW\XUWRNWRMXSOQLGOJFPKGMHCQLHSNJPLGOJFMIEMJEONEPPGOOEQRHPQGMNDJKAJK?LMAPQFRSHSTIRTHQRFFC:1("(+"-$.%0& 2(!3)"5*#6,$7-%8.&:/';0(<1)=2*>3+?5,@6-A7.B8/C8/D90D:0E;1E;2F;2F<2F<2F;2F;1E;1E;1D:0B9/A7.?5,=4+;3-)((*+.+-0.04/27.04,/289;46:-/3'##! &(,),0*-1#"!" ### ""$()-*,/+.2149149-05)+/%')""#""$""$%&(&'*'),"!" ##""! "#'".*)*(*')+(),*,..0403726;15:.16/27.26*-1),/*,0),0%'* !"(')'&')()-,.,--*++)+*+,+,-,,-,,-,-.-/0/.//,-,&'&**(11/./-,-,--,-.--.--.-./--.-++**+*+,+./-./-./-./.-/--/.011343343232232343121110343554342332342443565454343243454564665665565453120122333121121232454443/0/,-++,,,.-,-,,-+-.,--,**)(('    !"!"#"""!  "#!##"$%#''')*)-.-FC@JFCJFBPKFKGBLGCNIERMIWSOWSOWSO[VSYURXTPVQMUQMWSPVRORNJRMJRNKSPMQNJOKHQMJSNJTOJUPKQLGPKFNIDMHCMHCLGCLGCPKFSMIWRMYSNXRLYRL[TN_XR`YSaZSd\Ve^Xd]Wd]Vd\VbZTc[Tc[Ud]Wd]Wf^Yf_Y`XR_WQ]UPZSL^WQ^WQZRMZSM[SM\UO]VP]VP_XRbZTb[U]VP\TNYQJXQK[TNZSMTMGSLFVOIWPKRKFNHCPIDQJEQJEVOKWQMYSOYSOWQMTOKUPLSNJQKGKFBD?;A<8B=9B<8A<8A;7?:6=853/+!",*'-/.021/00+,,)+*(*)'('&''%''%''%''&''&'&$%$ ! ! !"! !!! !""#$#"##"##$%$%'&&('%'&$%%#$##$#$%$#$#$%#$%$          .+'PJCID>HB=JD>XQJg_Vne\B>IFCJGDGDAEB@@>==::9,,+!! ##"##"##"$$$''&))())(+*)/.-00/00/00/0/.0/..-,0/.0/.0/.0/.0/.,+)'&% (((''''('((('(('''%&&&'&'''&'&&&&&&&'('()(&&&&'&''''''()(++*+**)*)(((((()))**)+*)+***)(+)(+*)+*)+*)(('&&%%%%&&%('&*)(++*--,---++***)++*--,..----,--,..,-.,,,+++++++++)))))(((''%$'%$&%$&&%((())(((())))*)*+*+++++*++*+,++++++***)***,,+,-,,,+..-./.././/....+,+*+****--,.....-,,+++***)**))*)((((((((('(''''%&%$$$$$$$$$####$##$#&&&%%%#####"""""""##"%%#'&%('&,+(1.+30-3/,3/,2/,<72>83>93>93>93@:4@:4A<6<8272-62-94/94/4/*0,'+'$%"&# &%$)('*('('%+)(,+)$$#'&%'('./.343111..-110///***,--565999677.//...././0/ &$##! 521*)'*)'/.-876321.-+/.,65354120..,*52//,+-+*)('.-+@=9?<8A>9B?:D@;DA;IE@LHCMIDJFAJFBLHDPLHOKFNJEMJEMIDQMHTPJUQKXTOZVQWSOVRMUQLUQLURMVSNXUPZWQ]YT\XTXTPUPLUOLVQMVRN[WS`\Xa]Za]Z^YUZTOXRN[UQ^YV^ZX`\Ya\Yc^Zd_\b\X_YT`ZT]XR\WR[VQ[VR\WSZUPWRNXSOWRNYUQ_[W`\XMGD)-$1(!5,$8/';2)=4+?5-A6.B7/D80E:1F;2G<2H=3I>4J>4J?5K@6K@6L@6MA7MB7NB8NC8OC8OC8OD8PD9PC8PC8QE:QE:RE:RE:RE:RE:RE:RD:RD:RD:SE:SF;SF;SG;SG;SG4H;1F:0I<2K>4I;23*#/& 0' 0(!1)"2)"3*#3*#4+$5,%6-&7.&8/':0);2*<2*=4+>5,?6-?6->5,?71><;113+,/)+.+-0/14025./1-./-./,-.02368;68;8:=8:=9B=@D=@D>AF>AF>AF@CHCGLFIPGJQGJQLOWOR[HJQDEJBCI@AFBBG?@D=>B=?D@BHCGNWY`mhinc^VH?OA7OA8NA8K?5H;2J>6TJE^XUWSSIHI::<236125246347236013/02/01/01/02/12/02/02./1-.0./1/1202412424657:7:=8;?7:>69<57:57:8;?9;@8;?7:>79=68<7:>9<@9;@;>DBFLEJQKQYNS\MRZILTilvnouMICLHCJFBID@D?;GC?KFBRMISOKRMJPKGOKFNIEPKFSNJPLGPLGRNISOJVPK\VQ]WS`\Wb]Zc_[\XU]XU]YUXSOYSNa[W_[X^YV]YUZUQXSOWRNRMIMHCOIDOJFNIDNIDPKGQLHRNJRNJQNHPOFRRHSSIQRHQQHLLBGI=JL?NODRSHTUKSUJQRGRTHYZNQPF<6.*+ -$/%0& 2(!3)"4*#6+$7-%8.&9/':0(;1(<2)=3*?4,@5,A6-A7.B7/C8/C90D:0D:1E:1E:1E:1E:1D:1D:0C90B8/@7.>5,<3+80+$##&'(,.214826:037.0457;58=15:)((!%'++/3,/4&(+   $#$##*,0*,0)+/-04048/27+.2(*.$%(#$&$%'&'*)+/*-0&'*"#"!!  !"&!.)(,)*'')'),,/3,.2-04/26*,0,.3*,0&(+(+/')-%(+"#%!!#0/4BAG./0')(*+*+,+,-,+,,*+*()))+**,+,,,/0/010---&&%++)11/./--.,..-//.,-,+,*,,+,-+++**+**++,-,-.-/0.010/0../.010121122233121121010010221554442231353454565554454453665665453342121120010121232121021132343222-.-*+))*)*+**+**+*,-+..-,,+''& ! ""!"#"#$""" !" !  !"!#$#%&%'(()**-.-C@=HDALHDVQMUQLWRMYTOYUPZVQXSOUQLXTOZVS[WSYTQVROXUQZVSYUQYURTPMQMJNJFMIEOKGQMITOJSNIRMHPKFLGBLGBMHCPKGQLGSNJUPKWRMYSN[TO\UO\TN^WQaZTbZScZTc[TbZSaYR`XQ_VObYRd\Ue]Wc\Ub[Ud]Wb[TaYSaZT_WP_XQ`YR^WP\TNZSM[TNZSM[TM\TN\TM`XR\TNYQJ\TN]VO\UO[TNZRLUNHTLFTMGRJERKFTLGVNISLGSLGSLGSMHSMHUOJTNJSMIPJFPJFMGBJD@D?;D?:D>9C>9D>9C>:@;7730%"")'#-.-132232-..*,+*++)*)'((%'&%'&%&&%&&%&%%&%"#" ! "! !  !!!"!!#""##!"""$#$&%%&%#%$!#"  "#"#%$$%$      HC={p~sGB?FA>GD@HEBJGCGDAC@>CA?EB@ECB><;:98876876776886998::8==;>>82;6194/:5/<71=82=71>82>93<7294/83.84.:5073-4/*0,(*'$&$ '%!  ('%'&%()('((/00455444010233---(((---565898455---,-,,-,,-, #! ! 20.*'&('%--+986421+*)//-653753532/-+51/0.,,+*&&%))'><9C@:C@;JGBNKFOKFOKGRNIVRMYTPZVRXUQXTPYVQZVR\XT]ZV^[W\ZU[YT[XTYUQVQMTNJRLHVPKZUP\WSa\Xd_\d`]ea^fa]d_[a\Xb\Yc_\c_]d`]c^[a\Y`[W_YT[UP]WRZTOVPKYTO[VQ\WRYTOWRNXSOWRMUPLWRNVQMXSO6.**/&3*#7-&:1(<3*>4,@6-B6.C7/D90F:1G;2H<3I=4J>4J>4K@5K@6L@6MA7MB7NB8OC8OC8OC8PC8PD9PD9PC8QD9QE:RE:RE:RE:RE:RE:RD:RD:RD:RE:SF;SG;SG;SG;SG70?<;123)+-)+-*-/-/2/14./1-./..0,-.,-.12468:68;69<79<8:>:<@;>B;>B<>CAFADIDGNEHOEHOILTMQYIKSDEKBCH@AFBCHAAF=>B?@E=?C>@E@DJSV]trv}wvnece\X[QMVNIha^nhfYVVMLM>>@57:247236124/13024136/02-./-.0.01./1/02/12/02./1-.0/0101302412413646969<7;?69=58;47:47:79=7:>7:?7:>7:>69=69=93+?4,@5,@6-A7.B7.B8/C8/C90C90C90C90C90C90B8/A7.@6->4,<3*3-("!!#""*,.13814903714825:36;/38%%'"$'*-2),0%'*! !#)),*-1*,/(*-*,0,/3,/4,/3(+/%'*$%(&(+,.2,/3)+/#%' "#! ! !!#.('1--(')&(,*-1+.2-04+.1),/&(+&(+'*.%'*#$'&&)..2:8=@<@(((())(*)*+*.///00-//+-,),++,+-.-121232/0/)))))'21/00...-//.//.,,+,,+,-+,,++,++,+,-,-/..0/./-//.-.---,././0/01012101102102112133256456455446555455455455455456555433212001/010120121333233233243343121,.-+,**+))*)()()*(*+)+,***)!"! !!!!!! ! ! ! """!"!##"#$#$%###""#"!"!"#"$%$&'&'(()*)+,+./.EC?NKGQMIWSNXSOYTP]WR\WS[VRUQLPKEQLHUQMVRNWROWSOYURZVSYURXTQSNKPLHOKGOKGQLHQMITOKQLGQLGQLGOJFQLHSNJVQMUPKVQMWQMYSNZSNYRL\UO^WQ^WPaYSbZTaYRaYRaYR^VO_VO`WPbYRd\Uf^WbZS`XQbZSd]Vd\UbZS`XQ[SLZRKYQKWPJ[TN]UO\UN\TMZRLZSL`XR`XR\UN^VO\TNZSLZRKYQKTLFSKETLGUNHVNIWOIWPJUNHSLFUMGUNISLFVOJUNIRLGPJENHCNGCOIDKFAJD?JC>JC>GA94:51)&#!%#))'/0/122.//*+*)*)()(&''$&&$&%$%%$%$#$$"##!"!#$""## "!   ! !#"!   "!#$#!"!     $"VPIkc[yp{D@=GC?FB?IFBMJGEB?B>;GDB@>=::9776665776887::9<;:>><>><==<998..-  $%$))(++*--,//.//...-//.//.22133222110/00///.//.//...-('& "!%%#! "! !!!! #""$#"%$#)(&%%$#$#%%%!""!!!"""   !!""" ! !!  !! !!##"%$#-+(?93?:4?93>83>93>94=82<71?93B<6?93<71:5/;61:5094.73-:5084.40+1-(+(%'$!(%"")(%**))))'((011121233110222,,,'('+,+232676344++++,,+,+**)#! #! " !$"!.,*(&%&%#,,*986432)((--,6428647541/-63141/+))%$#%%#;95B?;EA=EA=A=8@<7JGCOKFMIDKGBGC>GC>JFANJFNJFLHDOKGQNJRNKSPLPMIPLGTQLVSOXTPXUQYVRZXTUSOTQMSOKPKGNHDNHCVOK[VS_ZW_\Yb_\d`]b^[_[Wb]Za]Y_ZW^ZWa]Zc_\^ZW]XU]YU`ZUa[Va[Va[V_ZTb]X`ZV^XT_ZU^YU]XTZTPUOJSMHTNI\WRPJF(-$1(!5,$8/';1)=3+?5-A6.B7.D90E:1F;2G;2H<3I=4J>4K?5K?5L?5MA7NA7NB8OC8OC8PC8PD8PD9QD9PC8QD8QD9RE9RD9QC9RD:RE:RE:RE:RE;SF;SF;TG44+$0(!0(!1(!2)"3*#4+$5,%6-&7.'8/'90(:1);2*<3+<3+<3+:1)?82A>=234)+-'),)+--/2.14-/2+-.,-.,-.,--,-.12446946957:68;79=9;?:=A9<@:=A;>C:=B=@D?BHBFLDGMDGMGJQKOWILSCEKBDI@AF@AFBCH=>C>@D?AE<>B>@EBELCGONPXZZ`b`d^\_WVXRQTGGJ<=@68;358358236013/02.02124024/02-./-.//02./1/02013/02./1-.0/0101312513513635858<7:>69=58<47:46:58<7:>7:>7:>8;?7:>58<:>C7:>7:>?CIDIQHMULQZOT]LOW\_h~ROJNJFJFBHC?KFBQLHSNKRMIOKGPLHRMITOKUQMUQMTPLTPLRNJXTQWSOTPLQMISNIXSNZVR\XT]XT[VRZUP[WS\XUZUR\XVYURXSPZUR[VSZURWSOWRNWRMVQLSNIUPKUPLSNJSOKPLHNLFQPGPPFTSKVVNUUMUULPPFNODQSHQSGNPDJK@JL@MOCNPDPQFPPFQPFJG=81),"+!.$0&1' 2("4*#5+#6,$7-%8-&9.':/';0(<1)=2*=3+>4+?5,@5-@6-A7.A7.A7.B7.B7/B8/B8/A7.@7.?5-=4+;2*2,' """*,.037.1503737<149.15,/3$%(&)-&),#$(!$ )+.*,0'(,%'*%'*(*-+.2*-1%'*!%'*),0*,0+.2*-1(*.!!!  !*$"2--+(*!#&#%(),0,/4+.2(*.')-%'*"#&%%(**-*(*613:68''()***,+,../11122/10-//+--,.-,/./10232/00*+*((&00.00/..-...-.-+,+,,+,-++,+,-,+-,+-,-/./0/./../-,-,,,,./.01/12023222223223244345366577678667667656534334334345445445423201/121332343565565454465354343021.0/,-,++)()(()()*(()(%%$!!  ! !   "#####"#""#""#"$%$$$#$%$'('()(()('('&('%'&#%$%&%'('()(*+*,.-DA>PLHSOKVQMTOKTOJZUO[VR\WSYTPUPKSNJSOKTPLUPLUQMVRNVRNTPLUQMRNJNIEPLGQMHPKFRMISNJOIDMHCPKFSNJUPLUPLSNJSNISNJUOKWQLZSNZSM\UN^VP`XQd\Ud\UaYR_VO`WP^VO^VNbYRcZSe\Ug_Xd\VaXR_WPaYRc[Td\VbYS[SLYQJYQK[SM]UO]UO\TM[SLZRKZRL\TM^VP]UN\TMXPIUMFTLETLEQIBQICTLFVNHYQK]UP\UOZRLXPJYQKYRLXPKXQKTMGSLGUNJRKGLFBHA=G@;HA;KD?MFAHA;><9BA?A?=><:<;:998::8998987997::9;;:998998887000""!"#"''',,+00/221111/////./0/000110221332454443553553332//-$$# $% &'#)*&'(%&&#$$!!!! #!(&$&$" !!! !!"""%&& !! !!   !  !"!"#"!""!"!"##$$###"/,)>92?:4@:4?93>93>94?:4@;5B=7C=7>93<71;60:6094/94/:60:6083.40+1-)+)%'%!'$! %$"++***))*)344666565221221//.**)--,332676566++++++,-,++*&#!# #! $"!$"!*)''&$%$#++)764321(''+*)20.64265310.642843.-+&$$$$"974?<8@=9C@4,@5-B6.C8/E90F:1G;2H<2I=3J>4K?4K?5L?5MA7NA7OB8OC8PC8PD8PD9QD8QD9QC8QC8RD9RD9RC9QC8SE:SE;SE:SE;SE;SF;SF;TF4J=3J=2J=2O@6A6-0' 1(!1(!2)"3*#4+$5,%6-&7.'8/(90(91):1):2*:2*80(?83B?=445)+-(*,(*,*-/.03-/1+-.,-.,-.,-.,,--./13635846947:47:69<9;?99<@:=B9<@@E>@E=?D<>B;=B?BHADKBELAEKADK>AG<>C:69>69=7:>7;?58<9>BHDIQGLTKPYNS\MQYX[cTPNOKGNIENIEOIENIELHDLHDNIENJFQLHRMITPLWSPUQNVRNUPLTPMSOKNJFD@3+>4+?5,?5,@5-@6-@6-@6-@6.@6-?5->4,<3+;2*1+' &&(,.1.04-/225:37<.04(*-),/'(*"$'"$'!"%!!#!%($#+.2(+/&(+"#&%'+),0*-1'*- !#&(+*,1),0,/3-05.16)+/ !""  (# 5//1-.""$#%(%(,&*.%(,#&)"$(&'+**.$!"/))B<>555,,,*+++,,.../10021/10-//,.--/.,/./0/121/0/+-,))'10...,,,+,-,,-,,,+--,,-+,-,,.-,-,,,,-.-//./0./0../--.-010443565665565564343443553553665675665454454343333333343232342332221443554675898887565676565344122110..-))(&&%&&%&&%#$#"#"!"!!"! ! "#"#$#$%%&'&%&%$$$#$#$&%$%%$%%'('(*))*)*+**+**,+'('&'&()((('*+*+-,A>;MHDOJFRMISNIRMGVQKVQLXSOYTPYTOVQLTOJSNITNISNIVRMVRMQMHPLHSNJNIEPKFOJEMHCOJFPKFPKFTOJPJFOJERNJRMIQLHQLHQLGSMIVPKYRL[SM]UN]UN]UN_WP^VO]TMZQJ[RJ^UN^UNaYQbYRbYRc[Tg_Xe]V_WP_WPaYRd\U`XQ[RL\TMYQJXPIZRL[SMZSLYQJXOHXPIYQJZRLZRLYQJWOHUNGRJCQICPHBSKEVNHVNHXPJ^VP^VP_VQ`XR]UPXPKWOJVOIQJDOGBPIDQJFJD@@:6B;6F?9KD>OGBOGBLE?D=884/.*'  !"!"#""#"#$#%&%$%$$$$"#"!"!   ! ! ! !!!!"!"#"##"!! !!!##""""!!!!"!!!  !! !   ! ""!"#"#$#$%$$$# ""C@={,,+**))))---444898==<==<;;:;;:==<<=<:;:::9::9998221&&&###(('--,00/221332332332443443454554554554554665765554110''&  !$" #"   !""  #$$   """"##"##  "###$# !!%%$$$#41-?:4?:4?93@:4@;5@;5@;5?:4?:4@:4?:4=82;6094/94/94/83.73.73-3/*0,(*($#! &$#--,*+****111566565/0//0/00/,,+,,,00/443454*++*+*+,+++*'%#$!%#!'%#"  )(&)'&'%$))'54210/&%%+*)1/-31/321/.-21/43110/)('$$#752B?;C@;CA:C@;DAGC>HE@HEAEB?HD@MJFPMIQNJPMIQNITQLUQMTPLTQLWTO]YU_[V^YTXSNWRNTOKSNJXTP[WT[WTZVS[WT^YV`[WZVQUPKUQLWRNYTPWRNVRN[WS]YUZUQVRMWQM[UP^YS]XS`[Vc]Yb\Xd_[a\X\WS^YT`[Va[W_ZVb]Ygb_TOM(-#1(!5,$9/';1)>3+?4,A5-C7/D80E:1G:1H<2I=3J>4K?4L?5M@6NA7NA7OB8PB8PC8PD8QD9QD9QD9QC8RD9RD9RE9RD9RC8SE:SE;SE;TF;TF;TF;SE:TE:TF;TF;UG4K=3K=3L>3M?55+$0(!1(!2)"3*#4+$5,%6-%6-&7/'8/(90(90)8/(6.&;50EBA012()+&)+(*,*,.,.1-/2*,-+,-,./-/0,-.+,-./124725735846946958;8;?9<@8;>8;?9<@8;?;?C>BH@DJADJ@DJCGMFJQFIPACH@BG@AG?AGACI?@F?AF?AF:<@9;?>AF?BG>@E>@F?BH=@F:=B9;@8:?46:125/13/02013./0--.-.//12/13/13.02,-.-.0-././0/02.01-/1-.0./1/1313524724724747;69=69>58;46:46:47:7:>6:>69>7:>8;?69=8CE9AD7DF:LNCPQGNNCKJ@NMCLKAJH?HF>=71.#,!/%1' 2(!3)"4*#5+#6+$6,%7-%8.&9.'9/':/(:0(;1)<2)<2*=3*=3+>4+>4,>4,>5,>5,>4,=3+;2*:1)/)%"!"*,/.15,.1.03149.03)*,""##$'"$&  "%$%( $& *(',/4*,1(*.*-2,/3*-2-05)+/(*.),0*-1,/3-05,/3+/3 " "!!#"!%2,+7102-,($$#!"  " "%!"&7/.E=>?=>465566465244233232132021021/10.0/.///0/00//0/-.-''%/.,,,*++)+,*+,*,-+--,,,+,-,-.--.---,./-01/23122112111011133357678778777645323212001/121232343232232122232333232120220331341342342564776554342443343010-.-,-+))($$#   %&%$%$$%%#$$#$##$##%$&''&('%&%#$#$%$%'&$&%'('())(*)+,+,-,,-,+-,*,+,-,,-,./-.0/>;8KFALGBNIDRLGUPKVQLUPKVQLVQMWRMUPKUPKUPKXRMVQKWQLVQLOJEOJFTOKSNIUPKUPKVPKUOJTNIUPKVQLPKFLHCLHCLGCNIDNIEOIDRLGVPKWPJXQJ^UN_VO]UM^VO\TLYQJYPI[SK_VN]UM_VN_VOaXQaXRd\UcZS_WP`WPbYRaXQ\SL\SL[SLUMERJBXPIXPJXPIVNGPH@OF?RIBQIBPHAPHAPHAOG@MF?NF?QIBSKESKFPHBQICUNHWPJYRLYRMWPKSLGPIDOHBNGANFAMFAPIDLFAF@;HA>?><=<;<;;;:::9::9::9332'('$##**)0/.310320220221332443433332332332433443443432210.-,''&  "!&$##"!  !!"##!!! """     !   "##!!!!""  !""$$$""" !!&%$$#"51->82?:4=82=83?94@;5@:4@:5>93<72=82;60;60;6094/83.94/94/62-3/*.*&#   &%#,,++,+*++///344454././/.010..---,//.222444,,,,,,,,,++*)'%%"!&$"&$"" +)'-+)*(&(&%10.0/.&%$*))0/.310432/.,10.210100**)$#"1/,<:5><7@=8B>:DA9A>9B>9D@;LIDRNIQNIOKGOKGRNJQNJROJURMXUQ[XS_[V_[V\XSZVRXTPVRNVROXTQXTQXTRZUSXTQWSO[VQZUP\WSa]Yb]Z_[W\WS]XU^YV_ZVYUQTOJ\WQ_ZUZTOZUP_YU[VR^YV`[W\VR\VR\WR[UQZUQ]XT_[W_[X;41)/%3)"7-&:0(=2*?4+@5,B7.D8/E90G:1H;2I=3K>4L?5L?5M@6NB7OB7OB8PB7PB7QC8QD9RD9RD9RD8RD9RD9SE:SD:RC9SE:TF;TF;UG3K=3O@6D800(!1(!1("2*#3+$4,$5,%5-&6.&7.'7/'6.'5-&E?;A>=-./&')&(*')+*,.+-/*,.+,-)+,+-.-/1-.0+,-+,-/1324724724735836957:8;>98;?8;?7;>;>B=AG?CH?CI>BGADJCFMDGNACI?AG?AG?@FADJ@BG>@F@BH<>C8:><>B>AF;=A9;?;=B:6:>8;@7:>6:>=BH8LKDFC=5-)-!.#0& 1(!2)!3*"4*#5+$6+$6,%7-%7-&8.&8.'9/'9/':0(;0(;1)<1)<2*<2*=3+<3+<3+;2*:1)90(.($$%',.2.14.14037/26+-1%%' !#%(+(+0 "!$(!**,-16.16.16-16.16-16*-1*-1*-2),0),0),0')-$&)!"$ ##"!-'%;42>76:44711600500<67D==I@AC>>443343565575576797787676676787453/0/-../0./0./0../-""'&#$$!%%#&&$&&$&&%(('(('))(++*,,++,+,-,//.22122000///.00/110232342342443342010..--.,./-./../.-.-,.-,-,,-,+,+)*)**)++)++)**)()'''&(('))(&&%$$#"#!!"!$! '(''(''('&'&%&%#%$#$$&'&&'&&'&$%$#$#%&&%&%&'&'((')((*)*+*-.-./.-.--.-.0.131242;:6HC=HB=IC>OJESNIYTOYTOZTPWRMTOJRMHTOIUOJTNHUOIXSNYSOUPKTOKTOKXRN]XS]WR[UPXRLWRMWQMTOJOIDMGCKGBNIEOJFOJFNIERMHXRMYRL\TN]UN^VO]UN]UNYQIXOHXPH[SL\SLXPHUMFSKDTMFTMFTMGTMFPICLF@MGAKE?E@:C>9B=8?:5?;6EA=GD@GEAHFBGEBFEBFECEDBCB@CB?CB>CB>DC@FEBGFCFFCDECBDBCDBDECDECACA@B@@A@AB@>?=;<:<;9;:7;85=:6A<8=9484153/42/32.32/441330331442331342232120./../../..///0/-.--.--.-/0../.,-,+,++++,-,-.-././/./0///.00/22123112000/-.-*+*()(++*,,+--,/0.121121221121010./.-..*+*" " " ! +.-+-,&'%$%$""! !! ###$$#&'&'(''('()()))'('&'%%%$%%#%&$%%$$%$$%$%%%&&&&'&''&&'%%%$""!!! $%$%%%$%$##" ! ! !! !"!!!! !!!!!#$#%&%'('&'' !ZTNx221776887998:;:<<;==<==<==<==<>><<<;665***#""++*432654654543432432543543643543653654765765765554--,$$#  ! %$"'%$$"! !  !!!""!"" !""!!  !!!!""!!! !!     !!! !""#$$"""!!!'%$$##62.?:4?:4?:4?:4?:4@;5@;5@;5<7194/:50:5/;60;61:60;60:6084.3/*+(%$! " &%#,,+,,,---000444233-.-000010////0/./.222333,-,+,,*+***)(&$$" %#!" !! -+)40..*('&$/.-210&%$)('.,+/.-210..,10.10/220/..%%$/.+;84<:5?<7;84?<7A>9C@;GC>IEAJFBIEAHD?EA3+@5,B7.D8/E90G;1H;2J<3K>4L?5M?5NA6OB7PB7PC8PB7PB7QC8RD9RE9RE9SE9SE9SD9SE:TE:SE:TF;UGZJ>ZJ>YJ=YI=XI4L>3OA76-&0(!1)"2)#3*#3+$4,%4,%5,%5-&3*#5.(=95?>=*+-#%'%')')+)+-+-/)*,'()()**+-,./-/1,./*,-+-.02425724725735846946969<7:>7:=8;?7;?7:>:=A=AF=AG=@FBH@DJBEL?BH?AG@BH>@FADJADJ>@E@BG=?D:<@;=B<>C:;?8:=9;?9;?79=79=57:135/02-.0-.0-./-./-./-./.01/13.02.02,-/,-/,./-.//13/02./1,.0-/1/1313624735925936:58<69=58<47;46:47;58<7;?7:?6:>8<@7;?58<<@F9=B8KKANMDQPHOMELJALJCHF@B?;?843(#."0%1' 2(!3)"4*#4*#5+$5+$6,$6,%7-%7-&7-&8.&8.'9/':0(:0(;1);1);1);1):1)90(8/(-'#&(*.04/26149038-/3()-  %&)$##"(+/'*.!##%$&&'+.2/2816;37=049-05),0),1,04-05*-1%(,#$("#')-1(+/ "" &!5.,<55?99B;B<=@9:<77010./.232443554565776676575776:;9::946412112000/./-+,*" !   "! $#"##!#"!!!! "! !! !""&# "  '(')*)()(''&%&%#%$#$#%&%%&%%&%%&$%&%&('&&%%&%%&%&'&%&%%&%*+*-.,+,*()'()',-,-/.974JE?ID>E?9NHBOICWQL\VQ[UPVQKRLFQKETNHUOJWQKYSM[UPYSNWQLYSOWRMYSN]WR_YT\VPYSN[UPZUPUOKOIDLGBKFBMHDNIEPKGPJFSMIUOJVOI\UN\TLXPIUMFPHBNHCLGCEA=D@:>=:==:>>;??AA==@?<>>8::69869868767657646546546646647657757768868879979957601/2209:8=><;<9;<:<<:<=;=><=><=><>?>>?><<;:;99:8665453121/0/./---,,,***)()(&&%%&&'((()(()())())()*)**)+,+,-,,,+*+*'('&&&''&''&'('+,+./.,-,,,,,-,,-,,-,-.-.//&%$$" %#!')(()($%$"""!! !! ""!""!#$##$$%&%&'&&'&&'&&'&%&%&'&&&%''&))()*)()(%&%%&%&'&&&&&&&&&%%%$$$#$$#%&%&'&%%$""!!!! ! !! !"! !!  ""!###%&&#$$:74wm:;:::9;;:<<;>?>?????>>=<;;:998554--, ! **)221765775776775765654664664765876887:98:98:97987765110''&   !%#"&%#$#" !!""# !! !!!"" !  $%$$$$#$#"#" !! !!#%%#$$"##$$$$%% #$$"###$$!"" !!"""  """!""""!  '&%'&&73/A;5B<6B=7@;5?:4@;5@:4?:4;60:4/94.83.:60=83=82;7140+&#  #!%#!**)***...121343111--,00//0/110232///11000/+,+,,,+,,**)'%##!%#!$" '%#(%##! +)'85251/*('00.654((',+*,+*+**10//.-10.10.642421'&%.,*:73:73>;7;83><6A>9B?:GD?LHCMJFMIEKHDIEAGC>GC>GC>HD?KGBNKFOKGLHCJFBKGBKGBMJEMJEMICSNHUPKVQL\XT\XT\XU^ZW]ZWXURUQNYUR]YUYUQUPKVPKZTO_ZV_[W\XU_[W_[W]XTZUQ[VQ\WRZUQVQMUOJXRLXRMXRLVPKXRNXRN\WR^YU`[Wa[W`[Va[Wa\X`[W<51)0& 4*#8.&;1)>3+@5,B7.D8/F:0H<2I<2J=3L>4M?5M?5OA6PB7PC7QD8QC8QB7QC8RD9SE:SF:TF:TE:SE:TE;TF;UF;UG;VGYJ>ZJ>ZJ=[J>[K?[K?[K?[J>[K>[K>[K>[J>ZJ=YI=YI83EA?988*+,&')&(*(*,*,/*,.)*,&'('(()*+*,-,.0-.0+-.+,-,-/03524714625835846936869<7:=79=7;?7:>58<9<@<@E<@E;?D9=B;?E>BH@CI?BG>AF@BH?AF@CIBDK>@F?AF=?D;=B;>B=@E;=A8:>9:>79=57;57;357/13-/1-./-/0./0./0..0-././1/13.02.02-.0,-/-.0,././1.02.02-/0-/1/1313614736936936:69>7:>69>58<47;58<58<8;@8;@7:>7;?7;?48<8=B9>C7;?>CIBGOFLTKQZPT]Z\d{}YVURNKTOLRNKSOKXSOZUQXTQUQNXSPWSOTPLQMIPLITOLWSPWSPUQMRNIOKGPLHZUQ]XUYVSWSPTPMQLHPLHSOKUPLSNKNIEPKGXSNXSNYSN[VQ[UQVQLWQLZUPVQLTNJTNJQLGPJFOJFPMHNMELLCMMCMLAPODQQFRRHTUJTUKQRHPQFLMCOPEIK?JK?JK?KL@KKAJJAJH@IH@KIALJCJHBIFALHDGC?92./#/#1& 2(!3)"3)"4*"4*#5*#5+$5+$5,$6,$6,%6-%7-&8.&8.'9/'9/(9/(90(90(8/'7.'.)%%'+-04/37049+.2()-&'*""$ (*.((*!$#&)!#& !!$$$$%""(*-*.2/38/38-05(+/+.2.28/38*-2%'+#&)!"%"$'%(,$&* "!"% *$#-'&.**0....-+,+-.,1104433313325545646768978979:8686564664342120,,+                !  $%#%&%##"!!! ! !! ""!$$"%%###!$$"$%#$%###!##!#" &%"*(%/,)2/+/,(,*&.+(0-*2/,B=7MGALF@HBID?KFBPKGOJFPKGMGBNGBJD?>9463.30,<<9MPNBDC5764658:9;<;:<;;=<:=;:<;:<;9;:;>==A@=@??AA=@?;==:<<9;;:<<9<<588477477366355465465244133244233132132133133122132133132121132/10/11/12022-/.#$#575FIG@@>89767544333233234323223223223233200/..--.,+,+*+)*+)++)**)()(%&%&'&))))*))*)*+*++*++)**))*),-,,-,+,+)*)'''((')*))*)+,+-.../../../.././0//0/010))(&#!'%#&'')*)%&%"#"    ! !"!%&%'(''(('(''(''''&&&&&%''&()(**))*)'''(('()(((('('(('(('&&%%&%%&%&'&&&&##"""! ! !!!!! !    ! ###$%$#$#"#"xn111/0////./....+++&'&%%%"##!!!&&%..-543::9<<;;;::;:::9::8::8::8;;:=<;==;==<==<==<<<;987220('&     #"!%#""! """""" !"!!## !!  !! ! !!  !! ! !""   ""! !!! ((('(()*))**&''###$%%"#$"###$$%&&"## !!#$%"#$%&&%&&!""!""   !  !"""##$%% """)((**)<72A<6C>8A<6?:4@;5@;5?94<72:5083.62,83.=82=8340+&#   %#"&$"**)(((..-110121111---//.---//.011./.010/0/././00/0/***%$##! $"!#!%"!)&$'$"(&%531631,*)220655*)(/-+,+*))(//./.-10.0/-52041/(&%-+);94:73=:5=:5A>9C@;B?9D@;GD?HD@IEAKGCKGCMIDOKGOKFLHCJFBLHDQMIQNIQNITPLROKNKFNKETPKYVPXTNRMHTOJWSO[VR\XU[XTUQMPKGUPLXSPXTPVQMUOJWQM[VRZVSWRN[VS]XU^YV_[Wa]Ya]Y`[W_ZUZUO[UO[UOZTO\VQ]WR[VQ[VR]WS_ZVb]Yb\X`ZVc^Zhc_RMI(.$2)"7-%:0(=3*@5,C7.E90G;1I<2K=3L>4M?5N@5OA6PB7QB7QC8RD9RD9RC8RD8SE9TF:TF;TF;UF;UF;UF;UGYI>YI=YI=YI=ZJ>[K?[K>\K?\K?\K?\K?\K?\K>]L?]L?\K>\K?[K>ZJ=ZI3QB87.'/(!0(!0("0)"0)".' 3,&830@><212%'(%')&')(*,),.*-/(*+&''&'''((()**,-,.0,./+,-*,--/024725824725825835825758;58;69<7:>69=58;8<@;?D:>D:>C8;@9=B;?D=AF=@F>@F@CI>AG?BHBEK?BH?AGC<>C9;?:<@8:>57;47:358014./1-.0/02/02./1-/0-././1/13/13.02./1,./-.0-.0-/0/02/13-/1-/0/0313614725925926959=7;?7:?58<47;58<58<8;@7:?69>6:>7:?59=6:?:?D7:?HJ?KLALMBIJ@EE;BA7DC9HG>JHAJHBLHDKHDGD@@=99404)$0$0%1' 2(!2)"3)"3)"4*#4*#4*#4*#5+$5+$5,%6,%6-%7-&7.&7.&7.&7.'6.&5-&2-)')-+-1/27.26')-"#&$%($$'%&) !#(+/(*-  !!##!##"#$'(+/*.2*-2)-1,05-16-05),0$&*%'+"$'!#&"$(#%)$'+ # !!!%$%---,--,-,*,*)*)*+*-.-12011001/22/442775::8::7::978756466434212000.                    !# (%"(%")&#+'$,)%/,(1-)2/+51,4/+40,62.73.62-73.;61=83?:5B<7C=8C=8A<7C=8GA;IBOHBQKEPICTNGYRKYRKWPIUNHVOIPIBJC:>95+($'$ '$ -+'??=HKJ;=<5653443544653652541421333655768:::=<;>=;>>9<<8;<8;;7::5786997997987986886887:97:9577477466144033033032122022133122/11/10021132/11.00022/21/00/10-/.-//-//-//-0/"#"*+*<><897/0/./../-..,..-/0/./.-..-.-010121/0/-.-,-,*+***)**)++*++*)*)&&%&'&++*,-,,,,--,--,,-+,,+*+*+,+++*)*)()('('(((*+))*)*+*+-,,--,-,,-,./.021010222--,&$!&#!#%$'('%&%$$#!"!!! "#""#""#"$$#'(')))')('('()))*)()(*+*+,+,,+,,++,+)*)))()))()('('(('))(&'%%&%%&%%&&&'&#$$"#" ! ! ! !   "#"###"#"iaY!"""##"#"!""!"!!!! !!  #$#))(000998=<;=<;;;:::9897998::9;;:;;:;;:<<;>=;>==@?=<;:554))(   !  ! $#!!  !!!"##&&& !!###$%% !!  !"! !!!"!"$$ "" "#"#$$   !!!!"""##  !! $$$$%$###  #"" """$$#++*)))*+**++&'&"##%&%&&&$%%$%%$%%#$$#$$ !! !!$$%#$$$%%%%%!!!!"!   ! !"!""" !!"#"#$$())!"!(((,,,,-,=83A<6@;6?:5>93<72:50;61:5094/72-61,50+,)%$"  #!%#!+*)'&%..-221332222///.//,-,00//0/,,,-.--.-....//010*+*%$##! %#"  %#!%"  "! /.-0.,+*)220432..,4201/.)((.-,.-+10.10.2/.1-,'&%+*(;94:72;94=:5DA4M@5N@6OA6PB7QC8RC8RD8SD9SD9SD8TE9TF:UF;UG;UG;VG;VG;VG;VGYI>YI=YI>ZJ>ZJ?[J?[K?\K?]L@]L?]L?]L?]L?^L?]L?]L>^L?^L?]L?]L?\K?\K>[J=ZJ=YI:9977'')"$%$%'%')')+)+-)+-(*,&'(%&'&&'&'()*++,.,.0+,.*+-*,-.0213624724714714725735858;57;69<7:>69<58;8;@9=C9=B9=B7;@8C<@F<@E=@E@CI?BH?AGAEK@DJ?BG=?D:=B9;?:46:469247014./2-/0/13014/02./1-/0./1/02/02.01./1,-/,./-.0,./.02/13.02-.1.0213624736926926948<7;@7;?59=48<58<58<6:>7:>69=7:?8D7;@:?DBHOCIQJOXQU]^`hSPPMIFQMJUQNUPLRNKUPLUPLTOKTOLQLHOIEMHDMHDHC?OKGUQNWSP[WTYVRWSORNKRNKRNKOJGTOKVRNWSPVRNTOLXSP^ZV`\Y[WSUPLVPLVPKRMGRLGQLGRMIWRNYTPYUQXTPVQNROKOMIONGQQHSSITTJWVLYXNUUKSSIPQGPQFOQFLMCFH>@B6BC7GHFE:EE9HG=IH?JIAJHAKHDKGDDA=?;8=;7=:79401'"0#0%1' 2(!2(!2)"2)"3)"3)"3)#4*#4*#4+$5+$5,%5,%6-%6-%6-&5-%4,%4.))+.*-1-05*-1%'*"#&$%(%'*(*.$&)*-1),0 !"" #$#" "#%(%(,(+/+/4-16*.3*-2(,0'*.%'+!#& "% !$"%(%(,#%(  !.-0:8:232--,*+*(*)()(()(,,+00/22102012/12/44277599799777644344255233111/                    "$ %!,(%0,)2.*3/+72.:50?95A<7A<6@;5?:5>94@:5>94;61>83@;6>94=83=84=84<73=94>94@:5?:5>83C=7E?:E@:D?9FA;HC=E@:F@;D?9C>8>93=72C?9FA9B>9@;6@;6A<7>:4?;6@<7C?:FA9?:6>96?;7C>:GB?GC?D@<@<8952&## $!)'#::8@CB:=<687466355143133/11.00/212543666889;;9<;8;:699467256366244466466354244344466687687466355255133022/22/21121011122132021/11.0/-/.,.-,--.00.10.0//00,..,..,..,..-00%&&$%%9:9776-.,**))*)**),,+,.-,.--.-,-,./..0/./.,-,*+***)*+)++*+,+,-,+,+)))()(*+*+,+*+**+*+,++,+++**+*)**)*)()('('()()))+,**+*())()))*)*+*++*-.-/0/./.010010+)')&$"##'('))())(%&$#$"$%$$%%$%$$%$()(++*)**)*))*****)*),,+,-,+,+++***)()('''()(((('(&'(&(('&'&%&%&'&'''&&&#$#!"!    !  "#""###$$!!LGB!!!"#"###### !! %%%---554::9;;:;;:;;9::9::9;;:<<;<<;<<;<<;<<;<<;<<:=<;==<;:9654++* !! !!!!!!$$##""  !!!!!!"!   !!"""!""#$$#$$"##&''"##!""%%%!"" !   !!"## !""#$$ "! !!%&%%%%   "#"#$$ !! !"" !"%%%%%$##""! " &%$$##%%% $%$++*()(****,+&''"##&&&&''$%%%&&%&%$%%#$$"##!!!#$$#$$#$$"##!"""""!""  !!!"#"#$#!!! ! $%%&''*++!!!***....-,=83@;5@;6=83;61;71;61=82;6194/1-(#   !!%# $# -+)&&%,+*//./0/011..../.-.-110..-)*)+,+--,,,,,--,-,+++'%$#! %#!  $" %#!,+*+*),+)4316421/-521310*)(-,++*)/.,/-,0-+0,*)'%*)';94;83=:5?;7DA3M?4OA6OA6PB7RC8RD8SE9SE9TE9TE9TE9UE:UF:UG;VG;VG;VG;VG;WHZJ?[J?[J?[K>\L?\L@]L@^L@^M@^M@^MA^M@_M@_M@^M?^M?^M?^M?^L?^L?]L?]L?\L>[K>ZJ=XHAGAEKADK?BH=@E;>C9<@9<@:469247136014.02-/1/14025/13.02./1./1/13/13.01./1,./,-/-/1,./.02/13.03-.1-/1/1413725825926937;7;@7;@6:>58=58<47;58<7:?69=7:?8CBGOCIQJOXOS[_aiTQPKFCOJGQMJUPLTOLUPMWSOVQMTPLUQMWRNUPLPKGHB>JD@NIEOJGTPMVRNYUQZVRYURXTQTOLUQMYTQ^YV]YVVROQLHUQM\WTVROVQMVQLVQLRMGSNHTOJRMHTOKVQNWSPYURVROWSPTRMQQIQQHPPGPOFTTJVULRRHPPFMNCPQEOPFLMCCE:@B5BD7CE8EG;EF;HI=NNCONELJBIG@HF@JFBLHEGC??<8<96;85;851.,.'$2%0#0%1' 1' 1(!1(!1(!2(!2("3)"3)#3*#4*#4+$4+$4+$5,$4,$4+$2*$)*-),/,.3*-1!#% "$&)%'*)+/'*-,/3,05"!# ! !!!#%"!  #%)&*.)-1'*.%(,'*.&)-"$' "% !!#'$&*%(,$'+ -+-;9<433./-./-,-,*+*)*))*(**)--,01/12023133133176466467565422011.44144100.      !)&"1-*50-61-50,72.51,51-2/+.,),*',*(*)'('&''%''&&&%&&%%&%&'&''&&'&&'&((()*)*+*+,*,,*//,11/431652663874996:97<<9@?=AA>@@=??<<<9:97885774997<<9<;9<;9==:??=??<>><==:;;9997553653<95>:6A<9D@=C?<>:7:5251-$! $"653=??9;;466244021/11/11.//,...00254365587799587366365143/22011022144244244244244465575797587254133/22/22133243343122022022/11.10.00.00-..,--.00.00/00/10-..,.-,..,/.-//'))565665010-.,++*))()*(*+*+,+,-,+,+,-,+-,,-,,--+,+**)*+*--,--,,-,++*(('(('*+*+,+*+*)*)++*,,*))())))*)***)*)()))*))*)*+*+,*'('&'&&'&'('()'*+*,-,,,,-.,/0/,+)(%"$%$+,+,,+*+*''&&&%'(''('&'&%&%&&%)*)*+*)*)*+**+*+,+--,++*))(()(()(&''%%%&'&'('''&&'&''&'''&'&&'&''''''%%%!!!"""!"! ! !! ! $%$#$#$%$%&%641!!!##"+++110343443776999;<;<<;;;:::9898897998::9;;9;;:887221))(  &&&)*)++*+**(('&&%&&%%%$"""""" !! ##"$$#$#"!! !! """#$#$%%"###$$$%%!""%&%%&& $$$!!!!!!"#""##!"" "#" #$##$#!""######"""!""   ! "#"#$$ !! ! !" !! %&&&&&####"!#"!%$###"&&%!!!$$$**)()()***,,&''###''''((#$$&'&'('$$$"##!!! !!$%%$$$### !!$%$!"" "##!"! "#"$$$%%%""""""$%%'('+,,$%%+,+000210C>8B=7=83<71<71<72:503/+-*&'$!   $"&$!-+*''&--+//..//011--,..-+++//.,,+***---///---.///00-.-*)''%#'$#  $#!'%#/.,*)')('1/-1/./.,531421+*),,+*))0/-0.-1.,1.,,)()(&<:5?<8B?:B?:DA9B>:C@;GC?HD@HD@HD@KGBKGBLHDQMJSOLRNKQMISOKUQLSOJPMIQNISPKOMGHE?FB=FB=GB>KFBRMITPMUQMTPLUPMTPLUQMVQMXSOZUR_[Xa]Za]Z\XUVQMWRN_ZWb^Z^YUZTOZUO\VQ`[Ua\W`ZU^YT^YT`ZUa[Vf`[jeahc^c]Xb]Xd_Zb]Y^YU^ZVZUQ1)$,"3)"8.&=3*A6-E9/H;1J>2L?4NA5PB6QB7RC7SD8TE9TE9TF9UF:UF9UF:UF:VF;VG;VG;VG;VF:WG;WH[K?\K?\L@]L@]L@]L?^L?^L@_M@_M@_MA_NA`NA_M@_M?_M@_M@_M?^L>^L?^M?^M?]L?\K>[J=YH3PA6E:2;74D@>976-,-%&'!#$"$&$&(&(*(*-(*,(*,')*&'(%&'%%&%&&&''()**,-,.0+-/*,.*,-,.002503613613614714713635846947:68<69=57;58;8C8=B8<@69>7;?8C:=B;?D>AG?BH>AG@DJADK?BH>AFGI=EG;BD7DE9LKAHH?GF=EC;EC=IEALHEIEA>;7963963:741/,*+*1/.,$/"/$0&0' 0' 0' 0' 1'!1(!2("2)"3)#3*#3*#3*$3*#3*#2*#(&%$&)+.2*-1 !#!$%)),/*-1*-1-15&'*  " ! #$&' )$#%%'!$'"%("%($&* "%  # "%!$'#%)!#'%#$20200/.-+--*-.+--+,,*++)*+)*+)++*,-+-.,./-00.11/44143032032011/..,//,00---* !!!"""##!""""" !! !    !!#$##$##$##$#"##"#"!!! ! ""!%%$+*'*(&&$# ! !#"%'&)+*-.-1214548989:99:9=><@A?>?==><@A?AB??@>>?==>=>?>>?=<=<<=<=><==;;;:9:89:8<<;>>=>?==><<=<::9787776776987886665565686787887998;<:;<::;9897454742=96>:7>:7?<9;8572/2.*# 00-;>>9<<255.11+.-,.-,/.,..+--+.-022254254243032022032021/00.0/.00/22032/22033244354454676797365133022033244455454232133122.00-/.,..-//.0/-//.00.0/.0//0/-.-,.-,.-,/.,//(++12123101//0.-.-,--+,,+,++,+)*))*))**)***+*,,,+,+**),-,./.-.,+,*))(&'&%&%)*)+,+*+*)*)**)++*))(()()*)*+*)))())()(()(()(*+*()(&'&%%%&'&'(')*)+,+,-,-.-/0/--+-*'! %%%--,*+***)(('))())))))(('''&''&))()*)*+*+,+,,+..-//.,,*'(&&'%'(''('&'&%&%&&&&'&'(&(((()('('&'&&'&'('''&##" !!  %%%#$#!"!!"! ! %&%%%%$%$&'&420'('*+*'''$$$"##%&&&&&&&&%&%%&&''')**+,,./.010332665897997210$#"   ""!**)++*--,//....+++**))('&&%'&&(('%%%!!! !! ""!#"!!!   !!  #$#$%$%%%!""!"!#$%!""#$$$%% ### !"!!!!!!!!""  !!####$$!"" ! $$$!!! ! "## !! !"" !! !! !" !!  """"""&'''('#$#"!!$#"'&%$##'''$%$$$$()(()(*+**,,&''#$$&'&&(("##&'''((#$$$%%&&&&''%&&#$$"## $%%!""!!!#$$ ! %%%%&&%&%#$$###'''*++.//((()**.//210=93<72;719500,()'$*(%#!$")&"#  %#"'$"$# &$"+)(&&%,,,000010222...//.,,+110***)*)010333/00011232///*)'$"!&$#"$! $" %#!20/)(&('%.-+-,+.-,42110/*))+,+)((..,1/.31/31/.,*)('=;7B@;EB>FC>C?;@<7@<6D@;IF@NKFQMIPLGMIEKGCLHDNJFPLIQLHQMIRNKQMJSOKTPLVRNZVQZWSUSMSOJRNIPLGPKGRMIUPMVROUQNVQNYURWSPVQMWRMSNJNIEYTP_[W_ZW[WTZUR[VR\WT]YU^XT^YT`[Uc]Xd^Yd^Zb]Xa\W`[W_YU]WRc]Xgb^e`[d_Zb]Xb\Xb\X^XT\VQ]WRC<8(1( 7-%=2)B6,E9/I<1K>3N@4OB6QB6RC7SD9TE9UE9UF:VF:VF:VF:VG:VG;VG;WG;WH;WH;WG;XH[J>\K?\L?]L@^MA_NB_MA_M@_MA`NA`N@_M@`NA`N@_M?_M?_M?`N@`M?_L>^K=^K=_L?_M?^L>]K>[J=ZH;WG:VF:UE9TE9TE9SE9SD8RC8SD9TE:UF;UF;UF:TE:SD9RD9PB7O@6O@5M>4RE;<86---%%& "#"#%#%'%')%')&')'(*&(*')*'()&'(&''&&'&&''(()*+*,.+-/+-.*,-*,.-/202502502503613613613635836947:69=69=47;58<8<@9=B8<@7;@59>6:?8;A9BH>AG@CJ@DJ=@F=@E59>48<47<7;@69>7;?847;:>D<@G7;@?DKDJRINVRV^ghqWTQNJFRMIRMIVQNYURZURZVRYURVQNSOLTPLSNJOJFLGBOJEOKFKFANIEWSO[WT]ZW^ZWXTPSOKTPLVRNWROUPMSOKUPLQMILGCNHDVPKXRL\WR\WSWRMTOJUPKXSO[WS_[X^ZWWSPWSPTRMQPIOOGPPGPOGPPFRRIPPEOPEPQFMNCLMCNODKLBJLAEG;CE9EG?2CD9CC9ED;FE=EC=JFBLHDHD@@<9<84;95:750.,)((/0/*++3103*&1$/!.#/%/&0& 0& 0' 0'!1'!1(!2("2)"2)#2)#2)#2*#/+()+/,/4'),"#&)+/-04)+/+.2(+/ !!  !%)#*#*# %!  ! !! !!  ! "!#"!##!%$"&%#""  ()(()(*+*+-,+--,.--/.-/.,.-.//021243676566466455454465465354243343232021.0/0212433433546868988:99;::<:8:9799465354143132011121244243244254133/21/11/11010120121122466476576798899687576354010*++*+*+,+,-,-.--.,-.-01/231554675898==<<=;:;:<<;==;9:878678689677467577667656545545556567656545344345445467678689889856533333222112023112123134334345367656556556523231/841841630;85:7462.1-*"+*'8;:7::034+..*,,*,,+--*,,),++--.11/21/11.10.10/11/21.11-//,...00032/22-00/122445878;:787576354033033254466476465354344132/10-/.+--+--,---/.-//,/.-/../.,-,++**++*-,-//,..23245433200/-.,-.-./.,-,*+*%&%&'&((('('()(***+,+***,,+--,**)()(''&$%$#$#&'&**))*)))()*(**))*)()()*)+,+***((('('()))*)*+*+,+()(&&&&'&()()**)***+*+,+-.---+1.+&$! $$#,-+*+*))('''((''(''(''('%%$%%$&&&&'&)*)*****)--,..-,,*((&%%#')(*++*+*)*))*))*)())()((*)'(''''&('((('('### !    "###$##$##$#"""#$#%%$&'&'('**)000,,,+,+)*)'''#$#"""#$$%&&&''&&&&&&&&&&&&&'&%&&%%%&&&&''  %%$--,,,+++*++*++*++*))(**)**)))((('$$$!"!!!!##"#""!! #""$$###"  ! ! ! ! !"!"""!!! """###"## !!#$$!"" !!#$$"## !""!"!""" !!!#$$!##!!!"""$$$### !! ###!"" ! !!   !""#$$!"# !"" %%%*+**+*()('&&'&&#""''&&&&%%%'''()(*+**++())((('((&''#$$()(&''"##$$$'(('((())&&&$%%!!!""""""!!! !!!!!"##&&&###%%%$%%'''())&&&'('+,,.//***))),..420:503/*-*''%"! -)$0,')&#%#" !(&$)'&$$$+++/0/000122010///,,+110)*)''&-.-232010000111-..*)'" $"!" (%$&$"(&$!0/.('%&%$**(,+)-,+/.--,,(('*++)((.-,10/0.,/.,.,+('&:84CA9B>9EB[K>[K>\K>]L?^M@^M@_N@_NA`OBaOCaOBaOAaOBaNAaOAaNA`N@aOAaNA`M@`L>_K=_K>_L?_M?^L>]L>\K=[I59<47:59=859>6:?8;A7;?8;@;?D=AG=AF@CI@DJ=@F;>C:=B:=B947:136136025.03.02.02/25/24/14/14/14136258035/13.02,.0-/1/03./1.02.03-/1-.1.0302524736936:36:59>86:>47<47;7;@7;@8CJEKSHMUUYalmvVSOTPLTPMTOKVQMSNJMHDQMIXSPUQNRMIRMISOKRMJQLHRLIUPLSNISNJXTPZVSZVS^ZV]YVYUQXTPZVS[WTZUR[VS\XTSOKKFBPKFXSNYTO\WS`[W\XTYTQZUQ\WT\WT^ZX_[YYUSXTRRPLNNGNNEMMDNOFLLBRQHRRHPQFPQFMNDLMCLMCIJ@JK@GI=GI=HJ>FG;?@2@A4?@5DD:FE>FD>IFBGD@C@=?<9;84963863/,*))).//*+*3441224214+'1".-".$.%/%/& 0& 0' 0'!0(!1(!1("0(!0(!.($,.2-04$%( !"$&)+.2/38-16-05-05! !&!'!( ("$##"*%%'"".,+.-,**(..-./-/0./0...,+,+,,+*+*+,*,-,././0/12012123223212001/01/010010121120121132021/0/0211211320331552556998::4652434659:9;<<9;;577466344344355244353353354021.0//0/231242231242454686798677122021/10-//-//-0/.00011033133133033/22.00-//,-.-///10,..+--,//132344466355133022.0/-..+,,++*+,*,,+,,+*+*++*,-+..-/0//0/1115656766658877875644432314526746655654544544546766769:9;;:9:8786775564665776787675443010/0/01012034334323223223334245345466657633300.30.2/,2/,63041.1-*.*' )'$576578023*--)++*,,),+(++(**)++,//-00/11022/22/11/11.11,//-0//10/21.00.01033355465798687343132/22133144143243243132021.0/-//-/.,.-,.-,..+--+-,+--+-,+,,)**()()**)++-/./10121120/0///.010/0//0/-.---,**)'(''''&'&'('**)+,++,++,+++*((&%&$%%$#$#"#"$%%()))*))*))*)+,+,,,+,+*+*--,--,++*)*)******)*),,,++*'(''(')))+,++,+)*),,,..-,-+.+('$! #$#,,+*+*((''''(('))(&'&&&&$%$$%$%&%$%$''&&'&(('**),,+--,--,**))*)*+++-,+,++,+,,,+,+*+*,--+,+)*)()()*)()(&'&"#" !!  ! !"!!"!!"!"#"$%$%&%&('()(&''110//./0/.//'('#$#"""!!!!!!###%%%%&&%&&&''&''  ''&--,,,+++*+++..-..-,,+--,,,+'''###!! ##"######!!!!!!"""##"  ! !!     ! !"!   """###"##"##### !!"###$$ !!###"#" "##$$$!""!!!"#""#""""#$$#$$!""##"$$$"""""""""""" !! !! !! !!  !!"##"##$$$"""!!!''')**+++)))&&%&%%$##'&&&'&&&&'''*+**++*++)*))))()(&&&###&''&&&"""#$$'(('(')**%%%$$$!""!"""##"""!"!"## !   !!$$$'(($%$  ""!&''%%%&&&'('%%%&''---/00**)$#"('&*(&'%"%#!(&#'%"! $" &$!-*')&#.*%0,'%""! (&%"!!'%#&&%&&%+,+././00111010...++*./.))(&&&+,+232111/0/111,-,,*($"!%#!" )&%)&$+)'" /.-('%%%#((&-,*-+*,+*+*)'''((((''..,431/-,+)),,+)((873@>9C@\K?\K>]K>^L?_M@_M@_N@`NAaOBaOBbPBbPBcPCaOAbOAbPBaOAaO@`N?`M?aN@aN@aN@aN@`N?_L>^K=\J=[J4OA8+)(!#&#$&#$&#$&#$&#$&%&(&(*(*,(*,(*+&'(%&'%&&&'(()**,-+-/+-/*,.*,.,.0036/14/25/2513603603513625836958<6:>58<47;6:>9=B9=C7;@7;@69>69>6:?7;?6:?7;@:>C<@F<@E>AG?CI=AG;?D:=B:=B9=A:>C9=B8C9=C7;@6;@48<48<7;?9=A8:?E7;>;7;85:74964853.,),,,/11+,,455333233.///-,.#0 -,!-#-$.%/&/& /& /' /'!/'!/'!2+%./1,04&'* "#&+.204915;04915;&')  "$%%$$*# '!"!"($$'""& )%$865CCAEECGGEGGDEEBEEBEEBCCABB@BB?AA?@A?AA?AB@AB@BCACECCEDCECDFEDEDBDBBDBBDCDFECFDDFEEGFDFEDGFEGFCED798+..+./,//3545772430211212435778::566233011/11022011010010132/00+,+,-,./-./.01/121121343465354,..,.-,.-+--,/.-//.0//10/11/11/11/21/21/10.0/+---//.00-00,/.,...00133132.00,..,..,...0/,.-()()*()*)))(**)*+),,*,,*,-,,.-/0/23234334345445423212000/2217768988987876766768878888989989:8887776665565665675454343221010021121332243021.00.0//1001/010354454222//..,)/,*/,*1.+1-*1-*3/,"'%"454466/11*,,(**(+*(**'))&)((**+---///01/12/21/22022033032.00.0/.0/-/.-//122243122021243133022/21032022022/11.00.//-/.,.-,.-,..,--,.--/.,.-*,+*++*,+*++(**())(**(*))+*-..!""01///.--,+,+-.-..-./.-.-++*)*)))((('&'&&'&()(*+*++*++***)&&%"#!#$##$$#$#&''*+**,+,-,,-,,-,,-,+,+*+*,-,---++*))()))()(()))*))*)()(()('('((()*)*+**+*,,++,*)'$%" #$#*+***)'''''&&'&()(&&&&&%%&%'('*+*''&(('&'&&&%))(,,+--,-.-,-,+,+,,,,,,,,+,-,..-./.-.-./.,-,)*)()(()('''%&&#$$"## "! !"!!"" ! ! !"!#$#$%%()()*)"$$111222233111)))$%$""" !    (((*+**+*,,+..-//...-,,+***'''%$###"$$$$$##$#$%$###""!""""""!"!!!!   !!!!""!"""##"## "##&'&!""""""""!""###$$$"""!"!#$$"## !!"#""#####$$#%%$$$####!!!"""!!!!!! "## !! !""#$$ !""$%$!!!!!!%&&''')))&&&$$$$##%$#'%%''&()(((()*))))(((&'&'((())%&&"##&'&&''!""##$()))))())#$$$%%$%$%%%&&&%%% !!$%%%&&###"#"!"!#$$)**(((#$#"""$$$&''%&&%&&&''#$#$%%+,,...++*#" *'%)'$'%"%# !  (&#-*'0-*3/,+($,($/+&" ! &$##! #!&$#('')*),-,./.011011/00---**),-,**))*),,+332111-../00+,,+*(%#!%#"#! '%#)'%-+)! 321.-+(&%)(&0.,0.,-,+-,,)))'&&'&%//-7641/.('&**)**):85EC>B?;GD?JFBKGCMIENKGLHEKHDNKGQMIOLHMJGJGCIFBJGCLHDOKGROKUQNVRNTPLTPLQNIPLGPMGOLGVQM\WT^ZW\YVYVRXTQXTPXSPTPLTOKUPLWSO[VR]XT[WSVRMRMHVPK]WS`[V^YT_YS`ZU`ZUa\W^YT]WRb\Wf`[b\W`ZU_YT]XS^XS_YTa\Xd`\b]Y_ZV^YT^XS]WR_YTa\XQKG)3(!9.&@4*E9.I<0M?3PB5RC7TE8VF9VF9WF9WG;XH;XH;XH;XH\K?]L?]L?^M@_NA`NA`NA`NAaOBbPCbPBbPBcPCcQCcQCcPBcPBbOAaN?aN?aN@bN@bN@bOAbO@aO@`M?^L=]K=\J<[I4O@6@61 "!"#!"#"#$#$%#%&%'(&(*(*,(*,')*%''%&&%&&'())+,+,.+-/+-.*,.*,.-/1137/25/14/2502602502514735946:59=69=58<47;7:?9=B9=B7;@7;@6:?7;@7;@6:?6:>6:>9=B<@EBH=@F;>D:=C9=B9C958=58=6:>9=C9=B9=B9=C59>48<DCIPINUX[cz{{{RNIWROPKHPKHPLISOLVQNWSPWRPTOLRNKRMITOKYTQXTQOJFMHDPLHNJFPKGWRN[WS[WTYURXTQ\WTYTPVRNTOKWRO[WS\WT\XT_[W_[V[VRUPKUOJYTOZUQXTPVRNXSO[VR[VTWSQROLNLGKJBKJBMMDOOGNNENNEQQGOOEIJ?EF;IJ@JKAHH>FG=IKAIKAIJ@FG;8<:6;96:850.,...022+++344333121*+*,--&'',+*,$"-,+,"-#-$.$.%.%.%-%-%(%$*,0(*.#$'"#%!#%)+//3826<.27049'*. ! !&% "# %("!$("!+&%'" '! $642KJHQQNRRPTUSUVTUVSSTPSTQUVSTUSSTRRTRUWUSUSPQONOMKMKMPNORPOQOMPOPRPRTROQOOROORQNRPMPOMPNKMLHKJILKILKFHG<><.10+--+--.0/.00-/..//122243355687233/01.//.//.0/.0/-/.,.--//-/.*+**+)*+**,*-.-021232343232121-/.,..,.-+--,--+,,)+**,,+--+---///22.11/11/11-//-//.//-0/,..,---..133354021-//.0//11/21021+,,++*))(&'%&&%&'&(('()'()()*)./.1211321213434553432212212325547768989:9998998998898787786897886554554354354565454343231010121120010/10./.,---.-./-/0.00/232221/0/--,,*(1.+2.,2/,2/,3/,51.# $"231244.00*,+'))')(&((&((&'''(()++,../11/11/11/21022022/21.0//00/0/-/..//122132/11.10/22022/21/11033011/11.//-//-..,.-,--+--,.-+--,.-,.-+--*,+*+++,,***())')(')('((&(((**!"!+,+,,+**)**)++*,,+*+**+*'('&&%'('''&&'&&'&&'&''&''&''&**)**)&&%$%$$%$%&&(*)+,,-.-,-,+,++,+,-,*+*)*)*+*+,+***'('&''&'&&'&&('')('((()('(''('()(*+++,++,++,*('$&# %&%)*))*)''&&&%%&%'(''('((''('&'&''&&&%&'&'(&''&()(++*+,*,,,,,+,,+,,+,,+,,+--,..-/0.//.-.-++*()(()(&'&%%%$%$"#" !! !  ! !  ! ###&'&()(#$$121111/0/,-,)*)'('%%%!!! #$#--,//.././/...-+,+()('''(('''&''&&&%%%%&&&%&%$$#"""###$$$$%$"""   !!!"""$%%###  ! &'&#$$ !!!"""##%&&$$$!""#$$"""   ###"#"""!""!"#####%%%######  ###""" !!"##!!!###$$$"##$%%&&&""!""!%%%%%%((($$$!!!#$#&'&&%%%%$((''('())()((((()('((&''$%%"##$%%"## #$$*++*+*'((&'''('&''(((()(&'' !!  !! #"!(&$*&"*&"+'## " %#! #! !! ))(-.--.--../00/00,--++*'('*+*++*./.00/453000./.010,--.,*'%$#! " %"!'%#.,*&#"43231/,+),*(/-+20.10/0//+**'&&'&%.-+4311/-)'%+*)--,653EC>EB=IFAHEAIFAJFBJFBHD@HD@KHDLIEKGCIEAEA=EA=FB>JFBMIEROLXTQZVSZVRWSOWSNURMRPJRNJTQMTPMVRNXURVSPVRO[WS[WTUPMTOLXSPYTPWRNZUQ`\Xa]Y`[Wa[Wa\X^YUYSNZTO[VQZUPZTOYSN[UP_YUe_Zfa]e`[d_[c^Yd_Zd_Zd_[e`]d_[b]Yb]Xc^Yd^Ye_Zf`\b]Y6-)/$8,$?3)D8-H;0M?3PB5RC6TE8UF8WF9WG9XG:XG:XH;YH;YH\K>\K?]L?]L@^M@_NA`NA`N@`M@aNAbOAbPBcPBdQCdREdRDeRDdQCdPBcO@bN@cO@bO@bO?bPAcPAbOAbO@`N?`M>^K=]K=\K=[J3N@7*'% !"!"#!"#"#$#%&%'(')+(+-(*,&()%&'%&&'(()*,*,.+-/+-/+,.+,.+-/.03036/25/15/2602602603625836947;69>69>59=48<87;?6:?6:?69>59=8BH=AG;?D;>C9=B8;@7;@9=B9=B8<@58<258025036025/14.03.13/2402513614714736:36:035025/24.03025136036025/14.02.0202524736936:36;47<:>D9=C6:?59>6:?59=48<848<EF:HI?DE;AB7AC7AC9DG=JLAJK@LLAMMCHI=EF;GG>GF@HFBGCAA>:<96;84;86:75/-+./.011)**122222000())...()(*++'(('&%/'%,,*+ +!,",#,#,#,#*$!)+.+.2*-1'),"#&"#&')-.1637=,04,/4),0 """#""$ )'&@A@UWUVXVSUSSVTSVTPRPMNJMNINOLMOMJLKGIHGIHJMLIKJEFEEGFBDCCEDFHGEGFDFECEDDFDCDCDFDDFDACA@B@:<;:<;>A@=?>:;9021)+**,++.-,.-+--,../22133132132.//-..,...//.0/,.-+,,*,+*,++,+()('('(*))*)-.-021454454010/00-/.,.-,.-,.-,--+--+,++,,-..-/..///10,//+..-//-0/,..-../11/01/11/11244344133/11011022022/11*,+**)**)((''(&)*(**))*()*(,-,342565454233565787565454665786998998998887786897998787676665776886442332343243454454344221/0/00/01/./.-/.+-,*+*++*,-+..--.-//../...---,,*(2.,2.,1-*2.+2.+2.+" !/0.021-//*,,())'((&''%'&%'&&'')+*,../10/11.10/11022.11-00.00/11/00-0//10121131021/21/11/11.10/10022022/00-..,..,/.-/.-.-*,,+-,*,,+.-,.-,.-*,,+,,-/.)**')('((%''%&&$&&%&&!!!'(''''&&%((())(+,+)*)))(((('('+,+**)()('('%&%&&%&&%%%$'(&**)()'&'&$%$%&%'('()(+,+,,+++++++-.-*+*((()*)*+*()('('%''%&&%&&&'''('&'&&&&&&%&'&'(')+**+*+,+*+*('%'$! $%$()(**)&'&%&%%%$&'&''&'(''(&()())(''&%&%'(&&'&'(')*)*+**+**+*+,+++***)**)+,*+,+,-,--,--,+,+'('&'&$%$"#""$#!"" !! !"!###$%$ !232/0/--,***)*))*)&&&!"!   ))(//.-.-+++)*)))(((''('((')*)(((&&&%%$%%$%%$$$#""!   !"" !!!"""#$##$$ !!#$#!#"!""#$$#$#$$$#$$#$$#$$#$$  ! #$$!""#$$$$$"""!!!"""   !!%%%""!###%&%%%%&''##"!""%%%$$$#$#$$$%%%&''&''&'''('$%%###!!! !!!""  !""  !"!  $#!'%#)'$(%!# +)&0-*-*'  %#!'$# ,,,010000./....../,,,*+*''&**)+++00/110555000/0/233----,*'%$!!$" %#!,)(&$# 21020/,*)**(-,+/.-432432,++&&%&%$+*(20.1-,*'&,+).-,531DB>EB>HE@GE@KHCJFAIFAJFAJGCKGCGC@FB>FB=FA=GC>JFBHD@D@2OA4RC6TD7UE8VE8WG9XG:XG:YH;YH;YI[J>[J>\K>]K?]L?^L@_MA`NB`OBaOAaOBbOBcPBcPBdPBdQCeQCdQBdQBdPBdPAdOAdPBeQBdPAcP@cPBcPAcPAbO@aN>`M>_L=^K=^K=]K=[J3PA7@60!" ""!"#"$%$&'&(*(*,(*,')*%'(%&&&''()**,-+-/,.0+-/*,.+,.,.0025/25/15/2503603603613725936:58<6:>6:>69=69>:>D:?D9=B9=B8<@6:>7;?6:?7;@69>59=7;@:>C;?D:>C=@F=AG36:036036026/14.03.13/2502513614703736:36:136025025.13025147147036/14.02.0202524825936:37;26:86:?59>47;8DCIPINU`bjiggYTOYTPVPMTOLSNKRNKUQNXTQVQOSNKSNJOJFLGBID@KGCTPMWTQTPMPLITOLXSOVRNSNJPKGOJFRMIRMIRNJZVR[WT]YU`[Xd`\ea^d_[_ZVZTPXSNXTO[VS[VS[VRZUQZVR\WT[WTWSPOMGLKCKKBLLBKKBII?KKALMDMNDMNCKLAHJ?BC7BC7FG;DF:EG;KLBNODNNCLK@KL@MNBJJBFD?CA>B>@??A@ACB?A@<=<=?>>@??A?DECGHEDEC@A??A?>@>=?=;=<9;:8:9686576798;=<>A@@B@=>=232(++*-,*,,+-,*,,,...11/11/10021.//,.-+,,+-,,--+,,*,+*,+*+**+*()(&(')**)+*,.-/0/121132.0/021/11/11/11021/10.0/-..+,,-/..0/-///00.00-00/11132022022244022/01/00122022/11.00/00011022/11+--))),,+,-+*+)+,+,-,,,,+,+--,5547876764555657775655648979:8997886675564353565887776564453554664332121232343222232121.//+,,+,++,++,+-.-+,+))())(++*..-./.-.-,-,,-,-.-+*)0-*0-*/,)3/,2/,1-+" ,-+.00+--*,+(*)(*)&(($&&$&&&'')*),---//.0/-/.-...00-//,/.,...//.00-0/.11133143133133-00.10/11021/10032021,.-+.-,..,.-,-,*++*,+*,++-,+--+--+,,*,,+,,'))&('%&&#$$"$$#%%"##!"!%&%$%$$$$))(++*,-,*+)()('('(((***)*)''&&&%$$#$%$%%$%%$%&$((''('&'&%%$%%%%%%&&%(('**))*))*)*+*(((&'&'('()(&'&%&&$&%$%%$%%%&&'('&'&%'&%&%&'&'((*+**+****)*)''%(%" "#"(('((''(''('()(*+**+***)**)**))*)(('$%$$%$$%$$%%()(*++*+*)*)**)***))())(++*)*())(++*,,+++*'''%%%###!"!!!!!"!!"!!!!  """$%%//.......,-,+++()($%$!!!!!    !!!--,./.***()()*)*+*****+***)((('(''''        !!  ! """"""   !! $$"""!$$$&%$*'$# ",*'63/52.1-( %#""   ..-.//000000/00.//+++,,+()(,,,--,/.-//.332--,---122-.-+*(#! '%#(%$&$"*'%$"!00/20/-,*+*(.-,//.876:980/0))(&%%)(&1/-0-+*'&,+)++*//-@?:DB=JGAHE@IFAKGCMIELHCJGBKHCJGCKGDNIEOJFNJELGCHC?D?:EA[K>[J>\K>]K?]L?^M@_NA`NA`OAaOAbPBcPCdQDdQDeRDfRDeRCfRDfRCfRDfRDfRDfQCeQBeQAdQAdPAcP@cPAcP@aN?`M>`M>_L>_M>_M>^L=\J<[I;YG:XG:XH;XH7;@7;@7;?7;?;@E;?E9>C9=B7;?6:>8;@7;@859=7;@9=B:?D:>C<@F>BH<@F<@F;?D86:?6:?47<8;@FCCIPJOWdfnecbWSNZURXSPSOKPKHQLIUPM\XUZVSUQNSNKQLGMIDKFAKEARMJXTRUROTPMVROVQMUQMQMHOJEQLGOJEOJFOIEVQM\WT`[X`\Xa\Ya\Y`[W`[W\WSZVQZUR\XT^ZV\XTZUQXSPXSPWSPTQMNLFMMENMEMMDLLCJJ@KKBLLCLMCKLBKLCIJ@DF:EF;HI?HI?HJ?NPERSIRSIKK@KK@NOEJKCBA<>;8>;8?;8<95;95:85641.-*,--011())/00121-/.(((---)**)**(((%&&*++$%%&''))(#&+)(((('!%'*#%'$%'')+(*.),0+.2),0%'+!#%'*.$'+#!"676BCCEGFCFEACBBCBBEDDGEEHGEGGEHGEGFEGFHJHGHGABA=?>=>==?><>=;=;;>@>=?=:<:8:98:98:97976865767989<;>A@@BA354+-,+--*,+*,+)++)++,..-//-//.00-//-//-..,..-...0/-/.-..,.-,.-*,+)***,+*++,.-021021032.10.10.0/021021022/11.0//00.0//21022/11.00,..,../00021011011132132022/00/10.10.00-00-00.00/11022,..**)..-..-+,++,+,-,./../.,-+00/565565454444555565565887676443343343132010121454554342231232232121010121232221010./.+,+)*)(*)()((*),-,+,+()(()(*+*..-/0/.//,-,-.-/0/--,.+)0,*/,)1-*/,)-*'")*(-/.*,,)+*(*)(*)'(($&&%&&&('(*)*,++--+--*,,*+,+--,..,..,..-//.00-00-0/033244243243-0/.0//11/11.//.0//11,--+-,+-,,--,-,*+*)**)**)***+++,,)+*)**')(&('&((%&&"$$"###$$!"" ! $%$&'&$$#%&%))(++*++*))(''&&'&'('&&&$%$$$#$%$$%$#$##$#$%$%&%&'&&'&$%$$%#$$#$$#&&%''&'''''''('&'&$%$%%%$%$$%%%&%$%$#$$$%$$%%&'&%&&%&%$%$$%$&&&'('()(()()*)))(-)& "#"))()*)*+*&'&%&%()(()(()((('()(&'&&&%$$$$$###""##%&%'(''('&'&'('))()*())())(&&%$$#''&++*++*''&%%%##" !   ! !!!""! !"!!"!!"!"#"$%% "---,-,..---,,,+()(%%$""""#"###   $%$/0/-.-,-,..../.,-,+,+&&&              ! "##$#"&# -*'95274061,0,'   %#"" $#!00/))),--.//121122-.-///++*..-0/.00///.221,,++,+010,,,*)('%$"!)'&+)(+(&'%##! ,,+31/.,+))'.-,1/.764:98211-,,*)(+*(1/-1.,,)(.-*,+*.-,=;6CA;KHBLICLIDOKGPLHOKFNJFKGBKGCOKHSOLSNKRMJOKGJEAFA;EA[K>\K>\K>]L?^L@_MA_NA`NA`NAaOAbPBcPCdQCeRDeRDfRDfSDgSEgSEgSDgSDgSDfQBeQAePAePAdPAdPAdPAdPAcO@bO@bN?aM>aN?aO@`N?_M?^L>\K=[J4RB8;3.!##$%$&(&(*'),')+&(*%'(%&'&'))*,*,.*,.*,/+-/+-/+,/,.003503503603614714714814747<6:>7;?7;@9=B8=B859=7;@7;@858<7:?9=B;?D:>C<@F>BH<@F=AG=@F:>C9D87;@6:?48<7;@8;?F;@F8=BCHOKPWiksVSNQMHRMIRMISOKPLHSNKWSPZVTZWUXTQVQNUPLRMIPKGOJFOJGQMJUQOUQOSOLRNJTPLTOKQMHSOJRLHRMHRMHUPLZVS`\Yb^Zb^[a\Xb]Xb]Y_[W^YV\WT\XU^ZW]YV]YV]XUWSOVQNSOKMKENNFPPHNNFLLDLLCKKBJJAKKAJKAKMCLMCHI>FGMOERSJQRHQQGOOELLBGH>CC:>=6<:6?<8A>:>;7:7485241.-+(+++/00'((,--/0/.0/()),-,)**)*****&''*++%&%'(')**   **(''&#!""$' "#%),/+/3*-1')-&(, "$ #%#%) //.;<;ADACEDCFEDFEACBABAACBADCCFEEGFGIHFGFDEDEEEFFEACB?@?>?>>?>;=;8:88:8=>=?@??A?ACA@CA=?><>=<=<8986767988:9787687686676797@BA243.//-.-*++(*)(*)())*,,,...00/11133133243122011021/10-/.-..+-,*,+*,+-..,--./.132243132/10.//.//233354244243/10.0//10132132032/11+--*,,,--.//011121232232021.00.00-//,//-//.11/11022133.//((',,+//.120010/0//////...-//.34355545456556577689899855312//0.01//0/-.--.-/0/01001001//0/010010/0/././/./////.,,+*+*((('('&'''('./.-.-*+))*(*+*,,,121120./--.-010..-*'%,)'-*(0,)-*',(%"''%,.-*,+(*)(*)(*)')(%'&%'&%''&(((***++*++)*+)*+*,,*,,+-,,.--/.-//,/.,..022243243022-/.-/..0/.10-..*+++,,*,++,++,,,-,+,+)*)())(*)(*))***++)++*,+')(%'&&((&((%&&#%%$%%"## ###%%%"#"#$#$%$'('**)**)'('&&%&'&$%$"#"!"!#$##$#"#""#"#$#"##$%$%%$$$#"#!##"$$##$###"$$#$$$%%%%&%$$$$$##$##$#%&%%&%%%%$%%#$$$%$$%$$%%%%%$%%%%%&'&'(()*))+)**).*( #$#'(&))(**)&&%##"%&%&'&&&%&&%&&%$$###""#"$%$%%$%&%$%$$%$%&%$%#&&%'(&(('''&%%$ ""!((')*(''&%%%$$#!"!   !! !!!  !"!"###$##$#$$$!##./../....,,+,++++*(((%&%&&&$$$   *+*000000...()( !        ####$#####$#$$$$$$$%$%%%%&%%%%$%$()(*++ !!     """##"#!30,;84;73:5/72,.*&$"! (&%200(((+,,...232445//.010,+*1/.30/321//.221..-,,,122-.-+*)'$##! )'&+)(,*)%#"%"  ))(210.-,('&-,*31/531875200-,+-,+/.,32041/-*),+***))('=<6CA;KICPMHQNJQNJRNJPMIOLINJFMIEMIFPLINJFLHDJFBHC?FB=JE@KGBJFAGC>GC>LHBSOJWTOYVR[XT^[X^ZWZURTOKRNJTPLWSOWSNWRNYUQXSPWROVRNYTOWRMSNJNIEOIEUOKZTOZTN]WRb]Xc^Y_YT]WR]WS`[Vc^Zgb_kfcjead_\gb_hd`gc_gb_fa^e`\e`\e`\ic_ic^f`[gb]ZTP-!5)!<0'B5+G9.K=1O@4QB5SC6TD8VF9WF:WG:XG;XH;YH;YH;YH;YI\K>\K>]L?]L?^M@_NA`NA`NAaOAbPBdQCdQCeRCfRCfSDgSEgTEhTEhTEiUFhSDgRCgRCgSDfRBfQBfQBeQBeQAeQAeQAePAdP@cO@cPAcPAaO@`M?^L>]K>\K>[J>ZI=YHD<@F:>D9>C859=89C<@E>AG<@F<@F=BH;?E9=B:>D:?D836:25925914803702614825825925925947;59=36913513502513636936:369147/14.1302524836947;47;36;6:?:?E87;@59>48<7;@:>D:>D9=C8CBGNLPXsuSPGQLGPJFQLHVRNWSPUQNPLILHERNLWSPZVRXTPQMIOJFQLHNIELGCQMJQNJMJFPKHSOKTPLRNJTOKUPLVQLXSOYURZVS^YVa]Z_[W_ZV`[Wa\Y`\X^ZV\WTYURWSPYUR]YV]YVZVRYURXTQQOIONFPOHNNFMMDLLCII@II?JKALMCLMCMNDJK@HI>EGLNDPQHKKAFF:@=:;7452.63/52.-,(,-,232*+*-..122011*+*.//*++)*)+++%&&+,,'((())+++   +*'&$!"$!"%"#&*-1+.3'*."$'"#&!#!   ))(554?@>?A?ACADFDDFEDFEBDB@A@?@?@BBBDCBEDCEDFGEEFECDCCDCABA?@??@?=?=:<;8:87979;9=>=>@>?A@>@?;><:=<9:9676686798787565576686686786:=;>@?021.//./.-.,)**)+*)+*,.-+,,*,+-...//.0/011133122021021010010-..+--+-,,..,-,,.-010354465354233243353354244133/10.///10021132244/21,..*,,*,,,--/00332231222011.00,//-0/,//,//022244244244/00()(**)+,+//.//.././//-.-,,+..-010121343454343564897887331..,**(,-,-/.-.--.-./../..0//0/.0..0/./.-.--.-,.-..../.,,+***'('''&%&%%&%*++-.-,.,+-++,++,+-../0/010010010./-*'%+(&,)'0,)/+(-)&"&&#,.-*,+*+*)+*)**'))&('&''%''')()***++)++)***++*++)+*)***,,+--,..,.-+,,.//011021/10,.-,--+-,,--)**'('&''())*+*+,++,,)**')(')()**(**(***++*,,+,,')($&&#%$$%%$&&#%%$%%$%% """$%$###!!!!! #$#'('))(''&&&%%&%##"!"!  ! ! !"!"#""#""#"##""#""#"""!$$#$$# ! !! ##"%%$%%$######"#"##"$$#%%%%&%&'&&'&&'&%&%&'&'(''('&'&()(+++,--,--****(% #$#()(()())(%&%""!###$%$$%$%%%%&%$%$"#!!"!"#"%%$%&%$$####"##!"!"#!%%$&&%&&%##"!! %&$''&&'&&&%%%$#$# !! !! !"!""!!"! ! ! ! ! """####$##$##$#011/0/-.-**)**),,+*+*"#"   """!!!       "!  )**)**(((()(()()))*++*+**+**+++++-..-.."##          !!"+)&:73;73>93;6072--)$"  $"!1..(((,-,---000344---...))(/-,1/-210/.-00/,-,,,,232...-,**('$"!)'%+)(,*)$"!&#!('&10.-+*('%,+)30/5314210/.,+*.,+1/.5327541/./-,.,+'&%=<6GE?KHCIGBHEAGD?KHDOLHOLHMJFKGCHD@IEBJFBKGCLHDKFBLGCPKFSNJSOJOKFNIDPKFUQMYUQYVRZVS]YV^ZW]ZVZVQXSOWSOZUQ^ZV_[W]YU\WS]XT^YV_[WZURSNJOIEQLGXRM]XS]WR_YTc]Yhc^d_[c^Yc^Ye`\e`\ea]kgdlgdgc`jebieae`]e`]d_[c^Ze`\b]Xga\kfaic^f`\c^Z8.*0%9-%@4*E8-I;0M?3PA5RC6SD7UE9VF9WG:WG:XG;XH;XG;XH;YI]L?^L?^M@_NA`NAaNAbOAbOBdQCeRDfSEgSEgTFhUFhTFiUFiUFjVGiUFiTEiTFiTEhSDhTEhSCgRBfRBfRBgSCgSCfRBfRBeRBeQBdQBbO@aN?`M?_M?^L?\K>[J=YI=XHC:?D9=C;?E<@F:?D9>C8<@58=59=8D<@F>BH=AG=AG>CI=AG:?D:>C:?D8=B7<@6:?37;36:37;26:03703725925936:36925947;69>47:13613613614736:47;36:259025/1403625947;48<37;36;59>;?E9=C6:?8D;?E:?E9=C6;@:?E=BI:>DBFMPT\{}nnrQNFSNIRMHRMIWRN[WTUQNNJFLGCTPLYUQXSPUPLTOKUPLSOKRMIQMIOKGIEALGCSOLUQMRNJRNJSOKUQMXTP[WS[XUZVS\XT]XU]XT^YU^YUa]Ya\Y^ZV[WSWRNUPLWRO[WT]YV[WTXTQVSPTSMQPIPOGOOGMMEKKCJJAJJAIJ@KLBLMCMMCKLAIJ@HI>JK@LMCNOEMMCGG;@=:<8563/63/52/-+(---343,,,,--233/00,,,332---*++-.-'((+,,)))*++,,, % *(&#"$'"$''*-&(,!#&! #!#!  " !!!!$%%,--343:;:<=;<=;@A?>@=?A?CECCECCECBCB@A@=>>>??ACB@CBACADEDDFEBCBABACDC@B@?A?<=<8;99:99:8:;9;=;<>=>@>=?>:<;:<;9;:686575686898787354243454786:<:;><010.//010//.+,,)**)*),--+-,+--,.-,.-.10132354243021011011/10,.-,.-,.-.0//10011021133354454343354464354344133021011021/21/11244011-..+--*,,+--.//222343222010/00/10022033/11244344354244/00()'))(**),,,--,+,+,-,*+*()'***+,++,+./../...-//.11022122000.++*,,+-...///00011121121010/0//10232010/0/.0//00010..-*,+()('('%&&$%%&(')*)*+*++**+*)*)+,+,-,-/.01000/--,-+(,*',)&.*(1-+/,)$!&%#+-,*,,)+**+**++())&('%'&%'&')()**)**(*))***,+*,+)+*(**(**)++*,,)++)++,--.//.0/.0/,--*++)+**++()(&'&&'&()(+,++,,+,,)*)&'''((*++)+*)++*,,*,,)**')(&''$%%#%%#%%#$$"###$$ !!!"!#$#$$$  "#"$%$$%$$$###"!"!!!         !! !! ##"##"##"!!  ##"$$#!"!"""#$#$%#$%$%%$&&%(('''&&'&&'&'('()(())())(*)+,+,-,,--*+*)'$!  "#",,+))()*)''&##"#$#$$#$$#$%$%&&'('%%%"#"!"!!"!""!""!"#"!!! !! ##"%&$%&$##"""!&&%%%$%%$$%$$$$$%$!" ##"##"""!#$###"!!  !"!!"!!"!---232///---+++'''       $$$''&**),,+...00/11000/--,''&    !""!!! ! +,++,,*+**+*)*))***+*()(((((((((''('%&& !!!!"!!!          &'''((1/,>92;6061,+'#  " /.-**)//...-/0/233,,+,-,''&+**.-,0//..-..-**),-,011,,,,+)*'&(&$*(&+)'*(&$"!(%$#"!4320.-*)',+*/.-21010./.-.+*/-+3205437541/..-,1/.*(';:4GE?MKEKHBEB1(C6,H:/L=2N@4QB5RC7TD8UE9VF:WG:WG:WG;XG;XH;YI]L?]L?^M@_M@`NAaOAbOBbOAdPBeQCfSDgTFhTFiUFiTEiUFjVGjVGjUEjTEjUEjUEjUEjTEhSCgRBhSChSCiTDiTDhSChSCgSCgSCeRCdQBcPAbOAaN@_N@^L?\K>[J=YH7;@7;@8C:?D:>D87;@8BI>BHAEL?CJ<@E:>C:?D8=B8D7;@8D:?E:?E9=C7;@:?E=BH:>CCGNX[c\[ZMKCOKFPKGRMISOKXSPXSPTOLRNJXTPZURWRORMISNJTPLUQMPLIMHDNIEMHCQLGWSPRNKMIEOKGOKGRNJYUR]YU\XUYUR[VSZUQZUQ^YT`[W`[X]XU\WTZVSYTPXSOZVR^YV]XU[WTXTQRNKONHPOHPPIPPIMMELLCLLCLLCJJ@KKAKLBMMCLMCJJ@JKAMNDMNCNNDNOEKK@FF;DE9FF;BC9==5:83>;9?<9<9674053/53/-,(,,,222./.-..566011,-,554-.-*++,--'((+--)**+,,+,+  &&" "%!#% "% #"!  %!!412<<<:;:7888:98::;=<<=<;<:?@??A?>?>?A@>?>=>=?A??A?<>=<==?A??A@>@>@B@ACA@BA?@@@B@@B??@>;<;7878988:89;:8:97979:9;<;::::<;:<;798454353465354010/0/1216859;9:<:121/0001100/,--+,+)*)+,+)+*)+*,--,.-/11133233021.0/-...//.0/,.--..-/..0/021132022133354454232343465465344233132122022/21.00/11/00.//-./+---..011122565687566355244355255033032233455355122))((('))),,+./.+,+*+**+*())--,,-,**)-.,+,+)*(++*.-,/0.00/01/./--.-,--/0/232232454665565454454566232010/0/121010...+,,(*)'((%&&$%%%'&')('(((('&'&''&)*)*+*-/-/0//0/--,,*(,*'+(&-*'1-+.+(# $#!+,+*,+*+*+,+,.-())&'&%&&%'&'((())())()))+*+,,*,+)++)**(**(*)(*)())())*,+,.--.-.//,.-*,++-,+-,*+*'('&'&)*),-,+,,+,+*+*())(*)*,+)+*)+*)++)**())'('&''$&&#$$"## !!!""!"" !!!!!""""#" !  !"!""! !       !" ##!""!!! ##"##""""###$$#$$#$$#%%$$%$''&()'((''(''('()(())(*))+*++++,+,,+*+**(&#    ! ()((('))())((('''&%%$$$#%&%&&&'('&&%"""!"!!! !! "#""""$$#%%$&'%&&%$$"!! &'%%%%#$#####$$%%$##"##""#"!! ""!"#!!! "#"#$#!"! !!)*)...'('   !!!%&%()(+++-.-//./0/00///../.---%&& !!  !"!"##!"" !!$$$#$$&''())())())'(($$$!!!%&'"##%&&&''"""!"""###$$#$#           ! '((&''1/,?93<7150+(%! ! 0.-,,+00/010121122++****''&**),,+.-,/.-//.)))...121,--,+*&$"(%#)'%+(&(%#!%"! 5430.-*('+*),+)..,0/./.-/,+2/,65276476420/0.-0/.*('873FE?LJEMJDJGAIFAMJGQNKPMJPMIPLIOKGQMJROKTPMUQNSPMOKHIEAJFAMIDOLGNJFMJEMJEOLGTPKXSOYUR[WT\XU[XT]YV_[W]YUYUQWSOXSOWRN\WT_[X^ZV^ZV]XT^YUb]Yb]Xb]X_ZUYSOWPK^WRc]Ye`[c_Za]Yb]Yd_[e`\gb_fa^d`\d_\a\X`[Wb]Ye`]hc_fa]f`[gb]hc^e_[a\WZTP5+&3';.&B5+F9.J<1M?3PA5QB6SD7TE8UE9VF:WG:WG:XH;XH;YH\K>]K?]L?^L?_M@`NAaOAbOBcPBdQCeQCfRDgSEhTEhTEiUFjVGkVGkVGkVGkVGlWGkWFkWGkUEjTDiSCiSDiSCjTDjUDjUEiTEiTDhSCgSCfRCeRBdQBbPAaN@_M?]L?\K>ZI=ZI=YI=YI=XID8C9=B6:?48<6:?7;@8BHAFL@DK=AG:>C:?E8D9=C7;@7;@6:?48<6;@;?E;?E:?E9=C7;A;?E=BH:>CDHO^bjPOINKDOJEMHCQLGSNJWRO[WTYURWRNVROWSOVQNQLHQMHUPLVROPKHID@OJFVQMWRNWSPPKHNJFOJGNIDRNJXTQZVS\WTZVRYTPZUQYTO\WS`[W^YU[VRXTPYURZVR\XT]XU]YV]YVXURTPMPMIOMHMLEKKDKKDLLDKKCKKBKKBLLCMNDNNDMMCKKAHI?HI?LLBNOENOELMCLLBJJ?GH=CD:>?59:1750:74;85;85851640640.-*,,+/00./.,.-687232,,+443--,()),-,()),--*++-..+++ $!$"$'"$'"$ !"'((..-3434757877877876878998:98:8:<:=>=<>==>=<=<<=<<>==?=<>=>??>?>>@?>@?@B@ACA?A@>??=?=<=;;<;9:95655656766865754647978987889:99;:898454343343121..../.2317979:98:8010,---/../.+-,*++)**+--)**')(*,++-,-//.//.0/.0/-/.,.--.--/.,..-/..///0//10021/11022243132/10021465577566243465465355132.0/-//-///00/00.00010354455677565355477577467466144133022243233011)*)'('))(**)-.-++**+**+*)*)+++,,+()(**))*((('**)..-/0./0.12001/01/00/111332342664786887676676676233121121//.-.-,,,)**&('&'&$%%#$$&'&'('%&%$%$#$#$%$&'&()(-.-23101/--,)('+(&)&$+(%0-*.*'$!#" +,+)+))*)+,*-/.*,+'('&''&''&''&''())(*))+*+,,*++)+*)+*)++)++*+**++*+++-,-/..//./.,-,,--.//.0/-/.+,+)*)++*++*)*)(*))*)(*))*)*,+)++(*)())())()(&'&&'&&''#%%"##   "#"##""#"   !    !  !"#!##"##" %%$%%$##"""!"#"####$"""!$%$$%$%&$'('&&%&'&''&&'&&&&&'&()(()(()()*)'(&&%#$!   '('&'&''&&'%&&%%%$$%$$$#$%$#$#%&%%%% !  !! ""!""!""!###%&%&''&&%%%$$%$$$#$$#%&%###"#"#$#"#""""""!!! ##"##"!" !  """#$#"#"!!!   "##$%$%&&&&&(((())%&&#$$%&& !! ##""#"   *+*,..-..())'(('((&'')))()*'''%&%&&&&''%%% ###%&&%%%$$$$$$$%$###%&%(**#%%&'''((#$$"###$$$%%$%% !""     !!! ! ())&((30->92;604/)'$!  +*)*)(..-/0/010011*+*))(&&%))(++)++)--,00.,,+121222---,+*%" &$"%" '$"'$"!#!654/-,('&*)()(&-,+/.,.,,-+*1.,752:9798620..-+/-,*)(873ED>GE@IGBLJENKGQNJQNJNJFMIELHEJEBIEAIEALHDQMJTPMRNKMIDKFBLHDPLHLIEKHCOKFVRMZVQ\XT\YU[WTVRORNJWSO[WS[WSYUQZVSZURVQLUPL[VR`[Wb]Yc^Zc^Ze`\gb^fa^c_[`[V]WQ_YSb]Xb]Y`[W_ZU`[Ve`[hc_hc`e`]d_[d_[c^Z`[W_ZUa\Xd_[c^Zc^Ze_[gb^e_[]WS\VQF?:0"8,$@3*E8-I;0L>3O@5PB6RC7TD8TE9UF9VG:WG:WG;XG:XH:XH;YI;ZI]L?^L?_M@`M@aNAbOAcPBdPBeQCfSEhTEhSDhSCiTEjUFkVFkVFkVFkVFlVFlWFlWGlVFlVGkVGjUEjTDkVFkVFkVFjVFjUEiTDhSDgSDfSDeQCcPBaO@`M?^M?]L?\K>[J>ZI=YJ=YI=XHC:>D:>D9>D;@F:?E:>C:>C7;?59=7;@8C<@FBH@EL@EL>CI:>D;?E848=58=26:14915936;36;36:36:36:47;59=47;14725836937:59=59=59=37;25914725826:48<69>58=37;37;8=B8BI:>DDHOilv{|LJ?QNGTOISMHVQL[VR[VS^ZW]YVYTQUPLSNJRMJPLHPKGOJGOJGMHEKFBOJFTPMTPLSOLQMISNJSOKRMISNJSOKTPLYUQ\XTYTP[VR\WR]WS]XT\WS[VRWRNZVR\XT]YU]YVZVS[WTXTPRNKNJFMLFKKCIIAIIAJIBGG?II@KKBNNENOEKKAJJ?GGKLCJKBFG>GH>IJ@GH>?@6;<19:1861:74;8596374175142/,*',,,+,,,--+,,687454,,+222,,,()),--())+--*++,--*+* ! #& ""# "##-/.2324553434545655655656767988:9686253576:;:;=;;<;;<;>?==?=<>=<=@?>@?ACBCEDACA>?>=><;<;9;:9;:687353454342231675:;97865767988:87:96873432322321111314648:8898564010+,,+-,*,,(**())'((*++*++())+-,+-,,.-,-,-/.-/.,.-,.--.--..,.--/.-/.-/./0//10/10021343121.//.0/132354354132355466576687254143033/01.00.00122576676676565255366466344144032143133132233022)*)''&'('(('*+***)**))*))*)()(**)()')*(+,**+**+*-.-/0//0/122232232121121331332554775786676565454121.0//0/+,+()(()('('$%%$%$"##!#"$%%%&%#$$"#""#""##$%$'('*+*./...-+,+('&+(&*'%*'%.+(-*'&# "!*+*'('&'&'(',-,,-,()('('&''&''%'&')()*))+*+-,+,++-,+-,+,,+--,---/..///00021021/10,.-,-,.0/.0/.//,--+,++,+**)'('%&%&''()(()()**(*)'('&'&&''&'&%&%%&%%&&#$$!"" ! !!  "#"$$###""#" !!!""!!!!   ! $$#$%$$%# %%$%&%"#"!! !!!!"!##"""!$$#$$###"%%$$%#$$$%%$#$###"$%$'(''('&'%&'&$%$##!"  ))(''&&&%$$#"#!#$#$$#$$#$$$##"$$#%%$!! ##"$$"$$#$$#$%$%&%%&%##""#"""! !"!##""#""#"###!"!!!!""" ! ! #$#$$#"#!!"  ! ! !"!!"! ================================================ FILE: optical-flow/datasets/sintel_alley/frame4.ppm ================================================ P6 1024 436 255 |x{lvfqb~mow~mtb|iZ|j]~moq{j}jZq`}k\rcp_m\N_QEvcTxfp_td}jZjZLvcTtbTkZM[MBSF;OB9XJ@G<3OH@vncrurr~s~tht}xne[LF@{p}{xy{{||xsykwjsvxwywyz|yu}pwjwjwk|th~vj}uixpeypd|o}puz{~{tvia[R=:6--,+,,,--.///0/-.-,--*++,,,,-,,-,*+*%#!(!4-)2&--,+-,,-,+,,*++++++,++,,*,++,+?=:`[S|o{~xstxzwr{n|ov~~||{yy~t}rkcYGB<-,*''&'('$$####$###"""""!!! 2/+WPHypcuzxqe^Uuodzshe^U_YQVQIXRKd]SmeZd\SldZ{tixqfng]B=7HD>[VP^YR[VPVRLQNHJGC?=:;96:86653864985874:87<;9<;9::844210/110121./.+,+,,,+,+()($%$$%%###$%%(((%&&*+++,,,--,..+,-+,-,---./,--)**())())++,-..**+'((&'''(()**,--,-.-..-..///011222344566566566566122+,,,--,-,+,++,+-...//-..-..)**"##!!! ! #$$)**)**)**)**)**###!!! ###"""''' TNE^WN^WNh`Vnf[le[qj`c\SYSK[UM^WOhaYyqga^XBEGEHIDFH?BC>@A?@A=>>AAAAA@??>@?>CA@IEDJFDLHEUPNWQNWQOZTQVOKQJGVOLUOKVPMSMJNHDNHDSMJXRNVOLYROZSPSMIOHCKE@GA=@<8?:6B=9E?;KE@PIESLGUMHXPLXPMXPLSLITMJRKGQIFUNKTLIPHDNGCLEAJC?MGDIC@GA>KDAG@<=73=74:414/,1,*1-*83161.831<74831:52:52?:7C=:D=:B<8B<8C=9?:6A;7B<8B<8D>:F?;A<7A;7B<8A<8HB>HB>E?;F?HC?HC@IC@FA>GA>JDANHEPJHSMJRLIOIFIC@JC@LFBPIFQJHTMJKD@IB=KC?HA=G@E>:F?;LE@HA=HA=HB>GA=D>:H@ug[wtux{~{py~|wvl}tjzp~s~st~r|qtuaVKtḓ~}xymsy{}{yxw|z83-'$"sg[|{wwxtw{rcth]}pcodZs}qzo~svz|}||~|}|xwypwnc{rh}r|q~s{}~zwts}{xuuzqn~ltd~nxvzhr`uew}lzi[wg}jZo_p`n_vesap_Q^OC{hYscp`}j[p_Pp^PjZMdUIZK@RE:J>4MB8D91YRIxpdsw|pu}qwkvve]TGA:sj_|qezmtxyyz~~z{z}}yqt}{}~}zxwuq{mxj}p~qty}|yx|oujtj`wma}rftj_tj^xnb|sfuiqw|}~qog]OJD21/,,++,,-../00011-..,--+++,-,-.../.-..&#!*$ 4-)2& --,,,,-.-,-,+++*+++,+,--+,+..-FC?gaY~r}zwsy}{}|xsym}tg~tg}pvyszmtx{z}|~q~uh{rf}sg|sg~uhqxvr~qs~owiq|uq~o}thwnb|sf~tgvm`aYOD?8)(% 41,XRHypcx|f_Urkaunbg`W`ZRWRKZTMg`VmdYbZQkdZ{thxpepi^?:4ZTL|tj~vk{tivndslbng^gaYe_Wb\U\WPYTMYTLUPJVQKWRLRNHPMGLHDFC@A?B@=?>;?>;?>;98665322010//.-//.+++,+***)'(''('&'&(((&'&'(()**&''()))**+,,.//...-...////////.//....///0/011343444444566566566567455022122011/00.//.//.//.///0/+,,$%%#$$!"!!!!$$$())())(((+++---...(((&&&$$$*+**++-..""!UNE^WM^WMg`VkdZicZoi_c\S^XOe^Ud]Tpi`}uj]YR6899:;<=>=>?<>>?@@=>>?@@@BB?A@?A@?@@?@@?@@?A@ABABCBEEDHHFIHFGFDMJIPLJPMKRMJMHELGCGB>QKGYRN^XUYROVOLWPMQJFOHDMGBHB>IC?JC?MFBRKGYRMZRMZRN[SNYQNRKHNGCMGCOGCQJFTLHMFAOHDTMJPIFPIFHB?HA>JC@HA>@:6?95<63:5261.2.+40-830:52<74;53<64;53@:8F@=GA>G@=GA>D>;B<9D>;E?;D?;F?F@:G@=E?;F@IB?JDAHB?GA>GA>IC@MGENHFRLJRMJNHEKEBJD@MGDPJGJDAKD@KD@F?:D>9E>:E>:G@;LE@VNJVOJKD@JC?HB>D>:>84A;6E?:F?;PHDOHDOHCOHCQIDLEALEANGBUMHSLGUMHVNIWOJXPKZRLXPJYPJsf]y̯ŬʯʭԸˮѳٺ޿ܽݾںɫǨŨ¦Ȫp^P sepcyi}k~mruգ֧âũͳĬ湯ʹŲųƲͰίϲªРڣůιȲǪ̱ȭТƙפ߭گ֭ٮ֫ܫݧy糩뾱侳ҭǢ×|ʚꮤ칯츭춭뱢ԛz{|qygksy|vmȒڟ˜|yurvmjcb^hefcidsmsnrmto}v{ywq~wƝ̡ЦƟxuƕ֥ةѧƢäҳұ«ιųݼǻȻǷʻŹøŷ̪ˬذ۴ݳƜ™̊plovqzjtڥ­ۮТxwϖɑ{szkqfmdldmc{o{rsmvo|r~y¥Ĥڲ黩뼪ñɶ긧Ǣʒ묛鿳ۻ״ҧ춡ĮDzʴи˶뺫ѭŨɩӫ۫ΧƤƤĠߥːzwrthodlaobmeldpdrjyz}Ęաt]MF1-,820931:52:415.+2+(2+(3,)-&$QH@wi]wvz|~z}}yxv}q|q~rrh]R}n`ˬǬ~xxwtz{|q{~xt}rtv||y~yLE=ZQIzlqtustuusdh]T|{vipdZ~rvtux~~|{x~wvsti}rvk~sxv~}t{~sx{txrzkxiswuvg|k^yiomoumn~kzhXwfyhl^l]q`zgVyfWm^qa~k\ygWn]O`QE]NC\MAXJ>WI=G<3A6.`YOtma{nu}{oxs|owxaZQLF?pf[pg[tj]ynazpb{pctg~tgwj|nrru{z{xww{|zy||{y{vvs}oru~oykxjwjzl}owzu}ouxws}puhul`vm`ypdsk`zpdxnb~uhrw|nh`VD@;++***)))()*)()(%&%####$$#$$%&%'(()*)*++&"-&"5,(2&*+*+,+-.-,--,--,--,--././0/997[WPzo~{yz||{|{xz{}zvwwtvustst}rxlvjyl|ozn~thtgviui{mtu}o{nwkvjxluivl`d\RE@:*(%.+&QKCpg[|n|ze]Sqj_rj^ibXd]T`ZRc\Sg_ViaV_WNhaWxqfwodpi^<82h`W|vwxws}qt{nzrgskatlatlatmbtmbkeZg`Wjd[gbYa\U`[S_ZS_[S]XPZUNTPIQMGMICJGBDA=@=9974863<:6:85984;:7=<9985653664442332--,()(&'&#$#%&%''''('(((&&&'''&&&&&&())+++,-,---------.//-..)**)*))***+++,,,-.-././.,--()(())### !! &&&&&&&&&$%$%%%'''""" !!""")))*++/00##"TMD\TK_XNf^UibXibZpi_b[Q_XNjbXg`Vpi_{shZWQ<>>?AA?AA@AB@BBBCD@BB?AA>??:;:8997875553433435559::<<<=?>=?>;<<9:9454233666898;<;:98<;9B@?HFEIFDIFDPLIOJGMGCPJEOHDQJFQJFSLHSLHQJEYQL\TPaYT[TPWOLQJFNFBPHDQJFWOLSLHRJGOHFIB?C=9B<8F@95=7471.:52<6472/830>86@:8A<9?97C<9A:7?95D>;GA>E?;B<9A;7@:6E?;HA>HA>GA=F@;HB?LFBF@=HB>IC?KEAIC>KEAHB>E?;C=:JECICAMGDOIGOIGNHEKEAKD@LE@GASKFVMIMFAQIDQJFMFBHA=F@;HB=HA=HA=E?;JC>LEATMHUNITMHYQL\TO\TOVNITMGSLGNGCNGATMGUMGug^ԴǬԷҷ׻ͱçϰշǫˮὟղ἟ЮɨƧϮã̫|hX|mvhwgmivgndlh}~~}|֪ୣ沤ɳɯȭ©⬘һȳ⬠¨겘Ϡڤ竞笡֢zpj嫣︭۸ήϨzƓ鯡ɿ췫ښ̘~snzșѡĘu{諛߯٫㲠簞㬚٢Җ΂rwxvȏ~~yrmufk\m[iWdUn_qerdndpitp|w}{nue~pÞŢݿྣ徣ǭDZϲɮսǷµĶ·꿵¶꽰ӱۺ޻໰Ҩ–ΩǝtrÎv˓}˒~usƕ̻ȶǴƲ䱟穕祐јēz͙ҩ}yjqdmevnnhzc^jb}iaibtnx}oۑ|ﰣݲհֱϫجᆲı̵Ѹ˵뺨ӯūũ˪˪ɩĦƥǧɨ˨Ĥ䧚̘z{sopx}|tmqgjaeQK310741=74:518208204.+1+'2+(4,)4,).'%OE>ug[vzzyzy}{zwuz}xyxk_}n_y¤|z{{yuzotvwxywwl}sivtyn}sivkzlSKBZQI{n~pqqqu~o|l}n`YQI}{xzy|zmnbWuz{|zyw|{xuu{}tr|q|qyzyvku{{vuux|~wu}lty}m|l{i[yh[pv}l}movqxftc{jxgudVrap^l\n_qao`ucUtbTm\N[LAVH=RE:TG<9c]Ts|{wv}o~pswyxuxzz|~}{}zyvrurvjmcYLFA/-+$$$#$#$$$###!""/+(WPH}sgz~`YPpi^ri]jcYhaXibYibYe^Te]SZSJc\StmbslaleZ84.tl`~}}|{u{n}tiwl{o}pu~q~vjznznxlzrgxpfyqfrk`mg]ke[hbXgaXke\e_V\VNXRJWQJVQIVPIWRJUPIWSLWSLQNHNLFLJEHGBBA>A@=>=::95974:8598566343075231./.,))'$$#$%$"""!"!"""!!!### !!!"""###%%%'((&&&""" !!!!!!!!  $$$$%%)**"! QKC[TK_XOf_Vke[kd\pi_`YP^WNjbXg`Vog]}ui]YS<=>=>><>>@BBBCC@BB:<<566122./....,,,++++++,,,...111110111221222232///+,++++,--/0/000/00.//122334233555555444998;;:?>=DBAIGEMJGJFCLFCSLIZSP`YV\TRXPMSKGUNJVNKWOLNFBOGCHA>GA=B<9C=9E?;G@=HA=>8472/82/;52C=;C>;B<:D?IB?KEBOHDLEBKC?G@IB?IB>D>:HA>MFCMGBKD@F@;GANGBOHCMFANGCNFBTLGZQL\TOYQLTMHXPLSLGOHBMFAULF}neзٽƬ߽ҵعӷҵڽ༟̮Ͱڽظή俠״Яֱ̪Աtd椒城̏ᘀ~͑xr{n|rzqrkgcp\\wb_|c`hfli}kh{igpqutytx̙ўʢ|鰠氢Шʨ௠谟㳝ȣ}ڣ諣ڢzmd~誡شΨĎ{˒yݧù纰븪좌ytܜﵥ׳qҟ뺬浨귩ﴥ硔ᥔԞޝ훆{sou||xsʈqutvjpcxg{mypyry~z|ֲ̫޻ڹɬŦʯҵ࿱źвɧ۲Ѭ˪翳ķ庭ئ̡ȥÖȒ|ϕ֚ԛʖ}y~Ѥ̺мѾϼ˷ᥑѝ˙К۩⺨ܹƥvwm|qyoldaZh_kdidg`|c]g`f]m益~{~Ɵө絣êʰƭ嶤ί̮հү˫Ϫģ£ĥȨΫǧã語եğ~|ÍupsÝѧΥʢ׬Ŝk_Q>7-*(72/@;7<6382/5.,3-*1*(0*'3,)4-*4-*0)&F<6xi[xyxxxy~{u|q}r|~|{|sem`Tt|zxvvu~~{x|x{~{zozo{ymacYOus}p}p}pt|nzlseOHA{|t~rxz|nreYwuu|yzwu{yyzoyx}r{|v|{~||qutx{}y}ozjz}|{j{j[~l^txryip~ml]rbTzi[qa{iYwfWygn]sbS{i[~k\tbSn^Po^Q[LAUH=VH=]NCUG=;7753/.---,+,+)))***$$$""!  !"!"#"&&%""!&&&))((''&&% !!! """ ! $%%#! TNFaYPd\RibXkd[ke\qk``ZP]WNe^Tc\Sle\|thYUO7898996889;;89:233...+,,+,,****++)**()))*+-..12123212100/...///222455243/10/002322334554542332222336779:96775664554555668::9;;:;;<==<==<<??>B@@CB@IGFPLJOJHJDAE?;B=9F@=B<9GA=HA=HA=G@86>86@:7@:7GA>OHENGDNGDNGDLFCSLISLHRJFNGCQJGRKGNGCKD@IB=IB>KD@LEAHA=GA=LFAPIDTLHUNJUNIUNIOHCSLHOIELFBMGCLFCLFBLFDKFCMHEMGCHB>KD@QJFKD@KC>PHCQIEOGCMFAPIDLE@G@MFBRKETLFPIEWOJZRMVNIOHCPIDMFBKD@NHCRKFRKGPIERKFXOJ]UPYQLSLGOHCQJEKE@JD>WOI}oeɲ׼۽ϰвҵҴд̰ݻ¦ˮټ߿նѲԵɭƩڷسѰue~מy˒wy}~ulzo}nmЌqm~iyhzjrchYdXaXsdugqhh`j^}rx~ƣѰܽ{pԡצ٧Ң͜yocČ{Ŷ澵ӨƙƔΖϑzҝ没¶ɽʾ⩔ƠzثܽƩxzﺩô軮繬鹫Ʒ̾砕ĮȲîٗ~З~ztqƐxǑzt}myklcjal`ue|p|ßwqvz}sw~w{s{sslpkzswyʦڰ嶩ת˨ѭӥ͘՛ݡ۠ʗzĘݶ˴걟٥ϞϝН㴣⺨彫ٵέҬز˧v}r~txor{mpNjv˔~規ל|tssn}kyhsevl{o~ptxçç¤ħʭάȣȟ믡ݩ̢ßzrrŸ˭̧֨ҫϨ|rC:5/,*3-+941D>:60-3-*4-*3-*0)&/(%2,)5.+4-*2+(<4/i[Opv~r|rwxzyy~rvgYu}|~{}sypv}w{{}zu}|w~sxuj^ZQI}psz}xSKDyvxwvzlobUs|~xwt}}||{|s~q~q}yu}tjvlt~}y}rxz}{~sxz||xpxhssufozh|i[qcpussp{jyg{iZl]n^p_PtbUzhsal]o^QwdUl[Nl\O_PDVH=QD9[LBYK?SG=pi_rj_wj{xt{}ruw~yQKC`YO|rewjwj|nr|nzqeoh]nf\me[me[sk_wnbtk`ri^wnbxpdxpf~rv}utwvynwk|sg|rgsj_jbXmdZwmc~thuh{m}o}o|n|n}oqp}nvisf~sfxobneYg_UjbXulavj{nzmwjymvyxzvw~~|swi{qezpcvguhtgpfZXQH;71#"  !!! !  "#"#$####""!5'>2,A1(-#!! """&&&&'',,+JFAph^xy}sui}sg}o{{yuùĹ~~~{vj\VM:84,,+()()))*++((("#"62.`YOq~`XOqi^vmale[uncme[]VMYRIg_T]UK_WMng\ng\me[84.vj~|~}|||zuyw~qxmznxmvjwm{sixqfzrgwodumcpi_jcZkd[c^VXSMDB=431./.---+,,)))()(&&&%&%&'&&'&'(''((%&%"""! )(%,*'0.+,*',*(/.+)('%%$##"''&--,*(%YRJh`VkcXme[jcZmg^uodd]T]WNaZQd]Tnf]zqfUPJ-/05658:::<<799233132233344355455455233133455:;:<==<==<==;<;<=<=>>=>><>>:<<9;;<==;=<<==<>>;<<9;:9:::;;;<;:;::::::::;;;<;:;;=>>ABBCEDDEE@BB>??>@?>??>@@?AB>@@>@?=>=:;;788:::>>=A@?A?=B>>9751.730831C>:A<9?96>85E?;F@NGDQIEOHCOGCRJFSLGRKGKD@GANGCOHCG@OHCPIDPIDRJFTMHTMILE@MFBNHDOIDOHDNHEQKHSMJPJHJDAMGCNHDLEANGBME@PHDOHBTKGYQMXPLWPLOHCNGBOGBPHCTMHVOJRKFTLGXPKVNJQIEOGCOHCMFBLEAMFBRKFPIENGCTMI\SOZRMUMHRKEOHBMFANGAXOIzk`ʭӴʱβغۻαٽ۽շʬŧѱ׷ԴٻѳͮӴͮմxg~ƗÕ{|ȧǩ}Ýڢ椆駊~t֋lz|Жworqpemf~ietmxedzhjĨh]l`ogqnzx}xw}ir`Փ~䨚߱ߵݴ֧ʗɓҙ֗͗~Ԩⲧøø¶ŷŷö隄̖Ŝ}ֳҶrʛ漯ϾȻ㫠飔ƱǰǦǦƧŧȦţ頇ӔzΑxƌrortwvv͈tx}Ӄvok|irǝz~|К쬙觔͗ԏ͌ŝة䳧ʢţ׵ͦȘϚԙ͖v×Ý콲ҿйìIJ붧ܬب֤פⰠ帧繤渥们⺮ܷ߹Ǣ|}~̕ɑ͚զߢ蛀ד{nqdiametlrmqoqqxv}{}Ӻ͡孟㲢خ䯡ਚդžŖx}̮ϴɧϩ($70-4.+4.+60-5.+1+(3,)4-*1+(1*(1*'3,*5/,5-*4,)6.+]PGqbwi{odxmc|qf}rhuk}qh[Nk~zqzzz~|zy}w~pwy}rznvk_>94thxxvvw{}ULD~owxxjj\Pxj|vuj{pe{p~~z~xx{~st|yuymsynzo~uj}xxx}r}z~yyz|nvztpumnquuxuudqlrbvetbweV~k\}lpak[MfWJaSGXK@bSF]NBVHSNFZTLVPIQKCNHAHC7;72:61850961=:6-*'UOGc\Rf^Tg`VhaXmg^voehaW[UMYSKc]Upi_qi_RMG110321555566233444787898577566899:;::;;798899:;;;<<<=<<=<;<;;<@?>@?<==:;;=>=<==<==>@?=>><===>>?@@>??=>===<==<>?>@AA@AA@AABCBABB@AA=>?:<<:;;9::777455333566899<==<>><===>>;==8::567678566344766666<<;;::976764<:8@=;IEBLGDJDBKEBJC@MFCNFBNFBME@KC?OGBQJEUMIQJEKD?JC>PIETMHPIDOHDRKFRKFOHDTMHXPLUNISLGQJFSLIPIEPIEQJFOIFMGDTNKPJFLEAPIEOIENGBRJEXPKUMHUMHXPLYRNZROXQLRKFNGBKD@PIDTMHOIDTLHVNITMHNGBNGBPIDRKGNHCKD@PHDUNISLHQJFSKGZRMUMHRKFWOJWOJWOJbXPqcַèȬֻӶϳǬԶ̭ͮ߾ݾݽظضyh~뻬ӨĞ̤ˣϦ׭ڱ֮ʧǥת}柀ӑwΎsċrml}lx}jrf}o֒ʒy̑xÆrugqgmbrdp`vd❄ǐ}x~{|vv}͗Ԣğơک殨ꯧ͗yyzwzė˨ss诟Ŷ³ͺ˺Ԡɴʸ禖ˮαͮ˪˪ƧΕ}ՔyЏtˍqppsvssy͑y˖ѥƥӠ뭚ꭙ㪗ﯠԤԞƓ{œʣxx’xty}Т˻ƶƸѻȱŶ̽õ䶩ޱ߮ଡ߮躪ൠ߳湨辯ôݸ¡vzǠęƖ̛՟娟˻訜ϵϵ̲ūéƍ{xyzw|sslmhhctkzpxlzo{ryx{x}ɞحͩĦʥ߭篞͝ɟġŢ}|ũ¢~.'#80,4.+2*'0(%1+'2+(3-*3-+2,)2,)1+)1+(5/,70-6.+;3/yj]{kzj}mwywvtvyyxz}|xz~xj]QFn^{y|~vvwxz|~}z}|~}v/*&52.ync~xx}q{oxg\Rwi\ouxrrqbVK}l_yyy{x|{|w~su|qy~z}pxodt~{z}~}}tj~sz|xwt{j]tf}xvu~nt|wqc}k\qz|km^zixg}kxfrap`n_xfXq`Qn^PdUIYK@YK?QE:I=4K>4NA8TI?qj_sk`ujy|pw}|wj~qz~~rC>8?70UH>`RF\ODeYMbXMdYOaWN]UMc\Sg`Wkd[rj`xocxodxocype{rfwocvmasj_tlazrfvj~qsw{zx{{}|}{~~}~~xuuq|ozmwkwk}uh{sgypeypezqfuj~uixl{o|pznw|}{qqgZTME951*)((((''&&&%&&%'''''&''&&&%%%%&'&&&&&&&'$#W>/fKDB?GFBFDBBA??><@?=BA>BA?>=;=<:??=A@=DC@FEBCB@AA?CCBCDBABA@A@<==;<<;<<:;;;;;898899:<;<>>=>>=>=:;:;<;>??CDDDEDABAABB?@@>>><==9;;:;:;<;<<<:;:665333233455344232121011011.////////011344444454566233,-.,...0/;<<>??<==;;;<<;A@?B?>D@>HC@FA=JD@NHDRKHRKHRKGOHCPIETLHVOJSLGQJFRKFSLHXPL\UQZSO[TPWPLTMIUNJSLHNHDKEANHEWQMSLIHC?OHDRKHQIESKFSLHQJEOHCUMIYRNWPLUMISKGNGBVNIWOKRKGLEANGBWPK[TPSLGWPKYQMUMIQJFSKFYQLXPLVOJXPKVNISKFVNIUNHWOJXPKXOJmaYvαɮھѶγͳںҳ¥ֹٻյݽ׸޻yh|ݾƷóͮย㹦䶥긨긩ѩѫ汣ȱѶé餁ԔvʏvuvŒusmosnsٞ}Ȕ}̓~{᥍ۤwvxyolcoevjyqkqmtrzx~˜ʜxlwh}koswr{h~˻˿ƺô̹ι٨ӥɴʺଠ٥çɮβ̫ͮήȪΙΓzʍurrswtt‰wƱȳʶ®ޚ՘ڤɟʛ­負ఠɹק~}rxjrqqu׬±̷뿰Ƹ̻ɶ¶亯ܴ௤ީϞ泣ߴ۱䵤帩廬´ŷu˧ǟΟۡĸ貨ʵԿԿҼйϴ˰ϠĞŠĢߦ뫕媓⪔㭖泞㫘Ï}tyΥɨv{n.($8/+3+(1*&1)%2+(2+(2+(2+)2-*3.,0*'1*&5.*9307/,1)&k]Rz~uuw{l}m`|m`vi~qvxswjxj|nrvwv~qRH>}m_zsvuvz}s}tjyowvw{xuyv{~~~A;51.+si^}~}|zw}wj^zk]}nqpvi|n~o]QGtdXy}w{uwwz~ttw{wxx{ox}{zw{x|}w|{ksbUzltzlwyjwfYnayxhrbrumweuexg|ktdl\~k[jZNp`RzhXraSl\OaRFZK?ZL@RE:PC8K>4VLBmf\rj_ymz~ry|~z|sh~q{|vk73.NC:jYLm\No]OtaTn\Ns`RvcTubUveXk[O]OE\ND^QFYMC_SHaVLf]RjaVkbWri^xoczqe~uiw|zt}xqstr}p}pxl{nsvxyzri^UOG641++*)*)*+*********)(((**))))((()))((''((.(%fH7sSAS;.-+),,,+,,*++./../.******220QMGvod}wq|nvi{qe{nuy}~qylrx{~~~|}zwyszmviwjzn{oymu{{y{}vl\VO:75))*&&&%%&%%%!"" !/-*RMEpg\{nuuwjc[Rog\nfZe_Vtlbqh]WOFVOFe]RZSIc[QjbXwpepj_62,|o{xyvq|nrywy}vr}~|wwzy}zxzy||vtqr~pyk~seqg[TNF963'''&&&'('#$##$##$#"#"$$$&&&%&%%%%#$$30,SNEph\uhylrspvrzkzlsvwwWRISME_XOd\Rc[Rg`Xsmdxqfg`VXRJUOGXRKb\S^XOg`Wa\S\WNTOGVPITOHPLEVRKSOIUPJ\VObZRd\S_YQXRKWQJXSLWSLXSM]WQZUOXUOVSNPMIEC@<;9343001.//...///-.-,,,/0/4559:::;:232.//566@AABCC@AA?A@?@@>??<=<344122554997998332-,+(('(('(('))()))))(''&&'&&&&$%$())/00000+,,+,,+,,&&&%&&***9;:>??<==799:<;?A@?@?<>=?@@?@?>?>9::777999>=C@?HECNJGNIFMHDNHDWOK^VR`XT[SO]UQ[SOYRMWPLQJFTMIUOLTNKWPMUNKNHDPIEUNJQJFQJEPIENGBMFASKGWOKRKFRKGUMIWOK\SOTMINHCLFBOHCRKFVOJVOJQJEPHDTMIUNJQJFTMHZRNZSN_WR`WRWOJWPJZRMXPKUMG[RLk_Wt׸ۿֻèԴѲཡӶȬǪ˭عӵԶعַ߾غг̮޼{j}Ũϴڿʼdzɷɸʹ̽ʻүæڷ´ƵӼ̴ڣΗ~ē}|{tu{tpܡĬȬ鳠䮜ԧЦۦ禓䦔譙ܫզڧ߫ե~ry~uxxsvplchbjejdu_Yq]Tt_TwaVgZk_wirpziqeОô麫粦ͣ޵ϻ뻲º๳֩ܤˬͰˮ̫ҲβǪߧunjutuuxuutˑðǴȷǶ̶ưۣٞԥᰟȲï۲൧Ƿ鲥ԢÖuselardnbpgyrr{l~ţϯճ乫±綫ݮŸⷭׯޫ˝śԯݶ鼫²໬׺|ȤֵşѢ章ȺȻ跫ѼϼּֽζĠ¢ƤѰӵå䨗ŬʰŪ¨ŭĭ۞ޥ᭢Τ~u{qyq{pztpvp}wyyoyfnv^--(3+'1*&2+'2*'1)&1*&2-*1+)2-*0)&2+(7/+:2/3+(B;5`TK}navkzy{y~qrdru~oxjtfw{psvvtuOE\RHjcYqi^znzrz{yt|sg|n{vwod63.iYLyg{jq`scsbp_yfVxdT|hZqb}j\{hY~j\vcUucUwdVvcUr_RgWJm[NhXKiYL{hZ}l^oaUyj^wk`yodvj~rsx}~z}~ymaZQEA<.-+((('((())())()))*)(((*+**++*++())$%%$%%4*$qP=yWDS;-**)*++*++)++*++)**%&&&''642ZUMxlzw~q{nzm{n|sg|sgylrvr|n}prwywy|tgaXB@<000---++,)))$$$"""!!!30-RLDvnbv~znh`Vng\neYd]Snf\neZYPFVNFd\RWPGaZPh_Vvofmf\62-ym~~|}|yxwsvywvrruswyvvwz}yu~p}p~quvyxzmd\SA>9,,+))(()(&&%%%$###""!$$#&&&%&%'''&&&"""63.XQIxocqstst{yrs|yOIARLE^WN`YP`YPe^Vuof~wkleZ[TLWQISMFVPI]VNvztsrwj{sg|th|th|th~vjvnbri^f^Tb[Qg_Ue^TmeZhaWiaWkbXsj`xpfslbnh_ZVP?>;121...,-,...---,,,+,+---554554,,,&&&())344788776655444344222---10/853<85>96;85:7442/52/41.752653875431210//--,*+)(-,*.-+10.10/0/.-,*.-,00/998=>=<==6776779::9:9565676:;;=>=>?>=>==>==>><==677:;;?A@>@@<==:<;=>=DCBHFEJHFLIHNKIRNLTOMNIFRLIWQNVPMUNKZSPZROYQMUNJNGCRKGQIEUMIWOJXQLZSNQJERKFPIDMFAKD@JC>MFAJD?NGBTMHZSN\UPSLGNGBQJETLHNGCSLHWPKVNIXPK[SNXPJXPJWPJYQLXOJ^UOl_VuԵ̰榧ˮչػնٺ޿ڼαвҳ˭ĦѲʮضڷίxhȰǴʶٸij̼˾˫ĮϺİ껪켨߮ե֫دǡĝʛĖÜvíů֬٫௞ᱟܬ베筜嫚֠‘ڤﺦ䭚ݦکѪᴟË{{nrvws|lzjykvhnbodpgkaw`Xnf~ŠǦΫЫǤ篠购ѭٿ㳩ת磒¦ַ̮ͯͭҷͰȕpɏtǏuvvvvsrЕƱ˷ѽϺ˵릒ӛНʛÚơİ辬循îư⸪쾮빫ڪ˝ǚtug}sqhi_j\mbg`icqnttzy֪粨ݭҬ̪ɥʣس滭ǹ;ͽȼ߽|ȥẮڴ̤ۧ볦黮Ȼܯ®ѺƲܬƤŭŪǣ͠ǮȯĪ«︭춪쳧ܪעʝƙ{}r}ptjpfpdiuU-&"7.)3+'1*'3,)4.+2+(1*'0*'0*'0*(/)&3,(6/+92.HA:TJC;3.?83jaXu}syo}s}swm~vlyqg~nwE=4zk]szzuuttzxujzpf{pewls}yvkukxmv{yxw^UKRKE{pdxncxnc{pexlr}o{mui]2-(!%! 82,B;4+&!' ;3-LC;aVLl`U}pctg|n}p}opr{vv{{{|}vty}}t|x}|z|xz}~}|wr}|nuhuopsdygn^hYN]PFp_QsbT|l{u~l{j{jxh{jtb~k\q`p_zgXtcUo^PfWJ_PD_QEUH>K>5[RIkdZtk`}p{u{{y{nzqfyly}pjcZ<82n]rtmny~}x}juco_vepp|jwgqam^p`n_{hZ~k\~j\yeV{gXk\t`R}iZ|hZyfXxh[naTpcVymauhquy¶}svmaUNF63/''&%&&&''((('((())*++*++,--,---..,..)++)+,=0(uS?xWCQ:-+,,-..,.-+,,*++*++)))*+*;:6^XQ|o~z{yu}pylykzqd|rfuiyocuhznbuhzøƺŸõyw~qrsy~~pe_V@>:+,+&'&%%%#$$ 1.*NH@tl`zumdZri^neXe]Trj`qh]ZRHVNF]VKUNEd\SjbX|ujpi_73-ym~~~}}}uuu|}~}|y|}~|}|}|zxyysg_VB?;--,***))(%%$$$$$$$$$#$$$&&%&&%(('&'&##"!! 63/\ULuhy}zvwy~SLDRLE]VM`YOaYPd]Uune~wljcYVPHSNFWRJTOGZTL}~}~zrxkvjwkzrgvmcmf\oi_b]UHFB664232011676788:<;===;;:777555333011,--*++,,,***)))0109;:89:899GEBWSM\WOYUN_ZSgbZd^Vd_Vb]Ue_X`[Tb^V_[T\XQUQJVQJSNGSNGNJDQMGQMGOKFKGBJF@JF@IFAA>;=;8:96864764764763864=<9B@=DC@DC@EDAFEBDCA>>=??>ABADEDEEDDDDCDCEEDDEDDDCABB@AA?@@;;;677789999;::>==FDCLJHNJHJGDHDAMHDPIEPIEPIEUMHXPLUMHSKGTLHOHCPHCOHCLE@KE@RKFZRNWOKVOJVNJVOJRKFQJEOHCUMIWPKWOIVNIPIDWOIXPJWOJ[SNYQL[RLpbXxϲδֺҶӷʮῤ޽ڹ̰۾ٽȫƩָӵƨĦˮĩֵܸέpѱǵȴ軨緣⹦龬㹥ůɳۻͫѩөХ̤Ҩŝ̸̹ȴⷦ׮趦껨갣ਜΜ֠沣ﻩܨڦ۩絥{w{}zњ؝Ϙ}{|mwf}kwkoh~hd|gdjhsp{~ĘŜع¼渭渤۬ȫͯͮϰдΰˮ򬘲wőtϕtŒvwwwvuwߝʵκ͸θ˵˗z“ɘҩ컩ڹܾ㾬®廬߹òٯš™ǡzuÞy}mu͖|Ǔyđumvimevjzkn`i_h`jdto|v{v}綪µɼ˾ź濵Э|ڱ㭣ǟ}էᮢ㶩ݽܵԬլĸ뵦Фťū¤Χڬưĭ⻥ײٲ㴢㫜뵪µۤǚɠϧ帧뺩޳׭əw}~m5+&7.*3+'1*&3,)5.+3,(0*'/)&0*'0*(.'%/(%:4/NG@E=85.+5.+QHBxnc~s|qzp{q{quzp~uksf{lw~qxxʯʯȭ}xy|kxi|m`xk`uj_ulaynd{oyvzw{wuhsgut}pytsx}~g]SVOHuhznc~rg~r~w{ovj^[RH[QGVMCIA8E=5IA9NE=OH@=710+&'#  ,&";3,OD:dVIpaSvgZzl_tfzkpzzvzxvwvw}tx~sv}{}{}~{{v}mu{kqo}l}kn^~k[p_tbtdupxhxh|lxg{i{iscqao_tcTdUJ^PD^PD[NCYLAWI?G;2\TKnf\wnctzwz{{xk{qevix{od]T@;5~jZ{hrsjmx}¢ǥضʪʪ||vq|~xsuwsypowf{hYxfWxeUxdTkZo^xgk[j[n_oatfpbpbxjwjzmu~xtk^QKC20,((&&&%%%$%%$$$#$$$%%%%&%&&&%&%%&&&''%&&%''A1(pP>rR@L7+*,,-..,-,*+*)*)()(''&,,*C?:b[R|o~}}wy{yqylxkvivjxl{ozmuiylxk|re|qeynaxmawmatj^ph]|sgyqf~qx}pzm~sg}re~sf~tfxk{mqu{m|n|~}ywtv}ywxodPKC/,)-*'IE=rj^z}ph^Tpg[lcVg_Uwocul`cZPYQHVOFSMEd\SibXxrhnh^;71|p{{zz{}}~|~{z}rvvx}~zmg]HEA00/+++)*)''&&&&&&%'(((((()(((('('&''### ! ##"750ZTKum`qyz|}OJBRMEYSJ\UL^VMc\Stmd|ujhaWTOGTNGd]T]VNXRJ~uu~{oi_GD@10/--,,,+,,+*+*..-+,+,-,,--+,,,---..-..)**())***+,,011688688<=<<:;<;:;::;:<<;<<;>?>EFE???;;;ABA@@??>=@?>?=;@<:DA>GC?IDALFBOIDPIEQJERKFUMHVOJTLHWOJWOJYQLYQMWOJUNHUMHVNIYQLYPKWOJYPKUMGVNHWOJRKFPHBgZPsҴ©˰ɮǭԺھֹȫݻҲҲ¦βҶ۹æв̯ƪĩŪٸʫڷ}k~æȥΩʫȧˬ׮Ʒ˶ڭحϿѹηðټܻɺŷ㻰ݳ쾳˷ŵɶϻѼǶĵƷǵƴ﷬굨ﻭ泤ڤڢਗ簟֝wqʑ}ݝܛǑwĜrnx{~tvkncj`sfxmumqiuorpihhgnl{{ɓ§èƩ֙uКwҞwzyvvuvz«˵ɵ̷κ̹ڣvruwȫʳ־ѹϲ޷๧ֵ߹ự޽έɧȤsɝجy~n~Оٝ{Ǖw{~wԌw׍xܔ͓}prek`d]b]kdnfxn͢ݯ޳⹯۶޸㼲Ṭ̢ȣ}|ͤڮ潱۷׳ܱʻ¸赩㳦ۮɟ¡Ե˷ţܮǴ۵ֲײԮѢ鲥빭ߦΠΣۮ³ŷ÷߸|~?1,6-(3+'2*'3+(5.+3,)0)&/)&0*'-'%4.+KD?GA<:4250.60-71.A:5d[S{qyo~uk~ukyqgwl{q|q~sgzky~~rowhzktftek_TrfZrf[|pdzkv}y~~{~wt{nrydYN PJCrvylxkvv{nvkzmayk^tgYqcVn`SrcUrcTqbTsdVi[N_SGUKA/*$        &!:1+QE;gXKm]zr}p|ottx{uzlxma~tixmxm|qzx~sxmty|~vyuprvgzjvfqyh~l\ra}k[qaSvdWxho`~k\m_p`sbvfxhzhZYLANB9QE;^OC\NBQE;K@7TG=RE:g_Uqi_xpdwvvxyy~ui|sguiyr_YPKD<{hstwutzz¤ɫ˪ͬͭ۹ڹͭʩڷ⿥ᾥݻǨťƦǦvz~vunnrmqur~n{ksdoarcn_{hZyfXvcUubUxfXsbT}j[qcyk^vi\vhuhuhylxjsrtx}|x~phaWFC=--+**)++**+*++*))((('(('&'&%%$###"""##"!!  A/%aF8gJ:F4*(**,,,+++***+++**)'''10.MHBjaW{n}}~{vtvz||}tuwwzqwjzpdularj_sk`wodxpeypfwkymxkzmvjwkvjzqdsj^pg\h`Ve^Tc[RZTLe]TkcYwmbwkznzn{n|pzm~wj{m|uhsj^{qe{o|o}p}p~q}prr}o{n}rfwnb}uh}p|pwkvjuzvt}qylznymrw|o{nx~ypfRMF0.+ '&#C?8e^Sviu~zlg]SofZi`UkcYyqeuk_f]SYQHRKCTME`XOc[SrlcgaX>:4xywv~qxkzlwjznznstuxzm{o~r|prx~z{xyurtuw{z{xwz|xkf\HFA--,&'&&&&$$$$$$"""!"""#"########"$$$!!!!!!851aZQwi{zvv{~}~NIASMFWPH[TK[TKa[Suof|vkhbXXRJXQJh`We^T^WN|~zsnh^IGB665554443444333333121110111./.-.-**)()('('&'&**)'('())+,,+,,443PMHnh_u}|}~|~}~yz}||{xuurwz~zx}qzo|qxm{sizrhzsixrhztjvpfslctlcpialf^ic[^YRWSLUQKTPJTPKTPKTQLWSNRNIJGCLIEFC@A?;A?<@><<;9=<:>=;<;9=<;@@>AA?@?>BB@GFDJHFMLIOLJMJGMJGPKHQLIRLHWPKXQLXPLUMHUMH]UP[SNVNIZQLVNHTLFVNHWOJWNGpaUxٹƫʮƪƫֺ̲дΰæåˮӶŪֶۼӴçڹowdT{Ĩ̩ӬϱƨܴǷȻƷⲢ٧߹ҼŵĶ̿Żƻŷͽμ̿Ǽ̾µƸڨҝעଚ굣⨚ȝÚ}‘җᝉҘtpuyvsx|s颎؞ڟߗʼnxtge\mbqeshphvnvo}tx|Ǐ젎⛌wΖw؞zȖzzyzvtvŽ{ĮdzŲǴ͹Ú}«˪y波رq{foǒqƖw|ǘ֥ڮΤɜƘÑsufՄny畀ݠáݲЩvozt}ylosϫպֲٱۮǺ鳨᳧ز۬řϧ꼭³⹧۷ٵͪ˟ꮣ鴩鲧糩곩ܥӣᴧ޸ὲΰ~Q>97/*3+(3,(2+'3-*2,)0*'.'%0+(>83C<7=631+)3-+4.,5/-70-:2.XPIyoxn|siyqgypgtlcvnevlzoetf~z|}~r|nx{l]Pj\OQG>C;44.):3-KA9_REraS}l\}m^yi|lrtrqvhrdyjqcWKC>9xjpuqwi~qevk`{peykqcxiwhwhududyhueqawhZpbULC:             =6/rqsrsv{xxsmbXpg]wneqi`xpg|sj|sizqgvmdy{xnynzpwl{pwm~ujti~w|t~k]pbzjquetdUxgWtdTveVp_QveVxfXl\qarbr`Rq`Roan_jZLTG;E;1SF;ZLASG9**)&&&$$$%%%%%%$$$""""""%%$$%$###""" 52._XOxkz~uz~QLCTNFUOGYRJ[SKe^Uwpg{tjd^U]VN\UMf^UhaWd]Syymkd[GD@221121121122122222232121000/0///////...,-,...010010000122/0/:85WRKrkaxlym{nuhuhzmr{~}~|{wy~s{o~uj~wl|qvtw}ryrhvofqjanh_gbZfaZgbZgbZgb[d^Xc^WfaZd`Y`\V_\U_[U[XSZWSTRNMKHLKHONKSRPVUSZYVUSPKJGPNLLJHMJGNIEKFBUNJXQLZRMWOIWPJVNGpaTrַҶ˱βػϲĩ§̯Զѵܾӷ̰ܼαƨҵԶ۽ָħήίȪp^tƣĥ¦qtfxltz}§ںƽɻ⯟հ̻ܿοɹƹȽɿƽƽɿƻǺ̼Ȼ̽ʻ̼զԠ٤⭚㳤ެԨʪӬˡѥУᦕ穓Кv}ijqw{y٘㤐w~陇Ϗ~sqr~mqgogvnyqqkoΒurvvwxuwv՘Ѧɞѣխ̩}vvpzt|z}t}qrvivᰞܶ԰mhqȚ{Ǟġ̪ЫУɛə˘Žؘt}pxmke|gdvq|wuog]o^ycuan`hZl^m`i`rkwr{wѢ궫䵬跭뼱㫚~ŭХ³ijȸĴճʧɞ毤᯦ޯ߮ݩΡ͢µ긯佳Ÿײ\HB2+'3+(4,)0)&1+(1+(/)&3.+F?:A;73-+1,*2,*2,*3-+4.,6/,<40\TL~tkwmyoxm{ri|sj{sixn~ti|my{}|wyitqcreYi]RZPFQH@G?8F>6C;4A:4ME=WNDdXMxj[qb\PF,+)i^TqeZ~qeuptfylwk|osfr}mnnl~lnuovfh\P       ?7/G?6ZPEdXMbYPne[yodthyl}pxkzodyoeulc{rivlyoxof|rhwlvkxmymvkxoezqgwnd|shqg]|v~tutczhZ|kqm~k[~kZl[n]|jY{hXn^n^l\ygXo_}jZo`ueo^o^ObSE]OBUH=QD:NB8G;2RG>sla|ti~uiwtvrxz}ti|sgvjyuUOGUKA}jww¤£մ׵۹طԳճѰŦȨϰٸں׶ǧܻê߼⽢ٵ԰԰سЯԲֳǧ̫ά~~Ĥѯ˫ǧã{x||l{hucygucsbp`o_|j[tcUfWKWJ@>5/)%"'$!*'%)&$'$"#!#!" """$$#%$"4&;0*Q;.8+$&&&+*)+*)++*,,,,,+,-,A?;d^Uzm{{|p}p~|{~}pwodslaqi_mf\ph^vodyqfxpewodwncyod|sfuiznty}~|wzsxm|oxw~quixnc}qfzpeuiynvj}qvz~qc\T@>:,,,'''%%% !!!! !"!"## /,)VPH|rf}xki`VofZe]Soh^yqfsk_d[QZRITMETMEYQHbZQrka[UMA<6}{yvt~rss~suwwwxx|xy~|{{}{x~{}sw}pf_VD@<--,***&&&()(())((()))****+**++***'''&''!!!###962]XOyl~}~UOGXRJWPHYRJ^ULmd[{tj}wle^UaZQ^WNg_Ug_UhaV{{{ob]U@?;110/0//0//0/110/0/./....,-,,-,,,,----.-+,,,--)**()(()(*++//.EB>mg^w|{u~q}owjzmylxkpvi{muvzxyx}|~uvsvxx}syooia`\Uhd]kgamjcnkdokdd`ZOLHTRMQPMJHFB@>?>9zl_~nyjzl_j_TVMDRJBZQHYPHXPIWPId[SpeZ}mvsqpoptt|l}n_! #   72.eZOaUISI>J@7LB9JA8SJBtg[}obviylvj|qfzoe}rgwsi_qg]~shuj|rgulbpg]tkbqh^tj_vgzktcW~k^teyktoos{jn{kozgr`zgyfwen]tbyg}k|iYtcudpa~l]l]tbTkZKjYL\MAMA6H=3L@5NC;umc~wlxlxsuzmx{~r~uizn|tPJC\PE}jvvƨŦͮбħͪӱὣ©éܹ˩Яյ۹޻§ݹ俣ǩ俢ϭǧ۹ֳܸ۶ڶݺܹάɨϭ̫ɩɨ˪ѯɩήѱѰյظͮضçƩڹ¤xsxst~wxhn^POD;71,*'%)%#+'%-)'-)'/*(0+)1-+.+(,)(+('!!!%%$&$"-"5,(I5*3*%$%%$$$''&'''&&%'''()(@>:`[Symxz}|x{nuixk|pqq{mvi}th}py|xvwxy{o}ti~ujxl{o{o{n|ory|~~{}|{xu~qv|xtfsfobxg[ueYtdXwh\}pd{qe{nv{rvib[R=;7()($%%""".+'WQHypdtsu{reg^TlcXb[Qoh^yqgsj_cZPZRIRLDOIAYSJg`Wrk`UOGB=7z}~||y~z~vle[HD?10/--,()('''$%$#$#%%%()()*)())(((%%%%&&$$$&''863[VN{nyx{SMEaZQ[TK\TLcZPsj`xmynibXd^U_XOmdZe]SjcX|}wlZVO986111121011011333//.,,,-.-/////./0////111000011+,,)*)++++,,221IEAqj`|{z}~{wsss|tiwkwjzqe|sg{rfryy}|uuxy~{wmibYnh_tndvofpjblf^ic[b\Tf`Xkd\lf]kd\lg^rlcysiysjyskuogpjb~vmİӽ˵δϵٻδعˮɫط׵ɫΰȬྡʬrb zoujme˫٭ݮ质毣ۭɠΟƞ{z|ǰʴƲɩҳϴβгʳʺĪླཱིĺǻѾһ֮ǡğӯϱ׷ǪǮӴݿŻȵӫ~ɛӢџҟӠۨ粚봜ڦдپֿӽϺ̶ګ꬚ʴ˵ݬԥ뮙xmyh}j~kq_l]m_i\ybX|d\}f_kflhidi`sŤ߯Ź̿Ȼ㽱ɦɥڶȴҿнŴ긩حʣݪ}prfsy~}z}Ϋ޽ҵʨծسƝƱưŰ˲˭릌{}і¡ȧږ}ӖϙƛӢ͖Қڝ֛ď}|Ǖspdqesipitoyvxuxquipeum{w|Р۩޲߽гϰϭ͜䳪ްۭ߱٬٭ʨحõż⾸ըe_" 4,(0)%*$!71-;6271.0+)1,*2,*2,*2,)1+(2,)3,*5/,81/;41`WOrjatlcskbng^ph`og^og_umdzqgzmazz{|~zzqxn|sixofzqgzoxz}{s~o}{{l]@<7twwxk{l^m_Sh]Rtensyiufvg{k{l~n{j}m^" # )%!&" 0-)qbrnyg}kpuezj[xgnqzircxivhug}pcxrf[virh]}qemdZi`WbZQpf[|hZ|lrbfVJiYMq`T~k^whufyjm^qbvf~lovdra{i|j|jnsbve~kqaudVwfY|iZl^l[NhWJ_PD\MARE9K>4J>4QH?yqf~wlymu|psvjxz|vk{n}}qKF?aTHtaxezgwȨЯŦuzַ̬ݽǮ¨⾥ūĪཤὣڶѮհҮέέЯұǧťή༡㽡޻ڸضͫӱݻ޼ٶ޻޺ᾣƭǮ⾤ұϯѱȩǨܺǪʮ޾̫ἡ⼡έtl\WJA82-1-*0,*1-+1-+-)&0,*-*'0-+/+)1-+.+)$#"###&''%$#) 2+(A/%/*('((%%%&&&%&&!+(%*&$60,MD`THoaTtc|kyhyjrc{reXpeYzm`re~ko|ok\o_|j[l^ygYp_SueVp`Rzjpnwf{iwemrwfuezhYtdqaudziZzgYzh[fVJ_PDYK@VH=ZK?VH50-2.+2.,1-+51.83095240,1-+4/-3.,2.+$#"&&&)**%#"( 2+';+"/,*+,,)*)++****(%$40.61.F>7\OEo_QzhY{iZm]m]k[p`ucSl[Mq`RzhXxgVyhXpbTrfZsh]kbXwma}sfzrfzrfxkzm{n~vj{sh~vjznuy{}w~rzn}qwxv}p}q{ou}{wuux{|v}~{s}owivhzl~ptut{nuhyk~ouxytstu~pug}ob}qdwjzm{n{nww~revk_mdY`YOIE?10-$%$"## ! !"!####$#""" %#!GB;mf\{o~rskcY`YPg`Ud]Stmbwpepg\g_T]VMTNFRKCf]Ssj`tmaSMERLE{|~}rj_KFA11/,,,&'&&&&&'&&&&''&(((''&'''&&&""""##$$$'('874`ZQvUOGoeZe[P_UL`VMnf\zsi|ujibXjbXe]Si`V_XOibX}|{slbMJE665454676555565676444222/////.00/11100////121122222343666344;:8UQKtmbr~y}}{}{|~z~xw~qtv|tiyqgvjylym|p{ps~s}}z|v{p~q~rznznymylrx~}~}ztsyzxtvk|sjxm|q|qyxqpeZ73/|tiȥˤ۪͜׮ܱୡ箞㮝Ԥȡ̩ڶ껭Ƿζ©Ǩɠ˜ҟ秕٤|xnrj{w~qnxjgxic~lfuo~|ãάɰԼƻͿͽȳ軞䬋ࣄ赙ݿϸ㿰Ⱥῤիߧ߬ڧ੊ﳏɬǰϸн˶Ʊï­ĮưűñסtrƑwsm|kvwģԭǻĺɿְͩ๥ƺƹ˼ǥžѵпθuwa}}}}ΨߺΰȨͪӭά˯ĩ̷ʸʺʴ˭ʭ̜˵ϴΰͮӷŬ֠ȓݧڮ㫟갤ꭞƕ͟䳥峣߫УƜ|Ԣżݭߥ٢ԝzvkkbg[qaseman`pam_pdqeujtnuqxt~y}ŜÛĞȣ̦z!;4.?723-*.(&0*(1+)1+)1+)2,)2,*3-+4.-61/5.,6/,80-81-ULDulbvmvltlcibZmf]qjatlcqi`pe[sxv|q}ruwy~zwusu}xs?94pf]zl_|kqw|wt~oseuf|kUMD:622/,('%$#!&$"(&$)'$(&$%#"#! "! ,)'A;5IA:F?850+  (&$xi~}y|vfyl_sg\peYvi\vh[[QHG@9*&# 0)#>6.?6/aTH]QEOE71\OE}k[vdql~k~losvd}jYl[xemlyfygrbtcTweVygXm]m^o`tfYyk]pdXpf[{qeypd~qwy{|xuuyzvvrzmyl~py}yvszm|rf{qe}sguhvjyl~q{o}th}thqz~w}oylviwis~}txl|thzqfkdZSNG863***)**&''&'''(')))())""" ! !!(&#F@9aYOtf~rezpc_XO\UMb[Qd\Rwpe~vksk_g_T\UMUOGVNFlaWtk`sk`RLCTNF~~|{wtrsxxy|umbPKE210**)$%$###$$$$$#$$#&'''((&&&"## !!#$$21.XSJylyOIBpf[dZO[SJ[TKjcYwpfyrgf^UmeZjbWf_T\VMhaX||}}{soh^KHC453121122221332343232111000010111111.....-/0/././//./.000.//763UPIvnc{z{z}~}{||~{vxx{z~uyssym}thwncqi^s{rgska}qwt}r|qt{ysvireyl`{odymv|z{pynsy|{~u|s~t~tvx{oph_NJD}ujɩ٬㶩㷩칩鳢ݬϦϫ޷ŷ·йǰâƟѨìĭ̷Ų鳤ԩ}vٲάz}yt|}}sv~ضðͻμ˷ȽͽѴթ|誃뻝ؽǸȹ̹̹˼Ļɽɳή᷒嵔泒ੋߥŸ˰϶̵űʶɶƵɷɷĵN亩³긬ﶪիƝϟݦΟ}}Ģ˨ʦţɥ쿧ϿȾĹƻر۴꾱뼲㽱Ƿ㸬˫γƯŬdguw{xxxx|۫֬ʨĨɬҵؾʶϭŵʵĴƲ̭б˱ﭙԞɶȱŬǪ̯˰ŘĖҦѬ˧Ѩשટՠద繬ߵ̦~̚벨౧뵩︬貧ৗv|pxg{g|nuxouϘʛywrxmkcb]faf_kdpjpjoivnjdI7271,-'$-'%/*(0+)1+*2,*2,*3-+3.,3-+3-+60.5.+6.+70,7/,QG@rh_xoevlynwmvlvneld\rja}qfyywxwty|x~{}rtuw~uzny}z}}}|E?8f^V{{pb}lrsw||wqo{kodY\ULTMEHC=B=8B=7>:5=8384040,51-62-40,1-*0,)940KD=[RIZQHKC; tg[}{wgreXj_Tsg[yjsx{nvk_aXN_UJZPF[QGF>6 usmvpuwtrzzkrdpauezj|kqwgudvdUygWo_rbveV{iZsbqatd}k]n`xeWvdUweVq_QfVJ\NBPC9WJ>YJ?h_Uxk{tirt|pwl|oyzzznynf\@;5~j[syzģұԴֶ׷ԵֶʫЮῤӲ׵׶ŦƦٵ۶۸è⽢⿣ݹֳٵүάѯܺŪǭὣ⽢俥ὤūūè߼ཡལ˫£ұֵ̬ʪض׵̭~rud`RGC<683084161/2.,51/2.,40.3/,4/-51.73040-$##))),-,"*# 3+&6( +**+++***,,,)))+(&:40VKBm^|ʬħwxƦŧ~|âzpqyg|jm~msco_l\o`xhvfr}kl\~j\|j\{k]}oaym`yk}osx~|s{mpuvv~qzlvi~uhyl{n|o|n|nrxl}shzqfulaqi_umbzrf|thxpfrj`|rfty{}|zy}~qb\S?=9++****((((((((()*)())!!! !!"!!&&%#$####1/+VPHxobyng\a[RbZQd\Sxqfymsk`d]S`YO]WNYSJldZumatk`QKCSNF~{{~{x~{vssttutxxvyxuuxvje^UFB=.-+&'&####$#%%%%%%(((+,,-//+,,&&&"""$$$%%%&'&/.,RMF}vj~x{{xuPKCtlaf]S[TKXQIkcZwoewpeg`Wog\g_U^WNXQIof\vvwxxty~w}qy|z|~qibZFD@45423201000////...-.-,,,*+*+,+-..,--*++,-,-..+,+,,,+,+...010?<9f_Ws}~~{~qqyu{n{rfumarj_zrfxpewpe~vj~vk|qy~{}pxl}o}nui|peyodtkasj`ypf}sivl{qxwuzq~t~t~svuvmcOJD{si˯Ū緪踬뺫鸨컫跧ԪаѶӸӳèϪ׬ijκξ¶席ҭܲ漲ЭĜҥ֧Ø᭟洦䲤ͣÕϙyuuonhnhulzozozn{vj{nyzuŔsП~гʹѻϹɷǻĸԶȬບ东㮓⮗ϯպŴ̻˼Ϳп˼ƹƶǶ׾ҵٷݹԴʭƩΫᆬ㶠ϭέմΰá˧ǩۼª纬ನ䱨贫帪Ѯڵ뾳޹཯ഥ~sv{ylp^QdVn]o`ocrezi|j~ovԤɤȬʰڲôòŲɰͰв¨פ鬘ϸϸƬéѠਖ갤촪鳤ߪӠx|w͞봩ݶͬȢ~ਚǽ곧婘͖y}lsΝt˗讞ݮت㰞⫙ܦ֛Ջzy{~ϗwˇs~kYK,%"/)&0*(0*(1+)2,*3-+3-,4.-2,*3,*5.,6/-70-81-91-QG?j`Wme[d\Tog_vnewoftlcvndwoewl`x|}~|}z}t||zvzxnzosty~yvxyz~~UMDVPJ~zz~|yinp~opvxvt~nte|pcof[oe[ndZjaWf]T]ULXPHVNFVNEVNEYPG^TK\RIRJBRJC]TKj_Uj_UaWM*&! g\Q~z~xpyiseug|o|o|prssfsetzzkaWM-*'ljdyyxut}n}k^veXo`sczi|lxyhp`}ko^n^pal\ucTxgqayixixil\r`Sl\OcTI`RG_QFSE;L@6YK@meZ}vjztitt{oui}o}}u|pxg`VB<6m]q{~ƧŧĥŨ̮έֶԵͮĦƦ԰޽ٸѱӴȩʩ߼ӱɨԲϭѰ⾤ѮԱܸݺ༡ǫѷͳ¨ݺٶལ¨ٷۺݺ⾡⾡׵ӲЯ̫׵ϰǨֵͬҲаƧy|jweVVJA:40730942;52?96?:7:5272/841=85;73;74:63%%%)***++!+%!3*%3' (((*++'((())&&&.+(E>8j[Om¤Դݽΰٷ{ͭ˭ݽظүү~yŤƦåȪ|}ywoklontd|iZo`zhZ{hZxgYwfXxgXpaqb~oayksg~shxlxltgtg~sgzmzwwjvhzl}o{n{nq}pzmykylqttxs~ui{rgzsgwpewodyqfzshznxlxkw|}~|o_XO:73&%%%%$#$#%&%''''''###! +)&SMFsk_tumbg_VaZPd\SxqfwlvnbiaWe]Sc\RZTKg`WxpdwnbQKCJD=xlznzn}q~vk{pwlxm{q~ry}{xx}tsj`QKF653,,,)))******''&&&&'(()**)**'(($$$%%%%&&%&%++)EB=:332233455565565454333222121010010///---...0111223433444559:9OLH{tj~||}w{||~|{|{xwwxwtuvurzmylxk|ovu}p}ptñszo~ujvxvkzpfzpe}rg|p{~|wuuvuussuvxx~{{|xmSNGyrhȬʯδ㵧中縭꺭鹬麮ۯŝ§Ȭɭаϯʫȫɪݰξ軱ح™ʠ빯෬ȧǟը೥㳦ը고DzűⱢ㵥궦ﴩ~{wwpng}mf|me}pdvi}s~~v{pwŴкԺٿؽĩְ䶙趚㵝뼤Яӻ̷徯ǹ̽տ̵иӻԻӹизжȵллò޼⿬²ѵȨͲ|~ͥѬˬˬ༩濱ฬش߹ǷⳢzsccVkYThXUfUPfPG_NʄiۏuljvsɊuюtnugoizvwuqqnosr}}ȠϦس븦⮛œïԧթӨƛ͛뭟ޤ~og쮤شΩwӛǽȿﻱ䴧꩖u̒~骙ׯxਖ਼븩㳥崥쵧﷩촦꬞㦔ܡ蠌ƀn/(&0*(0*(0*(1*(2,*4.-3.,3.,3,*4.+6/-81/:30:2.7.*@60wi]{y}qzntixmbvk`pf\wj^z~~xywxm|rgr{~{}y[RHC?;~p{z}}whzjo~n|mrrp{lrdwi\tg|nwk|ozm~sg{pdrg\mcXlbVrg[ym`~rd|obrfZh^SpeYvj^vj_vi]F>6TLDw{l|muxrugxiykylxlxl{ns|zw}o}qe~rexrs{krdwhzjqam]qa{j}l{u|kt}k}k[zi[sbsaRxfY~k\m_vgvg~k]q`RiXL]ODUH>WJ?XJ?L@6TG=pi^~wk}ujvs~qvj~p}z{osy{aZPME=mwvzŦ{rr~ĦȩЯɩĥ¤ȪƧǦаƧԴ׶ֵ۹׶ͮέȧѯЮ̬ϮԲڹᾧé¦ȭ§ٶ۸߼༠ܹӳֶũɫʫ߽Գ۸׵׵Բٶ޻Яp`\PG?95940841:63@;8@;8A<8=84952<74;63<74:64&'&******,&"3)$2'"')))**'((***%%%.*'KA:p_R}j̭طȫŨظʬȩŨǫϰӳӳյϯĦ£Ϯضͮضέұѱϯݻར߼ɨyϮƧϯɩ}~kp}lnvfrb|k~mzixgzjuem^k\|hZo`zjqbpatepb}k]cWLbWLh^RncWjaVmeZsk`}thqssvz}vu}qzy}qt{|qdSLD1.* !!!$$#%&&#$$(&#MGAof[ylq|vl`kbW_WM`XOqj`slaog\g_U_YO]WNVQIc\Sulaul`MG@OIAsz}{z~yww}qr|o{ovszztx}y{tiZVP<;9./.*+**+++,,***)))'('()(''&()(&''&'&&&&&&&/-+OJCvnbwyutxyx{{wsuiOJCzpendY`WNWPGibXwodph]f`Wrlae_VUOH_XPym~uhVRJ<;9554343565565787798787798687455121111110000111333232343566;<:YVP|q~|xvwtx{~zzz{xx{||~w{|zyy{uy|yvttsw|wsxl}uivjxkzrf~ui{nsy~~r|pvlypf~vjym{n}pzn{oym|ow~~~~~znXRKwlìȰΦ൪ᶫ㷬෬⹯ĺۮũȭʯ˲̱˯ΰªϪʽʿɾŻ꽵⴮ҡ豨뷮ⶪװӬӬӮ֮Ӫة㰞峢︩ڨžڰͧƞ—}{y~tyڹķ߹ҭɤ~sjsgvjpvysns|ɝڡ~۞}˚֭໥ʲȮůƱ˵̸ѾòŴŷŮ̳ɽڿӺٿͿ;ɻμݾ˦ٷήz|xwtvsoƣ޺۷ӱٳ쿲ò˷ヲ١זtkkscvcwcϏvݛ~yw|{unh{c^iblcqekag`jflfldmfmgxowvovlȦϦթЫɧvۣਜܦӡrgtƶƺذȞ”ɒ͒zأ鴤ĸʿø奏zֱ̛ɫ}絤켬ᶨ涩껬óȹ밥íҘ0)'0*'0)'0)&2+)2,*2-+3-+4-+5.,71.920;4180-6-)5,(H?8{mpt~{x~~yyzwmukbukashq~}{uwm{p{ob<85w~vuxyqwh|lo|mykwivhwhwhqdocWqdtqtsquwr~nrr{lyl`wk_}pcvh}qdti]pcWI@8KD=szryqyl_znb{oc}qethwj}o}otwptguhxk}rfqpnqswhpa{jonwerbwfuypo~lm|jyhm\ygX|j[wfX}j]ygYsbUwfWo^QeUIXK@QE;^ODZL@QE;rj_znznxsuyks|yxlw{}qZSKVKBppy£ǧ¤ťʪӳ~utĦƧϯаѲٹҲ߾ҳ̭صܹŬǬȬٷүέȧ˩ͫʩٶڷܺٶ׳ܹճ޼⿤׵ӲԲ̫ܹͬ޻ὡæὡ¦޻ճڷĨɭϰʭ価㾢ճ|~l^WLF?:6<73941941@:7>97>96?:7?:7:52941;6440.'(',--,,,!.'$3("2)$*+,)**()),,,&'&2.+RH@{jZuæմ޻ҳͭٸɬǩ޾Ӵɫ὞˪Ħ߻ῢȫгͱ׵ܷ̩ģѬ˨ͬٶݹײɨˬy{å}txf{jstpqnram]l\yhufsdwfZscVl]PpaS|l^pbugzlw}{tw{nwk{qee\SGB<-+( &'&,,,+++((("##)'$KE?bYPmcYneZvmazl_odX\TJ_WNpi_pi_ldZe_U^WNZTKVQIc\Sri^ph\ID><`\Uu~{||y}u~qsuv}pzmzn{n|nwzxttxwuw}|xtwx~~{y}y|yxts{ovj{nsuuvtyszmzm}psusttrt}sfypc|rf~sh{nyncsi^qh]h_UndYiaWqi_zm{}r\VO~vké渪⸬ݶܸú㼴දȣůȱƮͯɮĩٱȼƻúカ鹳罶ҫ֦궫ᴨܲذӭͪѬЫ̨䲢峢䲡߱鸤²㳨ɣٳ߶޲寣ۨʝ˗̘Ϡ帬͸ð嶨ٶ˱yy||}~y|soej_revfqeyn~u{rthvjzpw|wx~~ȯʴ绨ษصճǷԻưϷͿյ˰۾ϰƢ̠֞럍嗄ᛇգˣЪấֳ̲ٟ奁դ™ŒΗ۝Ι˖z|uz|垂ДxȏvБxωoŀfu^injp}hxclppjonsqwtzyؽobwlx~yg{i䣑괨ⸯڰРɔΖҕ͕~ԧ糧ø´֖}ÚѲw콱滯뼭Ƕ´媞¬7,)0*'1*(2+)2+)2,*3-+3-+3-*5/-931:31:206.*5,)7.*6.*:2.j_Urvgw{p|q{qz||xyyxywmujw{}pxwv|~z|vj]974wkt{pr|~mxi}n{lzlwiugvh}nwirdugyk{msr~p|n|npuwvuyx|~xszkk]P>94o{szm_xl`ti]xl`wi{mp|mxiykvizobugzmtgymu{judud~mu}lyh{j}krvftcqb}m{j|krbwgws|i~kZraRp_RudVvdVyfXtbUiYMdUJ^PDNA7K?6PC:RG=sl`zmsxsuzmu|yyly||tiRLD^RG{¤åƨѲаʫŦ¥ŨæŨŧݼῧҲ̬߽ٷɨ˪˪ܸ㽟߹ֳӰ޺ҰϮұܺ俤໠ὢçé߻ʪĤҰڸũũæܹᾡæƨݻͭͬ໠ܸұֵ˪s{iZ]PGIB>C>;A<8=84<73<74=85=85=85<85:51:52<852/-)**-..***!/(%3'!0*'+,--..+,,-..'&&93.`SHnæҳյٷŧȪɪŧ˭ϳݽŧǧͭʭӵٺԷϳʭçϳǫʮݻϰƦέѯ޻ݺЮٵ۸۹ԴԴ߾ݺᾣŪط̭ƨٷض̫æ£zvtu}xn}ksasbnzkyjn`ucUwfY{j^udX~w}{xlxncpg]meZhaVZTLE@;+)'&'')**$$$#$#)'$HB<_WMkcWpg\qh\rdsg[\SJaZQslatlask`jcX]VMZTKZTKc\Sof\ldZE@9YQH|wu~p{mzmzn}{{y||znuizpdvmbzpdyobzocypdzqdviviwiwi~tg~tgwj{m}osqxj|rfog[[TK@<7)('"""###&&&**)&&&### ! ! !!! !! !! !!(&$OIB{rezzwz{xusrvrsvhUPHnf\e^TZTLUOGhaXrj`e^Uoh_xqgng\h`Wme\~ujssr~qu{u|ouy{xtyxslaOKF66400/--,,,+--,---,-,----.-*+**+++,+-.-/10132011.//121455565>>;`\Tznz}|}xvvx~{y}{~~|{}|yz{~{~{yvttts~qv}}z{sr|o{n|sg{rfzm|oruz~~txm{pvt~uiXRJslcŦΪç崣缰ܷ⾲ѳɯˮƪ廯µĹᲯڱݷº̲ᶫ庮ඨ۴ԭϪӬװѮΪխത޴㸤Ȳųュ鸫ݲϭܶ⻴湰鵨ᱡةا֨Ǣ˟߭ŸξιͶ°¶ʵǨáŦѱť˥븫۶xǔĔy|q{ukclfulxtznsfrӯð˺ͼɽӧʫ˴־ȼп̽ξ˽¦ͳѵвײ߳ŴʴDzƯĪՒ~vvowp|ru~법߭㱙⫖⩗䭝㫗ȚęěɤΪάƦʥ~Ғwʎuplyjpj`d`z|zllugiagaman^vdܚwxȓΘˡṢ̌ᬦ鮧Ɠxusw ~oƗǽ齱ijʷܥ¯İܛt}r;0,2+(1*(2,*2-+3-+4.,5/-6/-81.80.7/+6-)6-)80,7/,5-*3,)YOG}u~s{pzstezvvyu~shui|zttvy}wukzo|~zvyozpvlzqgpg^~tjvxv|oa>:7}qext|rdsezkyjvi~rf}qd{pcvgvhyjwhxk}orq|n}otuwwuvw{}{zz|~m72.}m{r{l{msxqxz}n|pcxl`|pcsgvit{~q~r~uve~l{jvw}m{kqtxgtcvevetdzixhxfWn`sdziwem]zgXzgYq_RjZNbSH\NCeVKfWKYK?L@6J>4RH>umb~uisxtw~py|szny{zrhLG?eWLsvttzɫ̭ŧմطǨȩǨŧǩ˭{έմұέض⾢ٴ״հ޹㾡ڶ״ͫձ״ἠũ۸״޺çϲдѵ俥ܺٷ߼ݺĩĨ¥ཡ̭ԵȪ⽠⾠߻ݹֳཡΰ̭׵vo_ROE>A;8C>;C>;?:7<74=85?:7@;8@;8<74941841<852/-)**,--()(!0)&3& 3.+.//.///00011('%E=6rbUvҳ޼ںŨƧطƩгշħĩܹǪĤϮٶĨ¥Ʃͱͱçʭ˯ǫɬȪ¦ὠ⿠Գᾢ޻ֳٷںڸܸǬȬƪϴѵŪӲɪֱ̪ͭ۷ڸմ׶̫ĢäԳֵճЯ˫{yuqornvfvgrd}obXk_Uf[QncXvk_uhylypezpfxncypfyqf{o}qwk}sg}thxodrj_ibX_XPKF@0.+!""##$!!! ! ! !! !! !!""" (&$D?9f^S|re|o|n{qelcX[SJd]Stmbxqfxpeph]aZPYSJ[UMc\SkcYe^UB>7\TLtwu{zw{{wxxxqykzmt|||v~r{oyl~thldYd\SkaWjaXjbXsi^oeZmcXri^tj^viu|s|oyocbYPFA;.,*%%%&''***0//++*&&%###""""""""!!"!!!!#####",*'SMEvhys{lyk~p{mzl{my{rvh]VNog\e]TZTLTNFg`Wqi_g_Upi`yqfoh\haWicZxl}|}}xyvxxxusjcYIFA454010..---,..-,,++,+--,/..,,+,,,++++,+-.-/00.//+,,-..344566CB?fbZ~r|}sv}|vur~q{n|osrv}p|zt|qwx|thZTKumcž췧빫幫軭øȴŭƮɰЯ꿱ɽ￵ׯŨ޿Ƥݴ߶ڳر۱޳޴ӰέƣٲݴٳDz軪巩ߵѯίܺ㽷㹰ߵҬ˧ҭЭʦ۩ƶƶʶ̶ȷƸɲЭЩѬݹٵַƭڲͿ̼ٸ̝֡ܦΦղѪɟᨔ쵧ߵᷬԯ~Ø{v~suvmskvn~tuz}|mszvwݾξο޿ɯβٸ踬̶ѺѺϷϸ̷՗ϖė⼢˯༧│鶤꼬ʻƷıٱ֯޴ݳ㵥繩渨׭ڭ©ʮè{ՔwʌunjtŒsokpmpΖwtwx͙۠xs~rvmneqf{n{unjuryw|wktezhlp|}n~k١ıƸdzı鱤ԦⲞt=71*1.#'$-(%3-*2,*1+)2,*3-+5/-61/93181.4,(5,(7.)6.*5-*6/,6/,:2.^TKus}~ymzn}~m_}{z~||{twz|}r|q}rtxxxy|{}yws~qFA;A<9>95>95=95?:7A<9/-+*++-..(((#1*&3&20/011./0011122*(&PF>m^ӳྡྷæɬç߽ʮƫܺƪɪӴݹίཡ⿤ұٺĪȬĩɮɬԷҵαʮũظ¦ɬྡྷٸ׷ݻЯé˰ػгũལᾣͭұܺ⽟㾡¦ᾣ࿥ݼԲȧͫ۸ڸŧ⾢ũĩ§}zä|vw{vfZygZraTm\Ol[O}j]na}j]rdsf}k`l]SgYOj\Rk^SaWMdZPf]S^WNaZPa[RSNG862%&%$$$%&&&'(#$$$$$ !!!"" !!!""#$% (&#KF?wnb|zqeiaV^WNjbXtmbyrgtmbog\h`U]VM^XOg`Vnf\f_VC>7ZSKwkvi~re|qeyodwnd|sh~ti|ovxwst~p{pvx{{}{z~r|uiumbyqgxm{pymxqfulbumbtlavmbwncvmaqh^le[le\qjayqhzo}q|p~r~q{n|sgzqfuiynbg_UYQH?:5*(&###!!!##"&&%$$#%%%&'&&&&((''('&&&$%$%&&%%$+)&OJBzqdw}}zys}os}{tx~p_XOri^f^T]VNVOGe]Tqi^h`Voh^{shrj_haWd^U|p|~wnh_KIE454121110221443221121221222332222000./.010111/0////122355455CA>gbZx{|||x}~xx{ztuwy~~z{n}pznvjxlwkx~{xv~zw}|z~r{nxkxpd~uhumbri_qi^rjazp{nxpeYSKmf]spwr|xz~v~vxãĸ¹Ħ}ŭůƳĭƩ޶轵ղ໴żǬ֭ݴܳڲڱᴧನҫʩɤӬͩҬ㹧⸨๬ݸҭҴֶԴѳͮЯڻǫ쬙ǰվٿҽ˻ĸԻԶ幨հǷ³ٵʫⷩ³òֶʦΤТҡț̢ժԨܬ洤ĸźԮÞ᳦ͧ۬쫟ଠȞv{~yttksktkwn|tuzҴҼμʻʻṴ̆侴µѺֽԼս͹ԣΥħĤͤฤּ˶ȱŮ约۴ֳܻȺɹůŲIJƳɸĴ۲ɤڲɴҹﵘܡɒywy|wprsqޟç殛ϣɠڣ祐㤑⦓צС֤ӣÖrr}zswssqmdgahbwaZr]Ts_Tu`T{bWl_thwjteviΝޱⵦⲥ^OF!@60F?973.4,)4.+3-+1*(1+)3,*4.,4.+5-*5-*6.*90,5-*2+(5.,81.5.+-&#eYMzk|l{lzl{msgxj^yku{iZoprx~}r|}tyluit~|}rvs}qus|ovy|~~GB5654444545657877879::9::898898788566344555677787788788787:;:NLHtne{|}}z~|z{yw|zyzyxy|||~z}|sznynuzz{~~|}xvv|pw|}yzvuvuz~}wwuxyuxtzrfVPHf_W|rh<33N?TGHB?F@3,C81E=8<614,'4,)4.+3-*2+(3+'5-)4-*4,)5-*5.+60-5.+1*'/($2+'4-)3,)k_T~ou{vxm~r}q|oqts~qtw}o|nviuhtgcXNTLCNF?VMETJB`SIp`R|j[ueyj~pdyl`~qe{ocreyioq~o~w}}x~zykseooJB;ne\sf[Pxj]qcugvh~rexmath]ti]znaug~o}o~p~pt{}xuvyyzyyxt|nrewj]KB9f\Qxyrrvu~{yvfvprotd}mwg|kxgvdUm^lxg{jwfziwg{i[l]}j[~k[l\~l]|i[patcSo^P]OC^ODaSH^PEVH=QD:RE;h_Tumbvj|w{n~pz|~tit{}kcY=82yhwy~y}ɨӱݼճɪƨʬǧմܻѲĩֵʩܷͪ԰үҰձħʭĨ忣߻἟㾢Ĩƫݻضصϭٵἡ޻༡㿣ɭ¦ݼƨ׷ƧӲ¦޻㾡ˬỞȪв߽æreYRF@=B<9D>;E?:D>:?96)(',--,--" *# 2*&3'!010455233/00010H?9sd}ˬǪɬǪçɭǫĨ߻۸߽çɯū̱ũظٸ¥ӶҴ˭ʭʭ̰ʭྣĨῤç߾Ĩ¦ضϱǩݺྡ߼ħŨ㿢⾠ͭɩѰݹ἞ղϰٸͮаطͭڷԱͮ޼մϯ׶Ѳٸ§༠ҰĦӴݻͭssw}w~ֶǯʹέٷ߻ߺݺῦŬŭŮῨѱ˭xw~l`ND>2.,0,*.*),)'""   4,&_PEyfYyfYwhZyod|pcj`Uph]wodzshyrgrj_jbXaZQicZjcZnf\f_U;71rj_}yid\DCA678466455/0/-..+,,()))*)()(&'&%%%%&&"""!!!#" ?;5_WNtk_|oy~zyyt|puh|sge^S[VMng\lcYh]Si\Qyk_wmaldZune|vlyshvncqi^r~wZVO776111232343010/0/010111232132122011122232132/00/00/00/00.//210MJEtmc|z}uylviqxzsv}{|ovjwjvjzmxxtst|mr~wt{n|rfuhwjykviuhzltz{}{x{y{okd\ZTMuj        2'$E71UB;\JE^NHsaVre|pw|ryq{|z{ŪǨϬʩӬ䶪黮丬뾲Źصٶ⺭軮⿱ֵӬΤ꧑æƪíᬟԠߧ߮ܳ侭Ħ෭׭ȞԢأ٪ĸǼݻڰ괤ݱ嵧˽ȸŷƸ´⴪㻲̿۸۵ڱޮ߰絣㵥弬óպ~mih[Zm_\rb_sd`vfcpku{{|z嶢ƮɲDzɵͷѹкǴ乨ʮŮɰбŸΪȴïͷ׾׺˫ȥ¤˪ݶɿѰȳųٰܱðͼмиغ޺²ݺطݶ۱͹濯²Ƴ̸ɶòŵųﵨ췩궨ݪءܥ㭜꫚˘xp˒}֘ϓuz{pmscW=3.6-)6.*8/+;2-<2-=3-A94:504,'4-*2,)1)&2*&4,)2+(1*'2+(5-*6/,5.+/'$0'#4,(4-)4-*2+(^TLvityn}r~szoewk|pymvk}rgvkymthymc|pesgxlrs||vyn{qfkaXRI@cWLyk^wh[m`TfZOi[OtcTn^razj\ykyk}nuyxwtttu|~}rH?8_XP{x}{mH?7MD7KCYPGtw|nzlqqopv|~~|~tdt~w}ltcvgo`qboziq`|ks{jnowfvdUverbq{jve|iZxfX|jZ{hYgWJ]NCYKAWJ@VI>VH>QE;og\tlaxk{tznq}vjr{~f_VB<5p£ϮϭǨť̬Գ׵ῥ̬æˬɩͬͭɪ£ƨťЭٵϫЬٵϭЭݹར§ĩɬèéɮĨ¥ἠ޹޺རƩѴʬ̯ƪũæЮ׵ͬյᾢӴϰ¤ݹɭطxh\LD>941?96D>;B=:C>:=85>96@;8@:6@:7A;7E?:G@=E@=+*)+,,-.-# ,&"3)%3(#011454233000787aUKrֳ޻ɬոҵӶֵͯ׵ΰܻ޽ٹῤƩǩç߼çǩ޹޺ᾢħ㿢ܹٷܺཡ¦ۻ޼ض̭Ѳֶ£б̭Ȫͮǩ۸ִŨˬƦ὞ŧŨܺ߼Եϰӱаٷˮ׹߻ܺ⾢༠׳ǦťǨͬض׵ڸĪêxsuxtԵںĬǭʰʯɯڷ˱Ǯȯҹϸས״ԲɪsfSHB9423/-/+),)&(%#)%$#  !1+'NB9m\Oo`tdl^ypethkaWne[qj_wpexrgqj_jbXb[Rslbundri_e]T;71_VLs{mruvvx||xz}}wvwtuwx{xxzyzqg\WP>=;233233244./.,-..//.//.....-..---,+++%%%%%$&%#D?9i`Usev~{ywu~p}omdYYSKkdYlcYi^Th[Pzk_yoclcXrja~wl{si{rfypd~uhyzsiNKF443010233344343222122332232232343122232444566455344244233233<;:^ZTw|~~~zz|z{zz}~zxzwywvwxu{o|o~q~rwkxkyl}pwws}p{o~q}p|o{nviwj{n}pym|nxv{~w}r|pymsz{}ytx|y~vjgaXYSLwl                -&$B52bLG}^Xiamdz”ŚŤ}||xz~t~wzΩخϩѫ뿯̹׳ҫϪ֟褗᧗氤͡Ęؤ䵤ٳΧ仮̽̾Ƴװ᳨֭߱¶ʼŴٷ೥൤ܶب续߻ӳԱͪͦЦԨ䱟䴤ᴧ乫ۺεȲyuwrz}جƛ~͒~zx}~—ۣ㸩ܷͱʱҳ๫ιܼsǭոҰӭشѲͬӬʽ⿰ķ弭۪ḢȴȺʿƻ˻Ⱥ̺ӿƺ̾Ѿ˻˽ɻ﷧֤Ҟڥ⮜粡ڥĜßϗۛ˔~qotqaQD<6.+:1-7/,6.+91-:2.:2.:1,C<7<620)%/($/'$1)%1)%0(&0)&3,)5-*3,).'$0)%3*'3+'3,)4-*5.,4-*D<8qe[uwxyttjqh^md[md[of]qg^ri_}rgznxl}qvtqrwk^~zxszlzlyrzktsv~|yXNDOICyla}vvi\s}o~pvh|pcpeYdZPVMEPH@\RIqzvzkseykzlxkqy|nzlwvtsq}mziqa\NCG@:yjrvisfwi|lo|kqx{}{{{|yx{y|xfvf}n}muf|hY|iZzj}l{kyir`|kqyh~mnvel[xgwgsdqbxfW}j[xfXxfXp_RbTGVH>VI>VI?VI?YK@RE95C=9A<9A<9A<9B<9@;7?96@;7@:7?:6>96('')**)**.($3(#3*&133343233011676l]Q~ϮǩַܾոҶʮǫǫ¦ۺ޼Ʃȫɭ⾣ȫϰЮ˩⿠Բ׵⿣⿣ݼݼ۹ڹڹæĦѯὠ¤ƨȨ۷ͫӱ۸ݺ⿢ܺҰ޻¤ɫ俣⼟༠ūϱ̭ϱŨʮħ⿣߻ˮߺܸ⽠ħԳ۹©êͰ~zsxw~qӴìӲѰ̫۹ǯԺεܺ޼ȯʹ͵͵«ĬݻѰ~yg[I@:50.3/.3/-/+)*&$%" # ! %" C:4r`T{juxp|qfwkndYof\ph^wpd{ti|thog\`XOri_yqfvmbd]S:72k[Ovfteo_{hZweWp`Rp`SteXpbzm`|pczm}qtts}}~}yt}p~qrsqrtr~p{nylylszmri_XQK;96--,--,-.-***)*))**)*)******,,+,-,+++%%%$$$&%#FA;kbW}n~|z{tk^WQHh`VlcYi_UfZOteZvl`lcXqi`}vlxrgwodqi^|rfwuzmwjzmvjzpd~tgzmv{haX<:6++**+*,--/0/232343232232121232454465565455566565566566677787DC@faZ{|zxx{zuw{~~}|}~}{|{z{y{z~thf^TYSKym                         ."B72E;7C98I?=QEC\LHeTOl]Xwgb}lgtj{nsi}rxuvv}twzysoqkun{|~ƴó鳥籥⯡谠ʧӭüƷ཭̮سᵭ乯澴ᾳںַήմѱԷѸ꺩﹩±ԧҪڳԱЮʩƣǣɢ㯜츦䷩嵪⳨ݻȮŞƟէۥજԤϞܝߡȚzw~£Ǩƪίܴôæ|~ȫշҰձʬr{ɣ׭ḧ濯޿ǹ津ݮпǷöɾƼǽɿĹŶȸǹɹبԡ֣ݪةҦȨ̦ˣЦۨ欗ЛtdfTJ81-8/+;3.81-6.+6.+7/+6.*7/+80,>7372.(# /&"2)%0(%/(%1*(5.,7/,2+(0)%4-)5.+3,)1+(2,)3,)6/,70-PGAxlaqv}u{p}r~r~tiulbwmd|q}r}sivkuu~oyoc{u~xrg[aVLth[{m`zk{kRI@($"D<5l`Uvi^sfuw|~~r}vuxswup|lxhvdgWID=7vsugvhzl|msxtvy|}zxwt~qx{|zpr{ktdwftdvgp}lm^tcwf}lpn^n^xg~kk\n_eUIzhYucUweWxfXvdViYMYLAUH=XJ>SF\NC[NCtlaul`sy}q{or|||vjs{WRITJAtzwv|ȨƧ״ݺڸֵض߼Ѱ̫ѰêĪͮʨֳ۷ŨѳȪݸ忤èϴչγʯԹؾѶǬ߻ҴɭũƩ˭Զӷٸˬȩݺ߼έȧܹ¥߼uf]QHB;7;6372/:41B<9A<9@;8?:7A;8B<9C=:C=:B<8@;7<74###()))** 0)&3("3*&011011000110986{j]ұݻӲγԸѵβͰʬ¥Ĩɬ˭ˮʮǫྣͲγɮ˯޿޿ݾַǨʪȫĨֶյῢæ⾡Ѳħֵç˭޺ٶ忡شҲήѯֲǦִ¥Ǫçۺб޼㿤ǪضЯ¦˯޹״⽡αȫçƩũݻֵԷywt{urӴ߽״ѯܺε㿧϶īص߽ɰȯ͵ɰêέto]QC;43/-5206210,+/+*&#"# # # !*&#I?8ubUvģĢvqi_}thi`Vg^TjbXrk`rkayrfnfZ`YOri_|sh|sgf^U850{hYmzzq}ltdvevfxhrbn^o`sdp{lrcte~l^yi\qcwi]si^}shxluz{{x|~zy}vttxwtp}n~pr~p{mxjxkrzmtk`WPI741(('(''((&$#"$$###"############$%$$%$ %$#FB96?96=84?96<73<63<74;63<74;73941<74@<8<74$$$'(('''!1*'3'!1,)022122010765C@82YMCyhprwewgXi\P`TI\QFSI@HA9?942.)&# !peZŲǴǵ||{s|zmadYOF?7bWLsfYth[th]qf[rdoz{yzz}|vtzlykvi|nuwxvxxwgwgo`sdufqbziraqaqa|j}jzivem]~l}lveqan`}k\o^QdTG_PDdTH]NBVH=UH=YLAL@6LC;kdZrj_wvymrv|{z}qxwrC>7n^RͮίåɪάӰɩ¢ǧԴݻٷ§ɮʮʮϲɭ㾡հẝçȫĨéǫū˱ҷҷҷʯǬɮ㾣ὡ̭ԴĦƩɫȪĩǫʭ⿢߽ΰԴˬЮˬٹӳ۸ni[QKC>=84A;7D?;A<8@;8<73:51@:6@;8;6373/940<84>963/,###)))'('#2+(4' 2-+233022011::8FA7yfXyʨx]XPoi_g`WiaWkcXpi^ng^pi_ibW\UMhbYvodwncc[S42.~޺ܸǫ㾣ڷ˩£ϯӲصѯãǨ£}ufwu~o~~|q~px|sgsdyjvhm`}j]veXqaTsdWzk^|m_uh[re}nw{sqq{n|os}ptvvrulaZTM=:6--,***)))$$# 63/YSKundtwznvjuitk_ne[vmauiykrofZZTLb[Srh^kbW_VLgYOnbWjaWpi_rkaslbpi^e]Tvk`ymxmvwxwt|~quh|reuguhugxj{mykwiyobaZQEB<,+*(((**)**)()(&&&%%%''&''&'''((''&&###"""##""#"%&%&'&((()*),,+B@4sMB^Tob{g|fixī˲˱ΠֳôǸŷù·۾ݾçնöö⿵԰ܱ￶ὲź署ǹرѪըԥʜɚ}䥅粘ʻܭҤ⸭ŷȹ۟ƚ޲õô÷中˥㷭̿οɹǹ벢٥ߴذѩw|צܴ䵫尥촣波ѣ֨¶Ȼٰ~zwvx|owzt}sz}w¤պŸֿµοͺīౖӠޫܸдٷ̲j\S/'":1,=3/:2-80,4-*1*(1+(1*'1*'2+'6.+:2.91-7.)91-5/,$!-*'1)&0($5,'6-)4-*2,)1+(1+'2+'4+'3+'5-)60-70,6.*=50\TLwi|qf{qg~tj~tjssuuu}r{p}rtvt~r}rg|pcsgsjajaYf^Vg`Xtkbulb~shsi_z{{|||zxmb\QGmvqyivfufyjwhwithuj`jaYjaXh^Ui^R@92g^T|Ųȵɶȶzw~zqgztv{|zwvxytxkrepdYbXNPH@MESH?UJ@ND:MC:H?6WKAaSGyiZ}lqrt|m{m}oo}nyis{lna|~nrb{hY{k|kvfrbo_l]xg|j|j|jtctbtdm^zhZl]k[N`QEkZMiYK_QE]OD\NBVI>VI?]NBYOEjbXrj_w}qxmsy}zxst{o{rg<82udW~|ɪĦ̭ȩƧʩ¢ڸ⿥§еԸҶɭἠ⼟㽟Ũ޺ߺˮϴͳĪƫὣȭдɬŨΰͯũˮɭǫ߾޼̭ͯڸǧ~׶ӱԲִ~teZNFG@<@;8?:7@;8=85<74<74=85A<9A<9A<9?:6>:6>96=8551/%&&*+*&&&$3+(4' 20/122122021@?98=98=872.-.+)*'%$!#   !'$#/+)E;4p^PxŦͬy_[Rnf\g_Ud\Ri`Voh^uncvncmeZZTKc\Stlavnb_XO--*oάݺӲὢ⾣¦§ضŦѯ߼ɮʮгƫԲ״޺ڶťzjuw|mxy{tt~v{wupvfterctdqarbl]tbT~k]{iZsbTsbSyhXl^PeXLgZNsfYpeYui]wl`tj^vlbjbYTOH974*+*))),,,%&&  !! !!"##$$$!"" !!,*'LG?g`V|sgylzmymxkyl~uivjym~pxpg[_YPhaXukareZbVLgYOqdYmdYmf\mf\qjark`c\Sri_|ti|sixmznxlxl~vk|pw~pq~o|mr}}xxjjaWKGA11/,,,***+++*+*+++,-,././0/110010///11101/..-.../0/...//....331MIDkcYwjurtuttyk|owzyywv|~yrqtx{q|nu}yz}~xyz}zv~|}|~wle[RMFs                                                     >4+\I@pTJaUh^g`kbkaqgwm~s|~zw{|snd{tٵ޿øҵ˪޵۸㾸ƽȼƺ·̽Ŵ̧ڬץ٨ԦϢۤᧈ٭˿躭ѥޮ䵪丮Ÿ̾ʝĥ䶩ż౤ơϬøο̿ɻᴦթ³ǸṬᶨөܦ౤പ௣篟ଜХծ๫콯ôõƬŧƟɚߤأxwm|v}ypmzlg}lfpj~wxwɱؼ¶ʽͽƲݶܦ᥄継ڽȭul:1,5+'=3.>50<3/:1-4,)1*'2*'2*'1*'3+(6.+;2/=40:2.8/*:2.71.%" ,%"/'#3*&4+'4,(2+(1+(1*(2+'4+'6-(7.)5-)60,5.+4,'5,'5,'G?:whuiyoe{qg|rhyoetjavlcwndtkb}si|siri`xneyn~rzmwizjrt}rzpvlypg|rhvk}rf{x~xwtvksgqcWnxy|xvurvvt}r|pujviSJAZRJʶ̹н«ůů{{|}q~}uu}q~sx}rxzyzyzyxl{pduj^~qd}obpbqbtfYB<5UMEmcXmcYsi]~qdsfqdXwj\ufzjvfufrrbrw~lsbqbvhl^wdV}j[p`p`scm]wejZs`q`n_}k\vf~k\hXKk[Nl[N_QDVJ?TG=]NCVI?YK@`VKhbXtk`xxlymrz|{vvuxmqi_950n_ȧЮͬ{y˫˫ŧέɨάΫǦ׵¨ͱββȬȫ˭ħ¥̯дβͯĩɮѵӸ̱ũ⾣޺ʮç¥ƩͰ¦۷ܸũȫ㽡ħ޼׵ɨʩήϮ{{j]QHBC=9C=:D>:A<8?:7?:7@:7A<8@;7941<74>97=96B<:C>;:63'((,-,'&%' 3+(4&10/132355454HFBWOG{޿ܾϲɬڽҴαͯб߻ϳ߽бɫۺҳֶӱЯܺɭʮָؼвǪҳ޿дӴå˫طæҲĥĥ׵¤Ʃʬʰ⿤޼а׶޼ȫط޼̱ܿ۾ὡὡܸ㿣շгĨ俣ұƨ̬{vjt~}ұ۸ὤӰǧԲ̰ʯ˱˲ͬħҳصҰyzh\OE?=86:5373140.-*(,)'&#"$!!"'$#.)'G=6n\NmĤ׳b]Tof]ldZe]SmdYrk`wodyqeldYZTK\VNnf\tk_\TK32-ٷɪɫ̭׶۹ܹܺڹ߽ܺܺྣǫеֻ׻Ͳĩܸ¢{jwy}osz{z~άɨƧ~w|wztozglvdl\}jZo_}k\|iZqam^weWp`SUKB82.-*(*'%'&$ """!"" !!!""####$#"##/,)RMEumau}vma]WNibYvmctfZi[OhYNqdXmdYibXkd[pi`pj_`ZQvnb~q{nzn{p{pv{yzqi_NJE654342010121000232565454222454454344676576232233455666898898BB?b^Vsxqt}orwuzyzmzm~qv~}~{y{}|z}~|ymc]TID>y                                                            '!@3/N=8RC=VF@`NHgTMaQLdVSrc^qb\ua[w`Xr^Wjcrjqfmdpfqitnskxpáٶ۹ʿȻķȻŷ۴թચئӤ̢ͥڧܥϡܮĴʿܴģްƹʼɹ䫞Ǣѭ긯S鼴ʢǡڰȼȺԩ޲ǹŸ鼰׳ѮťĞಢ纭꺫ﶣܬɣ˩ḪƸ׾ηŧҨŮ˴ɵԧ~Ţհƥ|}y{}uz{~uvŪİѠ{֢}qTJB-%!90,=40=40;3/:2/9304.+3,)5-*4-*5-*6/+91.<40=4090,8/+:1-70- *#6-)5-)0)&0*'1+(2+(4,(6-)7.)8/*91,5-)3+'3+&5+&7,&7,&>50\PFf[Q]ULYQI_WNi`VjaWpf\wlbsi_~th|qfrh^ne[uk`sgxi~m]r`w}{v|}wk}}zu{whz{xv{t{oxkZPFbXN͸Ӿ̸ǵǵò|}}puytvy~zxww|}xxzyx{peY~ob}yqvg|ktdk[Pk]taSsbV}pxr~mvfrcuezjtdzgYsaTubUtaS~iZwcT|hW|iYtbTn^rcm^q`RbSGaRF\NBTH>PD:QD;PD:MA7_VLibXxocu}ti|or{z}twvwlkd[=83ud|Ǩа{~̫ʫȨЯұ׵߼߽ݻ޼ɯβǬ˯ϲҵϲе̰ͱѵҶɭƪũǬͲӸ˯Ʃ⾣ç㿣⽢ڷɬ̯çѮڶִͬЯéƭྣҲط̭ƨͭͮĦpeXNF?;;63@;8E?<<73=86?:8?96B<9=8451-83/<74=85@:7?:640-(((-..%$")"3+'4'!///011344986ROIQIA{hճʫʬϲֹٺ׹ָܿ忢ڷϱϱնҳԶѳֵϮٸħ̬ϮĤ⿡ʭǫгԵҳعֺȬص̫ͭˬҲմմ߻޺ä¥ֵĦұŦ俢ྠѳݿǪ⿤ڷڷβǬͬĤ԰׶èὣƬͲү޹ά~wkuί׶êǭٶɩ⿦ʰ©¨ЯɪήҲήЯť}|i\J@:3/,3/,2.,/,*,)'+(&'$"$!! $! ($"F;4wdUs~m_[Skf]nf]jaWvk_umaxpewknf[\ULYSJbZQh`UVOF42-¤ƫʯȮ§§⾣ִ׵ݻƬȮݻ¢ϭδʰǬĩݹŤ|luytr}}|~{״ԳӱԲִԴѱͮаƨʬΰཤطƦz{z{~zposq`l\OWLCA;784173/40-%#!$$$(('((($$#"""%%%&''#$$"#".*&LF>e]Symxph]\VNe^Vqj`mcXeXMhYOqcXkaVh`Vmf\qjaoi^\VNxkzyy~tneMKG::9:;;9;:6772223436769::7988998998::7996771332336777889:9788CB@eaY{}zzwtr~qzmtwj{sgwjwk}q~rw÷µz~}~z|~~~tzqgc]UA=8}                                                                        -%"6+(E83ZJCv_Vlaj^mapfuiwkri˩۷Ƚʼ¶źö۸{ǜ֞Л›~ޯǸǼ̬ǥ趨ƻĹƼԨ˪ڵὴ⽴¸ƺຯʪȡ䷫ȻЧǷٶѱ˯Ǭá淩°Ҩ˫ѵӷѳ¦ãԬ䶩ŴμϿɻܱ֯纰ڲɟ֧ΡԤ败ᱢҥڣҟ|vtnlfog~mevkbqk`zrfslgTG-)'90-<3/;3/;3/92/6/,5.+4-+4,)5-*6.+70-70-80,90-=51=51;3/:2-;3/:40 -&"6.*4,)/)&0)'3+(7.*8/*8/*8.)80+8/*5+'3)%4+&5+%4)$/% '\RH{lwiui\laV_UKVMDTKBRJBRJBUMDXOF[RHf[OteXo_m\|iYp{y~zxz|ym|{xyurdXq}{y~~}ui]@:4tư{wku}|~~}~}xz}{zzxywswk^~n^wrbUm_}iZsbTn^Sykvpzkl^pbxi}mk]hXLdUIgWJr_PwcTo\NubTzhYn_rck]ygXraSfVJ^PDOC9UH=SF96C=:=85>97?:7@:7A<99413/,72/<74941;63;63*(&'((-..#!*$ 4+&4("/0/011443A?;^YQqbU}ЭȨճᾣаֵԳӴˮϱ̭ӵѴ۽ɯ࿧ǨҳֶҳҴ̰ӷٻַ̯ԶɬȪܼԵԴȪˬɪΰȫܸѰѰҲ̮ħϳŪǩԳֵŨȫ༠ط⿥ʯ㾢ѰǨĤִϰίұũβǬ㽡ƫ༣rv££ͬѱȮཤճӱض¨ƬƬὤͮʫŧϰطͫykTIB50,1-*0,*1-+/,*.*((%#&#!!"""&" B70vbUv˩Աn]XPkf]pi_g_Uwlaularj`xkneZ\VMWQIZTK_XMQJB>93ڸᾤ¨ۼҳ̬Ǧױ༠ʮеβ俣ڶྥéṵ̄ħ¥Ұq}pyzt~{~xv{ϭѰϮү׵۸޼ྤݻèطɬٻҵۺĥǦѯ̭ytcfXME=872/40-50.#! ###&'&()(&&&%%%((()**'''### 5-'RE;p^On^p_}jZxhYxi[uhZrdsf~sgsze^Ub\Sc]Tg`Wg_UbVLiZPsdYmbWg^SjbYtlbqj_[UL}~tc^W@?=455577577577233354354566455566576455233232010011121222454454B@=d^Vw{{yv~pr{nxl{nylwlaynbtgvjswzúȽŹ÷u~qwjvivizlpwyt}|{}uym{rfwob~uht{{ozz{}y|~{zwwzzy{{yrxoef_WA=8                                                                              ) <1,=3.NB=gUQu`[pjx{ssrvkoeneqfwgk{ஙܯЪѪձ¹ྱ¢˥Ҭ۳⸱ȼö׬Աڼż˾˾ᾴմǤğհ廫˾÷حڱ±꼰꽰ڵ˯β˲Ъ繬麮컮뻭缰ʡĩʭϰаʬɫΫ캯˻Ƽオ⵫Τ̠䲩踯ְɤХڮܮשů⯞߰촤ߩ›ŝy|tph_SLwi]`TK4+)=3/=40;3/:2/81-6/+3,)3+(5-*7/,80-80-80-70-91-;30>73=51<3.:1-91-4.+,%"6.*4-*3,)3,)6/+:2.:1-90+8.)7-(9/*8-(5*%2(#/%!'*&#-(%WLByj~}yusww}o~rfsh]peZcYO]SI]RG]QFyk\rcxi~pwyyxti~r~y{~}}ytvx|~{ztwi]|nymwl{oznxl{o}rtz|wuysf/,'xl^~~~t{vx~y{}~~}|qxmzoxn|qty~zpyj[~xfWoovezgYxg[rdykl^xeW}j\zgZoauf{hYp_QeUIhWJtaRzfVrarb|iZtbU~j\p_RraTbTH^QFSG96:52:51>95,*(+,,.//# ,&"4*%3)$-//.//553JGBd^UyiԳұضໝѯֳصԲܹԴѲԸڼ޿ٹαֺֹ۸е׺ӶαƪͱдָϲˮᾢƩطѲٸԳήҰԲå⾡ƫ㿣гŨ׵ͱʮ˯ʭˮǪˮǫ޺̫ʨʫԳղὡ⾢ղƧֵ§ݺմåuwƪе߻ʩѱܺ㿥ᾥ俦ǮëƦ̭ȩƩ׷Բťzl\PI@:794251.8318317311-+-)''$#)&$)&$"! "&" <3-s`S|ӱӱzjXTMoj`pi_aZQne[sk`oh^wkrj_^XORMEWPH`XNQKCA<5¤׶ѱض§ٷĥү¨ǭҸ˱ͲǬʰϴȭũ޹ٴȦyjrz|v}z{vܻ޽㿥ʰʹƬ޻ٸյɪϯȮͮҰ̯ϲ׷ȩŧѰͮ}k^MD>;523/,.*("! %&&)*)())(((&'&())***((($$$#F;2l[Mp_wesbo^l[~jY}iX{gW|hWtaQp\LtaRRF;f`WjcYf_Vg`U[SIdWMpaVl`Tf\RiaWtmctmb_YPvtl`PKE320+,+*++***+++*+*+,,---/0//00122233/00./.---++*,,,,,,,,+00/432EB>d]U}p~}wxxw{nvi|rfyqe|shvj}tiym|p{nwj}sf|reuk_iaVi`Vd[R`YPf`Wtmc~ruz}}syl|ot}p}p~q~qs~q{n|rfvjst{or}zws}p|psxsvuym~ti|rh{rgvktznwj}srtx~qrzx}ysxk|tgxqe|sgvjym|p{otka_XP=94                                                                                            (#";31MB=VLHQFBmWOk_e[c[d[d]g^l`~iƛ|ǞœӬ޸๬ˢwypyˢשΧòʺȻնͭĠǣέ㻯üŽĺ߷Ϋ۸鿱ڳǰȰĦٯⶫ䷬ᷬ廱中ȣŨʮ̱̱ȭʭŪׯɽȽ¸帱ܭߩ贩೦ׯԭϪϪΧ٫寝ᱞ붦簤ϤΧԭЦʜ|q[IB.&"_SJXMF;3/=51;3/6/,6/,6.+5.*3+(3,(7/+91-91-70-6/,7/,92/;40;3/;2-:0+5,(6-(70+)%"-&"6.*6.+5-*4-*7/,91.90,:1,:/*9/*;0*8-'0'"(  #+&#+&#$LB;yj}zvq}oxk{mwq{mk^Rk_TmaVj_VndZti_zn|wvyzv}s}sywtryl_ykvjuizodvlbvlbxmc}sh|rhxmymuhwk{ouj^IB;whxwugvwx}|}z{{}~zvl{rhyqfvlxmsyyi^S~~}kzjpbqb{j|lwg{lrc{hY}i[zgZraT|i[~j[zgXweVn]OubSm\NxfWp`}j[k\ucVjZMaRGWJ?QE;UH=]OD[MBRE;I>5b[Rog]zn{owl}qtxuytzny{oZTKNE=ls|wvw˩Ю̬ܺèèܺӲãŦŦ۸§ڶ佡㼟ɫͯʭŪŪʯȫɬȫӶϴҷγǭɮֺոҶϳͱȭĨ༠㿣Ǫɫ˭ӵȪໟմֵ§Ӷΰ¤вƬudYLD?@;8A<8C=9=85?:8A<9?:7@;8B=:A<9A<9@;8?:6@;7A<8C>:*)(+,,,--!.'$4)$3)$,.....986RNHhcZtdVŦ޻ܸڸʬ̯Զϱ⿣ɭչ׺ܾݿܾظն׼۾޾ܺѴʭརҰ⾢Ѵϲ¥ʭǫ⿤ڹίɨ̬ѱħǪϲͰвʭäæټֺĨ¦βͱͲũά£ٸῤմЯȨֳԱصȩήҲӲx|¦ϴ޹ͫƨݹĭªήѲīᾥīཤ״ǧxeXP>84952620720620/,*1-+.*(*'%,('+'&$!($#'$"'$" <3-r`Swʩٷp_ZR}ujypee]TjaWrk`ph^|uixpde^UQKDRLE]VLOIAB=6¦Գдʭݻаܺݼ㿧ٸʫǩյ࿦յ׵ໟ̪{lt{{u}~x¥㿥̰éܺྥῦŪ̱ɬ⿢ֵ̬˫Գ˫Ϯ۸޺ѯ˪߽ۺ~m_QHBC=:;740,)$"!&''***'(())('''((()**(((%%%*% WI>l\mtztsqtzysq^s`]OCfaWibXd]Ue_UYRI`UKj^Se[PbYPg`Wslcvodb\R{m`ykvhqp}ourxyy{}}sgRMF542--,***()((((''&&&%&&&()(,,,//.010////0///.,,+-.--.-+++..-210EB>g`W{o~wvy~}z|{}yz}o}shskapi_tmcxqgwoexpe|sg~uiui~uiymylwk}thwodrkale\jcZumct~yzu~q}owjzqe|ouh~sgwkzodwkykzmxluiymvvsursswx{{{z{~}|ztww|yv}pxlxlwlynzo{p{qf_WP<83                                                                                                        #7*'H71ZC:jRBs[IyaQiYvfr}s}wwz~wyq|tzt{{xqyϮΰŨ߻ⶭƫĩǤᵧ乭ݷ㽴Ļ෰խí«Ǭ˯ɬٲ÷ƺĺﻳ淲廵߻ͧڬ㵩ܳذӯԱձҮۯౡᲡ߲컧ﻬ䳧Ҫְ̦wpB722*'3+'J@:KC=<41<407/,4-*4-*4,)3,)3,)4-*80,91.80-6.+4-*7/,81.91-:1-7-(7.);3-=4.7/+)$")# 4-*6.+4-*3+(5-)7.*:1,<2,=2+;/)4)$,#!&!.'$+$ (!)"G=5{j\vtx{wuspxjwizl}owjssrqxitu|q{z{~~}|{~}~~yzm`sf}rf{odqg\ukavlbzoexmcxnd|rhtj`wlbzod}rfvj_XPFz}{|oyy|}~}z{||}|u}rzo~s~sypfwlvtf[Pzvgsdwh|iZl^}mo|mxim^l]l]xeWucVueo_weVk\wdTjYKfWJwfWzhZn_p_SeVJ`QETH=RF:=85>:7<85>:7D?;@;8=84''&)***++"/)%4("3,(.01011@>;]XQpi_{iYãص޻ͯƨή⿢ֵ¥ٺѳȪͲڼֵ̫ͯҶӶԵӯݸ۾ַ˭߻ħЯѰѱĬ߿޼Դ˭նճбçۻ޼ӳ޽¦޼ҷھػڽڼշԶҴĩȬ߽׵ճض׵ٷͬʪ׶ڸ̬~w{~ڸὤ˪ѰڸݺӲϰܻǰȰӺζʰ㽢seXQC=:<85;64<75=8650.3.-,(&(%#+(&+'%%! '$#&#!&#!A70ucUtƧٷrb\Tvk{qfmdZlcYvncxqf}vjyqeibXSMEQKCXRIKE>C=7Э¦ɭ߾ڹظյ׶ֵԳܺٸϰ׶ѱɩʩĤ{ly{t|z޺⽣éǭǭƫ˰߽ū¨ѰմմѰϯٷٸ̭¥æĥұͬٷٷ{j]QHB=85:533/,)(&*++***''')**'''&''(((#$$""" 0+&ZL@wd}ŦήǨƨåvͬyhXkeZiaWd]T`ZQXQHh\RpdXd[PbZPibYslbvode`Vwhur{ixgudygp`vfvercsenaobtf~pc|pc}ozlzlwjldZFB=//.*++)**+,+./.00/0/./.-,,+,,+//.321210221221/0/./...../.010665PLGyrg~rtzmvncqj`ng]slb{ti{shwodwncyod}thxk~rx||xxs~wl~q~wswk|rfzm{owk}p}qz~|wzz~~}upf]C>8                                                                                                                 -$ A73RF@WIAZJBgZtzɞ̝˞Сѡɣȣʢw{~uzmw{{pskplurwtwr|vڸ෫ߴӮʬ֬꽱ڷٻɷǸ˼Ըƫì˰ʮæ֯뷰׭ԯںβ۳߶tͳαط׶ܹ仪ṩٵgVP*#3+(4,*3+(;2.>62;2/91.4-*4-*4,)3,)3,)4-*5-+6/,80-6.*4,)4.+60-6/,4,)5-(>60@933+(0(#5-)*%"&!3,(4-*5-)5,(7-)90+<1,;0*5*%+#""*%#/($1)&/'#-%".&#B82xgX{~zx{wssz|vqzysu|}t{qf}}{~}}nre{oduk`ne[wmbwmbnd[lcZvlbuj~shxmc{pe~rgwk_MEMC:d^Urk`~qs~rsu||ovwzn}qMH@\PFväåá໡ƫ⾣Ա״޻Գ̬׵ȦȦǦ¡ѯ俣޻صŪαȬʯ㿥ūɭȬἠĨƬ¨©ū˰ɮȬƪ̯ɬвϱҳίɬħҳѲҳعϰ£¥Ʃصxg[QIA<9?:7C=:B=9=85>96<74;63C>;C=:B=:>97?:8D?=E@>B=:;63&&%)**(((!1*&4(!1,)./0443IEAf_Vvnd}i׵˭ƪȫ׵ٸ׷аԴԵ˭ɪŧǪдٽϱ˪ģ۸ݻѱĢȥϮˮȫҴټոҵͰڸȩ༟۸а߾ѳ̮ѱ׵ȫոԶˮ¦Ʃˮдٽչھֻѷݺ׶èȬè߾ۺὢή̬ĨѳӶʰٸ~w{ĦĪ໢ѰԲ¨ڹŧäǪΰ࿨̭ή״㽤ڵrdWLFGA>A;9<759428424/.0,*)%#(%#(%$($#+'%+'%)%$&#!!D;4weWwѰzk[UMri_sk`mdYi`Vnf[umb~wkvnbg`VTOGPKCVOGHB;HA:ħ׷ΰǨڷ׳߼Ȯܻ࿦ίͬħгƫĩ˫ɨǧ}nzy~p~}¥㾤ὢ㿥©ȮĩħçᾣұԲմϰӲݻٸˬ~ĥήӲl]VKD83/61.61.+)(*+*())'''+++(((''''(("##!""!2,(ZLA{hŦճ߼޻ΰΰٷ{Ȩίٹucmf\f_U`ZQ_ZQWOGfYPpdXcZP`XNiaXslbrk`c^Uɩät{iwh{kwhsdxhzjufqbueo`{hZtdWfXOE>91.+,*(,*))(''&%+)(.-+20/00///.220776987;;;<<;9:94663443333449:9XUOuttwxvznymxzxttuzn{sh}ujymzn{o~qv}~{{zywsv}ttgob~l_{j]ueY}ma|nb|pdvi}osrtxwszmzl}p~q}x~ypeHC=~                                                                                                                             2'$P>6iPHy_Vlazm~~Īáťʭƣ}|ŤģĤܮۭqhj^Q|ȶɷҿ͹ҽҽйݿǶɸںɬɮym:2,YOGq}{xxzqzmy~wk`A842+)5.+2*(1)'4+(8/+=5180,5.+3,)3,)3-*4.+4-+3,)4-*5.+70-6.+3,)2+(3,)2*'2*&:1,:2-/(%,%#0($4-*+&$#2*'2*'5,(7-);0+;0*5+&+#"% +%"-'$1*'2+(0)&1)%/'$:2,scV}|~{{ywzz~zwt{|~q|qf}~tqytxltw|p|rgxncvka}qe|pd}rfsfvj^SJA}l{z|yvu|y}r~zzxu{pvkzo{p}rvx|}z}r~ukuk|opi_S|mxgm_oam^pan_zksvw}n|i\xfXl[OjYMucUyfXtbS{hX|jZudUp_RjZMgXKm]On]OaRFXK@SG=OC:QED?;D>;B=:>96<85@;9B=;FA>C><'''***'''#1*'4' 0+(,..886PLFri_zqfsӳϱ̯Ȫ̮ϲֹȬа§ῤֵ޻ʭҵˮ޼޺ģٵҰ޻ΰĥɪϱȬݺ߽ˮ̱ĩʬȪгҴܹƩɫг׸ݽˬ̫ڸۼӸѶʮ⾡ᾡɬҶոԸͲͱˮбѴдƪèʯçɭԸؽѶˮαҶ̲ݼ|||ä׶˲ѷʰط̫ͭɩʫбԳұظ⿧㾧徤ʧ{sfbVOJC@<75<7594261/50.51/,(&)&$+(&.*(3.,2.,1-,*&%;3-o]PzƤwh[SNFc\SkdZh_Vg_UkcXpi^{sgtk_gaWTOGNIBWQIHB;NF>ˬϰع˭ȬȩЭཡ߾׷ʩҲίɨڶܻ޼ݻԳѰӱ¤t|u}oǫĩèʯɭݻ޼俤ཡֵظħִٷݻظڸضͭѯ״἟մЯvf]RJA;8;633/-('&,,,)*)'''***'((())'((###"##(# VJ?ucͫäʪӳཡӳƨåŨίn^oi_f_U[UL\VNVOFbWMmaWd[Q_WNjcYrj`ng\b\T¦״ճܺ㿤ᾣ¤z~wmwfX]PGE>:952:63;648411-*0+(3/,51.40-.+)*'%+)'-+)/-,-,*)(('''((())(())./-IGBoia}xxl}shzmxxzyxytzn}thyqfxlwzt{n}uiymx|yz}q{otvzxtyzz~z{wt}q{nwkyk{m{mzk~sfvh|mrrxjresfre|qdwjv{yl}nb|nbvi^of\sj_ri^xoczqd~uhxkxocxpdrw}{oOJC*'#                                                                                                                                          /)#KB8bPCxcSpazltx~ǡ˥{wwr{xzn]ME#~m_||ĨະVJA-&"3*'cWMvj|s~qq~qzviSJC6-*91/4-+0)'0)&0)%3*'8/*>625.*4-*4,)3,*3,*4-*5.+4-*5-*5-*7/,6.+3+(0)%0)%80*7.*2*'2,).'%,%#/'$4-),'%#2)%3*&9.):.(8,&-$ "#,%!.&"/($2+(2+(1*'0)'0(%+%"6.)k]Q{z~s}r|}~xznzox~ztw}puka{}~zwjuswkvjz}ws}ozlugF?8ui\vywvzmui}p}|~~~||ox}{yyus}r}quuzozo|q|q~ru{|zy|oar{kzjo`vfyhveo`qct~ptg{mpbucUkZNm\OzgYm^}iZucUm]m]vdVl[Op_QraSo^Q`QESF;?:7:5262/<73A<8>95=96:62<74?:7@;8=86;7484140-$%%*++%$$%2*'4&/,+./.@>:7730+*(+++)*)'((())'''((((((#$$!!! K@6n]ȩ¥۹ٷͮͭܺǩqamg]b\R]WMc\SZSKbWNlaVcZQ^VMhaWmf[ldZ`[S|Ϊϭ޻æ׳ϭִȫʬԴԳ׶ط̭ȪԳҰobTID=895384183072051.40-831;64:636202.+/+)40-7308422.+-*'3/-3/-2/-820F=7\OEcWKsfwvurwjylzmxkzsgzsgzmvxzv|qymsxxts~r|{wvwzzz|rxkvhyk~puwsyl{nuz}{ywsxkreykuz}}vjyod{rfxlw}|x~prym}shym}pxlNIAy)&"                                                                                                                                                    )!K<8dPIjYQn_Xz{qijclgsb[>60(!.%!n_Sy|~|z{p~yg^3,'2,)6/+5+'aVMzo}uu}wzoymocX>502+)81.2,*/)&/)&0*'2+(2*'8.)?724,)6.+6.+4-*3,)4-*6.+5-*5-*7/,:1-5-)/'$80+91-2+)1+)2,)1+),&$+%#.,(-(% 4*%7-'8,'/% % +$!/'#0($1)%2*'2+(1*'0)&/(%-&#*# 1)%aUKsz{x{uynyn|vyuznc~~~|myl}ot|m|ny}}z~puhIA9yl^|{{z{{zwy~~ssx}~|}{xvvtvl|qvyz|}uv~~op{{~}{kyipzjorvfn_sfwipcpcpbvcVraSxfXvdV~j\~j[xeWraSq`Rn]Pl\OdUIaSG^OD^PD\NCWJ?RF:;6361.72/<85A<::637309413/,&'')*+"! ' 2*&4&0/-343FD@`ZRxlzm̭ǫ˯ؼ޿ܿΰڸɫȫΰ⾝ä߽çʮΰݽ׸ǫӶػַϰæͯѲڻɪŨٸ˭عԶִħαճ¥ͮʬɬ˯ط߿Ͱ༟འ޻ǬũΰçβͲʯдϳٸ㿢۷ѮŤմ}|zϮͭέϭݻ̲ǭԳ¤ˮЯѯʪŦṱ̌ѰճάǨpcZNGA;8720:53=75=74:532-,,(&.*(/+)-)',(&+(&-)(+(&*&#E;5p^Q}jtgZPJCbZQxncsi^neZph]pi^rj_oh]nf[c]TYSLkf\QKD^RHͭܺ§ƫظ˭æͭնҳҲӳط©ĪǮ޽©ཤڸǩ|o~zy|x~Դèӱƨ̭ճƪʮ俣ǪĦڹѱ㿤⾣ۺطұåҰԸ׹¦ue\PHC>:A<9952+*((()()))**))))))()('((%%%"##% NB7kYճݻյ̭Ʀ⾡ĦĦå̯o`nh]d]S_YOjbXiaWg_UkaWc[Q\TKd\SkcYmf[b\SҲԲӲݻִ޺⿢ݼٸῤརç̰ũ׷ȩӱɩvqaTE>895251.50-4/,4/-4/-841;64;6384284151.51.62062041.2.,2.,731831G?;dWNweXyfWykr~naxk^wk_yocypd|sgtv|~~||uuzywrylxlqxvsqxk}tg}sg|sg}thxl{o|shzqfr}{|o|otzvw{~{~xrszl~px}p~qxz{wrvmcFA;x4/*                                                                                                                                                       & >50.(%(" -&#*#aTI}q}}zzz}wy{}pdD;6/)(60-5.+6.+5,(UKD{qg~zptmdyozoi`WI>70'$1*(1+)/)'/(&0)'/(&/)&1*(3,)80,;406.+:2/81/7/,5-*5-*5.*4-*4-*7.+5,'7.)?7292/0*(/)'0*'0)'-'%*$"*%#-*'/)&3(#0&!&'"0(%1)&1*&2)&2*&2*'1*'0)&0(%/'$-&#*# -%"XLCo{}y{~u}|~sgqpzk}muqqtytqsw~|aVLreW~}vxvvzwƮxwtyzy}w|q{{vwz{|qw|vwin_}{{}m|lrxise|i\}i\oanazlyjvdWo`m^}iZ}i[n]PxeX{gYyfWzhYo^Pp_Ql[NgWJaRFVI>YKAZMBQE:@;8?:7;73941;63B<8A<9B=:>85;63941@:7A<9?;8<85>9651/'())** )"2)%4' /0/676JGCjbY|p~sgԳʮ˯ʮֺҴƫ۽è߾ںͭմαٹϰƧֶܺ˭ϱҳӴĩбʬѲƩ߻ӶҵҴնظ׷ɫ¥ίںҲѱعĦᾠݼƨͭɫȫͰΰͮݺضƨĨˮȬ̯̮㿣ӳٷྣ̯ƨ༠ضղ἟޹ݸ˨ǩ}|}x¨ϵȮȮ˲׾ҹжжīᾤ޼޻ڸܹٸڷ£|udWKA;83050.40.;74>86942/+)+'%.*(/+)1-+2-+'#!$!&#!*&$H>7zfWp£qdXRLEg^U{qetj_mdYnf\oh]ph]nf[iaWa[QYSKne[TMEl^Rڹֶˬ˭׷⿤аˬԳ࿦طϰ£¨éѱٶƫݸЭxk{zz~w~޼˰γƫܺ׶ᾣĨɮɬָ̮˭¤༟޻¦αʫڸǩִдͱziaULGA>E@<952)((*++)**+,+)))+,,***())%&&"""(#OC8p^Ӳ࿤ܺбåұǪʬڹhZNoi^g`VaZQjbXsj_tj_oeZh^T^ULc\ShaWqj`haWϱƪåظٸŨԳаӴմܹȬͰ˰˰ɮèή˫nl\PE>995295283072.72.;62=85=85>96<75;742.+0-)/,)0,)3/-3/,0-*3/-61.RGAm_w}vztfugvhqs|mu{ln`~m`obpcuivi}os~z~prtvr}oxlwjyl~prrswk{rgvncslawoe{sh}ujzrg|n~}~wyxvu~qzmylzn}rtu}qzovsx{{wt{shFA;y|;60                                                                                                                                                           ,&!3,')" )#!+%"-'$*# l^R{~x}s|r~zmWKC-%$0)(4.+5.,5.,7/,80,A84h`Xuzpyoskb>61+# 2*'1+(.)'-(&/)&1*(0)'-&$-'$/)&0)'4,(81.:30:3091.81-70-70-7/,5-*2*&4*%=4/;4/5.+/)(/)'/)&/(&.(&,&$)#!)$",�)&/)&!$-%"1(%2+'1)&3,)3,(2+'1*&2*'2*&1*'0(%.&#+$!,$ MB;wi}~~w{xxy~y~r}rwtzocxm{}|}}}{xw~~~}o|lreYxj]|lqqupzlyl|o~qsyk^SYNCy|yz~}|v{~|tvvwy{|yusts{qzxyn{pq{mwfwwrctvpnn^}i[n`~k^ugpck]ucV{gYl]pavcVm\Op^Qo]Pp_QsbSucUsaSeUH`REYK@XJ?YLAMB9OC:L@7UH>g_Uyrfrs~vk{nt{ytsuwb[RA=6{jzy˫ֵӱЯϮὤ༣ཤᾥêĪè¨ǬݹάҭֲҮƩ俢ߺڸҲԳڷʪٶֳִͫߺ佡߻ٶ༠̪ʧɩ̪ڷ俣ڷཡȫ⽟ڶởʭɭǪçŨʭĩݺӱ~l`TJE?:B=9A<9<85;63;74?:6A;7?:5>95<84;63941;63@<9D?=B=;>9641/())*++!*$ 2)$5("232;;:ROIri_{nzlǪ׸Ѵ¦¦ȩ¥æԷҶݻڷɫ㿢ֵԳڸäԱԲֳɬѴֹҶȬݻ׹ոƩӳ̫Ờߺ༠նݽݽݽέ߼¥ŨͱչѳŦݺƪ޽δԹǪå㿢ܻ۹۹Ѱ̬ӱݻƪĩ߼ҰῤĪȬͪ~}~||u޺Ҹ˱ҸĬ״ƭϷؿּжǯ̴ǭ߼ҳɪ}y|i\UJC>95;637207201,*,(&)%#,)'/+)3/-1-+3.-*&$%" '$"/*(H=6ucTyɨɧtgZWQIjaXyodmeZc[Rg`VleZog\nf[f_U\VMTNFcYPOG@sdXɯǬֶбϳȮԵͮˬϱƨǪʬٷصởܸâvix|}}wնֻ׻β۹ƫ⿤ںܻ޼̭عбӵѳˮٷܹɬӶʭ޺ͯڼд¨ʫqbVMF@93                                                                                                                                                             ,%!0)$("(" (" )#!-&$)"UI@u|~|~vyh[R=3.0)'3-*4-+5.,3-*4-*6/,6.*C:5mc[ypxn~vlog^) 2*'2+)-'%,&$/(&1*(0*'-'%+%"-�(&1)&4*&81-:2/91-91.80-81.91.6.+4,';2,:2.92/2,*1+)/)&.(%.'$/)&-'%,'%*%$)#!,%".'$-(%%.&"1)%3+'3+'0(%1*'2+(1*&1*&3+'3+'2*&1)&/'#,%"-%!QG?{oc{yv||z}{}~~~~wsyn|qrvj|puu|~|zxxyxyzy|~~wnzstvi|m~nuh}pdvi{m{mviquh[LB8p}{|}|}xv}sxu~svvwuv}zo}r|qyoywxxw}sh}rezm{l]ƪv~xz~k\vg~oqcprtc{hZo^Qzh[rd{k~j[m[No]OygY{hZkZMiXLm\Om\Oq`RraSn]Pl\MdTGWJ?TG=[MBUI>PD;E:1PD;ldZznuu~wlwlu{y~qzovw^WOGA:yhw}Ȩ̬ϮطԳᾥ޼޻۸俧δ˰ϳԸӸеŪƨ濢侢¦ȫ¥۸ϯճЯصүӯέ¢Ǧ޹忣ݹѯֳǧʨ̫ͬղ״çħϲƩ۷ҰɭǫĨմ߽ڷ{paYNFF@;B=9A<9<73;62<73>95B<7C=9<84951;63>:7@;8D?620())()*!,%"2(#5*%344@@=[VPype{nvhæ˭ڻܾԶɪаϯֶ¥ͯˮٷضȨǦǨǨӵгֹչѳ޽ɭͱۿֺǪҴǬӷͱĥߺ޸ŧ۶Ʀ޽ͰǫˮٺӴǪʫȫήԵèũʬ¥æͰᾣݽǬʯֵŦŦའèŨ忢ձطƪĨ޼ܹݺä{ysӱжپѶ㾣Ϊ̭ͮ׹¬íĭ߾㿧êܺϮ}obTJC<7462/62/:52.*',(&,(&.*(+'%0+)1,*3.,0+)($#)%#1,)PE<k[|ɧrfYWQIg_Vri_g^T_WNf_Unf\qi^nf[c]TWRJMHAXOFHA:fXL״¨Ǭĩۺҳյ࿧޽éίίԴٸϱ˪༟ձٴ۷uhx|zŦϮԱִݺ״ཡϰ¥ήἠɬʬѲɪ޺ٶ۹ŨгٻϲѴڽܿβۺuYLDC<8A;7;73++*-..-..-..-..122///133*++!!!"NB7lZᾡݺ׵ݻۺ۹ش޺æ̮wh[xrgibWb[QjbWqi^vlavk_rg\d\Rc[Rc\Srkatj_ӴۺԵұϰۺβֶ޼ִήƧ׶ῤ۹ȨåˬŨ|k[PG@:6<73=85A<9A<8<7394083/;62:52:52<85?:7C>;B>;B=;>96>97@;8?:7G?:o`U|juuۺǰٷ¤ɫϯЯطԳĥzpudyiw{kufseoaxeXm]PgXLscUygYwfXzh[yh[paUqcWmbVym`~seuh|nvyyxt~q~thwnczrf~qxkuiyl~qt|w~shulaxl{oyl}p|~r|o|{~{zyvuswznID>u|C=7                                                                                                                                                          (")#(!)" ("'"(" ,%#)" RG>ym}z{sj~vl~t}~}uiXKB1)&5.+4.+3-+4.,4.+2,)4-*5.+4,)TJCuk~t{q~tg`X' 0)&.'%+%#-'%/)'/)'-'%,%#,%"0(%4+'5+'3)%1)&80-80-7/,5.+5-)2*&5-)>61:3//*(0*)1+)0*(.'$/)&0)'/(&+%#+%#)$"*$"-�)&/*'*"/'$2*&3+'1*&0($0)%0)&0(%1)&3+'3+'2*&1*&1)%/($0'$YMD|ocxyz~y|{xyt}shwlquhp|suxyyvutttz~~z{v}qru{bWLXMC[QGi^SqeYqeZyl`sfzmvxwwvszm`F<2uduz{~}w{yzywi}vuyo|qtvu|qyqgxpf}tj~ujwmzp~swwyth[«}|v{sb~j\setbUl_vvm^wdVvdWufpvgk\k\{hZxeXgWKhXKn]PtbTraShXKp_Qn]OfVIXK@OC:PD;L@7E;2B8/H>5oh^{otvznwlt{z{oxmttTOGKD:A<9>96941=85C>:HC?HC@B=:@;8?;9>:8@;8E@=GA?HC@KFD420(**()) -'#2'!5+'665JHDhbZym}pxj]Ѱȫֹ׹ۻֵǧĤִڽԵԶѴǩ߼׵ԴմԸֺݾҴҴĨ߽Էˮᾡ⿢ٶܸ۶߹ʬշᾢϯ㾡߻ĨͰͰٹˬٸħũ˯⿣ཡ˭˭Ͱæ߽ĩ⿢ͬ˫æǬѴϳݹ˫ʫճἢʰῥԳϮ£{wvǨͭʰӸеΫƧ¤ǫίа߽޽ٸ˪аͯrbVOC=;94272/50.,(&0+)-)'/+).)'-)&-(&0+(,'%$ %! 0+(J?8yfXӰάj`UVPHd^Voh_d]T]VMe^Uoh]sl`nf[aZRVQIMG@YOGHB;eWKæԴۺĩںʫ۸޻ྤ׵׵Ū§俣۷޹༟ٶzmy|ִἡ⽡㿤ĩὢ߼ضȫ޼ϱͯ㿢ĥ¤༠⿣ʮ̱ټ׻ѴѴŪ˫s`TKIB=HB>C>;-,++,,,--.///10011-..122*++&!YLA|i̭ǩɪ޻Ӳ׷¦¥߻༠ĨvgZxqekdYe^SkcXpg]yodvk_pe[d[Qd\Rg_Uvnctk`ΰܻնܻŪ§ݺڹƨħֵ߽⾢æݺЯzp`QG?=84?:6;74=85=85<84?:7=85>:7>95<73=84>96@<9@;8=85951=95A<:A<9PGA~m`wzzxɮԲݺ⾤㾤©ɯϵз̳ᾦڸɩ׶̳ǯճӱǧ}vq~l|kuevezj|lvtxhn^k\rbl\ubSl\|hY}j\{j]xh[uh[vhtg{qf{rgxmv~rwzvkulari^ri_qi_qi^vnbxvkq}~p|rfwnbvnb{rf|rg|sg|oxt~quz~{zv{|ur}oylxlw}|pRLE|p~D?9                                                                                                                                           '!&' (!)"'!'!(" +%"+$!I>7znc}|zyzpe[D817.*6.+5.+4-+4-+4-+2,*2-+3-+6/,4-*PGAnd\}tj|sizpqi`)"/(&.'%,&#.(%-'%,&#/'$0(%0($4*&5+&3)$+#,%!5.+6/,5-*1)&4-(<50:3/2,).(&.)'/)'/)'/)&/(&/)&0)&-'%+%#*$")$!-'%.(%/)&1+(!+$ .'$1)&2*'1)&0($/($0(%0(%2*&3+'2+'1*&2*'2*'1*&1)&MC;pdZwzwz~|q|qvx|~~}yxl}rf|nsfvhZzpwxxt|ozm~quvt{o}qt~q}qwk~rf|nyyk^yl`rf[laWnbXocYcXOPG?QH?KC;KC4OE;smbymrs{oymt|wymxmt}qQLDTKB~kyȩήֳִϮť˪״⾥ĩŪ¨໡ͳѶϴǫ御忣ɬڴ⼠ƨӱӰϯܹ¥ضໟɫΰ¥⽠༞ڶ߻ٷάղṵ̃ƪæʭƪ߻ݺħڷƧմ˪{ubaTJKD>D>:D?D?97.,+)**'((!/(%3' 4-*897ROJqka|o{nveݷǪٺΰбܾʮعܾ׹׸ϰɪط۹˰ѶؼֺھͱԳԳ˰ۺ޼ٷç¥Ϯ̫£ӵϳŨϲͰƪʭĦ⾡ྡܺˮϲҴΰˬ˫ɪũ˭ֹѳĥŧũŪ޼޻Ȫȫçè§۹£xuuʬʪͭݹϮʪ˫ήѰ̫ں̱ῦªȰʲʱʲrbUNE>;=85=7472/1,)2-*1-*0,*1-+0,*,'%*%##+'$K@8taRt̪ͬg_TXRJb\Tpi`h`W_XOkdZuncwocoh\c\SWRJNHAYOFD>7veWϮ£ٷƪӷ̲ᾤطܺ޻ʰƫѱͬǬ̰޻ϭ۶ϭzvjwzy˫ͫ۷⾣Ĩ˯ũྡྷŨ̬ΰ㿣ȪͭƩӶβػܿ׻гͱxh`SJD=8E?;@;8,+*+,,+,,,--011.//,--/00())*%"]PEoɩɩضƪŨĨ۸ѰүִЯm`Sxpeqi]jcWmeYme[zqfwncmcYd[Qe\Rg^UxpfxocӴũçᾡֶӴڸ޼̮ȩ¥ƨç¦޼Ũ㾠έ}pbTKEF@=D?;>:7@;7@;7B<9HB>HB>C=9D?;C>:B<8>95=85?:6A<8B=9C>;HC@KFCRHB{i[}}zʯ༣ǭɰݺδʱзҺªݺ¨εǮǮݺȨäέЮ¢}xw{ylsmso{jyh|jwfudo_q_n^n^yfWvdV}}|vkujuj{o~rvk~uhzrfumcrj_wod}ui}tht{svzvxz|z||r|o~o|o}q{ossv{ypykvizn{rgOIB|p|B=7                                                                                                                                                 % %&%'!'!'!& &!)#!+%"-%"I>6|oczxv~t}tk{sj~vl|ryu{ri<0+>3-90,5.+4-+3,*3,*1+)0*(2,)4-+6/-5-*D<7`XP}sjxn}ukiaY*# /(&.'%,&$.'%.'%1)&5,)5,(3)%2(#.%!,$ /'#4*%5-)2*'1*'5.*81-3-*.(&/)'/)'.(&/('/)'0*'0)&0(&/(%,&#,&#*$"*%"-'%,&#.'$2,(%"!(".'$1)&2+'1)&0(%0(%0)&1)%2*&2*&2*&2*'4,(3+'1*'1)%E;5h]Szoy~xy|u{p}r~|x~s~si{qfyow~}w{n~wsvi],% 4+&F<5SI@`UJ^SIf[QrfZzmatwuuws{otyxt~p|nzlyjo}nvs}qtxw|qf|ococWC<5ocWzm`xjwl`rg]sh]dZPlaUrfY~pbufqsuzɲ~th|xz}{vu~s}r}r}zzzvuswwwqg[}w~~zi{jue{juexfXrd{mm_~k]o`vdWyfZn`pcm`weWkZNdUIjZMk[No]Pq_PiYLZL@^OCcTH^OCSFB<8?:7?:8<74?:7F@=GA=?:7@;9;74953?;8@<:;7462/941<74A<:-,+,--())"/)%3&5/,>>:C>;ID@HB>IC?HC?JDAF@=FA=E@:C=9F@D?>96=85;74830=96C?;?;8B=:D@>E@>**)*++))(#/(%3&620EDAa\Uxm{vټϲٺڼ׸ʬԴطӴͯҳظ޾׹ʮçʬŧƪʯϴԺе¦Ũ¦طྡྷྠ۹ϱԷֹʭå㾡ִħдӷȭ׺ɰضǩָնɪӵΰȪ׸շ߾նɫͯ׺Էͱӷٽ̯Ĩɮçæ޼æɭĭ~stxǧ¦ɯδὤѰ̫Ѱίȩŧίʬ׶࿨ζɲȱ㿨reTIB:418418303.+.*&*&#.*(-)'-)'1,*.*(&" %" 61-RF>o`޹ڷf^TTOG`YQumbph]c[Rog]xpevodkcYb]SZUMMHAOIA;72~l]ͬմҲԴ޻ϳԸ˯Ūʯƫལལ׶Эױ㼟߻w{oz}{|{ڸũԶ׺Ѵϱϱѳƪ§޽ݼħɫ§ῥᾤǪͯϲçٷŨ㾡ƦɨݺϯxpbWLD@@;8=84''&+,,,--+,,./.,------.-%&%%"!82.gXMvұĥŨȬҵβũ¦འᾢ޼m`T{qftl`meZldYd]RibXpg\reZncW`WM_XOzsjxpeͰֶܺͰ׶ŨݺὟ޹׵طִ⽠ǦmgYNKD?HC?GA>A<9A=9E@=HC@D>;A<9E@C=9F@ID@F@>D?sPIB               "4(%PC>PD?B94+# %$   &B519.*0'$\JEXFC"(                                                                                            "$%'!'!&!&!(#!+%$-&$/'$?6/uh\u|ruxuzp~ulyoyoxmwmG>9;2,5,(3+(3,*3,*1+)2,*2,*1+)3,*5/,6/,A84lbY|rhypgqh`^UM/($-'$,%#+%"/(%3+)4,(/'#+$!.'$4,)7/+6.*6-)7-'3+&*# ,%".(&/)'-'%.(&0)'0)'/(&/(&.(&/)'/)'-'%,&#,&#,&#)$!)#!+%"/&"0'"0)%(#!,%"3+(2+(1+(2+(1*'1*'2*'3+'4,(3+'4,)4,)3+(2+(2*'1*&<4/cWMvjx|vuzoyn{pw}zxxwppbxhvgsfxjG?861-=72G?8SIATIAVKB_SJ\QG`SIgYNi[OhZOeXM`TJk^RtfYoavhwh|mvt~z~rwwz{{wl_Tf]Sqv|{puj{o~r}q|pynu~zx}p|n{nviuhrf{ncrfocX_UJd\S}{uvw{|}u~s}rxnyo~uks~ykqyx{kzitcueueuf{lyjvgpa~k\xeXvcVm_tbUiYMhXMp`Sn^PgWKo^Pr`QfVI^OCbTF\OCQE;OC9OB8L@7OC:K?5\SJ|q}ps~ujymymxtxmrt}ti@=7zi\ŦĥǨұԳܺªĬŬὣƬʹжū俤ƫܷӯٴݷײӮͩڴͯԶԵȫϬֲصضղ£ϬҰɩͬ״ܹұӰүڷ¤⽡ڷܸ༡ݹ۶俤æ¥ܸٷа|p`TNF?HB?C>;?:7@;8B=:HB?HA=E>;;62;63>96>97A=:FA?E@>D?=C>:?96:5150-4.,/+)2.-2.,/+(0+).*(&#!$!&#!3.+MB;{hY๞شf^TUPHZTLqi_ri^d]Tof\wodvockcXe^U]XOPJCWOG<83}l۹ֶʬֵǪ̱ʯĪ˰βῥܹγèǨ̫ڶ޹侢ƪtyy~}ٶԶʭƫæȪշγմĦȩԳұȩ״¤ɬ˯ʮˮ̯޺ԱصǨrhZPHA:D?;IC@LEBG@:IB?HA?C>;D?;FA=JDAKEAeYOrʫִĤ˩ѰɱƭྤƬὤéж˲⽤״ղݻŬ«߼Ȱ۷ٶ޹ǨήٷѰɪͮϯϮɨЮճԲ̫ͭѰصճȨԲ⾢⽡ǬҰ|vͭέʩťxrxy}{qzln`m^m^m\vdVxfX}l]~m^|k]tfX~pb~rdxjuvz~}qUPHuQKC  ,#;0+8/+'"7-*4+(K>:RE@RE@E83M82]@8R:3-#T>0WA3VC7E840&$$'$#  ^A8WL{PFqJ@mKA{YN}e]|jbUGAF3*Q9-D0'3%                                                                                      "$%& &!% & '")$!-&$/($<2,k^Sxm{sjvmwm}ukwn|sjwogog_zowlH?9:1,6.*3,)4.+4-+2,*1+)2,*3.+5/-6/-6/->62cZR~tig_VC<7(!+#!-&#+$",$"0(%/'$+# *"2*&4,)4-*4,)5-*5,(5+'3+&+$!-&#/(&-'%-'$/(&1*'0)&.'%/)'-'%.'%,&$*$"+%#+%"*$!'!(".% /%!,#'/($4-*0*&1*'2+(1*'2*'2+'3+'3+'3+'4,(3,)3+(3+(2*'0)%91,^RHujv{w{pzo~zvuyq|m`qczl_~pdsfZQHPHBUMGbXPncYodZrg]rgshvjzlxkwk~qxwx}~{{ywx{}zeYNg^T}psx|utuuvx}{wx~~pcVQLt}ywuwzwwy||t~ukzqgu|||vx|pdvdz{|~xh}i[tdqb~k\pavgvhugo`yfXvdWubTn]QucU}i[p_Rl\Pn^Q`RFcTHp_PeVH]OChXKcTGPD:RE;QD9I=4D:2I=4bZQurt~uixlyly|vymvvumb>;5qb¢ɨǧɩǦǧضڹճ㾥ʯеӹ׽жƫ㼠çײկֱ߹Ũæởẞǫϲå⺜ĥշҵũٵүҮִִմťƦ̬ǧ⾢Ͱĩæ˭ҳΰɬ¥⽠ར⿤㿤ŦzibTIIB=GA>C>;A<9=86941>95@:7:5283073/941?:7A=:HC@JECFA?@<9>97842&''+--%$#%0($4&963RNHle\r~szϭǦͬݹɨղ̪ܻݻںعܼںͱ¨ӶؼԶڽçƪʭྡྷѱæ߿ͱڽڼ۽Ӷ㿣ұ̯⿣ݻͰʩĢḪ̂ŧ̰ھ˰ȫӵͯ˯ػ̯ͰѴػǪŧɭ㿣ͮԴĩǭ״ѱǬ㽡⼟޺ӱ~~y̱ʰѶĪ߻ɪӱས޻յаܺݺᾣ¨ճԳٷͭ׶޽޼ugdXQLFDGA?@:7942:4250.3/-0,*1,*/+)-)''$"'$"-)'3/,E;5p^OrѭЭg`VWRIWQJrh^znamcYme[qi_rk_i`Vg_Ua[RQLDPH@52-w̳ۻϰ۸¦߽ྤִ۸¦ݻ߼Ӳ⾤ĨĨ̯ˮүϬ~r~wy~ǫҳίǪʬħҵα¥ҰӲұѱί޻ήմ̬ͯˮȫ¦ڸٶ༠༟{ij\QIA<95151.''&-..122011+,,,---..)**$%&&$"/+(ZMClֳåˮŧ̰дԷϲŨ߼ԳWNEskaph]h`Ue]SaYO_XNh^Tn`UqeY_VLZSKsmdviĦаշܾҴαĩħͭѰ̭ܻΰ¤ϮմǦyhdXNJD@E@;GA=GA>C>:@;7A<9F@=D>;B=:E?HB>GA=@:7?:6A:7@;7D>:NHEPHDhZNqʬ׵ǨϮԴ޼é俦صѯīڷض׵Ȱϸ˲ٷݺʪҰϬģħб޼ٷڸܹٶܸݻЯɪҲֵ̬¤¤ʪղԲťʪĦȩӰ⽢è˫zv~}ç㿣ç忣ٵضʪäȨ̫ЯղϮ̫ǧ~xwyzv~lpucvdm\saSq`Q|hYwdV~j[m^zgY}k\qbqcsdykxjtg}o|nt~{{{zy{zy|zpSNGtZTK    ( E70QD=NC=-($ "0'%F84L>:YID`NIaLH]IEH85"%;/+8-(#"#(  "!  (#3!4$P70R<4N>52'!+@+"E0'O8-U<0K5,H4,G4,2%                                                                                     #$%%& %& '!*$!-'$1(%=2+n`Uut}tjvlwlxn{qzq|rheZRF>87.)90+6/+3,*5.,4.,1+(1+)2+)3,*4.+5.,4-+80,TLEh_W5.))" ,&#-&#.'$,%"-%!*"' 0($6-)6-*3,)3,)3,)5-*6-*5,(5,(-'$.&#-&$,&#.'%0)&1)'.'%-&$-'%-&$,&$*$"*$",%#+%")# ("+#-#) !%0)&$ /'$2+'/(%0)&1+'1*'1*&1)&3+'2*'2*'4,(4,)4-)4,)2*'0(%6-(WJA|od|q~sy|~{~sv}s{quystgqdyl{msg\lbYqg]wlbtixm~s~sxu{pzotz~~[QGaXOxk|os|ztv~}~||}v\VNssxmtz~{}ti}titxy|zu|rtyxtxzxwvh}m^x}sratcn_zgY~k\o`~k^ucWr`TucUsaTqauer`RraTvdWhYMudWm]PiYKtbRfVHYK?]OCjZLYL@SF8wgƥʨЮέȨzʨմݻʱ̲̳γʯ˰˰ũ徢㽠ٵڴαʭ޹޷ݷѭ传忣Ϭٳٵὡ¦ɭŨصԱԲѯִܹͭȧش㿣Ӳʪִ޺ش忣ǪǪǪȫŨȫɬƫŧvfVJBC>:GB?D>85>96B=:=8462.3/+72/:52=86953841A<9B>;@<9B>;;75'((+--#! ' 0($3&?=9\XQtmcv|}ujĨɫήŧݹ״ໜ۸ԲҰʩģزұ޾ظϰϱ¦ʭշ㾡ᾡŧͯˮ⿢⿡ڹбݽĨٻͯæΰϳԹĪʮç⿢ƨæڽع徝Ἔȫᾢ׵ƪػڽֹвĩȭɭũˬåǧߺٵصũ㿣ѱۺèӲѰར⼟۵ȧz}{zۺٶۺũἢڷԳྥۺ߽©ݻֶ¤ϯݻä|neXQMGDHB@A;9<75>9761/0,+-)'+(%-)',(&'$")&$0,*3/,H>6wcTp_YPUOGQLDh`Wwj^mcYkcYsk`tmbibWldZg`WUOHLE>63.|lêῧۺ߽⾣ܺʪʪͫѰˬݻĩɭд׻Էֹϲհ}r{x}~རʬٺͯͰ˭ɬɭʭŨյΰյͭаǪ⾢ĦݹĨ̯çྣྣͮwqbXNGB>96830'('///122/00+,,.//,--)**$%%&#!.)&\NCpү˫ַݾˮͰ̯ȪѮME>skakdZb[Q_WN_WMbZQi`Vn`UnbV^UK\UMtmd|nʭܽټغΰϲ⿤ʮ޽æ߽¦ɬʬĥĤὟåvf\QIJD?LFANHDKEBLFBKE@D?:E@ID@GA=C>:D>:E?D>:A<8A;8D?;KEBPGBqaTϱٹåάѯ⾤γͳīӱѱٷ⽦ݹصܺǮɱŭ޺ܺ޼ἤү¢ͭͮұѲ⾧ٶťѰ㿦۷Ȩæյִʩͭή£ͮѰήӱӰ۸۸մϰ{txv޽гˮ⽠׳༟ܸЯʩصض߻໡俤ִܸʫˬѰϰɫȩå{v{tws}jpn|j}k}kzip_tcq`}iZ|j\vdVn_QsdVvgY{l^zm_{obwiyk~rs~r|qumcKG@}q~_XP!0'%8/-=4/gWPB73A40Q@;J;6?2.2'!=/(O<4N=6_ICYD<7+'"   3&"?2.B41?2/A41>30&# !    E@:<8262--*%%/!3#8'!F2+<.)A40+" .&"/($                                                                           $$$& &!%& )# ,&$/'$1($5*%eXNuj}rypgyofvlyn}rnd[F=73*&=507/*:1,6/+3-*5/-4.,1+)1+)2,)4-+3-+3-*3,)3,(JBL?6E:1D90K@7oh]rqswkvk|n{zmtymysf_VB=7rb}ã¢۹ªǮê侥Ūβʯ߼Ӱس⾢ǩس޹Ʃຝ⼠Эǥմʪ԰ѭհ۸޻ˮħ޹ЮЭħᾣɩͬ㿢ΰ¥߽ڷִæҴغΰƪƧ}zh\LC=A;8?;7?;8?:7@;8?:7B=9?95=8472/4/,831=96>96<73>95D?;E?=A;8?:8@;9720.)',(%,(&.*'+'%!&#"/+)3.*J?7}iYz¡YUMPKDNIB[TLncXkaWg_Uqj_unchaWnf\f_VSNFJC<74/td˪ܺն̮аݼٸٷԲϭάͬ¨дҶԸڽոгåܸ|u{zzƫʮƨ̮ˮŨɬ˯Ĩ߻ᾢྡྷۺ߾Գұͬ⿣çɬͯҰԳܺɪwl^TG@ID?LFBNHDPJFLFAJEAPJGWQNUOKKEANGCLFBSMISLHQJGPIFGA=GA=ZPInaݼƮֵĪϭṯ̌ȯƬ߻ťͮ׶޼ڸִϮϮڷضٶϮӲЯ̬ĦʪƦ̬ٸ޽ڸѯɪЯʩͭɪ̭̬ɩа۹ɩĦմӲȭĩ§ƪ̬uy~qѳ̰ɬ἟἟ὠ἞ӱἠص̫˩޺ܹݺ޺߼ܺ޼߽ྤƪαæʫäɩֵ¤~tmxfxfyg|jwfn^zhX{hX{hXsaRk[Mj[NTJ@$"zo}b[S $ (" 2(%@2.#.&$.'#=3.0#!1'$+# 2(%#,$!TD>QA:7,(A2/5)%                 "'#+&!/*$1+%4.';5.ph^qj`ph^kcYf^UhaWe^U`YPZUL/,'8,(aMGRB=aPIaTM_SMhYR`OIG94                                                                $%$& '!& '" )#!-&#/&"2($6,'k^Svjujwmbvla~shpf\YPH6-*4,(4,)<51:2.:1-5-*3,*3-+2,*2,*3,*3,*3-+2,)2,)2+)4,(RHAKD>+$ *$"*$"-&#-#.% 4+'8/+8/+8/+7/,5.+2,)2+(1*(2*'2*&3*%4+&1+'/)&.(%.'$/(&1*'0)&.'%,&$-&$,%#*$!+# -%!-%!*"&!*$!.(%.(&/(&5-)/)$,$!1)%/(%/($0(%0)%1)&2*&3*&2*&3+'4,(4,)4,)3+(3*'4+&7-(]MB}p~{u{pynuz}{ssfZxi[qcVbWM]TKwk_ymcynx|~}|xw{qynt{|wwx{}yjWPHvj}puxwu|q~r||}|zwxwww{|~|cXNxhywh~pcwiug~qdxj|mrw~q|ot}q~qsyzz{|zv~qph]Qsdo}k~k~kyguerbygX~j\vfk]wdWwdXr`TsbUm`vdWl\OeUIm\NtbRjYKjYKaREWJ?VJ?YKARE:K?5MA6LA8unb}pr~rxkviq}~uiswlx}qb[RIB;o}~££ˬɪҲطٶ⾤ֲֳçƩພԯֱຝ你Ʃ⼟⼠вصģͬձҴǩڸ״æα˭㿢ὢ۹޺ٷմճӲ۹ƪç¥ཡ㿢æϲַˮ߼ܺngZQJD@JDAC>:B=:C>;B=:B=9E?;A;8<7372/73/=85?:7@<9@;8C>;FA>E@>C?;:63)++,--!*$ 1'!:1+WTNvoes}rfǨ˭¥⿢ȫϳˮçˬմڸѱյֶں޿гħɫݹ⾣ᾡ׶æ§ྡྷƨҵȭũƪ޼߼ὠήӱѯϲϲдػǩĦѴػѳʮ§å侢ճ߼ὣٷϮ̬ԲӲյֶұˬ§ҷȭ俤ݹߺãԱά~xŦŦὣԳۺêҺʲ޼ǭ̳̲ѷɮǬལյҲ|n^QIE>;D=;<63=857204/-/*(.*(/+)3.-/+)%" .*'5/,I?7vcTu¡}YVOQLERLEVPHmdZnf\ldZpi_tncf_UleZe^TSMFGA;53.pӱǪɪط߽۹׷޼߼⽡߻ϳ׻ٽӶӵԶΰyx~yٶὢçʭгὡҰũǫ߼㿣дǫ߽Ӳໝܹͮ¦ƫŪƫᾣὡݻȩudVLB;5?:6831)))/00122011,-,-..+,,())$$$"""%"!'$!>5.kZL⽠ʬ̰Զݾڻҵ׹ƨղ׵PJBumbhaVd]Sd]Si`Uh_Uj`VufZm_TbXNd[Rzsi|nɮѴնԶԸȬҰέϯϯбӲ⾠ǨɪnrcWQICMGBMFBMHDTNJPIELFBJD@MGCSMIQJGJDAA<9GAOIELFCQKGUNKOIDQICh[SpatæͲٷճҲƬƬƬϯʫϰմѯέٶ¢£ǨѰȩŧ¤ϮȨ˫ִضֳ۸۸޻ԱίƨȪӲ̬¤¤å׶ί׶ٷ޻éв~u{}q˭αʬŨί¥׵¦㾡ŨĨԲڷݹص޻èȮྤྣ۹ΰ۽§ɪ⾡Ũ⿣ѱ̭մ߽㿤صصʫұմҲۺῥܻή{spnl~ko^r`R]OD ~uj|f_V )#!2+''!%  $          '!' % %!*&!-)#.)$0+%0+%0+%1+%3-'=70kdZnf\ph^ph^ph^sk`tlaulawnc:61#% .*(B:6\LGmWPoTLcLFL;7:-)3'%  @,&D,&kD:RFqKA^B;M:78,*/$#+                                              $%%'!'!& ("+$!.'$1)%3*%5+'WLCh]RocWn||naC:40(&4.+60-2+):3/;3/91,4-*2,)2+)2+)2,*2+)1*'0*'2+)2+)2+(3,(PF?KC=.'$-&$,&$.)'1*&9/*8/*7.*7.+7/+6.+4-*2+(0*'/(%0(%2)&3*%4)$0)%.'$.'%/(&1)'2*(/)',&$,%#-&$-&#,%!.% .$ )!#& .'$0)&/(%/(%1*'3,),'$)"1)%/'$/'$0(%1)&2*&3+'4+'3*&3+'4,(4,)4,)4,(3+'4*&5*%WH=vj|xvxxuvyx|q{qt|qfvgYsdous}p{oy|~{}~zy}||zux}oOIC{pe|ottt~s~s{{y{yx{yvtstx~TJBUJ?~m]o_uesdvf{jn}lp`whv{u~qxzvtuy~tym~sgvi|l_UJ{~tcqomp}lve~k[yfWm\Ol]o`}j[wdWm\O^PEiYNucVtbTfVIbSFucSjYKeTGcREcSF\NBJ?5NB8SF;QD9TI?xqezn}qymxl}sgr}~vjuwly{oXRJSJA{ŦͭήӲֶȪͪ߻ٶҰ׳Үүݸڶײ⺞ҵ۾ػȪ۶۶ʫ俢˩âὡèũἠڸڶ⽢۸ܺ׵ѯҰڷִݺ۸ճ˯Ǫæܻӵɬܺxi_TMJDAGB@<85D@=HB?JEALGDIC?A<8<74;74=96A<:E@>D@=>:7;74>:7A<9@;751.+--,..!,&"1& @82b^W|q|ykִʫӴ׸ݽ۽շַַָܿܿշĨȬϱŧ̮éݿո㾟ħɫĦƩŨ¥ΰ̯ƨȪѴݾѴ༞Ǫٽ׺˯ֵ޻ϮäȩҰڷũçͮɪѱط߾ܺʪ¤ٹԲٶڷɮͰ޹ãǨ}t¤ݻͳᾦūϴи̴Գյ޼Ϸ׿ռζƮήysdXLDA;8?:782/:5272061..)','$+'%.*)+'& %!($"0,*0,)C92saRuɨ_[SVQI[UMXRJmf]nh^rkarkarkahaWng\e_VTOGHB<63.oťӲԲ޺¨˭ίӳڸè˯ɮūǬдͱ̯ϲԷд¨wx~~{ὢ㾢㿣ɮв̮ŧ˫̫ӱͰܼǫӶָٸ߼ʮƪྡྷճԳܹܺݼʫvdVK>83:52830***.//......,-,,.-+,,*+*)))(('%"!*&#I>6taQyشٵȧ⾢ϮұϯԴɬǨὠSKCqj_e^Tf_Ug`VkcWg^Th^TvfZrdXh]Rb[QvpgyҴҴϴػո̰ӶĨѲѲ̭Ƨå⾢ᾡѰqyj^YPKNIFOJFLGBKEAOIDPIEMFBKDALFBIC?HB>F@GB?GA=OIERLIQJFTLGk^UnɪƩȭ޺ڷ׵§ʰŬɩåɩƨ׸ٶ״Ūʰٶ̫̬޺ݺݼֵͭҲضѰƦʩܺڷض⿥Ūٷ¤åŧǩħʫħ׷ӳ۹մճѰ~t}sǫũ㽟⻞ڵݺܹЯұར˯ĩ⾣ĨǬƫȭȮ˲ʯɭֵӳյԵҳȫ˯ᾣִή⿤ƪçũг༠ݺ׶ܹȬ§յĦƨʫ|yfsbS woe|yf_V,4)#("            !$ '#+&!-(#/*$/*$1+%2-&3-'B<4nf\ph^qi^ph]ph^tlatlatlatk`3.* #5(%D40A2.E40P=8N;7B0,O95L84lI@XL];3tI?xLA\;3B,'1$!%."?/%^F8_G4XD.R>2WB9H70@2*.$6*'F50=-)#                              #%&'!'!& )"+$!.'$2)%2)%/&"( .'"?60]PFaTJ1)&,&$0*'2,)3-*0)'70-:3/90,3,)2+)2+(2+(1*(1*'0)'0)'2+(1*(2+(3+'A83G@:.($-&#+&#.(&2+(:0+7.*6-*6.+6.*3,(1*(0)&.(%/(%/(%2*&4*&4*%1)%.'$/(&1*(3,)/)&,%",%",&#-&#,%",$ ,"&& .*'1)&1)&2*'2+(3,)3,).+))"1($/'#0(%1)%2*&3+'4,(4+'3+'4,(4,(4,(4,)5,(3+&4*&7,&UF<|maz|}~zx||yu}x}q~r}pyk^zl~prxlsg|pz{z|~uz|xz~~sytSLEtj`wj|p}q|q~sy}{|}|yxwwxyyz[RH  %91*C:1J@6[PEg\Ri_U|qesswz{|qvw~~{m_x}ww|k[qb~mwgzjue~j[zgW|hXp^PzgYm^o`yfXubUvdVxgYvdWucUjZLkZLfVIbSFbREbRD`PD[MAJ?5E;2RF;>9661/;63;63=85A<:A=:FA?B>;A<9?:7953731/,*,--*++ .'$1$HA;lg_xqˮնָػֹͰָڻʬ޾غ˰ʯ׻˰ڹ̰ϰǩĦ׹Ͳټַ⽢߻߼̮ܽаշ¦ѱѲټɫ߼¦βèʭȬçڶضЯ̭ط̰ʯȭɮϳؼչͰٶϰӳ̬ä㿤㿤ԳƪsǨӳضִ׵Ϯ⿦ȯиռϬݼڹݼȯȰٷ۹ྦͮ{l^QI?:7<64930?:8C>C=8FA=KEAKEANHDPJFE?;E?;GB>JD@OHCm_Twѱܻʪɪ⾤Ϯɪ߽ᾦ˪ϯ߼ٷܻ⿦⽢Ǭӹڷܺ߼ܹҲճղ׵߻ճϮˬ׵ѰѰضཤϮѱƨմԳĥֶǩƩϰ޼㾤~u~uٷåŦ忡ħ⾡׵մ̫Я߽ǬγȭʯͲĪêƫϲڹֳ޺ݹֵյڸ޼Գƫƫȭ㿣⿣འͬݻҲӳݻᾡϯήϯаԳѱ̭̭we pi_y}~qZSK            !&")%*% .)#/*%1,&1+%2,&C=6qi^ph^ng\nf[kdZmeZng\ph^og\1/+  $,!*(      "',!8*$1% ) 9*%X<4J3,/# ?41QA>D62YIAYHAL=6I;4WE?[JDTE?L<72&#&1-                      #&& '!(!' *",$!/'#0'#+#' 1)$80+/'$.'$/(&.(%.(&/)&1*'2+(0)'5/,80-6.*1*(1+(2+)1+(0)'1+(0)&/(%0)&1)&2*&5+'?61B;6/)%-'$,&#-'%1*'8/+6-)5-)6.*4,)1)'/)&/)'/(%/(&0)&1)&2)%4+&1)$/($0)&0*'/)&*$!+$!,%",%"+$!( &!(!4+(6-)3+'2*&2*&2*'3+'4,(4,(3+(,)(%1)%0($1)%1)&2*'3+(4,(3+'3+'5,(4,(4,(5,(5,'3*&5+'9-(A4.H<5TIAdWNpcXzma|octvqryyvw~uwykxt|pznzm}q{z{|{xu}rxxx}}{XPGkbXthxmxn{p|rxu~svz}}~}{|~ocX*(&)&$#! !61,NG@\SKk`Vvj_zncynd~sgr~e\Stdyxy{owdU{is{jm^vf}iYxeUm\}iXraSvdWzh[l]weWraTygZxfXp^Qm\OvdTm\NZL@RE:cSEYK?NB8NB7D:0B80G<3ULCzmznznxpeymwiv}~|o|zn|{oOIAdWMåήʭ}ЯֵɩڸٶѮܶ濣侢ү԰㼠еȭ̲ƬἡִĤȦˮƪ俥ԳåԲ§ͱūصĨӷдʮèᾣĨæԵӶα˯̮ƨƨ״ܹqj\RHA=A;8=84840;62A<8?:6=8561.0,)620=96?;8?;8>:8D@=C?=73162051/61.*'&,--)**!/(%2$RKEvof{ugɬֹ׹ܻܼӳعӴɬѴд߿ѱǨŨ̯ӵʬ¥޼ʮвར⾡ܹƪ˭̯̯ݹڵϱαȭػϱֶΰʭѳͰ㿣ܺȩֵܺԳϯ޻ɭеʰܻʮǬڷť̬ήŧt~Ѳ׷ѰãŦ˭ѱݸέίմԲа߾ʲǯĭì⿪m_YME=84:52;63>97>97=8661/-)'-)'*&$+(&($#-)((%#-)&1,)K@8iY|Э{e_V_YP_YPZTLhbYlf]og]ph]mf[haXng]c]UUQIHB<52-z̬ڶéƫɯȬ§߼ٶضܺƫͰȫȫ̭Եϱū⾦x{{ʮɭ俤Ǫʬΰв༠۸޽Ūֺ۽Ǫۻڽʯʮ㾢ܹܺŪῥȩxteZPHCA<9;73*+*-.-./.+,,*++*++)**(((())&&&0,*2.+F<4p^N|gݹ۷ִའæ˭ȫݺ׶XQHrj_d]Se_Vf_VmeZf_Tf^Tg[Ql]RqcXf^Txqg~ҵɬұصѴƪ⾢Ȭȭ߽аԲٶĦ߾ྣæqg\STMIPIERLIWQMSLHQJFQKGRKGSLHMFBGA7qi_rj_umbvmbph]jcXldZpf\h_U%#!#"!'&$,*(0.*63/1.*1.*)&#            1&#+"5*%8,(1&!/% 6*&1&"#&$'-:#@("0 3%"5'#5($,"+%"                 #%& (!)")!*".%!,$!%$1(#2)$2*'.'$.'$0*(/)'.(&/(&2+(1*(/)&3,)5.+5-*1*'0)'1*'0)'0)&1*'1*(0)&1)&3+'4+'5+&5+&*$!*$!,%#,&#-'$/(%8/+7/+6.+6.+3,)0*(0)'0)'/(&/)'0)&0(%3*&6,'2*&.'$.(%-'%.'$/(%/)&/($+$ $#8/*90,7/+5-)2+(1*&1)&4,(5-)4-)3+(+'&#2*&2*&2*'1*&2+'2+'4+'3*&3+'5,(5,)6-)7-)5,'4+'6,(5,(0'#+# ;3-=5/4,'7.)/'#8/)6-(7.)A71J?9RG>_SIj]Stg[qeqswupc~{{ztvi~suuwxw}rzp{q~t|ry|~{|yZQIjaX{nsswuwt}r}rtwyz{~|}|uhD?:B=8<84:62;84=96:6352/-*))'&#"!  )%!:5/E?93/*B:2UJ?cUIgYKbUHrboy~{}r_Qziotep`rbk[yeV|hXp_xeVsaSq`S|j[m^veVqaTk[Om\OucT~k\ucThXIUG;PC8RE:<3+J>4QD9I>4?5-VMD|pymxmvodwkzmv|rz}p}ymGA:sbV}Ƨ׵ϯ}Ĥέ̩ѮԱέάʨԱʮĨἡ俣⿤㿤çг˯⾣ٷа߽߾ԳѰֶڸճܺаضĪῥ¨§ͱ׻ټܾڻ׸бݹέzj_SK?95<74D>;B<8@;7@;6<74>96953:74>:7B>;HC@D@=C?;=9773062/52/51.*(&-..(((#0)%4&ZSLzo|se۹¥ֹܿ۾ˮϰַշгˮвն۽ҵƩɫѲٻʭʬɬݺήήȫȫ˭⿣طܺ⾡ݺܸϭˮ§̮ԶֹҲĥɫɬټԹϲ˭ȩའ¥ħĩħ̯̰ϵɯŧԵ̬ӲݻĪèڸ״ɩ~t|ѯүʨä¤ŦԳἣܹݼȯªֵ߽˴ϸͶܻմpbXLDE?<@:8941941:5372150..)()%#+(&.+),('2.-,('/+).)'OC;qaݹhbXc\SZTKWPH_XO`ZQkcYoe[nf[haXnf\c]TYTMLF?52-ݺʮéɮ׼Ĩ׵Ҳȩֳƫ⽢価ʬί̯俤״wz}}~ɮȬǫǪ¦̯ѳҴħ߼ƪ̯׹ָȭĨ㿥߼ὡ޻ݻյͯzsdYPIDC=::63())---.//+,+)***+**++**)*))'''/,)*'$=4,s_O}Ұ¥ཟŦضٷϰӴǩ⾠ĦQKCqi^b[Qd^Tc\TldZjbXog]dYOj[PrdXf]Twpf~׸̮ǩὢ˫Ӳ̭շ߽Ǫָ׷ط޼qdWNGMGCOIERLIVPMYSOYSPYSPVOLQJFPJFPJFNHDMGCLGCLGCLFCHB>HB?MGCQJEbWQuh߻⿥ض{ܹմѰɫбٷа޻©˱Ĭ©Ǯ˱ɯŬª©ܹ̫ϰ߼༣ضέѱݼ޼⿥ڸݼٸճմұɪɫ˭ʬʫѰӳٷմ׷ֶٹȪȨy|p}ʮèаߺݹἠ㾤˯ἡ§ʮպδŪƫ˰ĪéĨݻݺའյմ޼ڹұǩ˫ܸܺŨѴϰĨ¦ϱۺа̭ʫӴֵ¥ǪԳͭƨ׶׶{i qj`xswQLD           !#)$,&!,'!-("2,&1+%-'"IC:74131.52/30-2/,51.51.-*'(%#    >6.F=4]OCwi\p^Owfvgrb}krbraq`l[m]n^~j[k[weWygYxfWo^QfVIiYLtcTo_Rn]OdUG[M@L@5QD9I>3D:0NB7L@6F;1\TKtznwlzrfwjpvwqwr|}ujB>7|j\ˬѱӳϯȨͭϯȨѮήԳȨִܸܸͫ޺ٶຟαٷձڶٶĤ˨ߺҰȧťϮȨŦӲè˯ƪʪǧťӰݻĥɨܺĩɮèũѴԷǪའ̬|udXLC=@;7=84?:6@;8B=9<7451-941731?;9EB@GCALHFEA?>:7952952<74841952:63-+*022)))$1)%7*"`YQtz{jڸݼƩ¦߼̯ʮŪӱݹħΰӵΰԴ̬гҵӷϳʭåʫ⿣ӵܾȫ¥ܹЯǨٹаڷ߻ݺέҰַܸ׹Զΰϱ׺ոǭʪˬȬȬͲǭݺ޻մݺཡǪβ߼ĪҷپԳƩɪ޼ƫ޻Բçཥȭ~{v~ƧֵܺǬŪƪȮ߼έɪ۹޻ͭƩظԳݻŮƯƯཥήwi[SKDAA;9:52=97:532.,2-+/+)+(&.+)0,+,)(1-,($"+'%,(%QE8    $*$-'!/)$1+%3-'-(#+% RLDwncyqf{sgxpexpeumbtlarj_jcY!!##"+)'*)'$$# !! !!    )(&-+)'%#         ( )"")"B4-5)#;.+>1..%"       #( '&( ) $$/(#1*&.'$-&#/(&/(&*$!-&#-'$0*(0)'0*'1*'0)&0*'5.+4-+3+(/)'/)'1+)1*(1*'0)&/'$1(%1($/%!)!#+%!60,-'$,$!+$!)# ,%"7.*3+'2*'3+)1*'.(%.'$-&$,%".'$1*'5-*6-)7,'5,'/'#/&#/'$.&")"!#*$!-&$.(&.)&;2.;2-7.*3*'/($0)%2*'4,(4,(4,)4-*-)''"5,(3+(1)&0)&1)&3*'2*&3*'4+'4,(5,'6,(3*'*# +.+80-XOHtet~|wr{oxluivjujymcj`Vf[RlaVdZO^TKHA9H@9uwv{zr|qtt~r{pwmxm|qwyy|qwmzpv{{|}~z~y~yj`U_WO|o~ruvtxnvl{os~sxnzo~rx||{~yluj~tjtj{pwmwmzqhriahaY`YR]VO[UNWPJSMFUNHQKDMGAKD> $"84/PIBZSJbYQ`XPPJCJD=A<6:50;5/4/)&!QNJ@8/eVIk\tcvfvfl\rbm]o]tb|iYxeVyfWweVvdVsbTsaSraRp_QbSG]OC[NAK@6B8/F;1MA6MA6D:1H=4I=3bZQv~r~wk~uiugpv}pruuzyqf>:4udWvŦåƩҳֶϰΰǨͬ۸ִ׳ضåȧĤϫڶǫʮ׵̪Э߻ͭâťȦӰȨãἡĨརڸ⿦طӲ˫ǧϬ޻Ϯ˫׶߼޼ִ׵ϰɪڷٷ£{i^QFF?:ID@HB?IC@JDAKEBB=:73/2.+2.,620A<;C?97?:8=97:63<85:63731952))(022(('' 1)%=1)kdZ{{ziͰʮħֵڸ¦ϳͲǫ׵὞£Ȫ߿ӳȩ̮αɭˮɭŪ߾ĨˮȫԷϲʭίƨƧƩ߻Ʀ˫Ʃ¥༠ˮȮ˯ȪԵշƫ༡äԳܹ޼״Ǩаΰ༠ЯཡػƬֶ̭ݼêѰƧصŦصڸͭڹڷèƮֺzt|{ϯ޻ЯέܺȮ˲¨Գұ޼⿥үͮ۷ë޻ݻڸѰȨwh_SKG@=A;9953>:8=8773151/2.,1-+1-,*'&*&%/+*'#!($")%"J?7udϬsb]U_YQRMFUPH_WOb[Rf]Tsh\meZoh]qj_c]TYTMSMF73.ݺϭ۷ǭĨϲֺ˯ܺݻٸ׵״ຝشƥ ƥάťzkz~z~}¨㾣ũβֹѳбίɪв׸ܼܽҳƧ۸¥ħ¦ɭĨ޻Ϯصٶŧxh\ME@?:730.()),--.//,---..---,--,,,()(**)-)')&"B91wdTཡȫѳӶçȩ˫аϮڷRLEvmaiaWslbslaumbf_UvncpeZrcWpbWe]Srkb{ƫ§Ͱΰ׹Ѳ༠ۺʮ۾ܽ¥вܾǭ|mbXOJNHCQKGWPMUNKPJFQKGRKHVOLRLHPJFMGDKEBPKGSMJSMIUOLYSPVPNUOKQKGdXQuصȭϳʯϯ}׵ճѲѱǨྦྷ߼༣ڷŬ̲ѷϴڶܹܸܹȯǮ༣Ŭɰ侥ճұԲӲʩЯԵֶԴӳ̬յū̲ضѱۺὣ߼ݺ۹׶st}ūͲͱܸղղص⾢¦çĩȭ߼մִƪʭŨʭæٸ㿤׵ʪȩɬغ̮俢Ȫɬʭ㿢ǩɫܻ̭˫ħѰܺ߾ҳĥܺ߾˭u"pi_tr~|z}pog]FA;      & ,& .'"/)#1+$3,&/)$/)#QJBtk_vmbypdtlaumbumbtlarj_haW##"   !  #"!(&%'&%"!! .,)53.-+'   $5*'F73aKFaLF`NGB52   #( &&'$)"/($/'$.'$,&#-&#.'$,&#)#!-'$.(&1*(/(&/)&0*(0*'0)'3+)3,)2+(.'%.(%0)&1)'2*&2)%1($/&!+"&% %,%!70+-'#-%"+$!)# *#!4+'2*&2)&2*'0)'.'$,%",%#0)&2,)3+(5,(6,'6+&7-(1)%/&"+#$!+$!+$!-&#,%#-'%,'%7/+80,4-*2+(/(%1)%2*'4,(4,(4,)3+(-'&"3*&2*&1)%0)%1)%1)%1(%2)&3*&4+'0(%*# &!0*&3,)5.,930[SMufu{z{zyzpxn~swzvzlzk|na5/+rfvjrx~p|o}rwv|qzn{p~sttwwm~si}rwx{xvttzy~zpdYYRKuwwvxnzqg}tizouu}r{qs~rvy|rv}z|{wv~svluk|si|rh}rhzpfvmbqg]ME=2,':4.51,73.C>8UNFlcYxlwy~rvkxoexod|rgzm{mter1,%82*n]Oq`vdV}j[m\ubTn]|inq`yfWr`QvcUraStbT{hYweVhXKn^Om\MkZL`QDOB8F;1H=3L?5D90B8/F:2g`Vur|ujyluhrvwkstyyrj`=93xgYs~ȫ¦ˬƧ{£¢ҰЮťãѯֳܹӱɨղڶέʨݹ߼ҰŤĤťЭ㿤ִ߽׵մྣĨȫ߽ɨέɩϭ޻״ΰ޼¥߾˫ٷֵqaSH><62E@=FA>GB?D?E@>B>;C?;K;6XF>UC=;.+/$#+" .%"0&$+" 0#!,",!:,'.$ "$#*# ,%"+$",&#-&$,%#-&#-&$+%"(",&#/(&0)'.'%.'%.(&0*'/)&2*'1*'1*(.'%/(&2+(3,(3)%0&",#' '!'!&!& )"4-(,&"-$ *# *#!)" 3*&2*'2+(2*'0)&.'$/(%1*(2+(3,)3+'5+&6,'6-(8/+2*%(%+$!,%#+%",%#+%"+%#)%#4,(3,)1*'0)&/'$0(%2*&3+(3+(4,)3+'.(&"1($1)%0(%0($0($0($1($1(%/'$*# #,*'2+(2+(3,*4.,QJE{k~~}xwxy|xx}p}owh+&"pcXvj^uhvixl`wk_si}rszo|puvttyx{~}}szp}sx}pbNHB}qs{pxm{rhwndsj`woe~svvuwz{}z|ytvyxxusdZQ81+dXM}mpurw{|xt|puy~ywq-'".)#4.'^PDweVvdUtcp^wesbrbn\p^OcSFl[M~jZzgX{hYsaSm\Nk[MjZL^OCk[MiXIXI=L@6F;1F;1G;2NB8ng]|p~rxrgznxjsyuir|pzxe^U?;4oawyr~æŧǧˬ¦æŧ¤z{Ťʩض۸ڸԲ̪Բ׵ԲŤѯԱѯɩ״⽡ݺཡصܺضֵֵ̫ܹܹྣῥݺ㿢ڸάܺٷ޼ྡྷڸٷܺӲmtdVPE=61-952D?A<9=85@;7?:7841620842:64;74;74842:75=98B><<75=75>9750./+)0,*,(',(',)',)'+'%)&$+(%+'%&" B81q^OpmfaX]XOYSKg`Wd]TjbY^WNaYPf^Tslbnh^e_U[UMZTLF?8ͭ޺ũд׼ոپҷͳéԳܺ׶ڸ̫ӱղٵæɩxjz}|zǪܸ߻㾣ὡŧŧ¤ϱȫԲ߼㾣ΰũũյǩֵڸݻۺ޻ڸ⿢ᾢέpfWLH@;A<930.,..+,,...*++*++,---..,,,++*+*)/+)*&$F<4o_ྤ׹ָϳٻ߼£nKG@kcXaZQtmcslakdZ_XOf_UcYOl^TmbWf^Tlf\|гӵΰָԴԵǪ¥ѱѲӵ̮¦ǩѱvl`WUNINHDOIEPJFMGBOIERLHSLHQKFLEAID@MGCOIEQKHOIFRLHQJFLFBJD@JD?PHCpaVpӱ㿣価侢ٷҶԻзжʹêལ޻ڷڷطֳǧ˫ִɩäɪұɮȮἢʰպٿ˰޹èὥұ״ܹѯƧȩմ⿥ӳ׵ԳططϯƨѰྤèܻʫ|{ĩὣ忢濡Ƨȩ忢⼟¤ϰͯĦȪҶټĪĩƪƨظҳԵα߼гα¦ָ׻β̯ũũῢƩɫᾠֵħ¤ŦӲ߽ۺٸڹӳմа¥}6.'haYu|wuu{oqj`HC=     (%".-+$#" $(",%/' 2*"4,#7-$;0%A6*H<1J?3OD8SI>VLAYOD\TJaYOVPH.,*%$#""""""!!!!! !! #""$##$#"$#"'&$(&%*)&1.+41-,*'!! )'#2.**'# .$ I93I95M<8UA?O>;O>:M;8:+(?-+<,);+%R<4aE;Y?6C1*D2+:+$'* ,%#(#!'#!*$#*%#)#!+%#,%#*$"(",%"/(&0)&-'%,%#-&$/(%/'$5+&2+'.'$.'$2*&2*'0)%+# -&",&#*%#(#!&!% % ("4-(-&#/&!+# *# )"1($2*'2+(2*'1)'1*'1*(2+(2+(3,)6-)7-)8.)7-)5,()# #*# *$!+$"+%"+%"*$!)# *$!-)'3,(1*'/)&0)&/($0(%1)%2*'4,)4,)5-)3-+"/'#2*&2)%3*&1)%0'$-%"(!",�)&1*'2+)4-+2+(2+)4-*e]Vwivstuwv~t|~rxlxkuf$ eXMpcWxj]reYqeZtg|o|qf{peznyv}qxnvvtxzwyz~|}uxsyteMGAxm~rvkypfulcyn|shzqf~ujtzyww}~||}~~{|z|{zxuj`V4/*utw}~}}|{{~~w)$,&!.(#0+$UI>n]O|iYkZo_k[|hXxe}iXm\Mn]NtbTraRweV|hXq_Q`QDaRF\MANB8^OCVH=I>4G<2G<2H<3J@7tmb{o}qsmczm{muy~~uiqymwwaZQHB;{kywqoִῧط׸Եͭäѯάɧѯ˫äƧŦƦϮĤݹ߽Ϋἡ۸ɩŦǧ۹Բܹƫݻ߼۹Ҳʪմճִ⾣ܻ̫ɩЯŪɮ޽̭Ѱճ~kdVJA:4=85@;8D?:7963;74;75:64=:8?;895341.(*)/00!-&"/$[QH{sո׹ͯϯŧѱ̬ħäڸçʮ˭ۻ̱§Ӳͭྡྷ¥յ̯ܻΰӲϭ׵ɬַ۽гίбཡԲϯĦȫݾնвֹϳضǨԱڹдӶӵˮѳɭԲǨͬұܺ⾣ݻӱȨɩʩյʯ¨άǦ}|r޻ڷȨǨᾦ޼״ճͭͭݼ¨ɯѹ©Ұ˫xj_SLF@=:53942;642-+2.+0,**&$(%#(%#*&$+'%)&#&#!&#"($"F<5yeVu{jmg\d^U^XPle[cZQi_UaYPcZQf^Tnh^lf\e^U_XPZTKF?7ήٷὢĩеҷжеٶ§۹ٶɩϭ۶Ȫ߻ħݺĥyjx}z}ֳҰ۹޺æ¥۶۶Ũո̰ççܺ޻ٷӲЯұݺ⿤ç⿣㿢འˬxqbUOF@FA>:64./0.//.//,-,-.--/..//,--**)))(,)','%LA9udմŨ߽ʭʭݼѰ״ϭsIE>jcXaZQtndrkajcYaZQf^Ud[QfZPnaVi`UibXxҵټܾ˭̭Ŧ忡ܹвնַ׸ˬٷ޻ཡpj^WVNJOHDIC?MGBNGCNHETNKPJFMGBLEALFBJE@HB>E@;731./-+-,*-+)/-*0.+2/,41.740<84C>9FA;GB71pbUtfZpcXnbWsg\}obzlw}p|pwwxysxmsvsx||v{owsd=94wmcxm}si{qftiyn~ti}q|pt{yxtvyytw~}ywyyy}~zvxtwhov~}}{{{|~w&")$ +&!,'"-("C:1p^Pubxetcn]xfm]tbS{gWm\ucTl[MxeV{hXvcSeUHdTGYK?VH=MA7E:1<3*=4+C90J@8yrg|p}qtmbzm}ouz|xksymtuUOGPH@|l|knrwz}ȪǩǨղѮֳͭ¥ٶղŦv}Ŧյٸںյܺƫȭϳͱǫ¦߽ݺ⾠¦ཡص̬ͭͮƦ̪ڸyhbUK?95<74?:7HC@KFDHB@D?<:5341/731:64953?;8@;8@<9B>;?;8=96953841<85<85953*++-..!.($/"i_Us޼߾ũˮټгƩ׶Ӳ۹ۺֶƧ׵ڹѱʪ޼޼ֺͰྡྷմط޾æŨƩæ̭ίַڼѴֹβֺ˯Ĩħ߽ǩ޺ƧڹҶϳ̯㿤Ѱ˫˪ͬԳŪɮ޻ŦƧ߼Юǧ⿤ƪçٷҲݺصť۸ҷˮ༡yr~ªɯɨӲͳзƬ俥ղ¥ֵƭ˲ǯὥӲ㿨êЯxugcWOJC@=85941:534/-8312.-.*()%#)%#(%#+(&'$#%"! *&$J@8yfX|ʩwhmg\g`W_YPkdZ`XOh_UaYOc[Rf^Tle[kdZe^Uf_VZTLH@9ٷĩͲеҷӸպԹչѵҶչ˰ܶ㼟߸ί㾢Яykw|x|{{|¢ϭརħαǪ⾠ʭαʮƫǭū޼޺ض׶ݻྣڸ⿣ὡڵղ¤yxg[PGAF@=;86.00.///00,--....//-..,--***)((-*(/+(TH@weǨèǩĥĦྡྷ༟æ۹zC@;f^T`YPtmcsmbgaXa[RhaWiaVeYOn_TnbWg`U{̯β׻̯侠۶¢޺ӰƪͱǬԶԶȫ¦z}l_XPKQKGQKGOHCQHCQKFKFCMIFRLIKEAE?;F@;MFBOHENGCJD?A;7E?;MGCPIFNHDVNHzj_u¤Աس˩ǧ|ɫѳܻ߾ݾ߾⾥©߽ӲĦ˭׷ضԳ˪ͭʩѯ༢ǭỠƪҵ˯ĪʰŪ¦⾢۸⾢մڷ༡ɮγ˰߽Ǭçѯ˪Ѱݼӳ||̯⼞åʫƨĦߺ༟¥ϲɭƪ˯ũƪƫ⿣ҲƩҲΰвƨɪƪѴֹٽԷϳȬǪŨָٻίŧǩͰͯʬƪƨǪŪȫ߾çۺݼҲƧs;2+XSKy|}rzn{o|thhaXFA;              +'#62-LHDPKFMICKGB?<9/.,#$#(&#;82HD=FB9FBMHAVPH^WO`YQd]TjaWpg\neZiaWg_UaZQVPI?<7'&$! +)&20,-,)"!   $##$##%$#&%$&&%('&+*(.-*,*')(&*)'0.+63/31-.+()'# !0"2$-!3% @0+fWS{kdohqiwgafWR^PI`QJ_NKfURiYUgXU[QNSIFC967,'3*&/(%7/+C94C50K;7?2/-%#,%"1($0%") :+(6)&3($A3/L:5tQH}SJvNHT=86-**&$,'%0)&3+'4,(4,(.&# & )# *$!*$!(" (" *$!+%"+%#*$"*# *$!+'%,&#/($/(%.'$/(%1)%2)&2*&4+'3+',$ ! +"3)%,$!$"*$!-'$0*'/(&/)&/)&3,*2+(3,)1*'2*'0)'h_Wv{vwzzyxx~stu:3-G=6I@9SIA\RIdYOwh[wg}mquhyl}psxztuwzz|~{z~~{zk951uk`wlwlzn~quiujsywuxv~r|q}qrs|nuz}|{z}t~rx|q{psw}~~}~|vzx.*&xj]pw~}~|z|}~xw$!)$*% ,&!.(#<4-gWJl\zgXp_P{hY~jZ{hXp^OubTkZLlZLp_QvdVxfWr`QdUHZL@SG;6350-40-<85A=:?:8;75620842=86?;9D?=D@=B>;>:730.+---..#0)%1"wmbr̬ƪ࿣çརظ࿥ɮ¨ݼҴշˮåƧƧյյҲΰʯֻʯͭɪΰȬαٺ׸ڼعͰʮպʮطԴƪ˭ƪոбҲ㿣۹ڷťֶʰĩֵ׵ˮг̰ܿڹԴݻὢصٵڷໞ̫ܻ߻໠ӱܹ۸۸ݻϯͬ޼íz~wtŮǭᾤүƧŭٿδ侤ص۷״俥̳Ǯݻῦƭǧ|}nj\UNGDICAF@>F@>94240.-*(-)(*'%+(&,('+'&)&&'$#"/+)TH@qc˩tfmf\e^U]VNe_U\VMd]SbZPbZQd\SjcZkdZf_VhaXXQIMD<߼̱Ͳеδͳ׼ݿαǫͮǪɬ̮æ׵έylyx~p|zzxЮٵڷ¦ɭβȬߺٶũ˯˰ֶڻܹͬڷ㿣ݺĨའǪǪʬʭԳzvf[PHCJDA>;9/00/00./.---.//-..-..,--**)&&%+(&($"J?7q`¤̱ڻϱίƦֳĨҴŧC@:aZP^WNundxqfgaXb\TkdZjbWbWMq`UseYg_Tɭ޼ར۸἞ݸໞΰ޻ίὡ¦ɭβԴzmr]PVGAQ?8N;5T7.Y5*[<3Y=5V>6SD>NE@E?;E@;NIEQKHTNJMGCF@:++*#$#"#"#$$$$$###!!!  !!!!!! !!&%%1/-8621.+%$#"""###"#"!!!  !! !!!  !!!   !  !!! ! !!!  !!!###$$##$$!""""" ! !""##"%%$&&%&&%%$#%$"+)&-+'0.*41-30,63.0-).+'#!&" 2,)C:6MD?B:7,%#!(! )! '! ! ")"1*%G<5;.)9,(*  (7)% *&,6!N1,`AVI=UH=NA7I>4L@5J>4SJA|uiym|pyqfzrf~pv}s}pv}q}qrKF?UKByhoz}ĦίƧ̮̫ѱ¤˩԰ݻˬήͬʩͬǨ{ĤŦϯݼʰྣʪǦ̬ΰаӲЯ״ЯԳаԳӲط۹ڷ༠ŧͭym_S?9351.<84@;7C=:F@>GB@FA?A=:;73>96E@C=:>96?973/-/+)+'%*'%.*)-*(-*('$"  "-)'RGAwhڶvhpjac\T\VNd^UXRJVPHZSJ[TKaYPibYibYhbXd^URLERH?۹¨ĪʰжٿӹպԸؼˮƩѳͯ忡侠ݸضƥuh}~q~x{}{z⾢ڸѯ߻̯ƫὡˮʮŪ§޼æʬέȧЯྣȬ̰ҵŨ⽡ṵ̃˱߽pdUMHKFC<86/00.//-..---/00-//+--+,,)))'&&/,*%"90)xdT¦ݽ޽ܺѰ޹ѳϲѲDB<^WN^XOsmcvpficYe_Wng]kcXcXNq`TteYh`Uz޽ڹέЮƩոĨ⾢αٶvq_|WErG4yL7zL6yL7vI5mD2g?.W4&C$>F$T, Y2&W3)O5.NA=OIFKFBMGCPJFRLHOIEOIESMIeZR{lå޼ἡڸѱYK@hSH϶ѹɲ~rdɨ߻§״ŨӶеչ̰۶ڶὢǫ忣⼠ǫ̰Ī׶ٸ۸êɯ⾢⾣޻ٵߺӱЮٷ|ëԱݸܷܷ۶⼡ȫͱϱͱе˯ʭǩƪ˯ٻعѴг㿡⾡Ǫظ׸ʬͰ¨¦صԲȬȭǫçŨƨ˯۽ٻշƪɪ߻ոڼѴƨгҶʯ߾ظϰyE:2ID>zzv{~pvncf`XVQJC@:,*&       "*'#($ ,'"72-woerxkymqjaFB=,+*$#!:72,*'!! ))'1/,52/1/-*)')(&+*)0.,31.52/852852963<95<8473/?;6A=8ID>MIBEA<=960/-%%%!"""##"##$%%$%$$%$$$$$%%%%%$$$"##))(974A>:640))'$$$"##"#"!"!!!! ! !! !"!"""""""""##"""!!!!!!!     !!! """###"""!! !! ""!!!!  ""!"! "!  "! %$"&%#*)&+)&,*'&%"(&#&$"+)'-+'-+(*(%)'$)'$%#!#!#!       4$!C0+Q;3P80\A9N82I50@1/6,*-&$*$!*$!,&"/(%% % "" ! % '" (" +'%+'%+%"+$"-&#/($/'$+# )!.%!-%!""&!("*$!*$!,&#-'$-'$.(%1+)0*(2+)1+(2+)4-*4,)SKFwl~|{z|ruxt~r{os^TJ]SIbVL_SIcUJsdWtf|nwitg}odvj`jaX`WOWOGKC7TJB]QH_TJ_TKdWLsbTo_p`wg}lomrn~m}luyyp<4,NE<_UKbWMeZNmaTzl_qc}l~nv|xyz~¦yt|yq|{~}zvv||r}q~sixndujuxuA:4SJA|ob|obresf{pezodxncwnd{qgvk}q|otwzzt}m¿"'")$ ,&!.(#2,%\NCn^yg~mtc|hWtbSp^ObSE`QEiYKaRFPD:TGLA7F;2G<2G<2D90YQGxlzn|pyrf{rfrt|ymst}q}q{oEA:gYMw}}ȩֶӴѱӲճڷ|ʫ¤ťŦťʫ}ƦȩǦ¨ֵܻܻǨɪŧͮήڹί̬ήִέЯڷཡԲֵŦʩƪ¤~m`TJ>95730:52B=9GB?HCAD?<=86=85=85@;8HC@D?=>:8842731:63?;9A=:953841@<9C?=631+,-%$#' 1)$B5,y|re}̭ũۻ¥ٸǬ̰ͱȫݻåƧϱаίٸѴո޼ͮطĦȪʪаջݼұ̮ϰдϳ޽§ϯִֵϯұåʬΰƩ׶ϵӹϴǬӴۺݽϰֶ§ĩǬƪȬ̱ȬִܹͮҶɭħϰΰ㾢ʭ߻⿣۹ӳyrt|stŪƭݺճЮȩڸ༢Ұаܸ۹Ǯ©ʱ޹޽޽Ĭ⿧Ƨt`SL>7483061.4/,/+(-)')%#+'&1.-1-,/,**&%# # $! /+(RG@se£ᾤqxrhgaW\VNc^UYTLOJCUOGYRJc\Smf\lf\lf\b\TOJCdWLêǬᾣߺȮѶ׺ػβչӶ̮ʭϱ̭Ǫħ⽡~thr}xyx~}Ŧܸ޻۷༠ɭϲ̯ũɭ§صص¦մΰ⾢ڵڶݺڷ⿤ɯ߼§ɭ¦ūظocOHC=951.,-../00.//,-,-..,--*++*++)))%%$0-+,(&C91~jZ俢Ѳݻܹ׵նͯѳ̭бEC9PD?TJEWMJSMJPJGSLHfZQr˫ֵȧť{{oph]\UMPJBYSKibXD80 %jWKL?6" -J-$ںݽnZN )u`R˨ڴҮƫϳӸè޹Բܹç忣ˮѵԸؼֺ̰״޼¨Ͳʰᾤ޺§ʰ۹Я׵ֵյ~zҮຜɩ¥ǪȬҶѵֺѶȭʯѴ׺ԶҴԷũٹƩ§۹۸ǩαƪǪ¥ͬݺŪŪɭʮʬƩ̯ҵӵѳͯ⿢ũո׺ɭ׵ӳۻƭǭūٸǩG=4C?:v|u{|oqh]TOI>;7-,*    # *&"+&")$ ,'"72-{pxy|pPKE0/- !!!20-SMF@<6 &%#840ICA<7B=8GB<9FC>963++)$$$!"!"##"##"""###""" !! !! !! ! !!  """!"!!!!!!!""!%$$%$$#""#""&%%'&%&%$###"""##"$$#$$#$$#$#"'&$'%$'%$)'%)'%'&$#"!(&$.+()'$  ""!$$#$$$$$$##"""!!! $#"$$#'&%&%$""!       *8*(>1/B64=2/0( C8/gULYI@K<6E84TD@ZIEkVOcPFSC9K@;E:5A506,)>0+?2,?2-8-)*!")"(")"*#" & & '!(" )#!*$!+%",&$-'$.'%0*(/)'1+(2+)4.+6/,4-*HA<|qg~z|y{z{}~weZPbWMj^Th\Qn_RzhZn_rczjotrvgxk{m|mte{j\n`SbUIRH?#+'$%"  "/'#2+%;2,H=5I>6G=5VI?_QE" ("4-'D<4WMC`UJh\Qui[rd|mpvũǩŧç§znty~|swjuhqr~pqrxvtrykJA:KB;wk_vj^qcre|qewkwlwndvmcxodujxlrvj}oq{ko`¿"&!(#+% -'".)#LA8~j[rcl]p_yfVhXJfUHfVHkZLjZL_PC[M@TH;C>:8<85;63<85>97<85,*('))!*#0&!SH>rg\{~Ħܻҳĩ׸׶Ĩ۹ݹٷݼ߽ڹཡƩظȪΰȫ׸յã¥ԸдԴʪçƩé㿢մյȧ˪߼ܹܺұָ̯ˮ˯αɬԹҷҷ̰ԲåˬŪƫγҵͱгؽƫȪ׹̯ո㿢޺ڷĤx~qt}st|Ŭ˰俥ղұڷڷѰԳѯɨҮί׵ֵض۸׵մʪǨug_SKE?<51.3/,2.+1-*4/--)'.*(0,+-)(,)',(''$"&#!&#!.)'J@8m_Բvismce_UZTL^YQWRKJE?MHATNFaZQkd[lf\oh^e^UNHBhZOȮͲϳԹӸγӸ׺б޿ΰ˭ΰ޻ģʨ~ui|~qzw|{|yƨѯὡ¦ཡضݹ༠⾢¦߻߻߻¦ʭݸԱݺԲϮḛ̀˯Ȭίuyj^VNHC>;.,*/00011---+,,,--+,,*++*+++++'&&2.,-)&I>7rbɬҳˬɪϯ̮Ǩ̬ظҳGE?YRJWQHjd[vpfng]ibYoh^rj_h`Ue[Qi^Tg_Ux۹ħշ˯}sREY1(U)"X(k=,uH3tH4c<+I(C!BE!W.%T)P)L(L(O)X0#jA/rH4d>.M.",&4 G!K&N)Q/$]9+a?2`@5Y@7WB:p[OvvbcPlX{grcVxodth^XIA # ' V;0>1*2obgSH331 3 ycT⺞澢γеƩɭĩ忣㾢侢¦ͱӶггѴԷǫƫʯ̱ū߼ղϮ۹⿤ضֵƧƧ|}xé޹ӴҳȪˮԷֺھԸ̰ϲٻˮɬбҵݻǨήݺݺٷ߼ŦȫˮȬũܹ޺ݺݺڷ׵аῢĨгͰֹӵ˭˯ԷӶƩ޺¦ƪçǭɯܻƧxD91B>9u|s{{njbXHD?..,""!   # -($*&"+&"*% ,'"82-x}{oPKE21/ !!##";84e]TMG@"! #" "!%#!.+'E?8aYPlcYg_Ub[RbZQe]Uqi`vmcumbrj`of]iaXkbYle[pg^{qf|rgulame[]WPC@<--,++++++)**)**)**)**)**)**-../00/0///.332@>;GE@:85-.-+,,*++****+*)*))**)++'))&''$%$"##!"!!!!"""!""!!! !! !! !! "! "! "!!"!!"""##"#""%$#/-*63075164152/730852;84:73962<83>95A<7D?9D@:@=8962962?;641,"!"     ! !!!!! !    *"4*$.$3(%N>;J<8J=9NB=NB;QF@UIC2'##/#-")(5)%C3.ZE?P=9WC?P>:F86E85=413+(8.+,%#)#!$ %!'" *$"+%#-&$.'%.(&.(&/)'2,*5.,6/,5.+D<8|qg|ryou}uuzwj^eZPvi^sfrsrq|nr{zp}mpmzfyesbUKCTLE^VN[RKXPIKD>?9461--)&&# # 6/)bVKbUJMC:92,,'#+&")$ %!#!   +&"?70PF=fYMqbTl\zgrvt~}ureui]wiugyizj|krvpufxgYLAC<5th]vj^rd}qeznc{od}rg}shri_vmb}sh~tiym|p|nroue!$ '"+% ,&!,&!I>5r`RjZLiYLq`Qr`QtbRwdTr`QfWJgWJ_PDUH=SF;UG8840;73>96;74@;9C><>96=96?;9A<8?:6C?:8A=;A=;?:8=86;75;74:63)'%"##,%!.#cXN~tfܻ׶ӳвбåٹܻǩརˮˮ̯޻ǩ߽ضϲӵնα˯ʮťħҲྡྷ§ŧ俠Юڸճ̫ȫᾢħæྡྷŪɭũæ¥㿤˱پֻǫܺ¦βƫéȮؼոԷ߽մٷˮϲܸܹٶݻ㽢Ȧƥ~v}pw~uv~ƪྥīĪ׵äŧԴۺյ׶ֳǪʪʫԲܺ׵аviUJC>95841<7583140-1-+/*).*(1-+-*(,(&)&$*&$!'$"3.+NB;l]Ϯ{obtmcleZ`YP]WOSNGHC=ID>OIB_YPkdZjd[mf]ibYNIBtdXѷؽڿеͲԸپ׺ˬǪȫ彠ߺ㽟Ǩ¤˫|nzrzx~}{xͮԳЯѯ׵޻ֳֳݺ޺ܸ§ç㿣༠çϴ˭ڶĨȬȬдͱǪ໠ݹڸrfZQLHDA310355455010,--)**)**()))***+*'&%2.,,)&A82}j\༡Ǫ⾡ӱܷ⽠ٸ⾠ܸͬyfJGAYSJVPGf`Wvpfoh^g`WjcZsk`ph]g_UaZPb\R|ħåѯ~_QMU)"Y/'c8,oB2l@1\5)K+!="9D%A$D&Y5,N.$I,"B+!@*!@*!>( =' D,"M1&`=-]:-O1'5$*4@ E$M(X1$[5(Y5*U2&Q,!O,"K) N.$Z2 e8"[0(5=#    # kXKwdV69 &441 2 5( kWKͰոֻӶѴϳβʭȪ߻ղԱ޹ɫæ㽠忣ũ俤§еҷèڶ˪äճǬݼ̭˪{v۽̮忢佡ҴոټھպҶβϲعѲѳϱӶΰῢֵаյίƩȫɬ俣ƩŨƪٷص⿢æвͰڽܽˮƩгշѲոոŪèۺͬvA6.B>9vz{oyxlc\SA?:(('   (%!,(#+&!+&!+&!,'!4/)yynNJD220$%%  $$$@<8lcYVOG('%/-*1.*0-*3/,@;6XQIpg\uizm|o}p}qtv~qvj{rh{ri~vk{p~syvvndSOI542--,,--,--,,-.//011/00+,,*+++,,+,,+++0/-?=9IE@=:6-,+''&(((++*/.-210221222011./0,..*,,'(('''+++--,,,+-,+--+,,*(('%%$&&%*)(/.,0/,,+)''&'&%('&20-E@;PJCPJCLHALHBQKESNGTNGUOHUOHXQIXQI\UL`XO_XO_XPXRJWQIXQID?9+)&$#!,*(+)'$#" ""!%%#'&$##"       "6(%>/,?1/>10E95RB>XF@O>9XFAE61C40/$!-$ ,%".'$0)&0)&2*&1)&0*(3-*2-+2-+?;8~uly{}~xxvv|reaVMxk_zlsvuwxv|yzyunyiaVLcZRtiukvlci`X\TMQJED?;;6340./+*,)(,)(,('*&$+'$<61^SIzj[vgXcWKQH@IA9F>7E<5D<5?71=6071+1+'-($,'$*&#*&#($!&# $!!  :62r~re{zu|||xpqn`S+(%>71mbWpeY|nare~rfyncyodvj~ti~tivk~ui~ti{nruoxi~»"(#+% *% *% 80*SF;fVIgWIiYKjZK`RFgWJ]OCbSGp^P`QDPC8L?5G<2B7.?6-B80mf\|pv}q}th}nt|y{rgw}q~r{pph^=94|i[yĦãĦyz}~~ҳɫȩұǨͮЮ̬ܺ£ѯӳäƦͭཤҶֵ̱ү⾢׶ִֵӱʪܹմ˫xsd^QGD>8952730;75=:8?<;B><@;9@;8=96<85?:7C>;A=:<86;74>:7<86?;8@<9=96>:7<86953*('!"" -'#-mbW|{l࿦࿥յ¥ȪֶͮۺɬմܹڻǪɭǩعåڷϱгĩۼƪɬڹʫŦῢָѳ̭ʫ἞۸åԳط¥ݻɩ˫ɮͲǫƪϴϴɮ¨ƪ§éѶȮۻ׶ƬϵѶ׺ۿֺӶѴȬشέԲťȧ~u}owzyնƭܹԲ޻༣ݻ˲©طں©Ұ¤ʬ۹ܹٷͭӲᾤڵ˫yj\PHC=:>96C>;94340//+)-)'.*)1,+1-+1-+)&$(%#(%$3/->86ZNFrcѯqg\tmbog\`XOXRJPKDJF@KGAOIB^XOle[ke[mg]oh^NIBscWͳֽؾδԸֹ˰ʮαåẝ迢ä㼟æç˪yl}tw}|~|{vȨֵͬҰȫҴ̮ʭΰɫǪ¦çƪɮἠȬϳƪֶ۹ղѯԱήqe]UONIF532344344000-..())***())())())"!!*&$,('<4.fUIye|ЮѮ޷ϭԳqKIBXRIVOGd\Sslbmf\b[Se^Ung]qi^g_T_XNa[QzdTR'R$\1(^2)`4*`6+i(K0&H-#///1569wxymxwj^XP><8&&&  "!'# +&"*%!+&!,'"+&!4/*zxmMIC100%&&!"" ! ! $$$A=9pf\\UL?;6ID>OIBQKDRLE^VNqh^ylsxz{uwkzqhzsj{sjwnzoxvtmcUPI:84..,++**+*,-,000443775664221010011132=<9WTMfbY\XQFC>;85>;8FC?MIDNJDEB=<;8443010/0//0///.441=;8@=9>;7;85=;7=;775210.0/-752DA=LICIFADB=FD?GD?TOHh`X|rgznylvjyl~q~q}p~qxluixkvi{qezpdwmbtk`meZQKD31."#"!"!   !!!!!! !!(&$41-95141.,*('&$##" !  ! !!!'&%2/,30-)'% !  &%#.,)('$    &  ', 5&A0&9-'5+'Q:6[@;[A:7200,+0-+0-,.*)/+)?94[PGpaSyj\znavk`rg\laW_UKaVMcXO`VMYPGPG@LC;JB:JB;HA:C=6>82>82<61<6061,4/+1,(+'$(%"($!1-(>820-)xi}{}l`Vvgw}q{p||zz{{}}xkui\qdW~o`re~qewl`{qeym}qym~ti~ti~tiznsvqugw»ºû!'"+% *$ +&!0*$K@6RE:\NBl\M\NBRF;dTG`QE^PE[MASF:MA6E:0F:1A7.E<3smb|pvzowjqtyzrfszor|qd^T>:4wdUzhu~~zxxˬˬw{Ϯϭϯʩӱұմۺаظ޼ڸڸáͪЯ|ĤЯұͭƦ俦ѵè޻æٸұ༠ܺήͭʬå|jn_RJA972.41-2/,1-+0-+30/953>:8<85=86>96B=:?:7<8562073/;74;74=85@<9=8562/51.40-%%$##""/($1#thvqūǬ׶ݼ˯ܾͯں߾çͯոǪ̮׺ھܾȪ̯ػڿζϵ߽ݼظ޼ݻཟܹαдȪϰ˭ŧвҵвˮҵڼԷǪ޾ɮʯȭŪؽչϳӹѶᾢӳĪƫƫγ¨۸ֵᾤβͱƫҷԹɭ信ٵѰЮ£}}~v}puxz~ִ⽥άͭêѷ˲Ի޻ڹܻ⿦ݻέӱݹ߻ٷ˫ʪԳ⽤ͭq`SKA:7830;75731620/+).*(-)'-)',(&-)')%$*&%-*(51/<64XLDufұqg\uncng\\UMVQIQKDNJCOKDQLE_XOibXkdZnh^oi_HD=aSHʩ©˲ɯ׼ھչ׹ϱȩڵħҴ¤㻞你ڶģ~thz{~qu||~|{wҮߺұұ޺¥ͰͰͰ̯ɬˮѴҶݺ̱ۿƫ㿤ڸݺƦǧʪɩ~sdXME?JDA642022011./..//+,,,--+++*++*++%$#+'%($"B93weVӱӰشڶԲέǦǤ๚մuOLEYSJVOFc\Svoeqj_b[R_YPhaXvncjaVaYOe]R}hYc@6Q"X.%Z0&X0%O,"H* ?&A'@&8"9"7 50/,+)(&$ $ $ # # # $ $  $ )-02687775454< E&S1$tB.rB-I(       !  " )-2! ! $ * 475)bPFҷδ໢濣⽡۶ضȭѵç߻ڶ㾢⼟価çѵϳ⾢༠̱ϳƪ⽡㽡ճʪ׶Ӵ~|uw|׺շϱȪͯӵϱӴټؼдʮḭ̃ѴвָʭḬ̃ɬǪǫæճϭʪ޼Ǫ˯Ǫç߻Ĩũ¦̬۷⾣§ǪϱֹӷҵӷҶ߽ͭçǫṵ̄ϴĪť}WJ?851wyymwvjYSK974%&& &"!'#+&"*% +&!,'"*% 3-'x~vkKGB//.%&&###!!!!!!%%$C>9tk`g^USNG_YQg_Wnf\qh^xnc~r{z|zwtsxzw{p{p}ujwm}q|qyn|pwlri__YQMIC@=9=;7<:6974752863>;7C?;C@;CA=QNHmg^}vjvoee`Wa[Sa[SfaXkd[ibY^XPSOHIF@EB=C@<@>:><9GD?RNGYTMWRKSOHVQKWRKNJDHD?JF@QMF]XPd^Ujd[rlcuoexrhtƲɷtk`EB<**(&&&&'&&&&''''''#$$!""  ! !"!0.+C?:SMFVPHJE?>:620-,+(,*(('&&&%$$$###!!!! )(%:62=:51/,!!  ! " (&#$"         @($J/+<%"54 %$":% bB:cF>OB=\OJk^WyiapbY]QIreuhwk{p|rzpyo{qtt{q{q{p{p}r{p|p{nxjugZh^U~r}rvlynzoynyofjaZ]UOMFAA;8952831620620B=9eZPuvwjxnc~sh{oynckaWui_th^pd[j_Uj_Tk`Vi^Ug]TbYP`WNaXN]TK^ULXPGSKCTLDPHAHA:F?9RJBVLC+&!~ozu`UKdWKwj]bXNZRIf\RaXO]ULi_Tvj^ynb~sh|oviyip`zi}nzmuiznus|p~th|qfxmuithr~nsft¿»»û&!*$ )$*% ,&"0*$/*$0*$4-&1*$E;2SF;J?5NB8MB7M@6L?5G;2A6.KA7xqf}qwwlvjrv~twodwlymu~r^WOD>7p^kprr{{xmowxsyɩɩŦ̭έѱŦ}ťɪäܹݻྣ״ʩ£ǨѰմ̬£Ȧ߻æ}¡״ٵڷ޺ᾡΰΰ࿣̯upbUJB;84084162/30-0-*/,)30-963;75>:7=96:6451/5202.,40-841:63;7462/62/74174162/''&$$#$0(%8)!}pwyǭ˯ӳ̭Ѳῥڽҵ¥ĩϳ̯ĨƪгϱַݾѴѶջջٽ׹׶гغαͰбƧ۹Ӳའæʭɫȩӵػ̰ŪȫαѴƬγ߽ƪֺʮèǬݻطӹؽؽڿʰྤྣ̬ٷȫپδĪдɬ㿣⽡߹ղԳү~w{nux|zɪéԲ޻ɱ˳Բ̬ʫֵܻ۷ϮɩǨ£ضȯ俦߻ɭپջ߽gYPD=:<6372/40.51/1,*/+).*(/+)0,)0+)(%#)&$2.-832@:7^QIyiǨg_Vrlbng]\VMXRJSNGOJCOJDQLE[TKe]TjcYmf\nh^EA:fWK¢״ὥԻֻܿŨʬ˭ˬƩӵƨƨ߹¡sumbuxxlu~{}z{}۹Ѱɨἠæᾡ߼׵۸ŨӶٻϲͰè˯ʮ㿢⿣ƫƫƫ߼۸شݹɩ|k^QHAGA=420/01/00,,,,-,,--.//+,,*++)**$#"(%#!<4.yfWԳåή¥߽¤߽ղãѱqOLF[TLTNEa[Rwqftmcd]TZTLc]Uyrgqh]g\QbLAZ1'W+"W.$L+!B'<$7!41/.,+(% #    " " & ())))*./--..143-+ . ;:' " # $ + * %" !!! ! " ( * *;943;>93)dRGǨgUHWG;ϭβӷçǪƩå⽠޺ߺڷ㾡ຝƩαؼеǬβɮὢ忤ǫũղͮ}rvغԶ׸׸ոٻֹαͱٽڽ̰ȬǫƪʭӶ̯༠èճִ©Ū߽вåܻũῤٷط۹ῥç⾣ĥǧضݺִ⾢ʮǫٷݺͬڷ۸Ŧήåŧб^PD750zz{owvjTNG32/"#$ "&"#'"+&!)$+& ,'!*% 1+%r{shIE?--,&''#$$""""""'&%GC=zpetj_e]Tqi^zqfwltuw}|y~zuwuzo{rhng^f`Xc]Ub]UZVOVRK[UN`ZR]WP\WP^XQa[Ske[zrgznxlrkale\mf\pi_umcqi_gaWd^Ta[R]WOXSLTPINJCUOH_XOkcYrj`xqf{uj|q}ryn|qy{y}±}y|zz|f_W>;8320442975A?<9A>:A>:C?;FB=DA<<:553/?<7WQIme[vncjcY\UMPKDB>9:72/-*)(&'&%'&%%%$$$#0-*C>8JE>@<7+)'"!!  "              0!!@-)cE:jNBkVKo_Uuh]tjasi`pg^pf^pg^rh_vlb}qg~sisizof}qgthxjqcf]T{|qzo{ptv}sukzpgh`X]UNMFAIC>JD@D>;LFAf\Tzjzkth}rgsj`|rgym|qfpf\sh^shuithrg{oeuj_ui_{od{odvk`sh^ncZcYQi_Vk`We[R`WOj_Uk^S@80zoc~x|m_h^T}mrqsxireznbwk_peZuj_e\SdZP|k~k}jp}oxk|ou}qs~rrwwvus|nt¿¿»»ûü!!  %!)#*$)$ ,'"4-'5/(4.'2,&.(#.(",&!/("6.':1)@6-E:0F:1MC:{ti~qw|ti~thqu~r|shwoexlu}qSMEIB:r`lpront}wrbbTHqtsxwvu{ͭҳҴ׷նϮֶŧ̫ί׷⾤Ūڸ̫ɩʩͬĥƨȪٶܺүϴ̲ˮ|scYRICC=:>9795385363141.30-30-741<85=95:6374141/2/,952>:7;74852953;749537411-*&&%#"!&1($?1(t~~vӸҷԸĨڸӲ޽˰ܻҶ۾ŧŨг޿вͰ㿤རȮδԸдոʮ׵¦Ʃ̮ˮ޼¥ᾡֲƥضԸٽˮܿܿͲƬ˰ϳܿ׹Ҵèֶݻջɰپֺˮǫ̲ƮҺȯ⿦ҷ׻ǬɪȪæ⽢Բɬ{~qy{|ͮȯ۷⼣ԳٶӲǨʫаа۷ήƧήֳ۸˱ٿԺ׼طn`XJC@A<9:521-+2.-2.-3/-2.,1-+/+)0,*,(&*&$0,*61/:52XLD|lťc\Srkaph]^WNYSKUOHNIBMHBRLEXQI`YPhaWkdZmg]B>8ygY޺©޻ȰεѶǫçָгໟ⻝ŧƩΰ㽠ȫϰȧ}wewoex}ylu~z|~ճརұضִ߼ǫŨ¦çвعʮŨƩҴٻٻΰԶϲŨٶѰͭugYOHIC@421/11011---,-,,--.//,--+,,*++#"!$!80)ubSճཟȫȬæĦͭԳұԴsSOH\ULQKC]WOvndwpeibXXRJXSLoi_rg[mNAg9*_2&P+!B%40..-+&#  ! # ) -././-,,+++++,./22/- .- , , + ) ( ( ' & &&$ "! &* (  )*&# '- <?;54%2#bPDs}ra{ƪ¦㽡㿢¥ѳٺѲ۽ڿ̰ŪŪݹڶལɩЯճЯwxҷαغ۽ػҷҷ׺Ҷдβ̯ոгͰ̯ҵԶв¦Ϯ޻طǫαΰŧåֹغȬᾢ⿤ūū㿤ֵӲյԲὡũĪèǬƫǪΰ㿣̭׵̫ɪ˫ˬȪæbTI,+(xxznw}vjQLF0/-"##!#&"$ &!+&!)#+% ,'"+& 0*${pwodGC>++*)**$%%"#""##!!!*)'MHB~ujzm|o{|zzw}q|qzoztitmdrkale[le\oh^slb{tis|~yvwz{y{{v~rs~wkvi}thxoewncvkynt{xodVPILHBLHCSNH^XQa\Ta\TgaXke[ke\pj`xqfyrgmf\me[}p{nunca[RPJCC?9/-*.+(HBl{twdxdU\MB.&!x|~¥ʫɪȩίˮǩɪέˮϰѰڷԳǩͭ׷ִԲ߽ڹбɩճĨ̱ɮ߽©۽ڻغtfXMDHAC>;?:7?;896462073062/:64?;9B><<9652/41.40.<85B=;@<:;85<96=96A<:C?=30.$%%!(!0'"M@7y~rԸϴū̯Ȫᾠçβ޼ܺƬгæ㿤ٷӲұԱཡ˰дˮֹƫӳ׵ȫֺͱβؼ̰£صŦЮˮͭˬྥֹ۾гҶŪĪҶῤʯɮƭط§ѷջپѶ׵ྥͳѸʹɰεɯγ̱вոɮڶ{s||ڹ˲Э˩ɪɪƦʫ̭Դ۸ڶ̫ͬἢ༣ʰֽϷȯ˱⾦Ĥph[SIC?@;9>979426213/.2.-2.,/+)-)'.*(/+),(&1-+61.61.RF>ueȨe]Trkaph]aZQ\VNVPHMHANIBWPI[TK_WMd\SldZrk`B?8vgཤëȰ߾ڸĪʮ㿣ç侢¤ỞĦ۽׹㼟ӯشsumcz|ow{uywɩ۸ضݺٷḬ̃Ʃħྤéֹݿ̯αвܾ˱޽αũԳҳб~pYPIB=:--,/11/00---,-,,---..-..,--+,+$#!%" # B80{hX¦ԵָܾعӴϰٹҴpZULe^SUOF_YPwodvncjcY[UMXRKjWLpI;e6'T-"C$2-..+& !  #( * -...,) ' % # # # " ! " " #$$# # " " % ' * + ..) ()(*+(' '$$#%6A C!A 9.--( & &/ ?<34 0  %M?6aPDjXK{hŤȨǫշػָгƪ侣аѱͭåʪ̫ճéڸ~yӷӴڼټغɬɭټټۿ׺ۿֹѴʮɭ̯Ѵʭ޻çƫ׺ۼбܼ۾дçڸ޼ū¨èǫĩ¦Ǫɬۻϯ߼ƩǬȭྤίմԳίҳۺۺ¤~cUJ%%"yyymuyqfNJD-,*!"" #&"$ %!*% )$+% -'",'!/)#ynvmcFB=++*,--(((%%%%&&$%%.-,RNGxlu{zu~rznt}}yxyy~su|}}}pvmbof\og]ypewl~rzo|p}q{pyn~vkzrgtlbtlaxl~{|qyrgjbYVOGKE>3/+  !'%#"!  %$"$#!"!     + /'#4,(/)%6.)#9-*N?;[NHXNGh^Urh{pvu{}zvuuzo}rhsi`~shzkzkxjxm}rzo{p{p~rtuj|rgukakaXbZQf^UlcZne[of\vlath|ovvz{xu{mrdVYRJ|~u^VNv|vwxwt~m~kygue|n`rctdte{lw|{q~oqsp|mp»»ûļĽ#% &!(#(#!#*$ ,% '"'".($2,&3,'3-'3-'2,&2,&2,&1+&.)$,'"("$*% ;60GB;VOGh`Uzrfu}p~rumc{ot~ujE@:\PEquwes`RA7/!"-'!y¤ƨ̭έƦȩ߾ྤۺֵ߽ظճԳɩѰطִ㿤Ĩ¦èɮӷֺպͰ߿̮ͰѴݿ̱|ueYOF?>94?:6A=9?;7B>C?<=96<96>:8964731953<85C><@=;;86732<86632$$$ +$ .#^RG}z|p¦ٽ׺ֹշѴֹȬǪ⿤ݽç̯ϲŨ㿢¦˰ε˰ڹܺʮеչ̯¥ԶݾԹؽ׻˰ʯ̯ʬѶ̰̭Ѳ¥ϰ¥̬̰ʮūǭίū¥γγ˱ƫĩ⾣ūɱūɯȭŬζ˳Ѹδֻպèὢ⽢ڵƪèͲ俥zx~~ŭԻ໣άֵڷܹɪ߽ὣ޻⾤߻έäղٸ̲еչγɮǮ̫obVNF@=@;9;644/-,)'-*(,(&.*(+'%,(&($"  *&$2-+61-NB9l\]VMjcYkdZc]S]VNWQINHANHAVOG[TK^VMb[QkcYrj_A>7{kܺմª¨ڷ㽣Ȯ¨⽢⻟ȫҳʫ˭Ҵܿڽڼعͫmtlaz~wkvyswxͮ޺ǫƪݻѯ⾡ʮӶʮ¦⾢ϲçˮ׺̰ܸŦ޼རῥѰɩܹطӳ}o]SMFA>10/122122.//,,,,---..,--,--)**$"!'#!'#!E<4n_èгշǩݾ߿ͮvd_YPg_TWQH^XOskaumbjdZ`UKgG>? :/-+)*0:20 3$    D,%91aLAx㾣ŨԶ׹αݹճ̬¤ήұԱ㿤ִ{ѵԵԶβչ׹շ۾ؼ׺չ۾ۿд˯ˮҴշҴȫ⿤̰ܾݿԶɬʮè⾣߻޼©¨ǫǬ̯˯㿤ȮŪǬǬ˰ۺܺῤմݼӲ߽ῤ̬}cTI"!w{znstmcKGA+*)"##  "%!%!% *% )$+% -(#-(".("zowodFB=++*,--)**&&&())(((210XSMzous}~x}uixlwsznwlzo}r··zvvy|yz}yurtsutx|}}z{wq|oviwkzm{n}psvu|o|px~ɽʵȳμϺı~~swpeqjaf`XSNG=:6)('   %$#('%%$"            ^D:7<86C?=D@?C@>DA?FB@@;9;8574230.30-842<85A=;=96:74=:8?;9:7541.3/--*)### -&",uj]wy~ymȫ˱ٽչӷǭǭֶƧаݻʫаɪϰʭҶĪ˭ָ¨ݼ߾βȭǫ۽׹ֺ̱¨ȯʯɭ޼˯βͲ޻ѯ̫¥ʭŨᾠæèٷԴֵܼݻӳȮڿؽ˱êɱĪྥêʱֽԻδеʮçڵصղӲɩ~}{z}}}⿦ʹ˱ƫ©ŬŬ԰׵ܹʰ̲ê۸̫Ϯȩܹ޼ʯʯ۶ἣͭtdXPC=;?:7:5351.2.,2.,,(&-)',(%,(%'$!&#!1,*72.NB:~j[|~TMEe]SldYg`U[UMYSKPJCPJBVPH[TK\UL`XOh`Vog]?;5rcǪåݺƬ޻ȧ⽣Ƭ⽢ħвͰæ޹׻ϳӷȬݹzhrk`x|ylwtruzȮϴɭŪĩǪٺػҵг̮˭Ȫݺȫɬΰʮ߼۸ĥ̭۹ᾢའմظݼͯq`WQ;74***012/11,--+,,-.-121011.//*++'%$*&$'#!>60|iZƬϳϲյոԷշظ׶ۻmb\Re]RWQIZTLkd[slaj^TmF7l;*Q+ 7-.*%  " * .01/,&   # ( +-../00.,)        ! ',-$&*,27:8654 1 . , ++$      , 55-+- . , ' "', )(   ! ) 6921cK@sbܸܾα㽠㽡ڶ׳ӱὢ໠ũ۹}ɯƨ˭ɬ׹ܾܿպչ˯ϲӷպ׼ҵӶӵΰвַϱȫӴܽϱŨͯȩίƪçٷܹڸǫʮܻͳֺǫееɭ¦ܺٸǩˬç޽ض޼޼ֶѲ}fWK{ox~rroh^FC>))($%& !"&!%!$ *% *$+& .)#-'!+& {p~xpeFB=,,+,,-'('''''((())431\WP}q|pqi_yn|~zu{|wl|p~q~rvz|w}{}ywu}|p{sg}thxkrux}st|nwjsvu{mviylzmwjymznznuw||}~zng`WKF@=94962A>9FB=QLFZSK\TLNHBF@:D>9?:620-/-+/-+)(&!! $"!           0#@2*VKCj^Ush~vuvkulbxkufxivi~ti}rw~}}qwl{qf|rgvkym}qws|quyuwk|rhuj}qt|nxj\"JD>sUMFug{ouesdsdue~morp~n|m|n|m~n~m{k~o{kº»üĽĽĽ(#%!"(#)#&!#(# +%!,&"-(#/)$0*%2+%2+%0*$/)$-(#,'"+&!*% )$("("'!!+'!:50@:4 ##"$ %!% $% 3,${ŧ˭ɫҲϯӲྣͮĥĥٶ޼ίֵմή˫ЯճۺӱӲѰȨѰ§⿥ĪῥʫĦ¤ӴԶǪ}qaZOGFA?C><>96=96;75;75A=;HDBFBADA??;9;7541/1.,30.952842>97@<:A=;<86<86=9784230-*'&"#"!.'#.wj~yqfxʫĩϳٽܾټͲ©ͮǨὢԵӴɫٸֵŪɭͯǩ˲ʱΰæɭд̮α̰дͱ࿤Ҳ޻Ĩ׶ұᾣ۹ӱ۹ᾣݼῤβȫԶʭٷ޽߽¥ར˯βھӹ޽ظ˫ūѶʯʹĭյȰʹªʹǮʰĪ޺⼡ճ}}{y|{ᾦīǭߺ߻©Ƭܷὢ޺ᾥƭĩ©ĪĪ༢ʯβͲͳ׵u_SLE@>D>9761/2-+*&$+'%+'%*&$%"  %!/+)82/UJBzjͭSMEaYPjaVe^T\VM]WOSMFOIBTNFYRIXQHZSKc\RjbX960yiմֶŭίϭ޻۷ߺ㾢ܸٶ۶æҵũũçճwuncvxzmw~~qrv}nƧɪڷƬྤ߻§β׺Ըڼܽ׸ŧĨǫƩὢ˫صέί̭ܻǫҷѷպ˲ugRJC<84,,+122012*++'((*++.//.//,--())'&$)%#!4-(jZL{׶ç⽠ɪǪɬ׵἟ƨ˭|j[b[Pc[P[TLXRJicYtg\oI:k:)M*/-,%  ' ,11/,%   $ *./0//010.+(& % $ $ $ % &'''&&&&)3<?;72 . * &"       ! )(& ( %    )$   * :C'D$;4 1 , J7.ĨŨũ߻༡໠རݻԲ§ȭzȥ۶ݹŨѳԷ˰ԸӵˮдͲϴ˰̯ӷټظӴ̮̮غۼعʫ⾡æ⿣Ǭӱٷڸè༢ĪƬչβ̯Ұྣݼཡ׷ֵۺƫ̱ɯͯxp]PD~wlus|ohbYC?;(('$%% !"&"%!%!)$)$+&!/*$-'!)${o|xoeEA=++*,--&'&'(('(()))642^YR{oyme]Tnf]xoevkxl{oswkxoewnd|rgvjym}pz~twkym|pzntxzú¶~~}{ttt{yz|xrvj|sgq{|~~rwkwk{nr|oyqfldZg]ScYPi^TmdZtkaylvrsvx~qym{sgph]^XOLGA>;6640.-**)'$#"!!  '%!2.*.*&   8/*L@9MC<\OGm[Qr[SdZw`Vlbukzq}ty~t{q{qvj`wg_o_WcTNQF@VF?]MFdYPncZi_WaWPi_Wqh^zoeti|qfuka|rgsh|map`S>1+=62vtXPHti]|~mqbzj\yjsdsd|obrfvi}qdvi}rfzoc|pdxjug}n{k¿º»üüýĽŽ'"(# !("*$&!&!(#(# *%!,&",'".(#0*$1+%1+%0*$/)#-'",'",&"*% )$)#'"& % % #! "$ %!'#(#'#&"% % % &!-&lxæãyz£Ӳֵʫɩұ̫ὣĪڸ׵Ǧƥʪմִֵ޽̮ʫϯɪƨ¥Ħέͭɪƨ|oaWQB=;=87=97:64953>:8>:8EA?D@>FB@B><;7530-0-+520>:8@<:D@==97;86?;9B>:7>:7/-+""!#/($4%~q~vmb~ʭĨԴԳЯɪطضའϮֳ޻̰ϳѵ˯è˯Ը׿Ϸ⿣߾¦Ĩƪѳʮݼܹ׶ִ༡ΰཡٷճɮ˰дֺ˰̱ӹؼͱŪɯʱӺūϱϱٸ߾ǭʱʲƮ׶ֶê۹ѱῨ˲ɰū׵ձ俥׵~|{yv{yëֺֻ̲ͲŬԹʯͱѵֻپͱȬʯδ̱Īƪ̰̱ĬҲ}h[TE><>97;65:5450/40..*(-)&.*(.*((%#'$"(%#3.,830UIAvf̬WQIf]Sg^S`YO`ZQe^UYSKRLEUNF[SJUNETNE_XOh`V31,tɱŬ߽ཥᾥܸ߼ܺٶĨ⾤¥¤ո⾢ܷݹϮ~lwodwwxkv~x}ti|ovpäƦү߼ӳέݻéĩᾣʯĨħ¥ݻʭʬħĩ§ͮĦۺȯεʱëtfTKDA<8..-122122-.-***,,,.//-//-..)**)'&)%#4-'o^PyϯϮϮὡç¦ӱЭڶĥzhX\UK^WM^XOXSKeUKoF8j9(M*--' # ,11/+$    ',010/--.-+)& & % $ & ,/(+,+*)(&$$ 0<@;4 . ) "        "   ) 2/ ) #   ""! '    >$I.G*@$9 4. *%B0(ĩè໠㾣ִӰԱvѭ۶侠ƪȬѵֹܾѵչɭἢѵݿбǨȪȪˮػͱӵˮܺϰѱ߽ܹ߼ܹұϮ§ۺΰϮȭƩܸ̯è߽ƬжҷγƧǨr}i\NC}vkutzne_VA>9''&#$$  ""&!% &!)$)$*% /*$-("*% zozwtmbC@<--,,..&'&)))'(()**753_YRynrxnd{rg~ti|p|p~ryztrtvyuy|y}z~|x{~~|wttwtu~syrfmf]c]TYTLSNGIE?HD>HD?FC>B>:FB=IE@:84)('!"!*'$73.51,%" &$!!    -R81P5.bB:gIASB>[LHmYT]LGD739/* )    4+&/($(!5.)2*%-#/#2$5*$g[Qzma{lasgtwrbXNXPH{kvz|v~n~nsx}~yvhZeZPqtym{nxkuhzl_»ûüüýŽƽ"(##  ("+$ )#("'"'")# *%!*%!+%!,'".(#/)$0*$/)#/)#-(#-'",&!+% *$'"% % & &!)")#*#*$*$)#("% ###"+% ltz|}ίڸظ}~Ӳ࿦ᾥ׶ʫɩ׷ͬͬ޼ϯԳӳʫĥɫ˫˫Ĥʪȩʪίӳ˭rgXPKB=:?:8>:9;76;86B?=C@>IECEA@B?==:89536318523/-<86A=;EA?B>87;6473150./+).+)/,*.+)($#+(&)%#3/-50-SG@sde]TndYi_Te]SjbXkdZ`ZRZTLXQIZSJTNEQJB\UMh`V41,̴Ĭݼ޻ɰ¨¨طƧȨұҰڶ⽢ˮӵὡֳڶ׵|j[tlaw}ty~wzrg|puqήӲʪӰضЯ޼¥޻۸Ʃִ⿢Գ̭ʮչ˯ʯеཡƨ̮̮ݽīۺxkYOH@;7..-022.//-------..+,,+,,,--'(($" # 2+&k[Nwήճܺ俤߽Ӳȩ侠ǦȨsbSZTJ_XO_ZQaPFlA2j9)K),-- % ,11,%  (/111.*$ " # ((& & & & '-: D%C$; ,*)(&"   / <CB7. '! $ -154310*$ 1?!A!<71*#    ! !   ( /) " ! & , )(B(B%@$?#; 5. <$7! jUHѯ۷ٶճص޹忣༣wٴ御濢ٵ޺۸ƩɬӶԷɭȭȭ㾣ĨĨˮǩʫʬϲ۷ཡ㿤èèϰаٷ޼۹ڸ㿣۸̫རྥӳۺǬȬῤèŪŪéȭ߾ūб|k]OC}ukusxmb\S><8&&%"##    #"%!$ &!)$(#)$0*$.("+& {o{wpi_A>9+++,-.'''*+*())*+*974a[T|qws~}ywvv{}{y|zyxusr{wv~zu}qzshxqfslaoi_f`Xd^Ve_WYTNA?;220//...-00.00.00/00.10...-(('%%$.,*@<6C>841-'%".+'(&##!)'$+)&#!)                6'!R>6YG>XE<\LB|n_rvvxvryk{pcznarcnqcU.+'|m_suzīɲȳƲɵdzųŸ¿ºûüüļĽžž'"&"&!+$ (#'"'"'"(#)$ )$ )$ *&!+&"+&",'".(#/(#0)#/)#-'",&!*% (#'"&!& *#*$)#'"&!% #  %!lu{ǩбέںͯͭմۺརҲɪˬ̬Ϯظͮήܹ޽ҳӴɫǨ~ͮȩͬũǯҵpbYKD@?:7;75;75@=;:30/30.853953?;8@<:B>=A><=:8>:8B=;A<:?;8+)($!' 0'"MA8zx{}~maV{~ƩϱȪ¥ίԴʭԷ̯ڻҳȪήӸֺϳƪȭӺҷ©ƫ׹¨࿦жھָӴũ࿦ȮԷڽǫ޻۹޾ĩа˭ήȭϵ϶׽ٿؾзǯֵۻۺݻɮ˯¨ʱѸԻӳῦԲұŬδڸyyxrs|}y|үǦťӱѯܸҰ޹ū໡㾤ɯδĪ̲ҷѶؼĩ§ƫԱscUMB;8?97A<;>98:643/-1-+-)'-)'+(&)&$%"!-*(/+)51/3.+PE=o`i_Uj`U_VLe]SldZkcYc]TZTMSMESMERLDNIAXRJe^T2/*sϰԵعҲڹа£Ťѯά޺༠ӱӰӱἠڷЯӰǧvf|rfw{uy|x}uitw{߽èݻԱ׵ɪضٷݻ޼޼⾢ضֵͭϯʰǭԴ˫⿢࿥ٹعٹƩym^UOFA>110466/11,-,....//,--*+,,--&''!#!"60+gXLnĦ̬ѱֵаˬض`RF^VL`ZQ`VNjC5k:*H'# -' $ -11+  (.121.'   # % & '' ' ( ),4B$G'D%7,)*)(&"   & 6D!@ 4) " +"E#>;:2&    ! ;#C. ?+?*5/- + . - 0 ( -:;86E*eE4|VBqN;7***+,,(('***())*+*:86d^Vzz~q}}{yyt~qst}q}q}p|nxkvjzn}p}pt}}y~ĸ÷¶ĵǹʼ̾~{xwwwwu{~}xuu~rwkumce_WQMGD@<>;8?=9A?:B?;@>:@>:B@=B>/-,%!)"/$SG=zx|x~pdWʫ׶ںڹῤ۹߽ȫũĨۻŧٷǭеԹγϵѵҶϳū§߾߽ݻʫɪݼ߾ֵаұʫˬ࿥ܻ۹ʯ˰ǪͰƬ߾׵ҲѱڹæͰϳɯԹе̱׻δͳӱŧۺǮʲϷͶ̴ɰ϶ḙ̈޼Ǯɰʲᾧy|zq|pz~~xὤ俥ӱ˪̫Բϭ׳ݷçƪī˰ҸּּƬè侥˪sbTLB<9?:7B=;>97:543.,/+)*'%,)'+(&%" $!+(&-*(1-+/+(C:3o^Qo|kWNFaWNXPGc\Rmf[kdZd^VZTLOIBLF?RLDNHAUOG`YP62-ë޾ڻ޽Ӵ˩׳άέ״⾣ᾣ㿣ִݹܸ۸ɧţ{k~vjz}ww~yvjwx{̬ܺ⿤ݺȬڹճԴè˯¦ҲִίĦȩұЯ߽Ͳǫϳӷʯ׸ҳΰçpc[RLHDA221355.//+,+././00+,,)**+,,&&&# "70*sbVyӳ߼ұͭ||{UI>aYOcZQhH!? @ ;610694'     ( 7"aE2cH4hL6eI4U=+A,/& 64$ ) - ) .8624X:,yT@oL:\>/L1$C"^G<ƧϮӲé̱Ū㿤Ȭǭëy{ʬæ⾢ཡ߻׳ໞæղѮЮ߻ƪǫϲæŨͰαȬéῥضὡ۹ݻ߽ᾢໞݺԳܻҷ׻ӷչϴɮ§޽ۻֶḬ̄ͰҶɭܹˬѲ~q`Rxmu|owodXSL652$%$"""     !"$ $&"+&!)%+&!2,&.(",& vkxwa[T975***'((()()*)'((***:85d^V{ulcYula}shyl{nxkxlwjuithzmymxm{o}p|oymym{o}qz|uvyvj}ujymxµöô~{xxxw{|zut~r}q|psvzz{{ussvuv~stvx~}|yv{~}~~~xxmundic[gaYhbZgaYc]U^XQ`[S`ZR[UNVQJZUNibYyqfvjumcng^icZg`WgaXf`Wb\TWRKLGAJF@HD>GC=KF@MHBGC>20- ).**'# ! .,)/-)$#!        XNDbUJrcWsfv}{uqpmaT`THud|vyÿººûûļżŽŽžžžž '"" #%!% &"&"'"'#(#'#'#(#)$ )% ($ (# )%!+&!,&",&"+&!*%!)% (#&"&!% $"!!!!("uvyѳڻĥЯ޺Īཤϯ̭ǧٸظ̭äǦаնŨƨааԲ׵Բ׶޾޼طͯwscXVMHHC@@<:?;:964:65C?>EA@GCBFBAB?=A=96=96<87>:9@<;C?==98953964;75*(' ,%!.!`UKx{~}~zj\ĥԳۻҲȩۺȫʭβçڹбྤββũԳ׷ī̲̲Ƭݻྡྷ˯˰׸࿣¥ба¦ƫɭʭ¥ũ޻޾é޻ԸҷĪԵвֶȫͰдҶ̰ϰȫ⾢״۸طལٸںӸݻƫγ̳εӺϷῨطݺۺ׶ԴԳݺҰֶ~~x|o|ox{x{ɨүֳ໠ݹЭŤȧص˯δֳܷܹŭʲê̱ƫæݸή}h[SF?<=75>86<769421-+.*(*'%+(&*&%$!%" *&$)%#,)&*&$?70l[N~jsbLG@XQHYQHaZQmeZmf[f`WYRJMH@HC=RMENIARLEZSK1.)εƯйĭΰ̫ԲԳ߻ڶὡٸȩήĥϭͬ׵vgxpev{v}p|{~ήӱӱڷ⿤׶Ϯĥɪظʬɩ˯ʬæӳѱéҸͳ˯©˳ʲӵҴֶٺseUKE<74*+*022,--+,+//.011-.-,--,--'''!!!/*%gWLsϯɬħ۹Ǩ̫˫ˬåЮiZLaYOgMAl;+[2$# & ! .2/# " ,121+#  % .1.//+' *.7E&L) F&8,++(%# "     ()( . (  . C#U/"[2$]2$Y/!U,Q)J&@ 85;?8/*3756/' #!    4H*]7(Y3%X4&T1#M, ?#/$) 960 ) % $ 21/58? <>B#A 3[D:|dVʯɭɮѶê~x|ʬݹ߻ߺߺѯֳħݹղѯֳص޺ĨβϳŨ俢⾢ɭʯԵԴʪڷĨƪཡ˯βƪĪƫպֺڿжͳȮū¨ݽå˫Ӷ׻гʬԱѰ׷¥}k]{ox{oqj`PLF10.$%%"##     !"#$%!+&!*% ,'!4.'/)#-'!zqftu`[S764*++%&&()))**())+++:86f`W{{qh]tk`sj_ynczmv}~ůïv|qyz{{x}}s~qy{{w|pxm~uj|sg}thwkym{nussu{}w~r}q}q}tixpeyqf{sh{sh{o|wv{o|sh|shzn{n}tizrfvnctlbrk`jcZYTLA=9''&#$$ !!)'$73/52-$"  .,(0-*%#!"" ('$('$#"   8&#T@9YH@_TaVqcscV!RH?pau|{~~ruº»»»ûüĽŽŽžŽžžž  $!$!  "%!%!&"&"&"&"&"%!&"($ )$ ($ &#'# '#'"(#)$ )$ '"#" $ ttou}{Ǫ~äǩ˩ԳԳӳӴʪ¤ɩ׶ۺۺή̬˭ȪٸǭƫٹԴӵɫͯȬufaTJKD?B=;>97=97:65;75C?>D@?GDCIEDC?>>:9=97?;9D?=JECGCA>:8<86:64?;:@<:B>==97=97>:8;75+)'!-&#.mbWvzzqaںΰ࿤§ɮϴǩᾤ˰çˬѱԵ޾Ƭֵ׶ѲɪѱۺݻǫҴӴԸԹ׼еᾤéèʯǬڷֳڷܺ§࿤޼ໟܹ۹մղӯỞ˯ϳݻطڷ̫ƥ޼࿧˱ūεҹ׾̳Գ̬¨˱ݼέЮὢ㿧۹~xxl}pw}}ʨͫãܹἠ忣ƪ㾢Ϭ۷㾣俥ܸ߻Ŭ侥㼡ĩ˯ɬʮʩ~pfYRHA><64942;64=8651/1-+.+)-)'+'%%" %" )%#%" *&$'#!B81taRxygNIAZSJ]VL`YQjcXjcYb\SVPHJD>GB#+# ! ,8A!===#+#( 2. .;9<>:5"- ~gXѯƪĩŪ߼wz你߻ձӰ⽡Ȫĥ¤å㿢شݹ俢æڷὡгʮæ̯ƫ⾣޼ʬӳ̫Я޻èͲ¦ŪͲѶ˱êܻٸĩͲԺĪѵٽҷ̲ᾡ㾠ȬѴѱ̮¦߽մƨvf|py|ppi^OKE10.'((#$$    ""#$ % ,'"*% ,'"4.(0+%-'!undtt^XQ542+++&&&))*+++'((+,,=:7kd[y{~µŷɹƵ¶{y~}y|xz~}~}}zoc\TA>9(('%&&$$$ "##$%%#$#.-+?<7FC=53/"!  "#"$"0-)/,)%$!! ('$'%" "" !-%!4($@3-E714*%4.(D<3KA8D<5neZwkymxlymtw||{}|tû»»»üļĽŽŽľĽĽžž "%"!!$ %!%!%!%!%!%!$ %!&"($ '#%!$!# #$ &!&"$ " % r{qpx}}{|t{yz~ǨƩή׵ضŧۺ©ƬëǮʹǭǮҴֵ޽гȬƫxjaVNE?<;75;75631954?;9B>=FBAGBAIDCFBAA==A=;C>@=;@=:7<86842953.+(#.'#2"zqevv~vnΰΰط̮¤ֶݼè׷ǩ࿥ȬаƧƩֶ⿥ٸаֶմ˫طҲݼͲǭūжҸǮ¨Ƭūγϳɮèִظʯѵΰ㿣߼Ĩʩťӱ̰չ޼ַյήέɫ˱ѵպѷϵҷĩ߼ǮīݹԱ̫аа|{nty~|Ӱܷӯ༡ƪո̯Ǫƫ㽣ѯЮ忤éĬΪܸȭر形ʧtiZRIB??:8<75943;6450/-)'*&$*'%*'%+'%,(&.*((%#'$#%" I>6m^yiMHAZSJ\UL\WNjcYkdZa[SVQIGB!;+& 5973589<"G+G'7, 27'    ) -+) * aOCϮ˯޺ֳwyǩħħѯͪϮ۸߼ȫѳϰʬŨ¥æʮβɭʮ§ܹ༡۸ũ⽞ᾢڷ§Ǭ§éۺ߿ĪӴܻ̲Īǭū⿤ǬɯϵβӶϲӵˮæ߼ܺݻän_ zox{omg]NJD00.((($$$      "!"$ % -'"+& ,'"4.(/*$+& qkaxt]WP331+++&'')**+,,)**,-,@=:pi`w{}zz{ywz{z{~¸~~}|ujRNH10.())'((#$$###$$$$%%%&&&''&''.-+?<8GC>;84+*()('*)(**(&%%  $$#'&%'&$&%#  +)%:61=84/,)$#! "! )'%'&#!$!'# *&"+'".)$/)$1+&0+%1,&2+%2+%4-&7/(i`Urj^rj_qi^of[oeZndXt}z}~uü»»ûļĽĽĽĽĽĽĽŽŽ  '# "  "### $!%!%!$ ### $!$!# !!"##(#sx{{x{}~zs{Ĥʪť۹6-'~k^طӺиȱٺԳݼ޿ڻڽٺڻ̰yj_WOJHCA@<;<8651/731>:8B>=HDCIECHCBB?>>:9:6551/941841842>:9=98954731;76?;:?;9=978412.+(%"$/'#=/'znuv~{}qvȪĥΰΰĦַ˭Ѳ޼۹ѱ̭ɫŦʫ׶Ҳб⾣ᾢӲĦħȫĥ߿γֶ׶˱¨յὢ˱پ׻̱طԵ޾ۺ޼ظܻͱŪརٷ߽ī۸ճݽۻ࿥ݼݾջ׼еԹѷӹѷӹȮ©êǭǫᾤ˫}{~~pxz|{ٵ俤ຟݸ༡Ͳͳʯ¥ǫĩຠڶ¢ģڷɱ形ӮЬàŢ}rc_RJIB?>86<879533.,0+))%#)&$,)')&$+'%/+)-)')&$$!'#!J@8{iZ{yhLHAXRJ\UL^WNleZibX_YQRNGEA;FBLGALGA30+ῦῦཤȯܻͬ״ĪطմԳåȨЮضĥ}zwj^tg~uixxywyztʩѲ̬̬մұմྡྷִԳ˫ݺʭç࿤ݼǪή⿤ɮȯ࿤޼˱ַͯsaVN<74'((/00,--***+++./.,--+,+)** *% [MBpӳظçŨΰѱ]=0k;*\2%"  # $ 0/% # .31* & ),036 6!3,( ,16E%M) C$2+,+% ! " "!! (<J%J';- +/ F%U."R,!J'E$:, S4'rJ8jD3A#51* 0K']2%l<+c7'I(  ! ""   " 7= 8,"  !   $+ 6; 8381=#B&800I%D#;$F+M3#5" $ )" ! # WG=ѰβŬªx{ë˭ֳس㾠価ղݺ޻ར徢гŨçརçརݹ޺⿤¦ὢ༡ũæղ߼Բ⿤ѵɭ¦§Ը̲δзϵ߾ݺ㿤Ȭ̲ͳɮʯƫǬ⿤ͭέέŧԲ|hY wlwxlhbXJGB0/.()($%%      ""#$ %!.(#+& ,'"3-'-(",& pj`|s[VO321+++&'&())())'(),-,C@<8--+()('((&'&%&&&''&&'&'''((10.HD?WRKSNHFB=@=8@=9?<88630/-**(+*(/.+640?;7C@;A>9/.+"#" !! ! "! '%#+*'%$"! ! &$"+)%-)&2/+=83KE>OHAC=852./-*,*(('%$#" "!#! # %"&"(#*%!+&",'"/*$2+%3-&3-&4-'4-&92+mcYph]qi^umaxodypdulau}{zz|}tļûüüļĽĽĽýļļļŽŽ  %"#  !""#$ $ # "##$ $ # """" %!mrqäĥ{vz}tuv|zȩʪĦfVKOC;Į޽ѳ¤ɩٺĮ۽ۼΰzk_XOIFD@?@<;96441/954<87=97A=;D?=C?=?;::75:75<86;74;74;75=98<98;86963;76A=;B>=A=;>:8730*&"&/&"H:2s}qs|}x|tiuŦ~Ħӳ̭ĨƩۺݽĨྡྷӴè߾¤ɩٷڸƧƨǪۻݼϮĥЯ¨Բڸ¦ĩé߼Ϯǧέطéʯ̱Ǭݼ߽éۺҳǩ¥ͭᾤ߽ªиεնӴۺᾦŪ̱Ǯεٿȯܹմ޻¨ѯ~xtyx|Ϋٶӱ۷༣Ƭ⼢ƫͰ˯Ĩǫūʰѷѷ翥ẞܵʦ}ncVNF?<<75<86;752.,1,*-*(.+).+)-)'-)'/+)($"(%#"(#!G=5yfXzueLHAVPHWPH[SJjaWb[Q\VNMHBE@:KF@OJCGB. I+mE4T@hB2<2,,2>P* a6'Z2#-05+27.&*9= 4 #/0-)'3954I*O."P."@#83-)& 1.,<%E+I. #  & - ' ' &((cQF߽ʱwzỞǨӳӴ¥⾣޻Ұʨٶִݻݺݺæç俣çȬĨǫ˯ߺƪɬŪĩç޺ܸǬپֻɯīѷͳظմ࿥Գ˱ضƧɩ{}Ѯǧwf{shv}uje_VIE@/.-'(($%% !       ""#$&!-("+& +&!2,&-("+%rkb|}q[UN431+,+%&%'((&''&'',,,DA;742//.-++*())(((&''%&&&&&21.PKEhaXmf]hbYd^Vd^Vd^U^YQYTMVRKXSK\VO`YQe^Uf_U[UM>;6&&$ ! !! !! !! !!!""!""*)'42/6410.,''%'&$('%+*(+)'0.+2/,51-=94HB;HB;LE>WPHc[Qf\SbYO[SJTMELF?D@:=:531-(&% !  !$ &"'#*%!)% +&!-'",'!-(".(#/("1*#>80of\og]og\tlaxpeypetk`}r|}|wty~rŽļüļļļļüüļŽĽŽż   "%"    "###### ## $ $ $ $ "! &!|kutxzz|xu}ʫƨsc  m`ͮྥϰǨѱۻع߿Ҵzn_UOGBA<86842953731:63>97<86A=?;:A=<>;:853742:63=97>:8A=;;7696485363195485430/-*)'$""(".#UI?y~rtx~}xunctȪ޽׷ӳҳϮڹῤȫǪ˯дϳαŪ޽޾éʹ¨޾Ǭɬͯήյå˭ħŧʪ㿤ܻ̬¨δȮ¦߼ܺ࿢¨ͳǭڹطԵԴбٸع˲ؾŬ޽ٹˬճݻƭԻӹ̳δὢִ״ƫƬٶçxvwx~{zӱ§ܸүݹͲҶƫɮǪɮѷŪ§Ҷҹɱܶ׳ײἣຠկͪteXPHB?@;9>98<7661/40..*)-)(+'%,(&-*(3/-+'%*&$" &" @81raS}rcRMFVPHRLDUMFc[Q]VL_YPPKDJE?VPIUPIJE>NHBMHA:60бԲϯŦŧä̭z|~wrsfvylu|y~zzyŪƫῤմҲϯڷƪ⿣ܹضȩɩȩ̮аعۺͳϴĪ޽ϯū̲ȮīǫraVN@;8&&&-..-..,--./..//-..-..*++""" " %" 1,(_QFwft¥ȩڹĥضħĨxdd2!X0"  $ ,0& +32(# )' )016 7!3(( /35B$M) C%2,-+% " """"##2F!M(E$4,/ F%U/"O* I&D#6@!f>-T?XCf@181+068@!b6'Y2# .F"K%=8I&L(E$9:> A";37 40.-259H(W2&\5(D%.& $ !      9;73;73B>9EA;JF@OKETOHUNGTMETMFXQIbZQneZndZf]SbYPWOGWPHZTLYSKLG@=:5.,)%$"%$"-+(1.++)'!! !!  "&")$ +&!.(#.)#/)$.(".("0*$2+$4,%A:2ldYnf[nf[ph]rj_ph^qi^y}||wtuuüļļļļļļļļļĽļļļ    $!" !!""#####$ $ %!#  ! '$"t~}~~}Ƨʫ̮̮߼ۺ/("  K@9yȪұմ޽ɲȱ¥|zkaQIEB=B>97A<:<75721620/+**'%)&$(%#)&$/+)*&$)&$$!)%"G=6jYLnvi]YSKUOGPJBTMEaYP]VMd]T[UMTOHd]Tg`VTNFRLEOIBIB:ҴѳǪǩѰĦĥ¤¦Ե̭¤Яy~sfv~qw~{{zwγĩұ༡ܺطڷԲ׵ڷϮǩĨȪұʬѳ׺ï̳ȭԵҲǭê޽ظ~paVN?:7'''-.-+,,*++,-,-..---*++))* ,'$^PFygϯյӲç׶ΰf9)X/!= $ .00/30" ' )& 7F*>%7!6 -& * 258 G&M) =".--(# " """##$7I$N)D#2+7Q,U/#L(H&;C"X0 vI5XCYDkC3;/+49::[2%[3$& ?P'R(H#6<B"L'P)E$> B"F%>#8!4 2123B$Z3'g;-m?0a8+B$) % ' & "# # !   =$a;*W5%F)>$2# % $ /1 68>!< , <({h[~zvzŭħ¤佡Ȫ἟çˮ̮俢߻۹⾢׵ݹ¦ڸ߼ݹĨɬҵвгβҵ㿣Ǭè⾤۷Բֵ̬࿤׵Ĩū߽޽êȮԵƨѱݼƬ˰Ȭ޽ݻ޼Ӵҳɩãsc}tjuxpfd^VGD?..-&''#$$$$$    $#$ % &!,'")%+& 0+%/*$-'!oh^|xlUPJ432+,+)**())&''!""''&C@;xqgzo{~|zxtt|p~vj}uiymt}|{~~}}ĺĺwxltlble[b[SUPIKGAB?;;8542/20-=:5YSKula{nrtx{|{yyz{x{nldYHC<%$! !  !! 41.TOGhaXkd[f_Vb\Sa[Re^UhaXnf\rj`yqgxoeqi^sj`ype~ujxmwkwodhaXTNGKG@LHBIE?973-+*&&$$###"!-+(30-.,)+)')'%'&%""! $ (#*% *% ,&!-'!.(#1+%2,%3-&4-&4-%JB:nf[mdYog\sj_ri^nf[tk`~}~zwuzûļļüüüļļżļļļļļ     "#        !"#""""### $ $   !!"!)%!~r}{zz|}~|{{}~\OE  " m\PظªůƯ׷usf]KEA>:8:64;65:63;75;76742/,+(&%&$#   -)%c]Tuiwvzzxof\̮ٸɯũڸɪյѰ̭ض߽մӲ¦۹ίīܽŧֶͮݽܹƪۻ߾ظʫǩŧǧԳܻ׶׶ݾȭᾤʮг¥ضӲΰȩĥťҰݺԳȮǭǭ̳Ŭ߽ī϶̲©߽ۺ۸ªἢүʰϳеʰῦ޻ʫ|xwz|}~y{˫޻شݹҰ忤߸ͨΪ̳Ժؾ˲ŭȯ̳ʱǭ˱佢⽣۶qcVIB93/941@:8=75731721.*))%#(%#*&$)%#,(&,(&*'%%" *&$MB:xeWmsgZ^XOUOFPJBWPG`XO_XOke[f`VaZQmdZsh]\TK]SKUOG94.~ίԳطʫƧˬضմЯ۸׶ĦԳ׶vis~qyx}yts}©˰ܺᾣմᾡڹϯίɪŨں߾ܻԵбѱϰͮɫxi_TL=95())-..+,,*+++++-.-,,,()))** !!/)%`RG|i¥ĩҵ¥յ۹Ũ޻[JQ'C"") 01220  ()'3M/!?&6 3(& .46 >"L) H'5,-,& ! " """#$# 3I%I'@ 0 ,:O+P+!J'E$? N)c7&{M:ZDYDlE4A 4-6;9E$[2%M* 7G#=?8@!O)V, V, J&> ?!C#?#:"8!312:U0$m?0tC4k>/T0#4. >H%H%@ 2.24- !#623/- /:' -7=D"D"C!C!A 4 !5PD--,%&&#$$$%%    $#$ %!&!+&!($*% 2,&0*$/)"kd[x|shPLG432,,,)***++**+$$$'&&C@;xqgxlz}{~¹¸zy{}~}{}v~q|p}p|ox~{nzmzmylzmwjznw·ź~}}}zyyznvnciaXb[R_YPZTLTOIQLFUPIf_V|shz{nZTM/-* !""###!"!#$$#$#!"" 63/ZTLumbzmym~wl~vk~uj~uiwkvj|pt}rzn|p~stsznym~ujxperk`d^URMF>;60.,++),,*0/-**) !!$" &$! #&!*& -'".("/)"/)#1+$2,%6/(81)5.&TKBtj^qg[rg\ui]qf[neYvma{}~|xsxÿļļüüļļļļļļļļļ    !$!"!!"!    ""$ $ #$ $ ""##$ $!$  "# $ $ #"!*&"znduz}~}~~|xwy|~rj_  #"D:3uë΍sdqaVKB=.+*$"!     1.*h_U|oyyvxl`ϰܺٷطǬǭ̬Ȩȩյظῥ̭å©γݼֶضԴں⿥̱ūῥɮǪ޼׶յ˭ںɭɭǫ¨Ϯȩ޻åƨũéݻԳӲ׶ڹ޽ܼɯʯճཤ¨⿧߾ۺǮīݻ߽ٷѰƭ۸Ա۸㿦㿦۷⾦ѱ޼ѱ~||vsy{z}yͯݽʱѸƮ˩ӱĩ޵߹ǭǮѶԸӹ߹ڵϭ徥Ȯ伢۶Ѱna[NG?85;64=86>976210+*,(&)%#(%#-*(/+).*(*'%'$"%" -)&PE=yfWmsgZ]VMSMDQKC\TLaYP^XPje\e_Vc]Toh^wl`cZPcXNWOGF>7ɫ̮||ʪִԲԳڸܻ̬̬Ħɪxnczmvjwy}~~r{orƥٸѯ۸ٶὠ¦æĨĪԵѲ̮̮ǫèѴѴѴƪç¦~ugVME62/)***++*++*++***,,,+,+(((())  4.)iZNm~ѯŪܻڹ̰HD$E&, ..0125#  )(137 9"5 /$ ( 168 B%M) A$0--+$ ! """#$#  2E$E$9/ , C#S-!N) J'@!D#[2!f;*|N;[EYDpE6?<99<:P+!i;*R- ;A ?=> J'T+P)I%H%@!> B$?$;#:"5 02I(g;-uD4qB2\5'E%3I&X.Z/T+E!83/* ' $%?'Q5)Q4)M1&C* 5, H&G%< > 66874-%    9/(VKA|rfв㽟ЭЭݸǪѴæ̮ȫĨ㿤¦ᾣྡྷܺȬȬ¦éд۽ʮ̯ѴۿԺͱ۽ܿˮ޻ֶ޽˰Ǭں࿥ʮγδȯδѵ۸༠̯ΰͱɮǭɮɭƪƩ̬{j~vktslb`ZRCA=,,+%&&$%%$%%   #"$ &!&!+& ($*% 2,&1+$0*#b[RvvndKGB221,,,)**())+,,&&&(('D@;yqfymzm|n~p}p~pr|nxkyl|o|ozn{n~qw{~{v~swkvj|ot{}xx{}{|}}xutx~||¶|vxus|pzo}qvkxl|owz~zkdZD@;0/-,,+))(()('((&''#$$%&&%&&$%%###851[TMwndr|xwluj|ow}}{orka`YQMHBA=8B>9GC>@=931/+*)%$#""! !! !! -*'1.* #(#+%,& /("/)"2+$2,$3,%5.&2+#ULBsi]rh\pf[mcYjaWh`Vxod}|xt|q~sxŽļļżļļļļüüļļļ  %!$!""""!  !#%!&"% &!% !"#### $ # $!%!&#'#&"%!$   60+C<6\SJ{n{nykxkykxkxkxkzm|ory~t'$   $ #  @;4.+'  2.*UNFqi_{otg\ɪճέϰྣīྣ߿ϰҳήæͮϰϰܼĪèèڹӴٸ˪ձʪǩֵյԴ޽ظӴϰܹݺ΍ˬɫȪӲٷմܺƫݺڸյῤ¨޾ظݻȮʹܸȨ޽ŬݼӳұٷɮϵͲ۷ྤᾥ׵ضٶճٶѯɨӳҲ~wu|s~oy{v|wvƨٸ㿧ƭԻ˲ܸӮЪȣֲ໣޺ѭ̪˩Ǧɧױ张ҬpbSHA<638318304/-0,*-)'*&%+'%*&%,('/+)+'&%" &#!0+)MC#3I&M)011?!5" )*3=; 7!6 +# +47 8!H'M) L)a6&g<,|O;[EYDpE6F#<;:<<U.#o>,Z2#4A @ ??C"=843<> 77;#:"6!27[4(rB3vE5g<-Q-!G#Q(Y._2 Z/K%;56=F&B$$/N2&Y:-Y:,X9+T6)B*9"@!E$=";!1/3-)-* # )-0/-**% (2{fXŤỞ˭Ũϭ㽡̯¥⾢¥޻׵ڸ޺ǫũܺ⿣ϳͱũ㿣ͱǫĨαѶ༢ήᾣῥԲѰطܻж޽̯ٶȭԹͳūͲɫὠ̯Ӷϴ˰ɭǪͲɮ¦ήyh}ujtpi_]WPB@<,,+%&&#$$$%$    ""% &!&"+& (#*%1+%1+%1+%aZQuskaGD?00/+,,*++'((*+,'''+*)EA;786320./.--,+&&&%%%%&&&''%%$851]VN~uiu|{usuwyv~uikcZ^WN`YPkdZg`W[VNNIC;84/-+'&%&&%''%'&%$$###########$#   &%#&$"     G@8OF=C;2% ("3,%+$+#'*!&2)@6-UJ@`VL`WMg^Si_Upg\wnc~svxzvzp{pzoƾŽŽŽĽļļüüüĻĻû "# # # # #""!"%!&"&!&"% !"% &!&"$ #"$!&"($)% ($ ($ (#'#$!{n|yzyvvvtr}o{nzmzmzmylwkxm|p{oLE>   # &# %"!EA;`TK£ڷʪ£ѰնٹյѱͯɪˬֵɭҶֵ̱ܻ˫ظĩ¨ɫƥ׶ȪϯԴΰͯϰΰˮӳѱյƨб̭ʫֵͮīཤྤྤŬ޾Ҳб޾۸ɩϰ۹ªݽīȯ̳ܺ⿦ٸ˫̬ԳҲͬå~xv|w~oryx|v{l~ǧϭ༤͵̴ӯճƭ«ҰǦϭճϭ̪Ƥѭ㽣׳˩xjYMFA;9@;9=853/,0+),(&-)',(&+'%*&$-)'(%#%" (%#2.+KA9zgXvvj^`YOWPGSMDVOG^VN_YPjd[gaWa[Sle[zqeof[_VMLE>ZNDħåȪåä¤ǧƨ¥ǩϰϯήбвήЯɬ{rfqwjty|yur̬˪⾤ɮҶеĪ߾ۼ׹ªֶϯ㿢ʭũ̲ӶƪũȫҵǮɯնʬӳԵscYQ;74'('***+,,+,,+,,+++)))&''$$$$"!&$"'$"4.+cUKsۻʬä̯Ȭܺ}j<: 8S,!h<,G(/0<> % ))( -37!4(#-56 ;"I(I'7---)" " ""#%#   (A#? 7. / D#N* L(G%B"S. e9)f;+{M:[EZDwJ:N) <;:<=[2%r@-b6'" 2A @ >;8779;;= A";;#;#8"8 C$c9,wE5qB2]5'J%N&Z._2 _1 S*A69F$U/!Z3#V0!D#A&U7*[;.[:-[:,Z9,I."+"'8;#5"1+(()'8#=&8!54552/-+(' 'V?5n]zճѰ׵§αèͱдβȭƪвֹҵΰɫ¥ħǪ̯§۸ƧԳ۹۹ֶݽ޽ūջΰŨæط࿥׷ܻٸũȬᾣĩƪϴʯǫ¨ۺ׵ʫ~m zrgupi_[VN@>:,,+%&&#$$$$$ !!   !#$ %!'"+& (#+& 0*$1+%3-'^WOtph^DA<--,***)**&'')**&''.-+JE@wodzoumbzrewj~p{m{m}ot|s|pt{}~}zvuvv~|·µ¶{yxvts{otj``XPUOHRMFOJDKGAKGAGC>;950/-++****..,D@;mf\{v}p}shyoduiuh{revmbg_V\UMPJCJD>C>9:73/-+'&%'&%('&''%$$$!!!!! *)'30-31.!   %"zmryncVHB;}rfsi^xncxncof\g^TaXN^TK{ny{pwz|uzzut{pȿƾžŽĽļļûüûûûû #!$!$ $!$!$ $ #%!&"&"% #$'!)#)#&!$ ##'#($ )% ($ )% *%!)% ($ #  \VMtuwyz}~}~f_V   #(%"'%"$! m[Nʯ˯èçۻȮ׷˭ͮб¤ǧطè۹ήڹں˭ܻǮƬɪå߾ݺմȫ˭ͬطֶͮѰȩǨĦ̯ۻѱäŪéīظūŬִ˫ŦƦظ߾ۻȯǮ˳ǯ޼޼⾥ճԲƦ¤Ƨ}zvuuwwq{msw}{xɩӱ˫ͬ㾥ཥ˫£ѯɨɨڹéཥڸѯ̪ģɩʨqn`XLE<64;64:542.-40./+*/+*.*(-*(.*(.*)'$"&"!%"!-)(50.MC<:<<Z1%r@-l<+8*@ ?<99?E!H#P+ K)> C#V0"B&;#:#8G'm?0xF6k>/R+ J#V+_1 a3![/J$97@V0!a7&Z2"L&E"P1%Z;-[;.[:-\;-\:,E*' ( & !16 8#1)*2.,1;$?( -$ ' ,,+*,-()-/$, ygǬͱᾢཡݺ¨ĩɯǭʮոټڼڼϱ¥ɭƪִԲͬͮϰèѷֻڿɰвɫ¥Ȫմêܼܺç˰ɮƫ۹׷ݼֶЯۺֶ£n vodvpi_YSL><9,,+%&&%&%$%%!!!    $ $ %!'#*% '"+&!0*%1+%4-'[TKuri_EA=,,+(()'(($%%'()%&&0.,MHByqf{oPJC<70IB:TMDYRI]VMbZQf^Tqh^ypd|sgzqeuizm}p}p{oznrx|xv}~xxvvx~{~ztsx{{xw|t~sgxnctlbrj`ng]og]kcY\VMNJCGC>EA::@ M'P(O(\2%c8*F&= V/#O-"9":": Q-"qB2wF5c8*M'O&[/a3!`2 T+@6:P+_6%a7&S+BD!T4([;.[;-[:-[:-^;,K- ) - 3! $ .6 10#21)+,.,%# ! $ (+/.+$! % ( [F;sĦ˫ضǫ̰ڸͭصӲݺǭƫṴ̄ũæ޼ͯŨũ߼ƨ׷ŭ̳Ȱīٺַвϱ޽ܼ׷Ī˰ɯնҳ࿤޽ϯͭԴѳäw#pi_tng^TOH;97+,+%&%%&&$%%!""    %!$%!'#*% '",&!1+%2,&5.(ZSJvpg\D@<---())'(($%%())'''31/RMF~uj|p_XKD>3E@4ID6IC6GB3GB3D>1F?4G@6E>4E>4B:2C;3G@7KDPH@TMD\TK`YOc\RjbXoh]umbwocvnbypdzqdxoc|rf|oyz{~~{~~|}zy}~w~rz}zq}sfvl`si^of[ri]xjzzwux{}}}zvts|n|sgulatk`nf\VQJ862$$#####$$ !!! &%#@<7MHAQLF740zpe{re?:5tx~tju}sgwjvusz{z{{v|}uƾƾƾŽĽļļĻĻĻûúû  $!'#'#%!#%!#"#&!)$*%+& *%)$(#(#'#'#($)% )&!)%!($ '$%"wk]UM    %!&")&"'#! tk`~}}}|z}ǷͽпĮíտӽëռ©׾ǰëҶٻݽɱʰۺˬŨ¥аڹڹճƧɪɫյ¥|ĦĦϯݻ޼ҲǨճ׶̭ĥҲ̮ٹūῤ޼ֵѲĦsy|ywuyl|nvЭݺ˫رʧˬڵֲ¢ЯѱԳٷִ˫svdWKA:2.+0,*0,*.*(,)'*'%+'%,(')&$+'%+'%&#!&#!($#/+(4/,OD;m]rkd[icYXRIOIBLF>LF>VPHc]Tf_VaZQ_YPf^Uh\RfYNGA9fXMҲͮħƧȩȪʬŧƧӳҲήĦȨڹϯq{sg{rsu|wzƩ̬ĥյӳۺΰɫʫϰѱ׶߽éڼ޽߾ܽܽ˳Ůɱݿίϰ׸޾Ҵٺvk^V>96%&&)**+--)**+,,,,,()('('"#""QE;veάέy<$4I Z0$c9*f2$l=(?%/W7(Q4%% ( 1357!3( ' 27 7 E&O*!C$0...(!" "#$$    " <:/ 0 A!K'L(C"H'c8)g<,g;+uG5YC[EQ?nB5I&AT)C!<D$j;*s@.Y1#4=:A O(X-!T+N(\2%m<.S-"<I'W1%:"N.$S0$V0%uD4tC3^4'L$T)^1 b3!^1 L&97D"Z2#c8'^3#]1!S*L* X8+[;.[;-[:,[:,_;,S1"- & 5)  -35382( ) +.+/112/-+'# ' &, }fWԲʮ§¨߽۹Ӳڷմݻ§߼ͯٷ׶аͱ̰ƫ§ұɫͯƬǭȮݽбϯŧΰ޽޾ʫյٹԴϰͯϰŨȨ~o$le\}rle\PKE764+,+%&%%&&$%$!""    %!#%!'#)$&",'!2,&4.'70)WPGyof\B?;-.-)**())&&&*+++,+863WQJymrvl[\TE\VG`[I_ZI\XDYVAPM=OL=VRDTQDUQEQLANK>HD8@=2?6KE=OH@SLCZRIaYNd\Rh`Vh`UkaWsj_zqevjwkznrsx~~}~~~~|}|z||zz{zz{~|y}~|~~}z{yu|qzo}qw|}}yxwy´~z|xv~{wuvx~}yutsruic\S@<8%%%###$$$#$$ !!'&$1.+73/LHAZTLYTL@=8!  h_VstwjIB"9"7!3' ) 37 8!F&O*!@#/...)"# ##$#   ! <</ 0 A!K(K(C#K)d9*g<,h<,tE3WA\FS@xJ;W2'AZ,!L&<=^4%s@.g9)* ,<<H$X-!\/"T+P)a5'n=/a5(?!> B!6KC;OG?RKBWPGZSK^WNe]Spg\vmbypezrf{sg~uiwkzm}prqrvus~qs}qxlvj~uixl|ptutxx|yz~~||{}~~}~}z{~}|xxyyz|~}}|~}z{|{}~xrkaIE@**)&&&&&%%&%###""""""41-OICVPHd]TibX^XPGC=%#!'%!]VMxlp}nD>7zm|ntg[|{wywvvwz|xwmuƾŽŽŽļüûûû»»º      "$ $ % &!'"(#)#+% -' -(!.("/)#-'!*%'#&!%!##"!;82~D?9  ""$ $" qh\|{z{{zyxy{~ŷǹɺƶìεԹϵҸӷìбͮ޾ܻɪťήͮή˫zymvwz~qrwjylsrxƨħ¤ȩǧĤyŧ̮˫ұұ̫̫ճӲygZND><74:5240-/+(*'%+'&($#($"'$"'#!$ %" '$"/+)50.93/QEQLD]WOa[R\VMVPHUME`TJeXMA;4i[Pίǩŧĥʫ׷©߾ִطϰuyqf}|p{ou~{yyyzίӲ׷ӲĩεѸεεūƮʲӻͶ̶DZͶηٽαٺͰӴعϴydYQ942*++,--*++'('****+*'((&'' !(# LA7ziX{|]G:4F V*a5'd/!p@*nD-: 04,)< B$9"6!3' ( 47 8!G'O*!@#//..)!# ##$#  <<0 2C"L(K'? N+e:*g<,k>-qB1S?\EXCR?d<.>[,!T*!<;R-!p?-o>,B$" 9?N&[/"\0"U,O)P*[2&R-"?!>?>R/#k?/qB2wE5j=.P(O%[.b3!`2!U+>7AW0!b7&\2"[0!]0!]2#[8*Z;.Z;-[:-[:,\:,a;+Y4$6% * 6, * 88(.,%*G*"N/&L.%;"F'!@=441.,+),40)'3_D7tڹྣڸèǬٷطŪǫ׶ٷұʫЯطŪͲƪչҸۼԶڻշѳҵ߿Ե޽ֶ޿޿ʮӳϯŪԴ}ro^kdZ~rhbYIE@00/*+*%%%$%%$%$#$$  !% "&!($)$&".("3-'4.':3,QJB}vme[B?;000,--+,,,--*++...>;7^XO}pv|{zyxyywlhfd{cxt\nmTedN`]L[YHVTDPN@HG;<=213(./$+- +. -0$01(..',.&,.%+-&*-$)+")+#$&%&$%! " %"+%/(2*6,!9.#:/$;1&?5*@6,A7-E;1G=3H>4H?5KB8LD;ME=PH@SKCVNFVOGVOGWQI_YPe^UgaXhaYg`XjcZph_vmcwl|pssts~rvws|p~qswz}~~}{|yz~{zz~}zzqfSNG86253053053043021.31.0.+'%#C?9qi_ulawk}thc]UMIC('%+)&[SKwkwtWOFrg\w}{zj^R~or|p~stuu{p{pxzuvlbyod{||½ǿƾžĽļûû»»ºº    $ &"(#(#'"'"(")#*$,% +%("% $ % $#""rj`ur}qrtxxxwy|~|]WN  ! !$ #  E@:|zywwxz{{zz{{}|{|}|{}~|{zzzwvy|Ƶȷ˺̻о­ԿнҾԾӼθϷؼдvxw{s|ouiwjxl}z{{ʫˬ̫˫ťʪͭ˪rygZPF?;529413.,2.,,)',(&'$"%" $! '#!# $!&#!1,*51/;63YLDxh~aYPb[RQLDC?8E@:MH@PJBXRJ^XO[ULUPHYSKbYO`VL=82iYNɨϮаɩ£¤åֶ߾ٸڹ̭˫ƨЯ׶ǧuxpeyymxlv}}wyxvæɪƩŦۺ˳иǯ̭Ӳŭ͵ԽͷԸĮĮ¬«ӵίбͯĪzk`X<85())*,,+,,())*+*+,+***)**"##  '#I?5}jX}q_.<O$_3%c/"p?*vH0S0!-10(;D%9"6!3' ( 47 :!I(O*!@#//..*"# #"$"   ;>1 2D#L(I&;O, f;+h<,m?/qB1~O<[EZDZEvJ9@W*\-#>=E$k;*r@-Q- $ 06AI#Y-!]0"W- O)M)O+!L(G"@@?T.#g<-o@0vE5f9+N&P&]0 b3!^1 M'=7C ]4$`5%W.[/ ^1!\4&[9,Z;.Z:-[:,[:,]:,b;*X3#5%+ /3 / /  1 9 8"(,( ! *9 L-#I.&hMD^A8A8$ ,.,+*(+10)" 2A$l\ӳྡྷݺ⾡§׵ƨƨӳ˫߼çĨۺ׶ǭ˲¨ʬȪʬв޾êܼԵ׷ݽ࿥նƪ࿦޾ָèַұظٺ׷Ӵ׸̮¥Ĩzg icYrf`WEB>-..*+*&&%$$$#$$#$$      !% !%!)$*% (#/)#4.'5/(;4,QJA|tjbX@=9///+++*+++,,())/00>;8_XPrx|Ķó|ojf|byt\tpYqkWgcP\ZGQP,?$/( (*/vE5`6)L$S(^1 b3!\0J%:9K'`6%\2"V,]0!^1"\6(Z:-Z;.Z:-[:,[:,];,`9(L+.#" * * !) :2 3;$9$&/$$ (2:H5.lRHR3,D"252.,*).1--( ' %lUHаæֵѱŦåҲᾢǫ޽ݼ⿤ĩȯͲֵǩظݽԵ׸ŬʹҷյҳǭǬǪĨĦϰŧæˮ~nibY~rd]UC@<,.-***&&&$%$"###$$      $!%!*% *% )$0*$4.'5/(<5-LE;7_YQsy~ĵyο˥ơÜɝ~|xqmic~z^zwZxuWqnQlkMkjMheMdaLdaL\YEUSAOO;PQ;KK9A@2::-89-66+44*65,0/',-#*+"*,#()!%&%'&('( ()",.&,/&'*""$#%%'!&(!&&!'&!%$ &%'%# #$ (".&0'4)4)2'6*:-!@2%=0$A5)E8,F:-F:.H=1I>3K@5LB7OF;QI?QJASLCXQHYRJXRIYRJ]VNaZRd^UibXng\tmbumctmcvodwoezrg}uj}vkxmxmwl~vj~ujym~rvvwz}|yyutwz|xz}~~~|}{x~z~r}pstw{}|xx||z|}}zuruw}|zyzyxx{{wvjsj`qi_qi_me[ibYg`WkdZkdZd]S>:4wxjbYQLF/-+0.*[TLti}ouodXWOG|peyod}rg~shxma\RGxk^paTpnxiryyt|mt{y~psxq|o{mǿžŽļûûú¹ %!)$)$(#("'!% $$$#"""""96041,       !   [UM~}}||~|{}~{{|}~|{|zyws|ozmzl|ortvxy{}~~~}{{}~}}~}~ôȹȹȹ˻ɹƵñĭǰëʮĨȩұ߻ݹ}xdUB71($#,((2..1-,*&%(%#'$")%$*&%,(&&#!%" %" +'%0,*1,*OD8E@:OIAKE>SMF_YP\UMSNFYSK`VMXMD62-veW~¥wȪںåĤɪwumc}qxlwjxwu{vqٸé¨Īۻظ׸ѱϱˮȩЯĬȰʲǯ˵̷͸˵íū̲ӸêۻԶƫ|i]U40-%&&'((())&'&%%%''')*))*)!""K@7jXK/6M$`.!e/!oB+k@-fA03.77-46!4)' 37 :!J(P+!@#///.-$ # #"# "   7@52D#L(I&9P-!g;+h<,o@/pA0pC4WB[E`J[F\5(K#e2%O';G$Y0#p>,m=+D$7>E!??!Z/!\0"O,!H*!E&C CCF!F$E$P,!b8*xF6tC3X1#V,`2 b4!X.E"9:R,a7&W/ W,^1!^2"\7)Z;.Y:-X8+Z:,[:,^;+[5%B#  19' ' :$<%0! '(! ))#-I5.J70mOEB7.# %-,)*35.&  hPD۹ڹ׶ٸܻݻǪèֶɫѱݻŬʱٸĩ¨ڻںŬݽ̱ŪٹɫԵˮæҴѳίָԵŨzsygc\T|pa[SA>:,-,*+*''&$%%"""#$#     #!% *% *% *% 1+%4.'5/'<4,F?7~qync\T;96/0/''''((())$%%-..?<9b[Ssy³ŴÝʤײѪˣʛ×|ywqnmkb_aaz^ca~z^poRonOkhM`\E]ZD]ZEXU@TP>ZTCOL6JB:OG?XQH`YPb[Re_VhaXibYicZpi`vpeztiyn~ruw{}{~|}~}~}yzy|~xz{{z~{vyyz}{{zwsvv|rwlwl|psznD?8wynf\SOH32/""!1/,XRJzmwqncWKD=pdYsh]vk_l`VvorseXoq{isere{mo{j~nqvvv{yurȿŽļûûúº¹   #% % #"$% %##""" ~~MHA      !#"t}|}{wtq~pqrtsrrqrstvwwwwy}|{|{|~ȷϽнѼ{s~uiqi_jbY`YQSMFD?9>:495151-%!  % PC;m^scLHCOKEGC=B>8E@:LG@HC1R?[E^H^InD3G"b0$Z-"<A O)j;*q?-W/"9>D!@8S+\/"U."I*!D"DB?>?!=!9 5J*!e9*Y1"Y/a3!b3!W-@9;S- a6%T+W,_1!^3#\8*Z;.Z:-W7+Y9+\:,]:*M-7 # ## 75 7"=&3 % -(&*%& *(A/(}_SD$;22, ),*((48-    S:0ۺԳᾢ߼ٸȩŪԴŨǩȮƬéضۺ׸׸ܼݽвֶܼںظʭвն̭ͯ˭ʭĨǩm#a[Ryn_YR?<8*+*)**''&%%%"###$$  !#!$ *% )% *% 1+%3-'5/(;4,C<4~ujyrh[UN653000'((()))**$%%.//C@2%@3&F9,F:-F:-B7,E;0E<1C:1JB9SKBVOFYRIaZQhbXke[pi_vpe{uj}px|{{{|||||z|~~~~y}|D?9ym{qi_TOI32/#$# /.+SNG{rfqxiwj]%"A92,'#?81_SHdWLl^Qug[]SIm^P{jZ}k[zj[{k\pb}lsuxi{muzxxt|lǾżļûú¹¹ÿÿ !!"#$$#####b\Ryb[S        !ibX~~}|{{z{}}}~~}|z{{{{{{}pui|qdzk}mmf\ibX[ULQLEKG@KF?@;5GB;TOGXSJPKDKF@HCG?8@:472,-*&/+''%!$!1*$=4,OC9ND;YNEeZPqeZui]{ma~oc~m^ǿļûúù¹¿¿¾ "$$$### <94u        1.){nuxyxxx{}}||~|{|~|{{{~~~}{|~}|zyyxxzywxy{}~ztxkxocc\Rxiæz̬̬ȧ|~zson^Qqi^}p~rxlvz|p}pyvsݾ׸ʬŦعŰîݿ߿عů¬ʵŰîгϱвշݾĭɳܾҵȬˮܽŮݿ~pj^V831$%%&''&&&&''$%$&&%'''$%%*'%+(&$" %! "*Ca+c- j;'h?-qJ7=(-@#/)5 7!/ .7 6 E&P+"G&1.(&.," % #"# ( (1@;/ ? K(J':N, f;+i<,pA0rC1h;/rE7ZD[E`JVB[5'T(f3&N'9K&e6(o>,l<+L(<;E&K+!I+"K,#f9*b5'M&G$U2+R2+D*#6!+ .J(V/V/Z0 a3!b3!U,B9@Z2"Z1"J#Y-_2"^3$[9+Z;.V7+S4(Z9,\;,R2%3# - $ 8943)<%9#"## # 2" )*5E%C#) N1(jC7Q3+O) A"39;4('(2B$I'E$5*   UA7߼߼۸մǩɪήʬٹ͵ǭ޽Ѳ޽ƭ©ۻӴʰջ©ڻݾѳ̯ٻݾܽɬæ̮ǩѳɪڹæ{?5.TOHundSNH531((()**'('%&%#$$#$$         !$ !#+&!+'!)% 0+%4.'81*;4,C<4}tj|ukWRK210./.)))()*--.'((444OKFund{Ƶ̺ĞǹķȽ{—ÚĘ|~}yy~||xwwy}xpptononnspkgff_epplikkdfcz^ypWngQc\Jg_NkcQc\KXRCUOANI=FC8DA7C@7C@7C@7?<486/54-32+33,10*./(..(--(+,&*+%**%*)%*)%)($))%((#)*%()$**%)*$''"#$%&&'"!!   !#%)!,#/%.$0%6*;. <0#;/">3(@6*B7,C9/F=3IA7LD;PI?TMDWPG\TK`YPe^TjcYme[slazshznuy~yy}zy{}`ZRog]xodWRK863$$$ ('&JF@vmczmreyl`@<6wk^x||{yu{m~pc}n`wh[i]Q\RIWOFC=6ƾļúú¹¿¿¾¾  !##"#{TPH      !jaW~|{yvtuutrrr~pstutsttwz|{}|}~~~}~}{{}}|z~İθ˳Į¦¦uqbTvnb~q{owkux~rwluu}pظ޼ں̭ҲݼĮܽۼůîԶ̮ɬ̯ݽŭ˴ɳɳȲҵ¦ΰìƯв~pl_V:62&'')))())())&'&'('(('%%% !! *'&)'%"! % *6[(c+j8&mB-sK7M3&+ B$2$ 37!2! ,7 6?#O*!K(4..* --$ $ $"" 21, ?<0 <K'J'<O, f;+i<,pA0sC2i;/i=2VB[E_I\Gk@1M%e2%Z,"=>h6(r?-q?-Y0#<:B$L,"H*"T1'l?/e8*N)!X4,\90I-&6!2((A"T-W/T/ [3"b3!b3!V,C 9@Y2"U.I"Y-_2"^4%[:,Z;.S5)T5([:,\:,N/"' . # # % 8;73.):$<%4" $2)')0;H&@! C"c4']0$H!Q%O(L(>:;0% "  $ 4I&L(= ,"   YF;ͭڸѱƨˮ߿ܻӴյֶҲӴֶںȫˬʭѴ̲޿Է©вѳݾڻɫˬҲ{@6/TOHtlbPLF430((()**(('%%%#$$#$$          !$"#,'",(")% 1+%4.'92+<4,D<5~vl}vlVRK331.//)**())-..())665VRL}uk˿œƺĻsƾƿz~|zxuy{wmmqorutqvxuqoqmr|vrpjfih{cxa|s]tlWrjVqhVkbRc\M]VHQL?JF:FC7DA6B@6@>3?=3:9043+00*00*10+/.)-,',,'++&++&))$*+&+,&)*$''!'(!''"$$$#####$$"#  #"$#!$( () -#-#-#1&7+9-!;0%>3'=2'=3)A8.D<3JB8OG>TLCWPGZSJ_XOd^TicYnh^tmb{ti|ptw{~~}y{~~og\haX~~uhYTM:85$$#!""('&ID>ph^thxksfOIByl`z~spz}trdvhrc,'!TSPºżûº¹¿½   `ZPyqe       ! VOG²λλλǵ­­űɶ̹Ƶzrsqtqsst~qsuvwxvwz}~}}~}}~{wvvvyyxxy{}~~}{}±z{zuʬήή̬ط߽ʳʲī׶ܼҵѳڻĬªϸսӼԽҼʵưƮƭ©ĬԼ˳Ǭzn`V830'((*++())'((%%%&&&''&### -+)(" " - /,O#c+f3#nB,nE3[<-$ A#6! /7!3$ )7 69 L) M) 8..- --(#% ""! 6>! ( >>2 9J'J'9K)f;+i<,pA0sC2j=0d9/P>[E]G`JzL:T."_."b1%C!9U+!s>-q?-d7'A :6H*!I+#`8+sC1e:,[6-c=4S4,<%4 2-7M)W/W0 U4&V5'a4#b3!X-C 9@X1"P*FY._2"^3$[:,Z;.P3'R4'\;,W7*D( + %" & % 8@;54.7"<%; 3%,.%). 8>!I&;"Z/#h7)V+ P#P$@U+V,G&>!4 )E$M(E$2!  mYLˬ¥ῤѳŨϲҴˮǫαũũǫίǨͯոغ߾Է׸ëȯ߿ʬ¥Ѳ̯ͯնxC91PKDrjaOKE420((()**(('%%%#$$#$$                $"$ ,'"-("*% 2,&6/):3,=5-C<4xn|ukRMG331//.)**())-..*+,666YUOynȽɾǼƾtļ|}~|w{sstsx}yooy{tsvuwõɻ˽ƸĶ̾п̼Ƿŵñ}|{vvzyo|dxb{p[sjVsjVphTjcQf_Ma[JYSEMH4I@6KC9QJ@TMCVOF[TJ_XOibXqj`slbxqfznry~s~quxytruww{~~|z{|~zxqh^UOGyl]WO>;7&%$#$$"""))(ID?og]ujtgvhNHAodYxyyx~t|nqj`Ve\SvºĻû¹¹¿¾¾  A<6zpcvwx{{n"       }zuuvysssuvxxwwxz~~~~~~}|~|{|}}}~ijƵIJǴ͹ӽԺҷӹϳ̱նĬйìұڹĮ̶ʵǰ޿«߿«ǰζ۽m_U840*++,--)**'(($%%%&%&&%""" !! ,('$. 0( :_*c- n?*nD0dA1':="$ ,6!4(( 66 7J(O*!3 4H%L(? E&d:*h<,oA0tC2k>0c7.xJ:ZD[E`JS@^7)U)f3&N':C!l:*q?-k<+J';0?%K-$h=.zG5e;/d=5_;2F+$5 4 1/:Q,X0W1"T7)T5'_3!c3![/G"9AY2#Q+EW,_2"^3$\9+Y:-Q4(R4(\;-U6)3% &  &# 1G$N)9418"<%<"9(,2# )+69C#F$/ G%g6)d4'P%;3 / ?T+\2#S1#C&- ?=1" " 9I&H%8   |hYū̲ȯéçںгͰϲĩçٹα̯вѴ¥ֶٹ©޿ŬŬ޾ȯϵǭܼбѲΰɫٺƪw?5-KF?mg]LIC21/'(')**(('$%%$%%#$$                ! $ #$ -(#,'"*%!2-&71*;4,>6-B;4yp}vlPLF443110*+*)**/01-..776[WQ}qûǿž~z}}|}~ùǼ}yx}sqz|vx}{z̾Ø×Ʒ´ƹʟ΢͡ʠŝҽɶñòŴǴ}ytooqlgxaxnZsjVofSbZI^WGZRDUOAJE8C@4@>3A?4=<1;9/86-97.32+.-'*)$('"''!(("))#'("&&!&%!'&#""! #"$#!## ! ! "!"!  !!""$# "" !!!!!!  ## #"!!!    !    !!"$&') +"* -#0%6*9- TMDYRI]VM_YOb\Se`Vmf\uncxqf~wk{o}qsv{|}|p|sh}thwkxlxlylzmqvx}{vty}|}z{~{zznMH@~qaZR>;7%%$#$$"##''&HD?slbr}ptRKDcZQww{p}r~sv|q{p}ruwvxz|w|nvhwjvi~rftgr¹ÿ¾   A=7|c\S     SMF~~{wwy|}|{wwvusssx~~}|z}}{zyyyzzzz~±ijðʵӽïŰů¬ɳڼֶָrfZQ+(&"$!$ ! &. 2)( W'c,d4$d;)iC2<'4@#(*5 6 -' 47 4C$P+!A#./, / .-'& % !(=F$+ ;?42E$L(B"G'c9*h<,n@/tC1n@0c7.l@3XCZE^ITAlA1N'e1%Y,"=:^1%r?-o>,W/"<26Q0&pA1~J8rE8iA8]:1=&4 305C%S-X0X3$R6)M/"^1c3![/G":>U. M(DU+_2"^3$\9+Y:-K0%R4(\;-U6)2* -  &$C#V-!K(4-3<%<#<. (6$ ! ()39> G%?4_2%h6)Z-"6!* 4* C [/ Z2$W4%E%E!M&M&G#6 .C#G%8!  }mªݾԴǫǭҵ¦¦ΰūܾˮѲۻǮܾìˮںĪëªë©߾߿ʰȮϴǬῥعʬŨzC91KF@kd[HE@//.&'&)**(('$$$$%%"##               " $ #% -(#-("+&!1,%71*;4,>6.A:2~wmyriMJD443000)*)()).//,--998^ZTu|z{|yø¸~Ĺz{wt~ʼɞȜɺ´ķͣӧթժΤɶǵƴó̺ѿоӿιȲɴİ}zumm{`w_v`{pZnfPh`LogSogThbMd^KZTDSO?LH;C?5A=2A=3=:0<9/:8/21)-,%,+&,+',+'*)%-,(.,).-)+*&**'..+/.+,*'+*'+*&+*'--)--(**%,,'++&))$))$))$''#&&"&&"&&"&&"&%!&%"%$!#"##$# ## ""!!   !#% &'!&'"%&!#%$%""#$$$!%&#&'$&&$'(%&'#%&!#$ #$('),!2'3'6+9/$;1&=3)>5+B9/C<3F>5HA9MF>SLCXQH_XOd]TgaXkd[mf\oh^skarkaqj`rkbuncvndzrf~ujxls{yxz{xrxkyl}puy}{|~{z|}@<5~wg_V>;7&&$"#"#$$%%$HD?tmc|osud[RWOHr{mvjz|yu{puk|rh{qgvmcyoeyoe~siwlymtguhwk~qsvruÿ¾   D?9zqfuvuxyyng]      -*&´öõŷŸŷõƷŷŷµ~~~y||yvvy{}|{zxwvuuwxz{{{}uznxl{rfle[a[RTOH<72)4- Db,[)Z-"f=.Q5'+ D%1( 46!1& 27 3; O*!H'1/,&)-*$ & "$? E!- 8@7/ B"L(F$= _7(h<,n?/tC1sC1g;/e9/Q>ZD]GVBsF5U0#[,!c1%E"9H%n<+q?-b6'@ 5,R0&tD3|J9pD9jB9V5-:#5 45;$ H*!V/ X0 X6'S8*F(Y.c4!Y/H#:=O+G$AS)_2"^3#\9+Z;.I/$Q4'\;-U6)2 - 0  %%D$X.!V- A",0<%:$3) & 8*'(08;E$F$6L(g6)c3&B & $ @(-# >N'W*W2$V3$B =A!D$=7$ # 9D$7!  6޾ܻ׵޼Ƭ˳̴ëг۽ٻѳַѴԶĬɭ˭Եغë̯ƨӳīϵѷŬع̯~l7.'EA;e_WC@<,,+&&&)**((($$$$%%"##                 $#%!-)$.)$,'"1+%81*93+>6-B;3{tjvofKHC443000+++())-..,--9:8`\Vz~}|zyutx~·ǼƼ~ƹ{zzsuöŸͿǛǚÙ̾˜͠ҥ֫իʣԿλƴÙěǞǠٿһһ˶İԻվŴ²ƶ}xzwwvzxongw_{s\skVmdQjcQhaOa[JZTEMI:FD6JG;KF7FA:IE>NIAUPH\VNc\Sme[sk`vnc}uiym{nrwzxv~rylxl}p|p|o~rwyxzxy}}|~~z{{{y{v:60{~xiaX=:6&&%###$%%$$#GD?tmcrzysh]KF@te{ntwvuvs~s~r}r~sisj`ulbujrt{n{nyod~rvuymzm¿¾    -+(HC>RMFUOIWRKSOHQMFUPJVPI!         |sg~~}}~zy{||}}}~~}|{xwwxz|}}XNE1. ,Z(W(W+!a6)`>.*?"8( 26 4( .7 54J(M) 7.*! & --% ' $ !1D 7# ;@9. >K'H%?!\5&g<,l?.sC1sC1k=0b7.wJ9ZD\FWCsE5d;-N%e2%N';<g6(r?-k;*H%9 L,"xF5yH9nD9jB9V5-8"7";$<$ 9"H(W/Y1 X6'N4'D%Y.d4"Z/F#<;T0#N- @P'^1"_2"\8*Z;.C+!?'\;-U6)2 - 2$ %% D$Y/!U- C$1,;$<%.#! ! 5/&(+ 79A"G&A9`2&g5(Q),!4@(! - ;N'U%V+Y6'R0"< > V/X3"M+;" 7A"6  &I,#}࿥ῥܻ׹۽ǰĭڼѴαũũۼ߿غҵĦ߿޾Ȭ~عé׷ŨĦ{A7/>;6_ZS?=9***%&%)**()(%%$%%%#$$             $$ %!/*%0*%-(#0+%71*81*?6.E<4zsiyriLID444111,-,*++.//-//;;:d_X~{}|{{xyz}Źĺùz{y}²͠͠ėͿŷŸʛΠթ֬ΨƢȡǶ˸ѿššϯͮäپ¤Ťǝ윪ҽͷîð˹ȷ|yzwooiw_zpYskTvmYyn\ujWpdSuiZshZd\MXQDVPDXRG]VJ[SHUNDSLBRKAKF<4@>5=:1<91;9187/32,32-/.)-,',+&-,',+'+*%+*%))$''"%& %&!()$))$%& %' &(!)*$+,&+,%()#()#'(#&'#((%((%))&**&*+')*%""!!        $!'$!,)%40+=93GB;MH@WQI_YPc]Tf_UjbXkcXog\xpe~wkxlzn~q|pzqgyqf|shxk}puxy||{{{xzzz}~yxtuz|||}zz{z{}xxt}q}q~svxz|yt~qth4/*~sug`W>;6&&%#$$$%%$$#C@;ke[vvyxl`FB=~nzo{qg|rhxm|qvt}rzouj|rh~sixmzowkxlu|qxm{pznugÿ    -,+=<:<;8986874653542774><9-+(        @<6|xtrssr~quz{{z{zr~qtvxyy|~}~~{|wk_$1" & T)U'U+!T+!a<-<'5A#-/55 ,+ 66/B$O*!?".+ $,-)& & "&?< &= @:. 8J&J'>V1$g;,k>-rC1sC1k=0b7.k?2WB[EWCqC3lA1L(_."Z,"<9U+!v?.o>,S, <& C&xF5wH9mC:kB9U4,7":#=&!:"4D%W/Y1!W7)J0$8U+c4!_2!N);:P, T2%CM$]1!_2"]7)[;.D+!" M1%3, 2* " &.D$Y/"U- B#528"<%/#" ! 55# )(39=F%Q1!;Q* g6)]0%7$ &?&* # 7Q- Z3#U&W(X3$X6&J)6; N)^6$`8%O-& (6>!2% ;^E:ħ߾޽ڻعĭݿϱϱغڼٻĬŬۼٺԵնܽŮܿ¨ƧŦ|LA841.VRL:96(((%%%*++()(%%%%%%$$$             $% &"0+%1+%.)#/*$60)81*A80D<4{tixnQMG765232.//*++./0.//;;9d`Y|~}|ƹȽ´Ʊйк˼ʝŘ˽ö~¶͝ר٬ԪϩϪҫϨȶнонȨѳгͯ˫Ƥƨ̬ѩЧƟƠҽϻλμ̻ĴĴŶƷǵ̻˻ʺʸ~~~|vvuk{cxczf|h|hwd{p^xl[rgVmcQjbPibQb\Jg`NhaP`YJWQCRM@NH>KE=D?7A<4C>5C?5A=4@<3;8/42*-,%))#**$,,&,,%++$,,$./'11*01+./)*+%)*$**%))&++'--)--)+,(*+')*%#$ "#!!      %")%!/,'62-=:4D@:IE>QKDUOGUOGYSJ`YPf^TnfZuma{qe~uhzm{n{n|oq~qt~q{n~pw{{yz{vs}p~qttx{}~}z~~yxxttuwvtx{|~SJBvofvh`W?<7&&&#$$"##$$$>;7e^Ut}}~oEA14tD3xH:lC9hA6R3*6!4<#51E%W0 Y0 P/!D*4 P(c3!_2!V1#C!:I&M)CJ"\0 _2"]6([;-H-# @'3+ 2.  ! !F.!M6(A"Y/"U- B"6 2 7!<%4 $49!$ " )'08:B!cA,U5"F$`1%_0$E$' !7 8!! * B"f<)f;(Y*W'Y/!X4%T2$20: B N)a7%Z4": ,6< . 79u\Pںŭŭŭɱ«շոʮ޿ʱɱڻӴֵնۼɭ̯z~ˮɫ~l@7/,+(PLF753%&&$$$)+*))(&&%%%%$%%             $&!'"0+%2,&/*$/)$70*82*@7/C;3~uj|pXSLB@<><9;9711/654332A@=gc[xuz}{zɺɺŵʼÛɼùƻƷ˽ǹϷؾԼʴǵ™οöʚקݱٰԮЭѫѫ˦ơͣϥ͢ʡ˨ͮӵԷԷշѰǩȨӬ׮ʡƞоӾоÚѽĢǢȢǤҾåԼʵɶò̹κʵ˴Ʊzstsuppl{du_~s_}p_|n_xl\odTkaPlcRlcSf^NXRCOJ4;:188077.55,76.86/<93;9364/00+0/+-.(,,''&"%%!%%!%$ ##!! !!!" !!"#$##"#"##$#%#%!#   !  ! ""##"#"##%#$""   !%!+(#2.)84/>93C>8KE>PJCTNFXRJZTL`YQg`VjbXmeZri^xoc}sg~thwk}p}q}p|ozn}prwyz{}|~b[Qnh_vng]D@;'''$%%"##%%%:74aZR{nuyu?;7sf[qylxl}qymsi_ndZlcYynctj`nd[qg^ujzoxnuj~sh{odwkwlyn{psv "##!"""###$$#$$$%%$%%$%%%&%        =:4|puvwy{|~}vw|{wz~|z||zyyv~rsuwwy|{yy}|z|~|ywu~pzn~vjwl}puy|~ĵǸŶȶͺӾ¬ůɼ}zx{|}|~|}~~}{{}~}{xwxzz|f\Q*,+P&N$6J%a<-0>!= .05 5 *07 4,7I'A$*$ & ' +-)& & !'?11N+L(>3. B"K(C#L*e:+h<,pA0sC1n@0d8.c7.}N/G"a0$N':=b2&v@.i:)F$7 b9+vG:iB7eB4O3(3+/33J'Y0 V/I(83B a2 c4"\4%F%9D"F'8GZ._2"^5&[:-F-" >&4, 20 % 8"eG3P1#W.!W.!<3 4 1<%;#)#0<#* ((* 79? W6&tO3B"X-"Y*G"+ />%$% 4E$e;(j>*Z+W'Y-U0!W5&H* 26. @[3"]6#B% 659$" ;7u̴ӼͷíȲưָ̰ͰնȱìȰȮշβȫƨˬ̯sF<3'&$LIC431$$$$%%)**()(%%%%%%%&&          !$ &"(#0+%3-&0+%1+%81*92+?7/C;3xmuhaY^XQYTMVQKGD?LJEDB>QOJrlcxux}}{ĸ̼Ǹ~ķНȽŹŵʺȺį¬ƮּڿзĮŰ˷Ƿ~ɸǚҤ۰޴ٴѭΨͧЩȣЧѩӪΦͪٹնαвٺۺή̪ԯܴ۳ծˢʥơƢʦȤÝǠȡĜɡŢģɦɣǥǥɨгѲȨȦĠģƤãǧ˩˥ãȩɫϸʵɴ˵ɵò{}|xolnlw`umWogRphRtkVxoZyq\xq\rkXe`N]YH^ZI^ZI^ZI`\Jb]L`ZK_YL\WLVQGOLBPMCLJ?JF7ID=NHASMEWPH\VMc\RhaWme[og]tlaxodzqexodwnd|sh}shwk|psx|}~}z~~}}~~{xy{z}sj_\WOyskaEA<)(($%%"""###641\VO{o}{pB=7l`Utss}nzm}oqzl{nrznxmbxmc}rhujujujvj{o}uu}x!!!$%%$%%$$%$&&&'('((&''%&&&''       NIB^XP`ZRb\Sf`Wkd[le[jdZlf\mg]mg]pj`smctmcslbslbvnd{sh|ui~vjzo~rut|q}qsxywy{}}zx}|vr{nvj}th|sgylt{}wvwz}|}{||zy}}}}zyyz~}|{xvutr}q|p}qrtwyxyzz{}{{|t-1 % I$L&>J"a8*M2%3?!0.35 /,66.% '@"=  "& " ,,& ' #!7;0M*S, ?6, ;J'F$D%b8)g;,n@/sC1pA1e9/b6-wH8ZDZDvG6a3&oC2Q-"V)Z,";A!Z.#u>-o>,R, 978b;.fC5cD4M5(*+294>!T.M*B$74 3 6T. e:*N+!970$ - R*Z/ ^4%[:-H.# 42+ 21" # U:*lL7jF3Y/"X.!@ 09 9;$;$-#! );#3'((49?!J) vQ4T4!I#[,!L"0!-P7-.! - ?AJ&[3#Y)W(Y.U,S1"R1#" $ 72 / ?D#43:10" *@T7.ϰһͷڽ¬Ѳвշůɲݿܾ§ũвˮɬ}åǨԵֶͮæXKAGE@210$$$%&&)*)'('%%$$%%%&&         "%!&"*% 1+&3-&1+%3-'92+;4,@80C;2~ruj}tixpeumbc]Ukf]`[Tojb~t~~uu~~vzɻǢȺóιӿͻȳƮëƭҸŪǫպëǰ˹ǻ¸ƹȵřФگ۱ԯӯΧѪر֯جѧӪҬճճԱزӬܵ۴֮ѬΪѭͩĠѿҿĞɢЪѮɧͬͩʨ̬Ӵ۾ۼԴά˧ƣȥ־ãѯߺ޻׷ѲаϯĤ ǤȥǣʤÞнѾм˷ԽƩڿȱ|{qnsy}{swq~c}cknlj~gkn|jxeygwculYulZul[ogVhaQ\WGVRBMK;JI8IH6FD4EA5CA4?=1;:.66*22'22'11&32'10'0/&+*"++#+,$)*")*"**#,,%./(//(--'--'++%((#&'!'("#$%$ ""          "'$/+&51+;60A<5HB;MG@OIBSLEYSJ^WNf_Umf\pi^umb|thwkxkzm|osuwzyzyx~synymxlvjvkxl~qx}{qi]NJBzzqfJF@+*)$$$!""!!!31/XRKwkSKCLD=}m`wg|kyhzjqz|yy|vzmzmb~qfzn~q{n~qxuyy   "##%&&$&&&''())())(((&''&''&''$%%        %#!>;7?<8=:6<:5=;6=:5962861:73<95A>9EA;FBLG@OJCPKDPKDQLESNGRNFSNGXRK^XOf_VjdZke[jcZibXibXle[qj_slaslbskaqj_slbvndzrf|sgyqexpd|sh}ti}ui}th}th|sf~tgvjylyl{m}ptyóų}{yyzy|~}}}}|{|}{{ywutsutrrrtvyzwQH@)' BO'H%Q'^3&Z:+)>!2-05 3) 36 0& 0A"* "  ! ,+' % !*;6+:A ?= 8H%I&B#\5&g;,m?.sC1qA1g:/a6-pC5ZEZDT@d5(k>.b:,H"_/#C!:P* r;+t?._4&=6K)V5(cD4bD3I2$% -6>95H'B$:63 4 9M/%b?0U1%:8*# (> F%="Y7*K0%" *4( 22' J1#rQ;mI5[2$X.!B!-8 9;$;%.! # %:!9!# $)&18<B!fD.nJ/<X+ V'E#  bI@T<3(8JAF#H'V&Z+]3"W-P,O/!% 47/% 6=?B#7/+! 8:l_íͷDzįŭƮ©Ҵշܾȱٻӵ׸˯ոշϲƩҳʬѲ׷ȫ{vxYLC@>;00/%&&&'')))'''$%$$%%&''              $!&!'"+&!1,&3-&2,&60)<5-<5-B91C:2~qz{vw{si~rwl~}|x{{wwomuzvrx~·~ěΪģϼȳս£âӾӻϴ˰չèγɭҹ϶˱ϻÖʛˠνı˻͠دٳЭϫΨҭܷڴ߲ث޳ٳٹ޻ԲٶΨҬزڳЫͩүЭʦœÛʣΩϫӱѰ׶ղͭͮбڽع̫àѼǥ˨ʨ̫׵޾׷ܻаʨϫʧğ̥˥˦ʥʥ̧ЯҴƩͶ²|~~}tj{`ztXtpRplNgbHe^Jd]H_YE[UCXTAVR>UQ=TQ=SO2@=2@>2@=0A>2FC6GE8FC8A>3:7/20)-,%**"'(!41+SLC~qxv}q|p}ujoh]_YPVPHKF?B>7:7174.0.(&&    ")$.' 4-%82*=6.A:2F?7KC;OH?UMDZSJ`YPg`Vle[tmb{sixmxmznzozo|ortsrtx{xncA<5z|shOJD,+)"##!"" /-+WRJzrg|sg[(#&!($3-'5/(=4-H>6RH?\QH]RH_SJaULj^Si^SeZPpdY|nbzlxjvvvz{   "#"###$$$$%$$%%&'''(('''%&&%&&%&%    *)'//---+++***((('&&%&&%(('-,*31.31.20-42.85185274074164041.1/-31.53/863>;7FB=KHBNJEMICMJDLHBEB=@<8?<7@=8B?:HD?MHBQLERMFUPIWRJWQJWRJZSL[UM\VN]WN^XOc\ShaWhaXhbXjcYmf\ng]qj`rk`rj`pi^rj`wpe|uiwkwlymszųǴǵʷʸô~~z{||z~~|}r--2L%K&T)[1%_<-@*26-,15 ,-6 3' 1* "  $+* ""/3( " :@ H(R3"M,!J'B"V1$f;+j=-rB1rB1h;.b7.i=1[F\FXCoA1d6)mB2H%V)O'8J&h6(w?.i:*E#>P/$`@1gG6Z>.7## /9B!80=">":535 <S5)c@1X4';9-,981,)9#2 + " 13, >'nN9oL8\4%Y.!E#)F$N)=#<%2 $ 6<#+" )'-8:B!U4%vQ4F'K$W'P#3W@8oTI*$ 2EP BK(U1#V%\-c8%X-R+A#$1 86+ 4 :<B"?"5''CP0'æʵʵ˵íŬȯ͵˳ʲηɲعҳԵݾĨũ׹ܼطʬ¥ĨʭʬŧɬqudLA8;96./.'(('(()**'''%%%%%%&'' !                   "% "'")$+&!1,&3-&3-&:3+>6.<5-C:1H>4sw~w{wy{wuqqvxttuw{ķʻŶ~ŜѮȩҹٿ£Ϲ϶Ըӷçγеոոɭǫ¥Ģ̠ѣΣ˶̻̤ҰѱάЬֳ۶ٴعֱֲ̦֮ɦάЭɦÞɢˤѬ̪ήٺ߿ܺմвΰػڼ̫ʨϭұ׷طصڷ޽߿ЮƣžҽĝĝğơşĠ˪ϱç̵ȸ̻ʹǷ²ŵ̽ʼͿ˾·Ÿɽۚǻµ̼¢£ƦǩƥнͽǷynhcd~b}_x^}uZxqTrlNxqUunRqiPmdNi`Kf^JiaMriSskSphRphRqiSogSg_N^WHTN@OJ:@=9=;8>;8?<9@>:GD@PLFRNHSOIUQKZVO[VO[VOZUNXSLSNGNICNJDSNHWSLXSLZUNe_Vxpex~|{{ytttsstuuvwz~}z{{}}of[%! $ L$P)S)[1$\8+O0%)7.,+43+56-"' + "    .70!%+ % 5@F'U6%[;+J'F%Q-!e:+h<,qA0rC1j<.b7.c8.O=^GYDP=a2%nA1Z4'I"W+!;E$l9)w>.g8(M)<T5(eE5iI7P7'' (3;> :4>">":43 6> S4(]:-T0%<819 A$: 4-' ' ;$&" $ % -30 4iJ6rP:_8)Y.!L'(;Y0"O-"<%8"" $0=$3! ((+ 78A"F%pL2[;%>V(S%: -nSHC/)- =N!MAN+[4&V%`2"i=)U-V,@!)+ :65&  4 ::B"C$;+> @ |mʵʳȳíѲаʭůů׸ů޾ѳ¦ѲçбշӵڹٹвħlOD: 763-.-())(((*+*(('&&&%%%&&&!!!                   "&!")#+&!,'"2,&3-&3-'<5->6.=5-C;2K?5r|z|{yy{y~Ķ˼ν³ǶɣմƨεɰδպӼӼֻټ۾ǫѶӷۿؼʮȭçɠ˝˜μվǠ–ÜƧɬͮѯұϫְ߿ضӯϦȡƤĤɨáмŠȡΪϮѲ۽βͰ׻غЯ̫ǤάԲұֵٸϬàŝǠÝĞмϱ̯Ѻȶȷ±²ǶͼͽôŵɸȸϿȤɥʤ̣ͤɟϦөʡǫ̨̛ȦϮѲѭΪ˨šϾ̺Ͼ˽÷|zzxskqpfddckw}vnnvtn~gzbphQSL;A3&NA3|p{sxqehbW_ZPRMDMIAEB9:8//.$(()) "!#$''++"--$//&21(1/'//&/.%,,#(*!&'#$$%)*!-.$./&-.$-.%-.$.0%,.$)+#'(!%'&&'' --%10'0/&40&83(94):5*?9-?9.>8/@:0C<3IA9MF=QJBVOG]UMc\RkaWodZtj_vmbpg\5.&v{ypeRMF+*( !! -,)UPItmbnf\?70[PEq`sbugtgseyma{petj`pf\xl`ym`rfZk`TdZOeZOdXMcVKdVJ*%!tg{~wwts      ((''(''''%&%$$$###!"! !  ""!####$##$$#$$%%%&&&&&&'((()))*)***()(((((((((('('''''('((((((((())(**),+*--,.-,.-,--,.-,//.000/11011011011221431431531541763:85<;8:96875975653542975@>;GD@KHC[VPtmcw~yx{~}|yxvx|~|zzz{}Ǻʽƹķƺź~|{}{>4-&CS* T+ X, ^9+a<.?&-/-' 05 -06 0! %  "    69'!% ! .>F&P2 bC0O.#L) _8)c9*g;+o@/sC1l=.c8.b7-sE6_I[EXCm?/h:+h>/B W* E"9b4&{@/o<+I&<Q5(fG6hH5I1"% /5:739?#>":3. 5A"S2(T2(M+!;-1?#A$874' & 52 ((*+13( [@.tQ;b<,Y.!P*, 1S,W0$>&:$)#" )<#:!% &((58?!E$`?+kI/5N$U&@!# :"N7.'9DS!IBR0"Z0#V%e8&j?*R,V,I%*( :8 63' " 8;8=D$?":G ]?5ϲ«ĮԷˮĨܽ¬̯ܽǰª¦ϱˮΰӵбΰƩ~ͯƩ{YMC 542-..'((&'')**((('&&%%%&&&!"!                      "& "+% -("/)$5/(5/(4.'>6.>7/>6.E<3K>4|p}|~zƻŹʻȸĴμΪֶǩγγڽħپåŨæѵܿ׼ͲеʯϼřǛġƨ˦̡ơƧ¥ɩťŸͨ۵ֵֶݾڸԲϨȢǦĤֿϸȨϫ˧ͭԶշٻѵ¥ɬֹٹٷȤţϭѯֵڹݼݻͫʦ˥̧ɣȢΩ̧¡ίغʪѾνƴƶ̼ȸ³ʺͽǣÞǞΤӧժөϧΨϫѬѮԲбϬʤÞͻƛ̿ƻ”˼ɹĵ~yvqvðɶðƴƳlh`IB7+B8/;3*4.'>81B=6IC-?=.>=.@?/@>/A?/GE4LJ9IH7IH6FE4FE4FF4BB1>=/<;.:9+99*<;.ED5LJ=+B@.A>,FB1KF6OI:OI:MF8NG8IC61'r}{qfUOH+*',*'SMFskarka($cWKxeorvzxu~s~stxr|nxkviwhvf|jMD;g]Syxuyv~o #""! "!#"#""! ! ! !  !     *+**+*++++++***)**)*)(((((((((()(((()))****++*++*++*++*++)*****+++*+**+**+**+*)*))))))())(,,+,-,---......--------,,,+,,+----.-,--,--,-.,--,...///00-//,--+,,)**'''&'&'''&&&%&%&'&&'&&&&(''+*)/.,541LHBoh^x{{{z{}ø.0Q'T+ V+\5(d=/\9,% 0.) (42,51&  !   2;4""  $ <D$N/W:)M.#H$[5'i>-e:+l?.rC1o@/a4(a7-m@3[F_IYC~P-w?.Y0#H) X;-hI7cD2;&$ 16:64=!@#>"=!7+ 2?!P.%M-%>"3)3D%B$8880& $ " (+*.35-  J2$rQ;e@/Y.!T,3)H%]2%H):%4! %! 8 =#+$((388E$E$P1"<#DV'E$ # . ='*# 3CDS!FBF&V(X(i<(j>*Y2#V-Q*.& <96 57 0" A>7 <E%B$G$EɲȲ¬éѳĭ۽ͱֹǯƯӵʭħίնΰǪͯϱ˭ŧϰܼ׷æ{YMC 431///'''%&&()((('''&%&%&'&""!                  $("$.(!/)#0*$70)6/(6/)=6.=6.>7/E<3J>4zn}ux|z}~~|Ǽ÷ǻɽŹ·ĶôôͼǣϭбƩոڽʭ˭ƨ̭ԶڼӵھϵĪçҽǜȥǩɥˣǢȪħĥãǥѭܳظͬϨЩά˭ŦȩæβյϬ̬ѴҵӶ׺ͯͰշն׵ӰԱճѯӲݼ޾ط׵հհֱҭͧϪϮӴԶɩѾȷòĵôô̽ǣȤȤŠ̿ͣҦ׫ѧӫѫ̨ӯܹڸ̭Ǧœ͹ʸͼѿǢ̢ț̿•ĘͺîϾȸĵ³ĵտȢšÞĞʶޞӾ}tY=8,4+">:511/++*''&(('''&&&%   " +(%)&"73.;71?:4GBQO9OM7QO9QP:SQurssr{m#!"  $" '&$&%#$#!#" "!%$!%%"$#!$#!&%#&$"%$"&%##"        )********)**)**+++-..-.-+,,*+++,,+,+*++*+++,,,,,+,,+,,*++*++*++*++*+**++*++++++++++++,++,,+,++,,,---.--.-..../../.,--,,,,-,---,--+,,*++*+++,,++++,,,-,,--,--*++())&''%&&''''((())))))))))())()*).-,HD?me\x͵}si! J#S* U*Z3&c;-iA2A(" .,$ -4.14)!   0:;+! ! 7B!K,G,H+ H%L)b9)e:+i=-qB1qB0d7*`5,b6,sD4bK[EXBm?/k=.e<.=<:B"n:*z?/j:+Q1%]@0kK8aC16"(36856>"@#>"=!6+ 2?!M,#I*#7!,%9!G'C$996-& #!$ +-7?6.( 1mM8jF3Y/"U- 6# ;Y/"O-!:%A%?&1>$ 4# ((186?!G&B"45S%M")"- 1& - AD JQ CAC!V&Z+k?*i>)Z4$V/ Q*-& =9742M*T3& A%E @6 :C$C$>rdͷDZĮغ׺շǰɲغڼعٹظϱŨϱڻ̮̮ںѲ¥ŧȩw^PE 220-..'''%&&'('(('''&%&%&&&""!          IA:kcYog^oh^e^UYSKRKCGA:@;584.    "%("&!/)"/)#1+%70)70)81*<4,<5-?8/F=4J?5uj|su}~}Ƚƺµ˾ƺøǺȹɹʺͼпҰ߽عŨ׺ʬͯʬʫնٺϲдۿɰڿʯŷǸӽƢƞȣͮϱʭέɪŨѲֵܵ׵ܺյҲְҪѯָΰշִֻܾӴѳҵݿ̯αݿ߾ٸέɨͫԳ޼ں߻ܸ׳ڵӭ˦Я׹α׾˷Ĵ²óƷĴǷϿŸàƢʤǞʠΤ֬ױҭЬҰݻٸѰˬƧßӾҿœǢΤ͡ś—мŭưнξǸǸʻ;ɸòҼЪΪʥÝԽʵƠȣŠeMG8<0$NHBGD@?=9=:6>;7A=9B?;><897486375297375242010.21/43021.0/-**(%&%***)('&&&"""#$$$%$$$"0.+740@<7B>8KF@_YPg`Wog]zrfxkswy~~pifejj``ghiosvokkc``}yY|[{wXtpQuqStrRzwY{vYxsXvsTurTyuW}xZz]slSK?.maTxk_YQ530!"" """+*'OICrj_svi}n`JA9yiZx{|yxy}~~|oaHA;trvjvg{,+(+*'*)%+)&-+)/.,/.,.,*-,)*)&('$)(%+*'+*(-+)+*(,+)-,*+*(        ()((((((((((()()***++****+*++++,,*++)))))))***+**+**+****)**)))))))))())'((((()))****++*++)**())))))))()))*))*))**)***+*+++,,,+,,+,+*++*++*++***+,,,--,--,--,--+,,)**)*****((((((())())())()))))-,+FB=jbYtusuwwy{zz|}{|ND=>R)T+ W-!a9+i@1d>/+,-& % 23-4,"   ,:;8#! ! 7@I*B'6G%H%T-!d:*g;+pA0rB0i;-a7-b7-^1&T@`IXC~O"=!4) 2>!K(!G)!7!*%:!H'B$:92% $'$ !  *4@!C!;05&\@.mJ6[1$X.!> 2P*Z1$?&<%H$6 ! (<#9!& '(/853F%F%;2K"S%5B"@"* ! '7J#U0#R"LB?K#W&[.l?*c9&R- V1#R*.9W.#K'C%E'B%:kA0^9+zL9S0$G!D78B#A"`E;׹Ʊî¬ݽìϸиظѳĨַī࿦ԵͮӴնnPD; 11/---'('&'&&&&(('('&&&&&&&""!         -)$ULD_UKocXz}MG@   $%(#("1*$0*$2,%70)81*;3,;4,<4,?8/G>4H?6{rfyyru~|wzɼ̿ʼ˾·ʽϿƟȣƠßϯ׸ַ˭̯Ҵб̮ΰظۻӵαêȯеĥǸɹһּğȠʥήҴΰϮɩǩԷ۹۹ԵԵٵկԲָظӴӵոݿҴҴӴؾ̫׵ݻۻܹ۷ԯֱزӮЯϱɫһ˹ȷ²ȹƢϾппÞƢȢɡśƝˤѬϭɧɨͯԴЮϭͭίұΩˤˤͨЪͥ͡ˢ̣̻Ϲ˭ήƤĞ̼̽ʻѿҿųűġǤտҺ̶Ȣ̧ɣǵpWP@=1%]UMe^V]WP[UNZTM_YQd^V_ZRZUMWRKVQJVQJQLFNJDLHBLICPLFKHBIFAEB=?<8DA=FC>GC>DAHFBJHCNKELIDKHCJGBGEACA=?>;?>:<;7;95;96?=9;95;94851@<6E@:TNFb[Rph^{rgxkx}xtwz|~{vsuoojcecfoqkhkljz]XK8dXKyla[S852 !!!""*(&KF?ph^sw{lbVK|l]x|{yxzvvx|pu~}n2.*|pdxlvj{ovi~n{$" *(%,*(-+)-+(-,)/-+.-+*)'*)&-,)-,)-,*.-*-,)-+).-*0.,0.,0/,0.,       !!!"""""""###$$$%%%%%%%%&&&'(''(('('''''(('(('((()('(('''&&&%&&%&&&&&%&&%%%$%%$%%%%%%&&%&&%&&%&&%&&%&&&&&&''%&&%&&&&&&&&&'&'''&''&''&&&%&&%%%%&&%&&%&&&&&%&&$%%$$$#$$$%%%&%$$$####$##$$#$#$$$&&&++*C@;f_V{n~}~~|wwyvr}p|o|oqtz|}(& M%R* U*]5'g?0oE5g>-6-2& 630,." '9:9-    8?G'E(- C#I&N)c9)f;+m?.rB1l>.b7-b7.\0&m?0cKZEWBm@0l?/[5(;<:M(v>-s>/a=.aD4kK8jI5G-!745647 @#A#>"=!4( 1>"K)!F)!7!+$/G&A#:8/"$* ' # (:A"@ ;7?#4H1$pN9^6'X.!E#! .A![1$J* :$D%@% 7 =$+%(- 77+ = G&@!2DV&C( `5#<# $ 2AZ4'_5'S!FB@S%U%[1!m@*_6$T/!W2#L&,<]2%Y/$F'B'D(<#=#N/%`;/nD4E&L$D 78B#:{j^ŵ±°ĮƱǯ«ƪ¦ַۻͭʬӴ˭ǩ{zhTH=..-,,,'((&'&$%$''&'&%''&&&&""!      62-MF?XOGKC;A81VMD|vv{xvuWPH    !% &!*%("2+%1+%3-&81*;4,>6.<4,=6.@90F=4G>5wnc|}yuv{y|~²˽ƹȺͿŹɽǼøɽοͽʺϾÝßϯյع׸αոݾܽڼٺԵյ˭ɬپӹͳ˲ͳȪƟÜáɪհװױںٻвЯӳ׸޿׸ҭӬ״۽ټյͮշټٽոѳշ׺ټۿܻܻۺٹճٶسְԮԯӲʬɬвӱЫşȷƶͩɥϾǷŶ;ƠǠÚ̿ÜʦέӴҲ̬ͮұү׵ַ۽ڵҬӭڵӭʠˤѫȤ˫ٻշʬտ̻̽ȹƸʺͻʷʶлȤǣӺк׿ȣΨӮͨ˹s[UDC7*kaV{owl}ti|tixm~r}rxmyrgvndtmcoh^ph^pi_oh^qj`qkaqj`nh^hbYhaXicZjd[g`WibYf`Wc]Uc^UicZke\ke[jd[c]Uc]Uc^Vb]UgaYhc[ic[f`Xc^Uc^V`[SXTMUPJPLFIFA@=9:746410/-%%$#" %#!,*&30+>:4HC<\VMhaWrj_xlymw}~vqt{Õɿƽ{vsnllqw}rnvwm|\\P;ZL=|ylb[S962  !!'%$FA;ph]r~g[Pn`Sorzlzmyns|qx}yvzt;50pf[vjwkympe[tes'&$/-+*)&(&$)'%)'$(&#*(&-+)*)&)'$+*'*)&*)&/.+20.31/31/43032/10-0/,$#!       !!!!""!"""#"#$$$$$$$$$%$$%%%%%%&&&&&%&&%&&%%%$%%$%%$%%$%%$%%%&&&''&'''''&''&''&'''''&''&&'&''&&'$%%#$$#$$#$$#$$#$$"##"##"##""#""#!""%%$751UOHsk`|pwz}~~u?R)S*X."d<.lC3sF4\3$-6K'D#>"2+! #   7:76  5>>!G*. 3J'E"Y2$f;+j=-qB0o@/Z2$\3)^3)^1%WB^HyL9}O;g9+mB2E#;;=i8(s?/b?0bF5kJ8tP;jH5<#34546>"A$?";7B&>& *iI5d?-Y.!M(%(7 Q*V/#<%?%F!, 0>$3$(+ 68-7G&E$6:T%T%5!F&m<'* " , =M* `9*X*OB@E!V&Q#[3"m@*]4#X2#Z4$I&$ 5T,"^2%O)F'K-#U7,B) ! /K.&A'5M%@6 8A!=hXOv}}zvwȶϻ͸ȳɳĭììªvi\Q50,;85310"$%"#    C>8ZTKQKC@:3<4.7/(:1)PG>wu~qyl{nxlxl|pSNF    $'!(#+&(#3,%2,%4-'92+<5-?8/;4,?7/A:1F=3E<3sj_}zrov~}~±ǶͿƸöƹʽɽʽȻ̾п›ĠϯںܼԵѳշ۽ۼնϰΰػջδǩΩҫԲ׸޾ڼڻ۹ٹڻܽ׺ڼ׶յۼڼݿҵ׻ܼۺۺ߼޼ݼֲձѬزԮЫұвҵ۾߿߻ٳΧşɤѬ˦Ơ̼ʺϿ̧ʣɠĝǣʨŦָ̯ӳϯұٶ۹ڼӯЫֱٵѭŝȡ̨ɩϰո۽дçϼǸ³ƶǵɶƳιǤվĞǣ̨ҬڵϫͺuaZHJ=.xm`||~ztvt}q~r~qsuwwxt}q|pym{o|oxlvkxl|pt~rymznznym|p|p|oxl|ti{tiyqfog^slaskakd[f`We_Vd]T\VNSNGNIDMICFC>A>:;9610-)(' '!qiQqvot~ȿú~zwmppvomttk~\bYAUE5ypf^U:72 !  !!%$"C?9og]znyzqdXi]P|j|lwiqg]yoe~stx{zyv~sv|pxkvqE>7kaWtiwlynznsqb*)'/.+.-*-+),+(-+)-+)*(&*(%.-*.-*/.+/.+-,)-+)1/,43054143042/430430531.,*       '%$.,*+)'(%#$"$"%" '$"'%#&$"%$""!   !!!"""##"###$$#$$$%%&'''(('))()))**)**())'()'((())'((()))**)**(**())'((*+*<:7\WP{tj{|}lcYL$R* U*`6)iA2rF5d8(8+M'^1#M(%& # "!    3:97+ 1;/?%4 /D"=B$Z4%pA0qB1b7(R+\2'Z.#rC3eMzJ8]."b5(k?0Z4':<9T,!p?.fC3dF6jJ8tP;mK7H.$14446>"A$?#=!3(/;# K)"H)"4 ($4F&@#981) &'$!% 79;1 3A%G+& S:*hC1Y.!T,1! 3C"\1$G);%F$6 #$ ;":!& ')191.E%G%<0N#T&;!1c6$^3!'8F!`:+f:,T"IAC O$W&K a7$l?*W/V0"[5%N+ -?!^2%[0$F%Z7,dB6V7,&, ?'!=$  >I$;6 7A"?YI@xkvvus}pzm{m}o{n{nswz|{zyz{|~}utwksh~rfncY[QHSI@KB:B:31,'$!QKCSMFHC=>823.(/)#5.';2*>5-LD4D;1og\|vnjp{ǶŜƙʻͿǼĘȻʼȺ̼ÝÞƣ̭ٹյ˭ˮع׸ֻܾͰԱڵ߾ڻںִҲԵ߿׸ָֺڼԶԲаӴ۽ܽ۽ܾٹط۸ܸԱݺݸٴְӭְسطٻػ۽۸۶ٲԭԮԯѬϩƠŠɤɣŞͽȦήԾѺǪгնط޿ϮǤǢҮӰ̫ßΧٳή̮̯ڻٻдʧĵõƷȷʷǴлáʨǣˤӮЫɥϩ޹ֱϼwjbNPB2wk^|{{yzz}~|}{y~}z{}yzzs{nxk|ovjuncph^le\c\T\WOXTMOKEGD>=:654142/1/-D?8q}zwvztpnplgookbh_GP?.qvme[=:6""! !!%$#A=8ldZxlvrqc\QFvgY{kynwnd}r{p{qyovl{p~tt|rgynctg{kE>7e[R~rgymzn~qtu -,*43121/10.10.10-/-+/-+0.,.,*-,*-,*-,*+*'+*'/-*0/,20.43031.30-42/753864&%#       " 85396474152/52.52/741742863964:7575330.2/,2/-0-+2/,/,*0-+,*(,*(,*(+)',)'(&$&$"$"  !! ! !! !! !! !!!""!"""###$$$%%%&&%&&&''*+*=;8]XQyrhw~]VM8Q)S)[/#g>0qF6k>-Z0#K&U,[0"P(3 ! #    -:=E$4 2( 07 ( = @= ; a8)rB1h<,S, U)Y,!D#S?`Ic5(\."^5'f=.@;;B"e;,gC3dG6jJ7tP:oL8H.$15646>"A$@#=!5)+8"H)"J*"6!(%6 G'A#: 82- ('%!+, 3;,#>$I-42!gE2[2$W.!;/9 R+T.#;%@%>(&" 4=$-%)$#-( @"G&A",DV&I # 'E%g9%2 2AN,!h=.a4'PDDR+V&S%H!h=(i=)R*P)T+C$# 34Z0#\0$=W5*gD8[:/- - G.$A(#(AG#A!5 8B#>VD;t{{{zwxxvvt~p}o~psstvs~prrrqtwyz{|}~}vRJB96040+.)$,'"/)#6/(;3+;3+<4,SKB|oqtqqymuivjvC>8   !& )#,&.(*$6.'3-&5/(81*=6.@80@8/?7/C:2H>5C:1iaW{{uustx~ǵ˜Ǜ”ƘɚɝȜʞȝ̿̽ǷϾƠœ̮޾ڻԷؼپԹټַٷճѮϮҳܽۿ׺ݼۼٻ׺ۼ޼ܺٸۼݿ߿޽۷ٷ޸ڳӬر۶޾ټڼѳѰٴٴӭѬӮϩɣÜп›Ü̼ĥҺѹռپåϭڷ߼޾ںѱղӯٵ׵ʪʦְЯʬɭַַѳťҿ̼ŕ̟ɠӿš̫ѰձٳٵʧɤѭҮҽ|wnXRF5pcV|~~|w|{vymvk~vj|ujvndibYd]T^XP]WOVPIWPIy}}z{~ûĻüztsnnkpqnfnfLRA.vhyqi^D@;&&%!"""##(''B>9jbXxl~~zlpbTud~pa{oc{o{o{rh~tjvlwmxn|rixm}suvuw~oJB:k`Utfylsfwjnt ,+*97543143143165364243142032020./-,0/-20.21.20.20-.-*+)&/-*20,641873:86431             &$"?<:=:8?;8=:7=:7<96;86<97<:7964741853964;85<97>;8>;8<9685320-20.52042063152030-0.+.+)*'%'$"&$#(&$'$")&$-*),)('%#'%##!"   "#"&&%652RNHlf]{tizn~rvz|~{xx|}{wvz|{|~}{~}vsvy}~LC !    4##; @= ; S0"m?.n?/Y0#T)U(B!T4'dM~M;\."X.!h?/Q-!:<:Q0%fC3dG6eH6rN:pL8N3'05647>"A$@#>"7* ) 5 E)#L+#8"(%6 H'B$: 83. ('$ * 8" + :- &=$J-<#V;+a:*Y.!J& )7 B!Y0#B';%?!-'#4=$6$('   7G&F%3:T%R$2 A"d7%N)* =N(`5'b6(T$KAI!W*V&IN(k?*e:&O'J%P%7" A'D&> [0$V-"<Y8-iE9X7,.* ;"C($1 # F"U. H'4 8B#< [J@~}yuvz}}{yvwxwvur}o~op|nykvhugugxl`4/*$ (#-'!2,%:3+<5-;3+;3+PG?wk{m{nwjui}sg}thxlLF?   !&)#,&/(,%6.'4-'6/(81*>7/B:1A90?7/D<3I@6E<3d\Suzw}|uuxǸɜʝ˞ѥҧӨҧˠʡʡˢʢȠɢƣѳٻպ׼ھ޻׳ұҳ˭ײѳݼ׷׷Զնۼٹݻݿ۽۾Զ˩ѬزӮΨկԮʤƞȟȠȢɥʨˬβͱӸеζԿͩصݽܸұϰѯ԰ҰȪŨ˭̮ȬڿҾǗΡ̥͢ȤƤԳۺصײڶضԱϪŢǤmZO>qbS|}~u{nwkzqfype|rg~ƼȿŽĺǿ}}|}yuw}wssultmPR@-yl^zqi^HE?)('$%%#$%***EA<9><9@=:A>;@>;A?;8?=;A><@=;75341/52074230-41/41/41/30.20-)'$%" " " $" '$#)'%*'%(%#)'%%#!$"!$"!#! " " ""!""%!&"'#,'#0,'62,95/@;4D?9KF>PKCVQI]WNb\Sf`Wkd[pi_tncyrg|vjym~rw{}{~~}}{{{zwuvy}5O'U+ ^3'mC4pC2a4%^1#^1#T+BD3 "# # 6* > ?A!C$)    *&!7A!=< D&d9*X0#Y1#T+V)F#*~Q=`Ic4'\."^6(e<.=<;B#`?0eG6eG6kI8pJ9P4(05755="A$@#=!9+ )2A'#O-%<$)$5H'D%: 94. ('% ) <5 6. (=$J-A'"  5#b>-Y.!V.!2! 4 5 O)O,!:%A$7(#)<#;"( &)"  -E%G&= /O$V&A ) g9&p=(($ 8Fe5$j9*[-!T&GAK"V&S%A^5#l@*^4"N&G&H$)'G+ K,!E$P*>!?#dA5fC7P1&/* 8@&!2'% J%W0!E$3 8B#:\JAz|yy{zyustuvx{~yvus~ovivhzlwkri_1-)!'".("5.';3+<4,>6.A90SKBxl|q}qxlwksuymLG?    $("-&1*/( 7/'5.'70)92+>7/E<3C;2@80E=4JA7H>4c[Qszw~ut{ɺɜ̟˝˝ʝ̡ЦѦǜǝˢʢƟŞɢ˩ԵӴعۿؼھԶ۶ۼܼܾ׷ݽݿٺԵбЮԳظݾԵٹض׳ڴܽغո̫ͨկԮ˦ͧЫԭزΦ̤ШҪհشЮˬֹ̯Ħ¢ǣҭܹ߿ڻطȪҴֳֵܹ̫׺ݾͮҳȬŨֿ“ɚϢΤϩġťӴٹ׶ձ԰޺ȥßʷg[IhYI~xuĺ¹ǽØÕº~|z{{y~yv~uuzq{uVYH3wi[sj`HD?(('$%%"#$)*)FC=me[~rsykufXu|qwkyoeuj|pwl|rg{rg{qg~tjv|r{pdugKB:% 4-(81*?5,G;1UI> 863<:8=;9>=:?><<:8863641<:7?=:?=;@><@><8=;6:73;84>;7=;7=;7/.+       641@>;C@>DA>C@=C@>B@>A><@=:>;9A>;B?B?<@<9@<:?<:@=:B?<>;8=:8<96=:7<96<97>;8?<9?<:@=;86430-.+(,(%,)'/,*1.,1.+.+(0-+30-631742521+('&$"&#!&$"#!#! #!!!!!%#"+)(*('(%$&$#$"!$" $" $" %"!#!" "#!$" "   &"($!)%"+&#,(#/*%2-(50*61*<70<60<71>92A;4E@9IC;LF>OIAQLDUOGYSJ`ZPe^Tg`Vnf\umazqe}uhwjzmrwyy|~u=P)[/#f<.rG5b5&]0"^1#S*>F I%% #"* ;: ;S.!K)F%5!    ' .= >=!>"_6'\3%P*U,X*M$)N1$cLN<\-!Y.!h?/Q-!:<:U6*fG6eG6kJ8mF9R1+258 56;"A$A#=!; .(2>&"O-&B' *$1G'F&; 950)'' ( :E#+11 &<#J-D)/O3%\2$Y.!C$ /6 =Y0$A'<%;)($5=$0%)%  $ @#G&G%;EV&M") # :k;'E$0BS)tA-l<,W(R(ACQ$V&FAe;'j>)W.N&G&>"(+A(M-!D#3& M0&gC7O0%C%+ + 39 /+ -+N(W1!C"3 9B$:WF=s~}~{yxz}~yvuuvs{oym~rwyyyxt~q|o|nwkrj_1-)")$0*$5.'92*<5-@80C:1VNE|p}q{owodvmczn~q~rLG@  !%*#/(4,!1)!8/'5.'71)92+?7/F>4G>5B:1F>4KA7I@6_WN~s~|xyzϼͻҦѤΠӥϢʞ̡΢ǛřƝšÛɢұ޿նϱۿֺ˰ӷؼݿ۽ڵݶػܼٺˬھƧбۼۺ޾߻ͭâΩ޶ݶ۴ٲܶ޼ַѴʮĥǢΨӬѪʤşΨѫ̥̦Χ֯صصشίֹǪæɩΩѬ߼عۼ߿նӵֵԳʪťή޽ݼҴҴѮѤ֧٬Χͩ˩ħͰ׹ڹ׳ڵֱͫʧğshR^M=}|~{~|ǼȾƽúȝÔĽ|{vrty|~w~xpvpzY[L6l]O~umbIF@'''%&&$$%()(DA;=;8963964:85<:8><:=;9=;9=;9?=;?=;@?;A?<@>;A?><9        %#"!DA>GDAIECLIFLIGLIFKHEKGDJFCHECHECFCAECAC@=A=:C?DO)6 "# /=?**Q-M* F%=  !     ) 9= 0L+`6(P+S,X+S'6vL:cLg9+[-!^6(c;,=<:C' aC3eG6jJ7pI:T3,258549!@#A$; ; 2(1;$!K+%H)".$-E&I'>"9620(+ $ & 9H$D"09':"J-F+6  3!\6'Y.!S- ) %7 3 M(O,!;%<#. (&.=#8 %((   7G&F%F%F"S%N$9! @"U.(?I!c4!t@-_0#j=.Y0 P)O$V&O#4 L'j>)d:&M&O'E#5>!5=&O-"@ ) /_=2b?3E'@#'+ )9 13\6.' 3R+W2!@!3 :B$9`PG|{{zxu~rrsr~q|ozmvj|rfzpexnbqi^c\S+($% ,&!2+%6/(:3+=5-?6.A8/OG>sk`woeymvk|thwk~ui|oNHA   #(!.&3,!5."1*!8/'5.'71):2+B:1H?6I@6D<3F=4LB8I@6`XOy~}|òṣ̌ԩѤ͠ѥ֩΢̠̠̠ƚÙĜŝș̂ںعܼͮϲٽֹ׺ܿݻܽ޿ڲݿָܽήƤ¡äбֶݽʫӱ޷ԭ߷ڳزԳַغڽոϮĞǠȡǠÜȡЩԬҫΦӫұִܸطݿʬɬԴҮѬٶ޾ܼݽܻմʪѱ߾ֶնֵѧԦثͥɥ˫ƪָܼղҮٵܸܶԯٵ׳ϩ{oXRA0xkx{{wtvu~rvx{z|~~y~}ĹƼƼøĚƗĔ}|{z|{~~~{|xmmk]aU>bRC~{sj_IE?&&%%&&$%%(((C@;kdZu|rgwk_h\Oygxyzyzzy|||}tf674fd^~10.FDBFEBCA?><:<:7><:?=;@>;>;8<96?<:?=:@=;A?<@>DB@B@=A?;C?IECIFDKHEJFCOKIOKGC?;C?B?92C=6HB:LE=QJBWPH]VM`ZPf_Vnf\slaxpdzrf|thxltx|ZEBN(<" ! ##4>?5 G(O, F%C#)$%    -6=; /O,!::B%]@1eH6hI7pK:]91648547!>#A$; 97(, 9!F)$M,$3%)A$J(A#: 821, *( #7F#M'.$ ;*5I,H,9!,M0#Z1#Y/"B$ 2 7 :V."@';$2('&7=#+&)#  /F%F%E$H$P$L#3% # >!47G Y.k9$yF2wK=pD4^5 ]4V(V&B/Z2!l@*Z3"H#O'4-G':">&O-#<( B)hD8W6+D&9&- ' :!0$b>5jC;;V/ V1 ;3 <A#8cTJtwyz{~}|~~}|~}zws|ouitk`^WN'$ &!-("2,&70):3+<4,>6-B9/G?7d]Toh]xodzqfwncwncrj^ulayID=  ")"/(5-"4,!2*"8/'6/(70):3+C;2JA7I?5D<2F=4MC8JA6bYP~~õʶƜʝУУҥթϣʞřǚʗϿěšǢظڼ߿۽ڹڻյ״ڻٻ޼ݽ޵ڱ۳Ԯά̭շټҲΨě™ͼŝΧծѪխݵ۳ذҰѰϮֹ̭ԶҴݼ׳ɦΪնطήں߾ն׸ٷԪѢݮݴӰƧԺȭ۾ְܸԯ԰ֱܵ߻۸ҭɷ}dG=05.&81*>70@:3?92@;4\ULyqfrj`e^U^WOf_Vog]qj`rk`xpevk|sh|rgymwk{oznttuvz||~}~}ù·ƼȾȾ¸ɺÞĔĻŹ¶|~}}zvqbcZA[J;{}wncKGA'&%%&&%&&'((A>:ibYuyordW}l[pwf~mqy~~~('&A?=CA?FDBFDBCB?>=:<:7<96;85><9@=:A>;B?CA>GEBGEAA?;B@JGDNJGMIGKGEIEBGC?LIFQMJMIEKGCKFBJFCJEBGC@HEBJGDLIGNJHIFDFCADA?@=:@<9@=9A=:B?:6853974964:86=;9>;:?<;B?=>;8:75;85:74852853964853842964964853964;86<96=:8>;:=:95211.,1.,63295462030.520631642864:76975:76<97><:A?>@=<=:9;87;86<98=:8;86:86:7684230./,*/,*/-*.+)/-+0.,1/-30.30.1.,'%#%#!%" $" #!# #!%" $" !!"!!""# %!$ % &!&!,'!0+$3-'5/(;5.;5.82,;6/<70B<5FA9JE=MH@SMEYSK\VM`ZQg`Wnh^tmbwpf{tixm|qvy{~M)!W-"b7*pD4_3$]0"T+>@L&>* ! " $ 4?<4! 1O, F%F%5#+    .?!>6* T0"X0#P*R*V(C!%3xL:bKl>/[-!_6(`8*;;<Y<.eH6fH6qM:a>3829756 <#A$>"6:, ) 8@'#O-%<$&'5I(D%: 931- *, !3D"N(G$$ <- / G+J->%3" )V0#Y.!S.!) )9 4 J%N,!;%6 )(%.=#6%)&  ?G&F%G$O%S%<,# " "*  2B[/i8#s?+xF3UEd9(\4[1T%V+6Q5%h>*g<(L(7L&, " D%<#@'I)1' Q4*eA5H* E'1'+ -8!, '7kA7R0(D!Y2"N,43 = A#8ZKBzn~qymxmwkym{nrsr~qsstuttwywutvxxxy|{xwwvtrzmvma[TL'$!&!-'!2+%6/'91);3*<4+=4+>5,@8.C:1D<2KB9MD;QH?PH>RKBUOF#     #)"0(2* 5-"4,#90(81*92*;4,C;2I@6G>4C:1F=4LC8I@6`WNy~˴ιϿĖ̟ѤϡТѤУ̟̟×ͽȸϾÚğɪ߿޽شܹڽ׵ѲӲ۸߽߿ݿ۷޹ڷݽݼݵ߶۸ӴвػټӴծЧˢǞԬׯڲӪӫ֯ԭխճӳǨƨͰغعܼڷϬӰҴ޿޾۽ݽֵЩ̞֩زԳɬĪѵܸܶصнs\WI:9465231.0.,#"ri^}wod!!! ,)$0,(?;5A=7OJCUPHaZQc\RhaWg`VkdZph^og]sk`}sgwmbuk`vncwkwkvjyl}psy{~~~δ̸ǼúȾŻ̺ã̧̪ȝǖǽɛɝ;¹ºy{yuqajbGZG5uxodMIC))($%%%&&())><8f`Vsvxgmz~~{{|}~yw><:DB@@>A?:B@;JHEFDA@=:;85=:7%#!              752C@KGCMIFJFCFA>EA>LHENJGQMJOKHNJGLHDKGCLHEKHDLHDJFBKFBHC@C?;?:7>:6C@:7?;8<7383073/73051/41/742;86=:9>:9@=;C@?B><>:8;85;86>;9?<:<8785384273041.0-+0-+0-*.+)-*(.,*2/-41/742520+(&'%#'%#(%#(%#(%#&#!%" &$#(%$&$"&#!&#!%# &#!&#!$!!!%!&"'"(#(#/)#2,%5/(5/(<6/<6/;6/=81>92@:3C>6HC;NH@RLDVPH[TL`ZQg`Vng\vnczsg{tixm}rux|N#\1%lA2f:+\/!Y.!D=J%?=*  ! #% 4>;(   I)H'E%=  , (;!D!7"?#Z2$P+P*U)K$),]7)^H|N;Z,!^4'mC2N+ 9:R6*dG6dE5lI6kF7C'"0E&: 46!;#A$@#591(4?$ M-&G)!*&/C$I'=!941/)- $ .B!M'O(994, D)K.B'4/ @#Y/!Y0"B$ 5 9 3P+A':$- (&' 9 ;")'(!  /F$F%B"L%T&E 1' # ! * 9K&H f6"j9$P:|L:iWZ2!\4W,X)i=,<%bB/W2#Q,>2I$&B$;#@':-,\<1X7,C%E(-(& 2-)* .E&[3&= ' L&Z3"G'3 4?!@":}q}xtx{x~r}q{oxlznym~ti|rgvjxl{o{o}prsrr~q}p|o{n~uhri^WQI'$!$*%1*#3,%5.&6.'81):2*;3+;3+:2*:3*;3+;3+70(.'     #+#0'3* 80#4-"90(:2+<4,>6.D;2H?5F=4B:1E<3LC9F>4^VMu~}ɻпȶѸҹʳʸôȸʞΠΠ˟˟ʝ˞țŚĚŜ™ÞԷ۸ۺٹ޾ڽҵͫΩ߾״۹׸߿ٸбҲܼܽײܶ޸ذ۳߶۲֯ЭѲвԶ޸دϦɡծ۴دѩӫլӪӫճַշͰĦɬֵֵطۻ޿ԴΨУ׫ҭήͱѷ߽˧mgUEC<@>:?<9>;841.#rh\UPI%"*'#51+=93HC>;8=:7:74974<:6?<8@>:A?<96740:74CA>EC@FD@C@<2/,           )&$E@FA=E@;FB=KGDNKINKIKHFIEBFB?EB>C@;=:7<96;75;85;74:64953620:74<96:74<97?=;@=<>;9:75:64=:8?<:=97964<97B=:JC>OGAWMF[QHYNFWMC\RH_TJXNESIARH@IA:D=8?96;74?:7B=9B=9D>:D?:KE@PJENGBKD?KEAMHDFB??<9<85=95>:6;74852:64:6373061.40-62/40-2/,2/,,)&)&$(%#(%#)&$(&#(%#(&#(&#)'$.*(.*',)&'%#'%#'%#)'&,*)+)()'&(&$)'%*(&+)'*('(&$'%#(&$*'%+)&+)')'%&$"&$"%#""! !#! %#"&$#&$"%#"%#!&$"&$"(%"+(%,)&*'$*'%*'$,)%.*&.)%.)%1,&3-'5/(71+?81=70>81?92A;4C=6GA:JE=NH@RLDXRI]WNaZQb[Rf_Vng]xqfxm|qsuwy~ncR!a7*h=.\/!Z/!H";H#D"D$O/$:#"" $&2>;&   4K)E%A"( +" (.7;( $ U0#S, P+S)P&1%S0$yI8VAX/#[-!f<.e=.<:K/%cF5dG6jH6oJ8M/(-O-$U1&458">#B$727(.>"H)#N-$2%); J(B$:720), ' * ?L&O(D#8:(@&K.E*54($T.!Y/!T."++9 5 :I);%3'*$0=$4%($ " ?;7D"R&N#5-# " &* W/T."Y.!h8"q=)T>vK;\LU-[3b4%uD2yL7iI4gF2L)I%7*, ( =!8#5 .,7!U5+H*D&G+#;'( ) -$ +* )4K)X1&63S,Y3!@!2 6A#;C+"z}u|p{nymwkypewncrj_f^TOIB# "(#-& .'!0*#2+$2,$2,$2,$1+$0*#1*#0(!+#"   %-$3*!6.";3$4-"80(;3+<5-?7/E<3H?6G>4A90E<3MC9D;2_VMv|{x¶Ÿɹǵϵ¥׽̵řǛŘȚɜ˞ʝɛǚɞȞ̢ΥҮӴݿڼںٹۼ׻ڽ̫ɨٺֺӶܼܺ޻ݽܼݾظֵͬ׶ݽڻ۴ݵܶذܴЩŧϱڻ޾߻ٱ̢ͤׯذΤȟϦد߷ܶٸٻдӸ׹غ۾ͰĦϰٹعںָгڻۻֳ׮خԯӳٽپۻ̩zq\YRHWPH[SLYQKLE@-$i^Srka1.* ,)$2/*:61NHA]VNgaWjcYxpd|shzrfwkwk}ptϴвɤę·ĺȼʼŴвǩԾɥի̛ɼѿ;̽ɺŴ}u}|qrulxpTXE0teypeUPI10.$%%&''())985d^V}q~wk}rfykzxuuporvstuss} -,*EC@DB?EB?B?;B?=DB@ECAECAC@>A?<>;8741741:74?<8=:7A?<9B@=GECKIFEC?           GB>NIEKGCMIEMIENJGQMJPLHLGDKGDOLHUQNVRORNKTPMUROOKHKGCHC?GB?FA=B=9A<8A=8GB>HD@ID@ID?JGCLIGKHFHEDJGEGDAFC@FB?C@=B?<:=:8<86:64852852741852?;9=97:75:75976<:8>;8><:@>=?<;>;9;87FA=bYQsgtw{}xuqwh}m`|m`pbW`UL[PH_ULj_Usf\vh]tf[qcXyk`~oeqcXeYOaVNYQJIC>D?;F@;JC=PHBNGAPICWOI[SLYPIVMFNG@HA:695284184173/51.73/73/73/951;6295195173030-.+)/-+/-+0.,75386474252030.30.30.20.0-+.+)/,*0-+30-41031/-+)+(&.+(-+(-*'.+(2/-20./-+,*(-+).,*/-*0-+1.,2/-31.41031020/0.-20.31/31/1.-1.,42/41/75286396385273141/2.,3/-2/,0,(/+'/+&0+&/*%5/(71*93,93,?92>81>91?:2?92D>7HB:NH?PJBXQH_XOd]SjcYqj_xqf|ujym}qv{~cG=[."_6(\0"\0"M&;CF#?Z6*O1&F,#! % '3>;*   B$F%C#/)'  $10:- E&W/"P*Q*S'9# G)i=.{L:^9*W+\/#i?/O,!8B$_B3dG6iH6qM8W8,/E'b9+>$5;$<#A$>".8- ) :D%R.%?%%(0F&F&: 821+ +* ( ;J&I%C"8=)7J-H,9 2B"& 9X.!Y0"D% 4 9 3 B#@&:$, +6( :!:!)'+/$ :G#' 2M%T%?2( # 1 *(V.!a7(q>)h8"yC0N9pH;\8+Z1a7#S=V?mG3rP9cA/L(E$,).@($ 9 6"*0* 4A$C&G) K0'E0#59% #- +"29U1(]7.' ?Y2"R.;2 8B$8Q>5y~rhaX851 /*%6/(.%,$*"' "    &-%4+!90#=4&4-#90)<4,<4,?7/D<3I@6F=3@8/G>5LC9B:1^VLyz±ǯεҹԻǞ̛˜ȚŗțϢΡУ̠ƛǝɠΥ԰ݽбӵټڽۺѰԵ׸Դӵ۽ӴҴԵҳںںڹܶԯѲϱܾܽܺٱϣҨݵ۲Ц̢ѦѨׯݹ̰αغֶܻͯٺݽݾ߿޻ڱͥկֵҵչ׶˨pudrdykwkqeZ<3*[PDvWQI   OHAjbXjbX4.(:3,B;2RI=e[N{Ȯ̯ȤŚȽȺ̸̻׾ϲշŧǡ˽λпĘŝɺy|sqqiyqU[I4~qb{rfXSK430$%%%&&'((986d_Ws}}|~~xu '%$FC@HEBCA>C@=DA>DB>A?DB@IGEIGEEC@C@>=:6962962>;7A?;CA>FCAIGDIGDJHEMLINLJ320           852LGCKGBKGBMIELHELHELHDLHDIEAIEAROLYUSTPMQMJSOLTPMSNKRNKSOKQLIHC?A=8@<7E@<;75:64963<96<96;7585263052/;85>;9?<:>;9964:75>;9@=:7B>;E@=E@;9<:8;86;97>;9<97<96;85;85;85<96=:8=:8>;9>:8;85:74;86>;9=:874274275352020.41/52030/1.,,)'*(&*'%*(%)'$)&#)&#(%"% % &!)$(#1+$5.(81*71*?81?:2A;4A;4B<5F@8HC;QE=W+ ]3&]2$\0"S*=>F";T1'Z7+7!06, 2==. )E%E$8&,  " 1.32 3W0#Q+Q*U)C!$ 7 f;-c9+d>.K&\/#]2%c;,;>Z<.eG6eF5lI6T6)47f;-I+!1=#>'?#A$414'3@#M+#K+#*&*=!J(< 441. (. # 5G$J&* * 9- / G+K.>$1B#I%L(X.!V.".*9 7 3@$<%5'952=#/&(7?'  F#<" C T&J"3/$ # !2 24K* P,g7#i9#J6yG4`:/Q*[3m@,XAU?pM7qO9W5'L(B!,'A)H-"' 9"1*0,;!C&D'J,%K2(B+ 58 '%!% 23@"P,$D$" J&Y2!L):3 = B$6eVLywx{|{{{ynaZS<95 62.YQItk`qh]@7/,#*"' !      &.&5,"91$>5'6.%:1)<5-;4,?7/C;2H?6G>4C:1I@7MC9C;2XPFzyµóɶθѹ׽ħʫͣ̚ēƙ̞Ϣ̟ҥУƚƛśն߿ݾٺغ۾ݿݼ߸߿ӳаۼڼٻ׷غݿշӶعٷܻնǩӳۺۺܽ޿޶ݲ޴޴׭ϦӪܸۼݲԲӴۿִԿı{_PCWI:wod " .,)!g_Us~q53-'(#21)YSBiսչͱƣǝÖĺƻÜŤǨΰ׹ַҮǝѼžʡΨĜɹǹvmjkiz\]L7ufW}shYSL641%%%$&&&'&875b]Uuyuuvutsurrrqw~}ywzt{kEB@MJHMKHJHDHFALHDMJGGDAGDAIGDMKILJHKHFIGDC@=EA>C?FA=KGCPLHRNJRNJSNKPLINKIMJHNJGNKGMJGMJGMJHKIGKHFIECFB?FC@HDBIFCHDBB?=<96:63;74>:7C@=FCBD@??<:B@>FCAGDBGDCHEDFCBGA=dXOr©ζԼսѺ̶˴¬չͲϴշǫêĪϵϵ̲̱ƫĪê©t|mpqo~n}mvfo`{k]xi[tfZuh\l`Vi^Uj_Vk`VnbYsg]sg]qeZl`Vi^TdYPZQIOGAE?:;63851741=96A<8@;6>94>84B<7B<7>95<85=:7>;9=:8=:8<97:74:74:74963741852:85<97=:9?<:?<:=:8<97=:7=97;85<96>;8?<9?<9>;9>;9@=;?<:>;8>:7>;8?<:<97;85:75;86;8686474375364231/,*)*(&)'%*'&+)'+)',*(+)'! ! !   !# " "!A%\0$[0#[/"X- C;G#<J) b=0N1&7A!. 12-&    >!F%> #  -  1//2$  E&T- P*U)K$+*\6(i=.Q+ E&U+V+ [5'U1$8S6)dG6cE4mJ7bA152U3(W2&19B%>$A$=!,5) , =!G'!Q.%7!%+0H'C$4220)- ' .C!M'54/ (B'K.D)44X-": 2W- Y/"N*" 4 9 63;$;$-.E.:"5%'/ ?81H$. 3M%Q$:3( # &2 =A"S/"<e6!r?*N:k=,DW0\3sG3R=}Q +!U7)F,!.>$)0,-?#D'E(H,%K3(8%(3 '!"& 117@!K'7 2T- U/J(74 @"@";uh||}~~ywxxl]WO852$" D?9kaW}rfyocB:2,$*"&       &-%4+"91$;2%6.%:1*<5-;4,?7/B:1I?6H?5C;1I@6LC8C;2XPG}y|Ⱥ˺Ƶɳռŧʬ̬ѧѠŔŗ˞΢˞ʜ͟ըѥɝ—оɤع߿ܼ޿۽ܿغָغִԬլٶۻӲӲմٻٺܾܿѳ޿۾ڻ߾ݼۼ׸Դ޿Ե׷ڹέݽ޴̣֫ѩ޼ڻܿײӰʮֻԹֻȰ~l\N=+t   -)%QKD!bZPB?8/0)99/`ZHmԼ׺̰̿ęʟ׌ֶָ̧׺ۼܺӭ–õǥžɠϩɸětqqokifWAo]Nxl]WO973&&%$%%$%%764_ZSu~yusvxwuuuvx~z~{wt}mxhs:86QNKROLRPLOMJOMIPMIOLIIFBFB?GDAHFDLJHMKIOMJNLINKIMKHLJGKIFFC?B>:FB>KGCKHCC@;'%"                      @=:MIEMIEOKHPLIQNJYUQ]YVZUQWRNTNIMHCOKGVSPTOKPKGOJGKFCJFCHDAKGCQLITOLRNJOKFOKGRNJSPMUQNUPMPLINJHKGDJFCNJHPLJOKHMIGJGEIFEJGEKHFMIGNKINKIJGEEB@C@=A>;C?:B>;D?GA;@=:?;8@=:?;8?;7@<9B?<@=:?;9@=;A><97<97<97:85:75975975:75864/-+-+),*(,*(,*(-+).+)/,*.+)$" " !!" $"!" !" !!(&$(&$'&$'$"P,"\0$Z/![/!K$:C@ ?"^9,b>2;$* N'57"  $ $ 2E%C#,, %  01.3) & H&P+R*R'4&G)g<.Z2&D#E$Z."H%]7*AG*bE4dF5jH5pL8I.$/J.'R2(55A!D&@#A$200(7@$O-%F(!'')= I(:221+ *-& <K&A!16&<#J-H,9 2M(X-"J'X.!X0#9%8 8 47<%5&?D56' '):@,@C!*D"O&D 99# $ &6> K* J(7 e6!l<)q@/Y.!K$[3b8$rH6sK8uP;rO9V:)E$M(9+/fC28 6;"& 1* 4C&D&;3J4'3!+ /$ 4!"+:"5 B#=A!I&$ D"V0 P+G'3 9D%;L8/}p{}~|yxt{qfVPI20-%$"FA:i`U|qdwmb@80,$)"%      ' .&5,";2&<3&80&91)<5-<4-?7/B:1LB8I?5C:1H?5KB8E<3SKB~{÷Ϳͽ̼ƴ«Թȩΰ̡̫џОϠҤةӥϡ˜Т͠樨ǝԮ߿޿޿غ׹ܽ߿ݺԫԩسܹӱܼ۽նӵڽ߿ض׶ַݾֵ۰Ҩزظټ޺ڼҶǬéֻrP<(w""!    2-)ri^50,PJBYTJDB6OL>ohRpȰΰͰƩɷǻ—×ƚɤԵӶֹݾܻܹҪϽɨƣͦΨ›ҿʤѽͷŰw{{urqq`JmUB{~rf_WD@;0/-**))))<;9`[Tu~z}{wurswuvyt|nttsyzx{+)'DB>IGDMJGNLHJGCKHDLHDOKGPMJMKGLIFMJGNKIKHFKHFLIHLIHPNKSQNQNLKHDFC>JFBLIEPMH><8                     PLI[WT\XU\XU_[Wd`]hebhdada^c_\d_\ZUQPKGSOKWSOYTPVQMPJFHB>E@QLIVQNWSPWSPUQMQLINJGRNKVROWSP[WTYUSVSPVQOVQNTOLQLHNJGOKINJHPMKSPOQNLOLJLHFFC@IFCJFDIFCGC@B>;?;8=96?<9B>;C?=C@>C?=GDBMIFdYRzj§ѵԸԷαгȭèβα̱еոдȭʮɮڿڿе׺Ѵϲչβƫ۽۽ӵ˭ĨȬѴϳèéɮȮƬtwvqunyhyizjzjteyj\pbVnaVl`VqeZvh]xk`}pdshzncncYcXO]RISKEE@;<84=85B=:HC?KFAGAC?;?;8A=:DA>GC@HDBGDAFB@@=:?<9>:7<96<97;86;86:76:861/-0.,1.,1/-1.+1.+1.,1.,2/-1.,41/741631/-*/-+.,*,)'+)',*(-+(-+(.,).,*++)<+'[0$Z/"[/!R)<=D!5W4(c>1Y:.' L&Q*/ .   3  A#E%8(+  ,4,6, ! < Q+Q*T)A $ 8 ="A#K'>"O)O'F(X2&> ]@0dG6gG6rN9Y;,0?$ S3+7!4;E$B%A$:!)3) .="G)#Q.%3%*/H'A#322. (0-7C"J&* ) 9). H+J->$34S* F#+W1$Y2$R,!%/: 2 2:#:$, .M#>:"-%(, ?= ' H$1/L'K$8=<# E"A"* <?![3%P)I&g7"X1"B"K R+[3kA-tK8wN;uQ;oM7:&6I&2(J0$kE4,:"1-0+ ; D'B$4/I4'+. ) 4<% % 3E) 8!M*C#D#G$A"-Q*P+Q-!>!4 ?!C%9fXO}}zz}~||}|zzzxtstqxocSMF/,* -+)MHBldZ}thulb?80+#(!"      ' /'5,#;1&?5(;3':2*>7.=6.=6-C;2PF;H>4B90I@6MD9G>5QI@~y{ŸĶó±зپǩӵЯǝŕ̜ΟС٨ݭ٩ҡѢҤ̡ƝȟϦֲۻܼݾݽ޾޴ܽӵͰٷֶٺѰ޿޹ܽۿؼ̰պwXA,~n)(&  -)&ymUOGJD=ohYpjS{t]i|ȰֺֺԹһĚɝ΢ϫַѴֹڻٵǣ¡ťǦծװΧЪ۶ţ׿иy}vvxqXpT?{zwncYRJGC><:7><8LJFid]x||ywv{xy{{xtzmuvwywo¾¾¿" EC@NKGLIEJGDIGDFDAHEBLHDOKHNKHPMJROMRPMQOMPNKNKINLIPMKNKHROLUROQNIIEAEA=FB=DA<                    .,*WSP]ZWb_]heblhelhejgdgda`\Z\XUb^[]YVYUR[WTa\Ya]Y_[X[VRTNJOIDKFAOJFQMIPKHQLIPKGPLHQLIPLHPLIRNKXUR[XVZVTYUSWSPUQMTOKOKHQMKPMJQNKROMOKILIFOKILHEGCAA>=CA?EB?E@=A<9>95<84<84=:7@<:A=;D@>LGDuh^ƬֹҶӵԷ˯غۼݿٺϯбַݾ׹ǩŨѴӷѵ˰§ܻۼӵçǬç~zuvhqdWh[PbWL`TJeXNqdYvi^obVi[PeYNaVLXOGNF@FAFB?EB?B?;D@==:7?:7A=9C>:D?;B>:@<9=96;85:74852;85<9752/31.530:6474152.630631520530530O1*[/#Z/!X. C:D ;6O-#b?3L1'<X-"? * )7 /8E%> ! "- # 4 -7>#"3M*P+T)J#)+O-!3E#C$@#S*7T2%G%S7*dG6dF5pL8dD275U4,?%29A!J)!A$@#/-.(7@&"Q.&E(!%)1@"H'8221*- 01>@ 7 8/ '@&K.E*530K%*C$[4&[4'F% 0 6 - 7:$G)A EQ%="7 %(&2@329!?L'=8>5, Y."=4= I(d7&S+4J'>"BL#X0\4nE2sJ8yQ)'% ! .,*KGAhaXwodrj_B;4)!%       ' 0'5+":0%@6(;3';3+A90?7/:3+D<3QG4B:1LB8ND:I@6ME=}|~ζŦ̭ӵͮɞǗӣרק֦ңӤԤ٪ݯԨ͢Ѩٰ۷ݼܽںعݽ޿ԷۺٸԴ׺ػٽضήҳݼۯݾ۾պūѶ^I6zk[B>9  uiph]>:4qmw}εܿڿƩέɢɝϤӰٺӶгϲۼʨťäɪڵ޷ֱܷѯ̴ֽî|w]hK4t{ouj_ldZ_ZRa\Tlg_zqwwwx{~~{~xu|{¾¿¿¿  DB@NKIMKHMJHEC@@>;?<:?<9D?;8]XT]YV`\Zeb`hdbhdbgcad`][VRNIEPLIVROUQNTOLZUR[VS[WTZVTZVSXTPUPLUQNXTPTOKRNJQMJRNJWSPZURUQMOJFTOLZVT]XVZVTXSPVQMTOKRNKUROZWTZVUXTSVRPNJGLHEIEBHDAB>;C?=GD@JFCKFCKFBID@HC?GC@GC@GC@HEATNJvjͲԸۿػڽ۽۽۾ںڹڻӴͮ׹غغۼ߿ںԴҴƪĨƪçèĪ׻ͯعɮϵʰ¨ѵȭ©Ʈɱxvz}xr{jrbpbUi[Oj]RobVqdXug[yk_qewjwkqexk`sg]k`W]UMYRL_WP_VOcZRg]U_VNcXOj^UkaXj`Xc[SUNHKFAE@ID?MHCNHBJD?JD?LF@GB2.Y0$Z/!Z/!L%:?A!4;V5+a@4C(R*Q*0 * -?% 'D$C#0 , % 1/0I+"1 ( G'P+R*R'5$H)X2%A!H&=!J+E%4\6(L/#cF5aD4_?/nK7D+"/P0)Q1*16<K)!L,"A#:!'/(/=#J+%Q.%3%-; J(A#222- )1,9?<#47%7J-I,:!237H$$ T/"Z5'Y2%6 ,:$<%T."R&R%G$:"+&(#8@+9"' J%D"4<=) E"T, 2=?!Z3%\0 8,@!O&>M&Z3a9%rI6vM:yS=qO8K2# B";"+'fC3A(16 *4* 3< :7$ 3 F2%$&  F-&,$0D(<$I+Z6$W4$f<)J'F$C# .O(Q+S.!F'3 ?!E&8rdY|}~}~~}yu~rrvyy~rqj`LGB*)'!! 1/,OKDkdZvncph^A;4%!       &/&5+";1&B6*=4(;3+B:1@8092*D<3OE;F>4C:1MC9NE:KA7KC;IJİů͵ؽƧԶϱΤРҢܬګק߲۫߰ڭٮݳذܸڼ޿ܽظݼӲƨȫӵԶٺۺϯҲ޴۰׭ܽгĨڻ׻_M;j[LWRJ  !! !! og\xlA=7~zȻμĥΰͯʮԸҳ̨ʠʟʦ׸ټոۺϮѱҲΰڷٵ׵ݻ׶Ѷ̴ijƵ¯|v]fJ4{lyts|ti}qw~|rhuk|pv{~x{|xs{}¿ÿÿ <:9USRJHF@=:A>;DA>CA=A>:EA=JFBLIENKHLIFGCAGDAKHFLJGNKHNKHKHEIFBLIEQMJSPLSPLQNKEB?              0.,%$"KHEd_\_[XZVSZUS^YV]XUa\Yd`^b]YWRNOKFTPMUQNOJFPKGWROZURVQNYUR[WTWROOJGSOKYUQYURYURXTQXTR[XUZVSWROYURZVT[WUXTRWSPXSPSOKUQNTPNTPMVRPUQOSOMMIGJFCHDAKHDJFCKGDOKIQMJPLIQMJQMJRNLQMKKHEHDAFB?TNHylƬԺܿǭɯ׽پǪʭڽոںӴշ׸ٹ߿ֶܼӴָڼݾݿݾ׹ָټոָڻΰũǫӸٽոˮ̯Ӷؼٽʯ΍ؽеʯȭéƫ¨ut{}~wzx~n}mor~pyluh]tg\sfZpcXxj_wi^pcXrf[qdZi^Tg]Se[RXQJLFAC>9HA;B 57I*!a?3^=1Q,!V,!<*' <#1= E%8 ',  .4,@%<# $ >"O*P*T)B $ 6Z3&E&H$?"B%L. , K,"V3']A1dF5X:,_>-Q4(.F)$Y6.6 9!G'=U2'F(A$1' , (8@&"R.&E(!&)2D%H'8220(0/3>A /* =), F*J-B'331>8>!Y3%Z5'Q,!#  4:$I*X/#P$Q$?#3$(%' >= ( 79K&97>7, W-!G$;> F&b6&E"*+Z-!\, 8 R+[3h@-rJ7{R=rP9jJ53 )D#3+&S5(/6 .11* 7< 94 3!D0$##,F-%% ( 4J,"=$M,\8$V6%a<(U2%B"T-!( I$T,R,V2'89F'@!Q=5~}~zywx{|zttmbOJD,+* !! !!#$$&'&974YTMtnd~vkrkaD>8"      %-$3)!;0&B6*?5);3+A90C;1;4,D;2OE:F>4D;2NE:NE:MC9KD;|}ŶνĠλϻѻ̴ͳؼѳвҩ֥٧٩۬٫߰߰ܮܰݳۼܽٶڱ߽ݽ޿аͭݿݿݿٺݾٹҲط߽ۺطۼܯݳػܾػʭũèīªcSDdTDpi_%''### !! !! &$"haWwKF@}οǡͮշͮˮֺϱĝΥֲܽټԷݼյַعնֵ߾߿ݼۿԸͳű˸̸ϺűffN8wht~v{t{p{o~rxlzovx}v¾ÿ¸ +*(MKIONKJGDD@@=9B>:D@=HEBMJGNLIJGDEB?FC@FC?FC?GD@FB>HD@MIFRPLQNKPMJMJF+*'                      753b]Z`[XWRNVQN_[W^YVa\Zd`^_[XWROOJFRNIVQMQKGKFARNJ]XUZVSXTQWSPWSPTOLVQM[VR]YV^ZX]YWXTQRNLUQOWSQZVT\XV\YW\XWZVTYURVRPWSRSOMSOMWTRURPPMKKGEKGDNJGQMKNJHJFDJFDKHENJHQMKRNLSOMRMKMIFHDAGC?\TMuӹڿɯ߿ϳۿؼػ׺ݿ޿ۻݽ׸ԵԴۻܾҴַܽڻٻعܽݾ׸عܽ߿ݿڽдè˯ǫ˯ʮçٹæ˭۽ҵг˱˰ֹؼӷë׼̳ҷؼͲūƬvnq}mzkyj}obreYrdWwhZ{j\]9.Y.!Z/!J$9B? 5>Z:/a@4V4)W,!J%. +!  *L,!$-E$@"$  . !$4 ,7B'$ 8K)P*R*O&.)R."R."C"F%@$T4%;"2[8,\>/dG6[=/`?.`@/26X6.D)"/Z4'V/$>T2'A$>#)) (.>#J+%R.%4 %.8I'A#222, *3.<@ >#<1 $<#J-G*7320 B##&N+Z4&Z4&D#   9#<%V/#V,!Q$N$9!&&( /@82,C G$5;>- E"[/"M%C"=S/#U.. +>k5'E 6 V/]6"oG4tK8zS>qO8W<+5C$*) $ ' 8!)5,,:;84 6#@,! $C*#K0($*<#Q/%?%Q.^9%W6%V6%P4&G-"Q+ >!8T+Q+W1$D&5 B#F'7sg~wqsuqvijcYIE?,+)!"!### !""!""$$#851XRJtlaypeme\B<6       $,$3)!;/%A5)?5*;3+B:1F=3?7.E<3PF;JA7F=4OE;OE;OE;LDyiYyws}q}qv{zo}qsx~~~¾ÿ¹¹ù   @=;EB?C@JFBC@:DB>EB>EB>GC@HEBJGEOMJPMKMJGIFBHEALHDNKGPMIOLIPMJRPNQNKROKA?<               WTQb^[XSOPLHSPMUQNTPMXTQZURXSOUPKRMIXTOXSOUPKXSOZVRVROMIFLIFTPMVQNVQMXTPYVSXURYURYTQPKGMHEOKGRNLWTR\YW]ZXZUSWSQVSPWTRSOMPLJSPNQMKLHFIECHDAHEBMIGLHFIFCGB?FB>GC@LHFROMSPNPLJNKHPNLUQOof_Ϸֺ̰ΰڼؼ׹նعں׶׷߿޾޿غ׹ܾݿڻٻټѴӶڼغܾݿݾ̮ϲոԵԳۺݽȫĦɬ§ȫڻָټոֹո̱γͲǫͰʮ¦ħ¥ˮӷ˰ۿѵҶƬygY- Y/!R*<;E#68P1'a@4^<1W.#Q)8+)"@&H)!!>!E$1+ ( 5#00G*!- .F'N*P*S(<# @$Z3&D#J&>!P1"L.!'J/&]=0bE5`C3R4&hF4E,"0T3,Q1*.I* sC2J'?H) @#8 % ) (7A&!R.&G)"&(4@"H'8210(0/6>B!11A 3 6H,I->$2312>" %9 V0#Y4&X1%5 -:$H)^2%T*R$J$,# (! ,>@05" & I$@ 4=;0Y."Z.!J#O+ Y3%[3%;+*U*e1$' ' Q,e=*qI7yP4?7/E<3QF5OE;OE;PF;9MJGIGCIFCJGCMJGLIEGD@EC@IGDLIFPMIQNKOLIOLJMJHKIFPMJQMJPMJOKHQOLSPNROMSPMSPMNKG"!                %#!'$#" 642SOLSOKPKGLGCKFBLGCPLGVQMWSOYTPVQLUPLVQMUPLVRNUQMTPMSNKRNJVRNWROVQNWROXTQVRORMJQMIWSO[VSZURZUQXSQWSQYUSXSQRNKPMJPLJNJHNJHLHFJGDIFDHDBIECIEBKGDMJGJFCHD@KHDJEBJECLIFNJHMIGHDBIFDNKHqg_ԽҶغػԷԸڿۿɭè̯ٽϳίήӳյյ׷ڼػӶӵ׹ָֹֹݿڽܼ׷նںѰ޾޿ҳܽ׸շշ޾ٸطۼݿټҵ˭˭ոfUU'X. E 9C >5A"]<1`?3[5*V+ B . +%  *N-"51E%;$.  ,5!+?$<# ( @$K*O*S)K$(/W2%M*F#B#E(U4%.;$\;/bD3cF5P4'bA/V9+.G*$Y7/66m?/rA1>?A#@$/& ( -="J+$S/&7!$16G&B$322, *3.<@ >' A!=<E(J-D)56A 1.& 9!I(Y2%Y3&P+!#   8";$U."^3%T)R$@! (& I) @>&  20J%;7>2D"a2%U*G#]1!d8'K),-2h3&R'!4 Y2lD1rJ7yP;qO9cD1% :4+! !  0631* 6< 93- 6#9& #F,$F-%"1H+!S1'F&Y3"_9&Y8&U6%?'N4&L1$S,!+H#Z/"R,[5)@"9G'E%J2)}|xuuvs~r}q{p|p|p{o{osxy{}}zy{xznicYEB=)(' !"!('%A=8d\R}sfuhqh]C=6       #,$5+#=2'F:-B8,81)C;2G>5A90E<3QGNJGZVS[VS[VSYUQYTQUQNROLUQNTPLTPLVRNVSPYUR[VRXSPWRO[VS[VSXSPSOLSNLRNKRNKMIFJFCOKHTPMVRPWSPRNKNJGFA=?:6B>:MIETPMTPNUQOVRPQLJMIFQKGxk`εڽ۾ܾҳԶٻܾظڹݼطյظܽӶͰͰҴոӵԶշ׶ұۺٹܻٷظѲظմݽܼ^6*X- Q);<D#58P1'a?3\9.W-!K%7+*  #=$M,".A"C$&- %# 7#-4D( $ $ ;H)N*P*S(:# F(X2%A!H%>"S2#@%+S5*aB3dG5Y<-S4%dC255W5.C("/R0%|H6e:+;@!A$<"& ( (6B%!R.&M,$*'6;I'9220)1/6>B!05B :A#I-H,;"0E$F"0 & " B%P+Y3%Y1%F#  /;%;"Y/#]2%S'Q$1$(B$\4*<< & * 8K&S)>=4X.!b2$Q'R)f5#b4#9.*G$k5'7!C#`9&pI6sJ7tN9pN8P6'-:2,$  ! ! 5M* :,,:;92( 0/ 0O3+D+##1@&V2(L&\6$^9&Y9'S5$6J1$M3%M)?!D#c4&T-T. @ 7 C$H(> |ob}}~|xvvwvs}q}q{oznynymynzoxlsj`[TL:73##"##"962WQIldZne[`XN94.        $-%5+"=2'G;.D8-91)C;2H?6D<3D<3QGOIBkcYпݷ۸ʤʥ׶ܾٻ޾մӾϦװҬɣ˴~gYH6}puwwvxxvv~y~s|r~ty|z¿¹¹ûļżƼƽƽƾǾǾ(&%NLISPMSPNSPNOMJMJGJGCHEBFC?HEAIEAGD@DA=C@:FB?FC@FC@JGDNKIPNLOMJFC@;84                    &$#HDARLHMHCOKFSNIVQLUPKYUPZVRYTPYUQYUQVQMRLHOJEQKFOIEPKGVQN\XU`\X^YVZTQUOKRMHUPLXSOZUQRMIMHEOJGQLHWRNWROYUQ\WT\WTZUSWSPVROSOKPKGOKFTPLZWU\YW[WTXSPSNJNIDIC>FA2Y2'R)?2*'% $2P.#A$6E$: ',   3!3,C'1 4E'K)O*S)H"&2W1%F%F$?"I+P/!) K/%bB3cF5aC3L."dC1H.$/H*#P1)13g<-|H6X1%;A#A$5$ (+ =!H)#T/'=$$.7B#E%322- , 4.<@ >) A!<=G*I-C'44U,!;1$ 3K- _;+X3%W/$>  8":$= \1$\1$S&C! (#1c9.Y1'=>) & ?Q)Z-!>7E"`2%b2#P'_1!h6#X/ >8+_/#d1$)& P-!hA0qI7xN9eE1N5&377 4-& $ ! $ >$O*!3* 0; :93( ! # ) $9#R5,A)!$2E) V2'M(_9%]9&Y9'K0#8"M2%N4&D"G&5d5&[0"T-E#7 @ J* BZH?tus|pznynzn|o}p}p|o|p~rtvvyz|}|{{|}}zxmb\T=:6$$# ! *)(EB=faX|vj~vjldY?93        $-%4*"<1&F:-E9.:2*C<3JA7E<3D;2PF;ND:H?5JB7LC9ND:LC:|p}||~˻пɷűζ§æӵغѮϥʚȕΛդצک߯تޱگߴڼԵۼίݾּչoUB/nbSttxpejcYWQJFA;52.'%# $" *'$2/+:50C=6F@9KD=HB;D>7@;5*'# &$!NHAzc]S[TL³޸۴ٲ۷ݿڻճǢȟլԬѪ־uTA.}sfvtzyy}vu}rwnezpwzx}ºĻĻżƾǿȿȿ;87PMKQOMNLJRPNRPNQOLPMKNKHMKGLIEJGCHEADA=B?:A=9DA=D@:EA>JGDLIFMJGOLIOLIPMJGDA'%#                        ROL^ZVZUQUPKQLGQLGUPKUPLXSOYTP[VR\WTZUQXSOUPLRMHTOKUPLUPLRMIWSO]YVc^[a\X[VQYTO\WR]WS\WTXSPRMIPKFOIDNHDNIESOKWROUPMTOLTPLUQMTOLSOLXTQWSPSOMUQOXUR]YV[VSXSOSMJLGBNIEVSP]YW]YW[VSXSP_YUvkd|δػѵؽ۽۽׹ڻ޽ܼۼ޽ٸ߾޾ҳӳԲ޼ݽع߾ֹص޻ƨuOQ):<F$48P1'`?3]:.W,!E"9-*) *,G* R/$9A"C#*' . #'6",7>$ , C$H)N*Q*R'4$ L+ N+ C!F%@$S1"66_>0cF5cF5Q2&V7(X;,06E( 9!1;"sC2xF4J'9A#?#*.46A$L+$K*".%59H'< 120.515>B!09?:C%I-G+:!0E$\1%22 ="U6'b?.W2%X.$T+"1*;%7!=]2%[0#N#+ %(#_6,p@4F$<S+ ) $ " # Q0 ]3$M&;<X.!b3%\. W,f5"f6$E%>25j5'T)"- Y4&nF4sJ7tK7G0"- 74 7-)( *E'G&.* 6< 9;3.! $3% =&Q4,;%' 3H+"V1(P+_:&[9&Y9'B+ 6!L.!L1$@D# $ _3%`2$U.L(8<J)G&C*!YSJ^XOc\Sf_VibXle[pi^tlawoc{sg~vjxlynyn{oznxlzn|p~qtvyz|{}qxod]WO<95$$$  **(EA5G>5KA8LC8NE<~rz~~˻ǶϺçĨŨҵغЮҩةբϛԠ֤ܫԵַ׸Ѳڻۿؽеؼx[I6fXJw~s|pymvmbc]TOJDD?:=:530-/-*.,),+(('%#"!!! %%$&&%##"###"##"""!!"$$#'%$*(&-+)31.962B>9PKD\ULf^TbYOYQHXPHTMDQKC=93 LF?ttlbQLDٱ޷۸ݷ߿ۼ׷ܺѭӫΦҪڱխƣTB0yna~w~stz}w}ru{x~s~s}r}r}r}s|ä¸úĻżƾǿ531D@=IGDJHFGECNKIPNLTSPUSQTQNQOLOMIMJGNKGNKGKHDD@2Z2'O'<7**'&6 Q0$J*!= D$: , +  6$1.6 '!;G(K)O*S)E!$6T/#;H%>"D&G&* T5)dE4cF5\<.H)\=-9"29625T4)wF4uC2?!9 A$: % 8>"?"E'"E$5%+8> G&522/36.;? ? ) @ :? H,I,B'43\1%Z2&. /& E'b@/]9*X3%W.$V,#,+>#3B!^2%Z/"=! ($/l>3l>2@ <c5'J'&'.\9$_3$C ;J&_2%b3$U*a2!f5#a5%:2)K&n7(F$#6a;+pI6vL8\8(7) 49 -)$ .K);+,9;9;59! '8% C*#Q4,5!9!;$F) W1(T/_:&Y9&X8&?&9"G">#?A) Y0$c4&V. R,<:I(J)B"2*&-*&/*&1,'4/*4/*51+50+50*83-:5/=82B=6D?8IC4LB8E=4F=4LC9OE:G>4G>5LC9LC8QH>sz~μÝпǷ¯иֺæѳٻִ֪֮ե֣աΛԣ۰ݴݿܾۻܽ߿ݼ߯ڷ޲۾ڼͲϳwaN:cSC|ptuyqfjcYb\SXSLSNGLG@LHBIE?B>9>:5A>8A>9;9475286364131/973=:6=95B>9JE?SNG^YQke[{re|n}tekbVe]S`YO]ULHC;A=7zn~ujOIBˡЧذٴۼݸ߷ڸڻѱظظݾֳܵӫˣԬرѭSB0rfY}~z~vwlxm}siulbvlb{qgwlxn{q|qukxofzp~xx{~ĻżƾǾȿ1/-MKHLIFJGDLIFJGDJHEFDAGEBKIGOMINKHHEBGC@LIEPMJPMJMJFMIFQNKQNKMKHOMKROMQNLNLIKHECA>           ,*(VQNTOKRMITOJUPJVQLZUP^YU^YTXRMPJFRNJ[VS^YU[VR[VR_ZVYTPXTO_[W`[W[VRYTPXSPZUQYURYURWRN]YUd`\e`\_ZV^ZV_[W`[X_ZV\VRWRMZUP`[Xa]Y_[W[VRXSOYTPVROVRO[WT_[Y^[Y]YX^YW\XUZURXSPRMJOJFWSO\YV`][d`^gb`umhxʱպۿ̱ͳϵӷܾܿܿαȪӵ߿߿ܺH R*<:E$57O0'_>3\9-V,!B :4). (,C(U2%@"A"D$+$ . +7#,3- 1F&H)M*Q*Q'2%J*D$D"C$>"G$2H,!cB3cF5aB2G'U6'E,"0782:"H-%b=0yF4o@03>"A$5, ; >!?#J*#? .$29F&@"1210703>B!19>;E(I-F*:!0C#k;.O,". ( 2K+hF3Y4&U0$V,#T+"& 2A/ E#^3%U, ' &' B$qA5e:/;;k:*W/"" &8 _;%Y.!=<U, _2%_0"V+f5"f6$Y2$54+Y, j5&;"C$hA0qJ7tJ6B&) 4 58 -( "8 N* 3) 0; :9<"9!9!+ 9 % F-%O3+,<#9#H*!V0'X3!^:&Y9'T5$>"=#G><?-Q,"c4&Z0!V.A8F&K*D#4($,*)+)')'%'&#(&#('$('$'&#&%"$##"&%!('"&&!('"+*%,*$+(".+%1-'30*1-(2.)1-(2.)1.)/,'.+'63.RLDb[QaZQTMF61,            $)!3) =2'D9+C9,:3*F>4LC9E=4G>5MD:PG4JA7ND:KA7RH>~rxǡŝϾͺҽ־۾ѳٺصدФѢܫ֢ݫ۰خ۸ݽݾټ۽׹qY}ƹʽͿ˾íȲ̳ҹԺֻݾۻظ׸ѭ߾ַַݿ޿ͱӶjVC_M:wrvjvncldYnfZog\kbWbYO`YNc\S`ZR^YQ_ZRZTMUPIZTM]WO\UMb[Rkd[yrf~ru}n|m}sfxpdumbtncoh]\VN;72zrgxmRLDŜϩطݽܼڹָٻղҬɢШٱ޹ηeTAvi[}|syksh]pf\{oxtxodri`rj`ypf|rhwlyx}r}s~s~qyy¾ƽǾȿɿǿƾ$"!HEBRPMTRORPMOMIMJGKHEHEBDA=EA>JGCLJFLIFOLHSPLROLMJGMKHROLTRNQNKLIFPNKURPURPSQONKH1/-                863]XT]XTYUQVQMVQLTOJRMHTOJXSNYTOYTPYTQZVR\XTYTOUPLWRNWQLQLGPKFRMIVQMZVR\WTZURUPLUPLTOKUPMYUR_ZWd_\c_[c^[a]Y_ZV_ZV]XT_ZWea^gc`ea^`\X]YU[WTXTQWSPYUR]ZX]YWZVSZUSYTQ^YW^YV[VSVQNZVSYTQTOLTOLYURumgպ׻׺عббַۻֵҳϱۼĪv ;8AA"4<Z:/^=2Y2&M&;<2 +-&5 N.#Q/#<C#A## , +6#//3" % @"G)J)O*S)E!$ 9 N, <H%="F%?<#`?0cF5cE5S3'J,O3&12845R2*Z:/g>/zG4Y4'-@#>#03=!>"B% H' 7('7 = H'811/26-:?=) ? :?!H,H,A&33Y/$o?1@!.  >#Y7(fD2W2%M+U,"Q*  .C". F$^3%C" ($ T/&rB6[3*;Y/#t?.G%# # E$a7%N&<?[/"`2$Y,]0f5#d7&N,41)N%c2$8"N-!nF4qI6a<,-3 *  55-& $ B%G&.* 7; 9:14C("?&19)K0(N2*)67"L-#V0&\6#\9&Y9'Q2"> E(F C:;0G&b4(]1#W/ F#>E%L* E$C61C?9A<7@;6@;5>94=93:710.)+)$('#('#+*&/.*..)00*/.(00)0/).-(((#$$#$## 30,TNH863''&$$$%$">:4MF>]VMJE=:50#             %-$6,#?3(A6*B8+:2*G>5ND:F=4I?6PFb^Z_[X[WSXSOXSOWRNTNINIDRLGXSN^YT`[W_ZV^YU[WS]XS^YT]XSYSNVPKXSN[VR\WS]YU[VRUPLTPKWSOVQMUPLVRN[WT]YU]YU_ZW`\Xb^[e`]fb_idbhdbfa_d`]c_\_[XZUSZVSXSQZVT]YW^YW[VSXTQYUSXSPWSPSNKRNKVQNVQMUPLSMIjaYۿڿֹгʭΰݽ۽ӷ׺ٹҳ۽ܽݽۼu]N)89G%75H*"^>2\9.T+ @:<+/ )+=$V3%H(?!D$: . ".5!4<#* 7G(G)M*Q)Q'2'H(?!G$@#A#K&; Z9,cE4bF5Z:,C#O1$71461I,%hB7a@4l?0l?/04A$: - 7=!>"H)"C#1$.?%D$D%221/630=A 16<;E)I,G* :!0C#i:-k>09.# G(b@/`>-W2%D%U,#O) @!I(- K'W."( %' & ^5+rA5R.%A s?.u?.2&$ R(a0$A<E#^1$_1$V*c4"f5#a7'A#5.(F \/"; & W4&qI6jD3D(" 6  63-% *G':* ,:;99" +H,%K.'586O3+I/'#26!R0'V0%_9%[9&Y9'M/>!J- G D<3) ;a4)a3%W/ Q*W)O+ L+!F#[JBpe[qf\ncXh]Se[PdZO]TJZRHVOELE5D?6C>6ID;HC8B>2C@5B?4=;097.53+0/'1/'0.&)(!3/+PKE42/$$$#$# !!"""530\UMof\u{rfb[R>:5          %/&7-#>3(E9,G<.91)G>5ND:G>5I@6RH=RG531                       KHE`\X^YU^YU]XT_[W_[W^YTWQLTOJYTO_YTc^Zb^Z_[X^YU]XS`[Vc^Zc^Y^YU]XTa\X]XTYTPZVR\XSZUPZVQYUPTOJRMHOIENHDQKGWRN^YVb^[d`]c^\`\Ya]Z`[Xa\Za][_[Y]YW^ZW]XV`\Yc_]b^\_ZWZVRXSPWROUQMPLISOLYURYTQZUR\WRti`ĭڽܿͱ̮ίӳԷæ⿡ϰݽָ׸Ӵ7 49>F%48U6+^=2Y2'K%9=4*;!64E) X2%B"C#@"1),    8$2?%7!) D$G(G'O*S)E!$7D%B!F%>"K&D"T4(dC3cF5Y=.<A$?$0372<#`;2hC7P3)]7*I+!&;!A$6- :=!@#I)";+%;%N1%H&= 11027.8>? ) ;9@"H,J-D' 33Y/#rA3d9->-2M,hF3[7(U1$=V-#M(S.$H'- M(D# ($ ,c8.qA5N+#L'xA0m;+! ('Z-!^/#@;L'^1$`2$[.f5#d6$]5'85-( W*T,7& `;,rJ7c?.8+ 3 60-# 3J'3) 3; ::4 ( 52.7A&Q4,C+# 48"T1(U/"_9&[9&Y9'H*B&O/"I"C@6 )[1'a2%Y0!T,X*R+!M+!E"r^R|{sqnyhverb{n]sgWk`QpeUpfUpfUmdRd\I^XE[UC\UDYSBUO@QK=SM>NH:>:-73,HD?/.,%%$%%% !!!"" !!$$#852aZQph^w|tib[S=94       #-$7,#A5)J=/L@191)D;2MD:H?6I@6TI>SH4A#]<1\:/T,!B :;)1A%A%;#M-"O*? C$6( - $08#>B#(9H)@#H&Q*Q&2'B%? J&>"F%N'Q1%cA2bE5aD4F*<A$32952S3+hA7X9/D)!>'(.?"@#2/"D& I' 5&)F,"K,"F%511/54.=@ 61:<F*H,J,!:!0B#h9,rB4P+#: <"O2#iH4W3%O-!:W-$I%0_7*@"/L'.%' -8h;0o?4C$T,!yB0h8)(* ].#W+ <9R*_1$b4%`2!f5#b7&X2$43,3g3%L)1( e@0qI7Y8(.#+ 3/,! #@#C$0) 8; 9; ." (' +4E*"Q4,>' /=%X3)X2"_:&Z9&X8&C%G+V0$Q(CDH%'P+"]1%Z0!V.X)U+!M+!G#jUHªªŭztmstqohx_~tY}sZzqYzpYvmVwmXofQXQ@>8/B>:**)$$##$$ !!  $$$962bZQrj_s{sh^WO851         #.%9.$D7+NA2PC4:2)C:1MD:I@6H?6UK@UJ>KB7J@6PF;PE;NE;rv~y{|ʺÜ̥ծװЮԵ޼ҬʡӦץѠܬ޿ٺڼٻӳˣuɺϿƮɯδδǭ˹bSAu~{z|ո޾ջϵn_bN9ziWwuxwzwwxxwv}p|sg}th}sh}th~ui~ui{p{qzosw|xpd2/+-+'WQH|OJBwodȷ֬޿ٸүѫͦǢֿĮydR@/w|~vj0+&2.*/+(+(%*'$)&$&#!&#!%" &# # 72.um|}|v}pxjvgyjpu #! HFCPMJLJGOLJLIFJGELIGPNKURPSPMLIFGC@GDANKHUSPUSPUROTQNQNKOLINKHGDAB?$=$R."D"A"A"/)-   ! 8$9 D#9* E%C%=N)T)F"$ 6D%F#B#A#P(R."a>/bD4bF5O4'6E'8169 2C("d>5b>48#@',+8A#=!.3=!>"H("C#/$1Q4'I) @"1/& - 605>> ( 99A#H,K- E(!31U-!p@2c8,>5  B%U9)dB0W2%E'9X-$F$E$a8+:08" (#T0%F'j=1n?3@"\1$zB0\1$&6a0$O&<;X.!`2%b5$d4"e5#a7(N,1 0*Ci4&C%+ 2kE3oH5N/!% #' 1.* * J'< 5.:;:9)$ *( ! +4H-$P4+6! .B( Z4*\7$_:&Y9'T5$?"K/"V."T+ DAL'=F%_3'[1"V. U)W+!M,!J(M3*īӷʯγּ׾϶ë|ywqlffefx_kbME?3?;7((($$$###  &&&<95aZQwnbxlwodXRK41-        $0';0'F9-QB5SE6:2)B90MC9I@6H?6YNCXMALC8I@6PF~qyx{{~ǡʣΨάϱոϱٷܰݰ٬ݮެ޾ݿڻݾննгǨhS;UK>r{{~w{xuv}ѵݹ׷ڼͰésd`L7q_Mv~swszm~sgzodyodzpe{nx{wuuxy|zqe<82%$!RMD{\UM`YP֫޴ٹ߾޼ѮΨȡœϹlQ@.u{vTJAQIAJD>GA"L&W.!`<.cC3bF5[?0;<?"139 40N/(g?6O1)&7#&I+!C$A$8, 8=!?#I(!9)%>'W8+G&81)  06-;>3, :;F)H,M-"<"0?!e6*o@2L( :+(D']@.\9*V1$69W-$F#X1&W3(20$ %': h;/E&n?4i<17e6(yB0T-!)D!a0$H"<=\0#a4&d6$e4"d5$_7(C$3.*Z,i4&A$' 9 oH5jD2D'.+ /-) 5I&:31; ::4(')( ! )5K0(N2**!3H+#Z3)X4!]9&Y9'K. ?#G-!J&V,!H"?F#L)/6a4(]2#X0 X+W,!M,!K)0wǬչҵֺè¦ͳȮ©ì}~{qknpogriSLE8>:6))($%%$$$ !""++*B>:c[R~ui|shrj`RMF.,)        %.%:/%F8-QB5TF7<3*B90MD:I@6I@7\QE[PCMD9JA7PF;RHdZNl`T~pazm~rrtvtsw}x{s 20/NKHPLIOLINKHOLJQNLSPNUSPTROROLMJGOLIMJGKHFROLOLILIEIFBIFCIGDMKHROLTQNQOLKHE641                     /,+VROWSO[WU^[Xb^[a]Za]Yc_\fb_e`]c_[b]Ya]Yb]Ya]Y]YUYTNTOJTPKWRNUQLNIDID?ID?JE@LFANIDTOJPKFSMHWRMVPLTOJUPKVQMUPLVQMXSPVROXTQ[WT[WS]YV_ZXa]Z_ZWZURYTQYTQ`\Zc_]_ZXYTRUPMSNJUQM[WT_ZWZVS^ZXd`^ea_ukeз۽ܾ޾ҳ޼޾ں68B A!4B$\<0[9.I%791 3A%>$9"G(K&A"C#5&- !  :%?%B)!<%,AD#9:N)S)G"%4Y2%P*?"E$T,_:,cA1bE4aD4G+ 6 @"427627 ^:1e?5:#!);$c9*B$@#3/< >"D%N+#7$)O3'Q1&C#20#"422==' 68@#H,K-I*"41R, o?1b8,=6"3E)bC1W3&R/"& :W-$E#/_6*E(!1, " '$'h>1m?1G(o?4g;0;k:+xB0R+ / P'^.#A;?]0#a4%c5#e5"b6%]6'93,3i3%e2%?"& 9 oH5d?/>#@* - 2-( A#B$9.3;9; - )), - ( 8 N2)K0(% % H* W3*T-#J(Y8&X8'H,"C,"E+ ;T,!L%?BL+ G%" V-#a4%X0 W+X+!N,!L*:wdV§غҶٽ׻ھؼѵɮȮʹɲzsqswwmxnXOH;:73***''('((%%%!""-,+DA'N+ F%B#A"**+   ,B'D A$6 =E :0G%P*S'8# J*X/$D$@#P)]7)c?1bC3bF5T8*5 8714732E(!d>4a<3+)*b9+f:+>"?"13=!>"I)!T/&7!$5!W8+I( = 1+ ( 6.8>5%::F)H,M.">#00G(o@4e9/M,"{E3v@/H%- S)[,">9G$^1$a4%c4"e5#`6'Y3%2 4*C!n6(`1#43$) ?$?$9!G+ M(B$B#:#- '  9"C&E!;A#F@29N)S)K$'2V/$L'>"L&Z3%c>0bB2bE5]A1>"<?"736426P/%e>5[80')=&k>.O+!?"< . 6=!?"O,$N,$)%F,"V7*E%40%  04.<<& 1:?"G,J-K+"5/M)l<.e:-?9+ A%U9)^<,U1$; :W-#F#P,"H*"0.$'%[3)zH:l?1M+"p@4`7-C%wB0u@.A!! 4Y,!V* <8P)^1$\1"d4"c4#_7(U1#2 3)P'p7(_0#7">$oH5V5&8!I2'! # 1-" 0E)"9/- ; 46@& 2(* :1 & >&Q4,E,%!' @&Z4,Q)Z7%[:'_8)\6(P5'=#1<J$@@N,!I)I&/! Y/#Z1!Z.!Z,!O,"M+ C#xͱƫͱԹչдɯ˲Ϸ̴ĭ{}}wwl{qZPI;840)))%&%'('%&%-,*HC=d]TznulbhbYFC>)('        $.%<1'J<0TF8WI:A8.F=3OE;KB8KB8YOCYNBPF;KA7MD9VK?TJ?pf[}qtv{w}˼ĞƠɤ̩Ѳѳϱɪܿз̭Ԭبͮΰڹյݼ߽ѱϯٻycT?o}vsxkdX_WK}|}~vrvyusuwzywzֿݻٸҴƪغètXE4gQ;wvi~pzwy|wsrvw|{wz{t{nxlzpenf\vmb{rgzqfsh]odXtj^ulbtlbg_UMG@=94qj_{^WNݽٷشϫɤǣԿl]Jl[Kt|nbxl~sh|rh}sh}sh~tititj}rhxndyoevkwkk_U}l]{k[zj[naT52-XRJkd[ph^qg]xk_vi\laV{m`scyh|l{yyn:75KHDNKHQMKNKINKGLIEMJFOLHMKGLHENJGUROQNKOLHIEBFC@FC@EA>GC@LIFQNKPNKRPMTRPDB@                     )('YVTfb`d`]^ZW[WS[WS[VSSNKOJEUQL\XT`\Xda^gdbea_a\ZZVS]YVb^[a\X^YU]XT\XT\VR\VQ\VQYTOYTO\WR[UPYTNXSMXTOUPMVQMUPLVQM]XS]WS[VR]YVb]Z^YV_ZXb]Z`[WYSOYTPVQLUPLZUQXSO[VSa][^YV]XU`[XWRPXTRYTRXTQTOLRMI_WQ}p˳ջټ׷ܼ޽@.&58>F%5?"Z;/Z9.N(840 1@%<"?(O.!I&A#C#1&- ! *@&A( ?%:"F!C7/G%P*S'9# H)U-"A"E$V.!a<.c@1bD4_C3H-!5 G+>!8:7317X5+f?6M/(.0S2'\3&= @#5) 9=!A$R.&D' "*Q5(O/$@!1. "405>7"7:E(H,M.!B&09^2&o@2P+"<6)'D'\?.Z7(T0#-<W-#L'X3':!0- $' 1 h:.wF8sD5e;.o?4_6,=p<,s>.9$ >a1%O';6T,]1$[0!e5"a4#^7(M+/ /*S)p7(^0"7!C(mG4N/!4+K3( *1-! C)!B&8( 5:0;!>$+ ), =1 % @&G,#+ % E*"Z3*Q(g>)j@+b8)X6(M3&726B?>Y4&O.!I'I'" 6Y0![/!Z,!O,"M+ C#s`ϲβӷؽèŪũպ˰©ɰʹȱu||}ozpYPJ<950)**#$#'''%%%,+)JE>iaXxlsjad]UB>:''&      #-%:/&J<0UF8XI;A8/G>4QG5E*$M1'H-$Z5)I&?"@#-* ; =!H(!T/&7!#6!W9+I(81+ ( 5.:<) * ;>G+J,M-#7/I'i:-f;.?<1#2H,aA0V2%M, ! =V,#T,#Z3'.1) &&!Dh:.vE7|I9{I:m>3P>ZDwA0p=,1$ @`0$H#;8X.![/#Z/e5"a5$^7(F&/ -,V*l5'V,8!H+ hC1A%4 0;& *.+.K/&94+ :72>$; )(+ ?2" ' >%R2# "$ N/'Y1(T,lA+lA+`8)U6(J0#622A><S.!^9)H(J'@$ O+[0!Z,!O,"N+!C#!lZLܿ۾ոҶŪȬپѷչӸе̳ĭwzrxnXMH;;61*++#$$'((%&&-,)LG@me[wlqi__YQ?<8''&      #.%;0'I;0TE7ZJDA?EB@FC@EB?GC@JGDHEBHEBNLIOLIJGDGC@GD@IFBKHDJHELIELIEPMIOLHID@:62                            $"!LHE[WT`\Yb_\a][b^\c`^ea^^ZWXTPYUR]YV_[X[VSYTQ`\Ya^\_\Z]YW_[X`\Z`\Ya]Zb^[b^[a\Y`\Wgc_ieaea]d_[a\Y^YU\VR]WRa[Ve_[_YTUPJUPKXSNYUQYTQZVTa^\fb`e`]a\Y^YW]WUVQMYTQb]Zc^\`\Yb^\`ZXUOKRMIPKHPLIRNKVQNRMJOIFkaY©ٻغջؽۿ߿̮յҳۻĪ78C!<4P2([<0V4)?44* $<"0b@1bE4X<.89E+19< 531! /_:2a<3U7-U6+L/%L+!=@#>"( 1< 0R,$<6. :!P3$^<,U1$A%:U,#Z1&J)* 2&'!2M!e7,sC5{I9zI9k=2TAhOxB0o<,, $ E"_1$C#;:\0#X.!Z/e4"_5%^6(@"/ ,,X, a1#A%7 H, d@/2 , !), 16+C)!H+#8,2:/8?$4)'( @3+.7 f>/'#( N,#G$O-oB,j?+^6)R6'B'820B#?<B \7(S1$D"G'3;[0!Z,!O,"N+!D$*G6-ھǬػոĪɮĩٽۿ׼ʰĪȰ~}~lvmXMG;<72,--&&&+++())!"!""".-+MHBog]~wloh^ZUM:73&'&          ".&=2)H;0SE7\M>G=2H?5RH4zwwq~prvz{ðۼ߫ޫ۾ؼؼδ˲o^P^I5p^zrfxl}rvk{sivmcyncwjrtxvruus|pru}urr|~x|n{mtw~z~qtlbXRJ$"*(%TOGMHA~vk޳ٺɩӼĠ˨ȥѺw`P?-{l{t~obwk`wlayncpf\i_Uj`Vvk`pf\jaXynd|rh~si{pfmcYu|YQGKE>vlb~shwkqrxksf{m`~m_qaqcqdth:85GDAGDAFCAHFCDB@@>GD@KHDMJHMJGKHEKHEKIFKIFNKGNKHKIGJHEHEAEA$7C+P.!G&?#B#3(   5B$C 8B E;. ;N)P)S'E"1L(D$D#V.!a=/b?0aD3`D3F*3 J- 8#&98 22*<"d=4c>4[;0L/%K.$?!7@#; % 6< =#Q.&D' "+S6)N.$> 0/!"4/8=/!8<G+H,M-"9 /D%f7*i4QF;MD9KA7WM@XMASH<9C@=HDAMJGSPNSQOMKHJHEMKHNKINKHOLITQOXUSRPMFB>EB=C@<                      1/.WSP_[W`[X_[W[WS\WT^[X[XVZVSZVR[WT\YV\YU[XU]ZX_\Z_\Z`]Za][`\Yb^[b^\`\Y`\Y^YV[VRZVR[VQWQLWQLZUQYTP[VR_\Xb^Z_ZV[UR]WS_ZV`ZWZTQXTQ[VR[WS]XTYTPZTPYTO]XS`[W^ZV_[X^YV[UQXRMXTP_ZXa][a]Z`[Y_YVZVS[WU]YV]XV\XU\VR{nd̳ٻٻԵݾԷӶԵܽвҴعɑ|j$7:@ 4<X9.Y9.I'637! .>#2L2$M'C&?"A#0'  $ ?%A'?!? EA2/G%O*Q'S'T*? J&@"O(^9+b>0aA2aE4P5(4 A$L1$  633/ G+$e>5e@6O3(J.$J,#97@#7& 9; A&S/&7!#9#Z<-H(81, ' 4/<;#* ;A$G,L- G) 13R,l=/Y2(<8.)# E(\=,W3%M, !  8V,#K',3/&$& R+O#Z.#pA3~K;zH9k=2TAdLv@/m;++ $ L%[1"=:0 V-!W- c3!b4"]6'X3%0 +,,Y, ]/"A%6!C(\8).$"#( ! 5@%I-$L,$800:68="4()!% f<*H*( /<"xI:C( . D2g=)mA+b9)V5(;$9:304S/"E"D"B"D&> 6<: K'[-"O-"N,!G&6ɭɭǫֺҶչټٽӸӸԸ̱Ȯȯ̵ǰxxrsjWHC895/,-.(((*+*())$%%'''642VQJzrgymqi`TOI31.#$#          "/';0'I=1SE7YK:F<1H>4QGMC8QG|kcZ]VN ۽Ǩؿθ­ïoeYK<-ym_~~witdtdo`n_xizlvh|n|nrfsg\wk`vi|obtixd[QD?9tj`{p}puvrp~k{hzhyixj}o+)(KIGPNKRPNQOMNKHIFCHDAIEBLIENKGOLJMJHQNLRPNSQNTROUSPSQOQNLSPOUSRWUTNKH<96                         520YURfb_fc`ea_a][`[X]XU]YV]YW[WTZURYURYVSZWT]ZXa^\c`_eb`gdbhdbd`^c_]a^\_[Y^ZW`\Y`[X]YU^YU[UQXRMYTOZUQYTPZUQYTPVQMUOKWRN]XT\WSZUQXTPYTPYUQ]YUYTPVQMYTP^YV`[X_ZW`\Y[VS[UR]XT_[Xb^[b^\b][_ZW\WS[UQYUR[WT]YV]XU`YTrgؼ˰ַַ׸б׷ڼӵۻٺݽپںlYK/ 6;<3?#Y9.X9-F&545 1; 6 S6&J%?$A"@"."  5B%?&;CD;- :N)O)R'T(F"C!C#H%X1#a=/a?0aE4[?0;6R4&21621&Q2*e>5];1@'M/%F) 1: @#1* ; : G)"N,$(&G-"Z:-B"11'  .03=<,/ ;F*H,M."<"/="W0$j=0E#<3.$ 0L-]<,U1$C& 8V-#G$.4-& 6W."O#W+!o@3~K;yH9k<2TA`It>-k:*) $O&W0!<9, W-!W- d4"a4#]6'V1#. +,,W+ \/"@$5!="T2$.#"$ 6B'V5+@#8-798A!?";8D%> Z-!P-"N+!H&9uȮֺӷ׺Ӷػٽӷ׻ؼؼҷʹ͵ϸ®|ih`OA>394/-./())***())$%%&'&963[VOvkvkpi_RMG31.!!!          "/':0'F:/PB5UG8F<2F=3SI>QG)R2$H%<"A"<*   ! @D = =DB3.G%N*O'S'J#<H%A"R*_:,b>/aB2`D3H-!2L/!O4&# 732-8!^:1J.%C(J,#>"/>">"+/; ;!M,$D' "*R6)S3(=01#!3.:=;33 > G+J,J+!31G'b7+]5*;9.)  9 Q3$Z9*T1$8  8V-#G$13) & B!X."O#U)o@2}K;yH9j<2TA^Gs>-f7(! $O'R-;84[/#X. d4"_4#]6'P- )++*S)_0#A$7"9P/!.""$6L/%R2)831:89:!0)+ >#, < A%( 8H+#tH9B(", (Z5#oC,g=*R2%/, 1 970+8E!E"@;@!=!J&B"8N&Q-"N+!H&>vcUڽĪպβг˯˯ɭȬèۿֻԺӺ͵DZʶw_]WF:7-94..//())+,+*++&&&&&&:74^XQznzqfkdZPKE420!!!         !.&;0(C7,N@3UG7I?3G>4WL@SI>MC9YNB\QDWL?ND8NE:VK@[PCaXNyyv{yvyǷƟѫ׳ݼ޿۽޿ӵϰϯɫڹܼ¥wbaL2vu~|zvvrroyjzkqyij޼ݻٷ޿ԸʮβϴévfH8'XF5xswkxkqs{}}{yw||u}p~qu|pwkvk}sizpexod{qe|sgzrezrfxk{rgleZLF?+(%63.sk`sRLEַǨҷͶ50'-%e[Oxu|{wy|qezuswmb2.*ZRKtj`rh^uj_wj^tfYnbWoaUwfX{iYxgXnbUj_U642FC@KIFLIGLIGKHFHFCGEBIFDJGDPMJROMNKHJGDJHEKIFOMJTRPPNLMJHIFCFC@EA><97                             FDBc`]fcaeb``[YWSOSOKSOLSOLTOLSNJ\XUa^[a^[b_\`][`\Z^ZXYURSOKXTP^ZW\XUXSPTPMVSP\YW`][b^\c`^b_\a\Y_[W`\Xa\Ya[X`[Xa]Ya\X`[W^YU^YU\XUa]Zb^[^ZWXTPUPLVQM\WS\WS[VQZTP\WTb]Ze`^gc_e`]`[Y\XU`\Yc^[d_\fb_fa^e`]c^[_[X^ZWc_]hb^}riyȰԼܽԶۼ޿ݾ׶ۺںݽ߿ݽϱA/&56974K.%Y:/O0&H&+7. 9 - G0"M+C$:!B#9'  3DB!9@D<- 9N)K(O&R'>D"A#I%Y3%a=/a@0aE4U:+5> [<,@(" 3520% J-&^:15J-#= /2?#< ' 3; <"P-%7!"5 \=/L,"80/ & 2/<>:67B&G,M-!@%/8 O, i-h8)$$O'J(;49Z/#[/ d4"^3$]6'L*),*) R)`0#@$8"8N- .#"#8 U5+C&7.697;!3'(4B%15< 67E)"I,"' !%7k@*lA+V6'4'.. 771-,E"D"B :<;F%E#B$1O,"N+!G&A &\J>ʭӵշܾʮеȭ̰ͱ˯ȭ秨ջĬư˶hf^M=;183--..())*++*+*&''''&=;7a[S|q|shh`XLHC420"#"          !.&;0'C7,OA4WI9MB6I?5XL@SI>ND:XMA[PCWK?ND9ND:UK?[PC[SIw}{xzyxͼȤղ߾ٺշݾŨk_K1w|rxqdpi^faWe`W}ui~{}{~yvx|~zr|nrzܻ׹ϲɬͲδȮʮ{kD5%YE3|s~pylxkzqevnbvma|sf~thulaph^me\qi_vncwncxperi_qi^sj`of\lcYldZhaWiaWldZrj_xpdwocsk`xpdtl`g`VMIA.+'3/+le[xUOGٰ׷̬ͮؾһf &OG=}|v|~xvvxl.*&WOHrh^qg]ti^zl`zk]reYmaUoaUxhZyjZqdWk`T%$#HFDLJHKIGGECHECJGEGDAEB>HEAEB?FC@LIGOLJSPMTRORPMMJHLIGMKHPMKMKIIGD;86                          CA?_\Y`\Y`]Zda^ea__[WYTPXTPXTQ\XU]XU_[X`\Y\XV]YW\XV[XUZVTXTQSOKQMIUQMYUR[VSYTQXSPXTQ\YV]YW]YV^ZX_[W_ZWWSPTPLVQMZUQb]Zea]d_\d_\b]Z_[Yc_]`]Z[WUYUSYURYTQ\WT`\Yd_\d`\a\Z`[X]XUZUR[VSXTPRMJUPNXTQ^YV`\Y`\Zb^[b][`[X\WU\XVd_\mfaske|sm~uozrlvmhule~sk~uxǰӶбϰ׸ۻݾ߿ۼ޾ʬ7#4576<P2)X9.L-#A&( 7( !9 ,Q7&H$=": B#7#   ?D >;CB3.F$N*G$Q&N$<F$B#R+^:,a>/aC3]A1>"3 W9)S6(0, 82/8"  0`;3U4,6 G)!2+6@#9+ 8: @$P-%-%F,"_?0E%41)  , .5=<B#E"<F*H,L,"60B%]4(e9->;.2( # E(W7(S/#K+ ?!P* 33- %! ?V-!O$R&m>1}K:zH9k=2P?\Fr=,j9*%%N'H(;3D"\0#^1!d4"^4%]6'D%',)) R)`0#@$8"7M-/%"#B( V5*:95988:!) &. ;#B$50A$= .;"@&  T1!oC,c=*9%"* ., 472/( B D"C!;:<:D#D$(C%O,!G&D"+M;2г¦дǫũƪݿĩǬ̰ӷϳȭĩĪзǰíj`XH;9084..//())*+****'((''&?<8c\T}qwkhaXGC>.-,!""            ".&<1)F9.QC5ZK;NC6J@5VK?UJ?QG:A?;NJCpi_{mtuv||z{{vz߾ѳβֺԺԺ}O?/\G3|}zw|o|sgumbrkalf\\VNOIAA<695/:60)&"'#! 1.*f_VzVPHի۳ߺ޽̬ͮà71(#>80zz~}pyk]tgZsfY}oayl_sf{mtgznbsgwizmvz{w|oC>8ZRKqg]pf\ti^zma{m_rfZlaVh]RnaUwi[xk\vj\A?>JHFJGEGDBEA?EB@JGDKHFMKHOLJKHEHEBMJGPMKOMKPNKQOMPNKQOLURPVTQTRPIGE!                          C@>ZVS^ZW]YV_[Xc`]fc`fc_c`\c_\b^[b^[c_\b_\_[YZWT\XUYUQXSPXTQVRNUQLSMIRNIWRO[WT[WT]YV^YW]YV[VT[WTb^\^ZWZURWROWRN[WS`\Yc`]ea_a]Za]Ze`^ea_gdbc_]YURWSPWSPWROVQMWSP\XU`[X[URVPLUOKTOJUPLWRNTOKTOKRLISNJUPMYURYUSWROWRNXTQWRPZUS]XV`ZXd^[e_\^XU]WTd^Zkd`rkfzpi߿Ӹۿѳ̭Ѱ߽߾ݽۻ߾׸ѳѴڼۻٻټںt_Q/544>R4*W8-K+"8( 9&$85#V9(D!9!; A"2  /CB 9@D;- 6M(J'F!R&D?@#K&X2%a=/`@1`D4M2%2J- bB0>&% 5324b9-2S2+f?6J-%?&@#,.; ?#80::E'J*"%(S7)[;-?!01$  0-:=9H&=?"G,J-C'04J)f:.P+#;5-A 60J-bB0];+f@2#  B#D#0@6 & & =U-!P%P$k=0}K:|J:l>2}K;[Dr=,i9*%%Q+N.;2L']0#a2!b3![3$]6'A#( ,(( Q)`0#@$7#5L,)$"#K/&C'88797: :* 'C#?%A"3 +J- 4* 'K-##  B%l@+lA,K/! %& ., 0750+;E"D"<9<:?!G$2-M* G%E#- 7$ͲܿϲѴָҵ̰ͱ̰ͱ׻չǬջèиDzqd\L><3;70//.)))****++))*(('B?:f_W}qynf_WB?;**) !!         #0(!<1(H;/RD5YK;OC6J@5TJ>UJ?QG;YMAYNAUJ>PF;QG<854200/110541NJDjdY}uhqsu{k||}չڽھڿֽìQB2`L6vrz{|n~prykwjwjvnaum`{rgtlaog\ri]kcXibWmf[pi_mf\]VMTNFMHA@<6*($ +)%PKDxTOGڰۻǨj!+%sz{~zqvgaTH{i}|{zy~|wyy{oB=7C=8ZRJ`WOd[Rk`UpcWmaVg\RbWMdXMl`Tth[{oa 0.-PNMOMKJHFMJGJGDEB?EB@GEBJHFOMKPNLQNLTQOTRPPNLMKHOMKSQPUSQVTQUROLIF+)'                                  A>;RNKTPMVROZVS]ZW_[Yda^gc`fc`hdahdagc`c_]`][\XUXTQZVSZVSYURZVR]XU`[X_ZW[WSZVS^ZW_[Xc_]ea_c`^^ZWYUR]YW_[X[VRWROXTP]YVb^\ea_b^[^YV]YV`\Ya][da_fcab_]_[Y[WTTOLSNJWSO^YVb\Y`ZV\VRWQNVQNWRO[WS]YU]WTZTPWQMTOKUQMUQNTOL[WS]XUZUQXSP^YVa\Y^YVa[W^XT\VR_ZWb]Zc^[ogaíܿ۾ܽعٹܼؼ̱ȮۼظܾӶݿ߿޾в޾ܼۼ׹αʬٺۼݽ۫|(514>S5*V8-H* 4+ 7! & 5?+T6&A 5=!@"-   <C> :CB2, A!N)D#L#Q&@C#C#R*]9+a=/X6+L-#87`@/S6(--62-N-$^7+ 5a;2b<47 =#6+2=!?"41: 9G)!;#"/Y;-T5(;00 % 12<>9F$8C'G,K, :!/=#V0$f;.?;/4F!) 8P3$iJ6yS>tL< ?":1878( , 9S, P%O$j3{I:ZDq=,j:*&%P*H':. O(\0#a3!b3"\4&[5&8) ,' ' O'_0"@$7 2L,%$"#'D*"78-58376(6R*!@#?C!5B(4* 7 =#b:&oC,\8&'! 2-- - - 660.7B @<:;<:N) ? D%H&G$0 &̲ɭʭɬͱ׻ӶαʯͲ׻۾ϳǬŪūͲʹӼθziaS?=5=80..,)****)+++-----,GD?icZ}q}qe^U>;7((' !!        #.& 9/&F9-OA4WI9PD7J@5RH?=NMGPNHidWwmbthpϲвz\I3k]LQNH@>::96542110-.--.-00/:95OKDhbW~virtndVncT{iso~mn{j~vf~vh{mqux޹޿ԹĭYJ;]I5{k}z|{n\VN)'$OJCzQKCzӫڷִݼѲټǰC<0!& ymy||{wjtfbUIyg~q~qzn]TJ;4-&"%!)%!+&"0*%3-(/*%4.)60*:3-C<4KD;ECAOMKMKIGECMJHNLJMKIKIFEB@C@=MJIQPNRPNURPTRPUSQUSQTRPRPNMKJLIGGDA*'%                            ?;7VRMZVR^ZV_[W_\Xb_]c_]b^[^YW`\Zea^fa^d_\`\Y_[XXROSNITPLWTPYUQZVS^ZWa]Zb_\a^[`\Z`\Z]YV`\Zea^d_^\WUUPMWSP^[Xa]Z_[X_\YZWTYUT`][c_]`\Y_[X`]Z`\Z^ZX_\Za^\`\ZZVSVQNVROZVT]YW^YVZTPWQNTOKUQMWSP\YWa]Z^YV_ZW]YUWRNTOJTOKTOL\WT[VSVQNVQMVRNVQNQLHYTO_ZVa\X_ZWZUR\WTnf`Į޿׹ַ׸ٺ׸׸ۼݽܼܾպӷ˯ָ̰ͯӴۼбԳ޿ˮںྡˬַ޿մаݾǣu#5/3? S5*T6,B$, 00  ( 1E0!O0";/=!@"*  ( BB :>D=- 0J&L(<P%K#A @"K&V0#`<.];.L)#;2 Q3%bB1;##5321j>1H) # K*"d=4[8/' 6.-7>">"13; 9I*"0$5Y<.L-#51+ + /7<?= @;G+H,C&11E'a7+Y1';7,@ C  ?$Z<+hI5XCxO>4' 638<?A 4. :U-"Q'N"g9-|J:|J:l>2{I:ZDq<,l;+* %M&C ;2V- ]0"b3!_2!Z3%[4&5*,% ( K&^/"@$61L,%$"#;$;!82#36' +- &L)R+!>$;G%@*5) % \9+yK;uH6nB,c;'/%3++ - + 461.8A!;;;:=9E$H% 3H&H$3ϳдβ˯Ըٽֹе˱̲׻ֺȮȭʰδּk]VJ76/<7/.-+)))**)+++-../.-JF@mf\}qsc\T<95'''!!! !      ",$8-$D7,N@3WH9QE8I?4RG1G>3H@6D;0I?3YN@^SD]SEe]O~m۾ֲڸ׸ɮϴ׺ֻܿƮeSC`L7}o_tf_W%# (&#PJC{PKC|pԬ߼ض۸˭ϴj  $&vmb}|~{vjxkl`Tzj\{~qzn}pwl`f[POH@JD=OH@WOEaWLVNFIBLIGOMJOLJRPMSQOUSRVUSSQPQOMPNLIGE*(&                         31.[VQ\XT^ZV`[W]YVXTQZWT_\Yc_]^ZW\XU`\Yc_\a]Z_[Xb_\]XUTOJQLHVQMYUQ]ZW_[Y]YW_[Ya^\_[Y`\Z`\Z`\Z_ZX^ZXYURUQNUQOWSP[WUZWU[XU]YVYTRXTQ^YW`\Zc_]b^\]YWYTRXTQ\YW_[YWRORLIRMJWROZVS\WTYSPTOKUQMWRNPKGTPL\WTWQNVQNZVRXSOVQLXSOZUQZURYTQUOLRLIQLGTNJTOKYTP`\Xd`\b]ZZTQWRNf^XtжۻڻѴո׼ҷжҸպھٽնҳټܾԷն۹ڹֵӲٸۻշвˬƧ£̬ۼնäu%523? S5+T6,;!%1(  + .M6%J)4->!@!$  6C? 9BC6, 9M(E$AR&F!A"B#Q)[7*`=/V4)@4 ?"gF3P4&* ,5215X3(" ;U1)e>5Q1*% 8,09>"/E&11%  ./;>A A"9?"G+H+9 /7 N,g;.F$<21F"0&F)cE2iJ6_J}RA9 %/0C"G#@F%=!. 8T,!R(M!d7+zI9}K:m?3tD7VAq=,m;+- $M&B:6Y."[/!b3!`3"\5&X2$/ *,$ ' H$^/"?$61L,%$"#$<$7;"A0(.62#, (* X0%J*<#6 F$L'8 S2&{L!J'$ % F%H%4Ū۾ѵũӵػѵʮ̰Ͳƪĩʯʰպzr`TMB21*84,.,+)))++*,,,-.-/.,KFApi^|ptaZR;84)))!"" !!      !+#6,#@4)M>2YI;TG:I?4SI=SH62C=8FA9ULDwg۾ܸ߽ݼͯȫͱԷܿβīƬp]LcO9zkZzutwle_W1/+#!QKC|SNF|thŠۯضұܻͮջIJq"&)"ph]~~|ymzmocXnaU|{{z|{symrtgsfuj_ndZpfZ|pcseti]mdYtjwlukvks%#"JHGNLKOMLPNMIGEFDBJGEKIGJHEHFCHEBFC@HEBJFDJHENLKPOMOMKNLKPNLKIG*('                                "!20.VROa]Y_ZW`[W]XS[VRXSOUQLSNKTPMXTQVQNVROYUR[WTVROZWUfb_d_\\WT_ZVa]Ya^[a^[_[Y^[Xb_]b^\`][\YWXTQWRNYUQYURXTRWTQVROQMJPLJMIFSNKWROWROZVT\XVZVSZVTWSQSOLTOLWSP[VTYTQTOKOJFOJGUPMXSPXSPXSOVQMUOKQLGPKFSNJUOKSNIQLHTOK[VR[VR[VRYTP[UQ\WRZTPVQLUPLWRO[VR]XT_[X`[X_ZV\WSe^Y~rɰݾڽھҶѵδݽظ߿ݼܻͮίͮͮѲֵѳӶ׸Ѳ߾Ǫ{693? R4*T6,6& 2!  -/S:(E$1->!?!$  % ?C;<C@0- D#M)@!L$Q&C >!I%T- ^;-^;.K)!75 [;+cC19!"431/  1F%\7/d>5B'!/2,59>"; /7: : P-%F( 9!C*_@1A#0/"!/2<>?@ 8C'H,C(2/?%\4(^5*;9-9C   3M0"gI5lL8bMb?1) , * 13N(E":Q-%9- 4Q* R(L!`4(yH8}K;o@4pA4S?q=,m;+- ! J%@:;Z/#\0!b3!]1![4&W1$, ++"% F#]/"?$61L,%$"#*+3C/'K7-55.( , '.[1&C'>#6 P,R-!\2'Y3$@#)+4'1& - + + 55//=!=<=<<=8J(( ?!I%5ѶھԷܾ׺гƪ˯˰˰ڿϴ˰wzm\RLA77085.-+)((),++--,...0.-NIDslb|pt`ZS:74)))""#!""       !+#7,$>2(N?3[KVJ>RGWMAg[MUKA{ptyy|vz~ξϽƞ˦ϵxgB<62.+<6194.+&!-'!80);85777554432432321322444233../-..,,,***+,+ ׻]N>]L8985/0/.0//0/010-/.,-,+,+,-++,+,-+763KHBb]Tylwob|QF?QICRKETMGYRK]VOc[U_WQ`YRqf]޽ܻαҵܿͱȮѷo]eP:wgV~}}y}}z~ru~|s|pzoxqha[U53/ OJB|e^UibYƷڱسݼݻַؼɴ±q$(!-&bZO~{uhvi]bXMXOE}wv}|~~{~sgkbYqh]ncXqyq|m|mwhvh|pczovvux@> R4*T6+2$- ,3U;)F%1/> > -" 3CA 9@C8, 3J'K(>M$DB!@"O'X4&_<.W5)?3 L/"lJ6O3%) ,521,%D%H'`;2b<345-/87?"8.9:;;F*H,: -9!\8&l?0N*";4.A!? >#W7(kI6wQ=aMB) &,1A"U,"I$J( \4+C$. 2N(T*L![/$wG7~L;qB5m?3P=q=,o=,L&F"N'?:D"[/#[/ b3![1![4&U0#* ) . $ D"^/"@$81M- &$"#" E'L9/=&47;#* '" +Z0&B'@"<Y2"[2&d6*l>-tD0e;*@#F(7# 588R6*E-"/( + , ) 272./1;==;?6?!. 5I&6ʹھݾˮ˯ͱȭֹǫɮwreUMH>88275/-+)'((+++,-,./.31/RMGxpfyn|q`ZS:85)))###"##       +#7,$A4*RB6_N?[M?K@6VK?WK?SH<]QE]RFYNBOE:SI>WL@fYKSJ?ym~t{y~twξğmRKC-02(+-+++(((&''%$$*% :2+:636544330/.21010//.----+,++,,+,,,--.//122 '+tҶZL=ZI6><9132010/00010/0/./.-/.,-,*++()(++*541GD>jdZumax}|xwz~~m`pdthsf{krvqr}ǰڿٷֶαؼβǬжtb]I4l\Jswk~ryusuz~}y|xvx|uwruvv{osw{owk~qru}qwk|siqja]WP:73MHAvsla]WNتٸo' )"/'ULBy{}tgrdVfYNXOFy{t{yszsptquvssrg]i`Wri_tka|rh 422RPORPNRPOOMKQNMPNLPNKPMKOLJOLJNKHKHDHDAHEBIFDLIGNLJMKIPNLQOM310                  *)'TQNWTQWTPYUQZUPWRMWSNXTPTPMOKHPKGOJEOJESNJYTP\XU`\Y_\ZXTQROLURNVRNRNJPLGQLGOJEJD?PKGXTR\XV^ZW`\Y`[Xa\Yea_fc`d`]d_\c_\]YUWRNTOKWSOZVS]ZW]YW\XUXTPWSOUPLUPMVQOXTQ\XU]XVYURVROOKGKGCLHDMHDMHDPLHUPMSNKNIFMIGQMKWSPYUQWRNTOKSMIYTP\WSXSOZUQ]XTYSO[WS\WS^ZVea^hdafb`fb_d^[d^Zc]Yb\Ya\Y`[X]XTWROTOK^WQsϴݽڻ޼ݽڿͰٻ߿ܿӷԵ߿ֶӴίƨŦå̯ӵܼջغٺغ۽߿׷عں̮ 6? 2=R4*T6+2( %  + 3 U:(D$.--+( % ;B> 9B@1, =L(G&A:4@"F$R*\9,^;.K) 57bB0cC17#531/$ @%G&M,$c=4W5-$ )+277?"6/99>"Q-%@%9 M4'Z;-70)  * 1;<>? 9?"G,E)6-X5&{J7f:.=;/4I%7% D'n=1P@`LZG$ " 03R-#U,#T,#Z3*[4+@#. 0K(U+ L!\0&xG8|J:rC5k=2O=q=,q>-]/#_/#V+">:M'[0#\0!b3!\1"\5'P- & )9!$ D"\/!?#61M- &$!# . Q7,@/&25;!6&. 0;Z1&=%A F$[3#a5)c5)P,!j>+uE1qC/m@-L, 5936M2&J1&) +( , ) .64.04;<?;>;3- ) I%9{ֹۿͱػڽҴαƪؼŪ׻ʹvhYGB944.53-0-*()*,,,---...530TOI}ukzo{q`[T:96***$%$#$$     !*#6+#B5*SC6bQAaQBNC8VK?UJ>RG;\QD^RF\PDPE;TI>VL@dXJVLAyn~|tws}~rq|{fUKARH?ME<653//.+**(''%%%!!!*% 80)73/0/////,,,------...121343343232222343565244&+.PJCLF@kaWwj_~pdzlq}ԹҸëǭūǭūдzXJ=VF3A>:344243121010010121132/0/,-,)+**+*+,*22/MJCa[Q{n{}xuyê͵˴ȲǰƯ˲ֵܹέӭھֻ{i\H3fUDmf[($!ICJ&(7h;.|E9UDdO~SC*= ?!/>"Y1%T,"U,#[3+I) + .. E#U,!M"_3)SC}K:sC6j<1N=s?.r>-^0$^/#T*!>:O)[/#^1!b3!Y0!\5'N,$ 0 ? # C"\.!?#61O.!'$""  ?&K9/246=#,'?=C#Z1&C%@O+_4&c6)U/$2?"U1#Z4'I)$/6836F+!N4($* % , -.570/29<?=:=22-* E#:u̯׻ֹɬԸۿھԷеʰ˯ͯʭ۾ؼдѶƬ׽|m^D?611+20)1.+)***++-.-..-751VQJyn}r}rb]V<;8---&&&$%%       $.& 9.%C6,RC6_N>`PAOD8UJ>UJ>RG;[PC]RE\QDOE:TJ>WLAgZLYNCwl|xtt~q~zys{|wmXTJ?QF=SH=SH=OE;2/-'&&%$#""!""!&"6/)840---...00034345433234356633300/..-./.././00011--,..-...+,,(**(++&)+ &( % %!*'/%,((,/12A>rk`84/YSKibX~vi||pz}~zzogaWIE>;72~vj~vjRLEް۱ܺŤѻ|b!,$-%0(A91~qv}v{obti^LE?su{|p|rhujxnd~tjx~ytx|x}psxrssww|p?="hF3dD28!18 2/  -I+ F&E$[7/[8/$  +0829>"21:8B$M+#<#6W;-Q2'00"!.6<=B!B#3E*E*6<"<"rE2qC3C";18D!B" L)zD8H:[IcOsL=( V0^4#F&Q.$[2&X0'U,#O+", '-. @!U,!N#V+!QA}K:vF7i<1{I9s?.r>-_1$].#N'>;V-!Z/"]0 a3!X0"\5'J)!7D!!# C"\.!?#50P/"'$!" , J6,?.&/ 592%6I"* K(Y1%;!4 X0!d6)_3'5-0-44)<4637A&R6*-,$ + + +573.,3<>?240313E#9Ѵˮα̯ٽټٻָչīʮϲ˭ܿҶèжǮȯzwi[ID;66/21*0.,)**)*)---..-:74XSLzottfaZDB>121)))&''      ".&:/&F9.SC6^L>_O@OC7SHTI>[PC\PD[PDQGQF;UI>UK@30,"!! # 1+%95134344365476565432222143221010//.....-..***)**'(',,,..-------..-00/00////000233677677344///..-/.-210f[RKA8L=,A>9355133021/10-/.,-,+,++,+,-+()(%&%%&%))(120<;6`\S}xlv{|~Ҷѵܾ߾Ѹ_J3cPQNKSPMUQMYUQYURXUQYVSYVSZWS_[X_[W[WTWSOVSOROKPLINKHMIFOJFVRNVROXTQXUQZWU]ZX]YW]YWYURTQNVSQVSP\XU[WT^ZW`[Xb]Zd`\d`\b][c_\gc`fc`eb_b^\\XUWSPTPMSOLVQN[WT\XU^ZWZVSXSOXTP\XU^ZXWSORMIRNJWSOZWTZWTWSPXUR\XU\WTVQMRMIUQMSNKSNJQLIXSO[VR[UQWRNYTP[VSXSPZUR[VS^YVa\Ya]Yb\Yb]Za[Xa[Wa\Xd`]fb`d`]`[Wa\Xe`[~unϹԶָܽܿҳط޼ݼۻٺټֻ׸ʫɫӵͯҴݾۼۼгѳַݽ߿޿غˮȪǨƧʫ׹D( 3:16O1(U7,;"$  & =*S7%;+* & ((=B> :B?., =J&H&C 42=!G$O)\9+Z7+<2 X9*mK7N2%+ "; ?#5& D(J,!F%G&a;3O0(#,370; >"12; 7E&I)!;"9!]?0K-#0. %/9<>E#;:!H,A'3A%!G*zJ6g=-:6) A D!0@!c4)~G:J<_KaM_>32\3!f8&a8+a8+W0%Z3+X/&E#/ 0. :S,!O$Q'QA~L;yH8j=2n?2m;+s?.e4'\."G#>;V-!Z/"_1!a2 X1#\5&N/#-A#B #"C!\.!>#50Q/"($!!"@)!I8./365'- F EN*!Y0%:;Z1$\1&J'% 5.28@% 7C#443A$@$Q5*:"/*) , +366/,,:=C /" 231A!9ȮҵԶӵ׹۽ػػ۽ԸԶ̰¦׺ͱêʱ}|oaNJB88221+2/,)++)))---//.<95XTMxmsuojaSPJ@?;753642     ",$;0'H;0TE8`N?_N@OC7QF:UJ>XL@[PC\PD[PDUJ>XM@XMAh\NXMBvk~|y~rxl|p~x}pxode[PZPDSH>VK?VK?WK?RF;VJ?VK@841###!0*$84/21121042141030/20/31020/+*)(('(('()),-,-..-..'('))(,,+..-//...-./../.......////00/00-.-)*)))(**)---UOIE>8E7'D@:588344132021.0/,-,*,++-,./.,.-)+*&('()(+,,22/<82ZULkdY|ugtyٻڼӶ۾δeP:cP;xlpf\lcXiaWd]T^WNRKCE?850+&# # :6/QLDe`Wvpft~wlFB= ,)&a[SxPKDبޯ۬Ϯϼ}tiS!$/&1(1(1)!vjz|z}p~tiUOHqazvtwvy~{w{p}sht}ps|pw}{ECAWTRURPSPOTRQSQPTRPPMLIFDGCAKGELHFGDAEB?LIGTQPWTRWUTSPO421                        0.,UROWTRZWT_\X`\Y[XUWTQWTRUQNSNKUQNUQNPLIMIFSPMQNKNJGMIEQMITQMVSPVSPXUR[WU]ZYa_^a_]`][^ZWZWTYVS[XU]YWXTQUQNZVR\WT\WT^ZWa]Zea_gcafb_c_\b^[_ZXYTQUPMTPMTOKYUQ^YV^ZW]XU[VRYUR]YW_\Z]YVZVRTPLTPMVROXTQWTQWTQZWT]XVVPMOJFUQNXTQWSOSNKVQN]XTc^Zb]Z^YV\WT[VSYTP^YVb^Zd`\d_\_ZV`[Wa[Xa[V`[Vb]Zb][b]Za\X`[Wb]Y~tlǰۼѳָݿ׹ӵѳŨʬҳΰαгɭ̱ܻٻ۾ٸ޿ˮӵܿں׷ۻӵgPD0 ;18N0'U7,6"   & <)Q3#6*) & (+@A: =B:, .C"J'H%F!, 7?"M&S.!];-N.#3 >"iG4dD28 #.?#=!-:"K-"F(D$J*"Y6.<#)-752? 5D(G,<"9@% S2$|K7Q-":,, C!C!, S+l:/G:O?bN]JL1) -D(c7&a8+`8*G%F$W.$K& :5. 6Q+ Q'K {J<~L;zI9k=2h;/j8)s?.f5'\-"C!><W-!Y.!_1 `2 X1#\5&R3&: _7%C &  B!\.!>#52R0#($! 1L9.A0'156,&<L#@U.$Y/$9148,  6/49=#3G&64<N1$F)B'7/-+, +)071.*7=D 9 )6053ͲԶ׺ټػ˯Ͱǫݿ׺ڼūɰ}qdPLF<<621+30,*+,(((+,+//.A=9[VOzouz~wmkf^^YRRNHPLF20,    % .&=2)K>2WH:bPA`O@PC7PE9WL?ZNB\PD]RE]REUK?XL@YNBh[MUKA|sh~~zvwjwk{{~thbYNVLAVK@TJ>RG:52%&&#$$""" !  0+%82-**)-,+.-,/.--,,,+*++*++++,+/00232121343455343)))'''))(+++,,,,-,-.-././0/....//,-,,-,..-...//.//.00/JFCC>:=1"E?7:<<677132021/10,.-+,+*,+,--,.--.-+-,*+*,-,2211-)2-)1+'=5.k]PҷfQ29H+G+8>#?$]8'qD2>8# 5D!C!.5[/#s?3~G:TCcNTD8"" ,K+e8)a8,_7)<<T,"R*!1 =:. 3N)R(JwG9N={I9m?3i<1h7)s?.h7(\-"A ><W-!V,^1_1 V0#\5'N."8c9'@' B!Y- >#24R/#'$ !$;!=.&244-&3EK#> V/%Y/$:/. *%814;20J( 84A D(K.#720-++,(,440*2=@>-  % *20ʮո̯βؼոȫҵָܾǪʯϵ׾ncWA=722,..'30,+,,&''***..-FC>`[S}ru{txmrkake\LG@    %/' A5,OB6ZJ=fTDeSDQE8PE9WL?[OB]QD]RE\QDTI>TI>WMAfYLVLAypf~|~}wxzmzqewoci_T]SGXNBVK?QG;PE:QF:VI=RG;RH82+++-../00122000----...//232898899343121333443)))&'&&&&'''&'&''')*)***,-,---..-+++,,+-.-//.1100//00/HECHDA4*5,"*(%*)&('$('%'&$'%#&%#&&$&&%&'%()'++*))(+,*442@<8A>;EA?ZRLzβʯfQ>aM8rym}sf|n~o~o}oyltg}rfyodqh]kcYiaW^WNRMEFA;?:4;7273/2/++)&'%"%#!%$!%$"%$"&%$ $"+(% #!PKCOIBuФը۰ߴϮϼƴð{oX $&1'8-"8-#.$ul`yt|pjbYobVxvxup~nt}xp|}svvtpsq{m~p}xvu"JGEROMSPNURPXUTUSRRPOOLJNKINLJLIFHEBIGCMJGQNLVSQVSRUSQ<:9                     $"!=;8IGDROLTQNSPMLIFLIFOKHPMJPLHLHDSOMXUR[XU_[X\YURMIJEAPLGRNKUQMVROVQNWSPZVT[XVZVTWROTOLXTQ]ZX_[X^ZW_[X`\Y\XUYUR\XU[VSWRNSOKVRO]YW]ZWb_]d`^_ZWUPMXUR]YV\XV_[W_[X\XU[WT]YV\WT[WTYUSZVSYVSXTPUPMVROXTQ\XV\YW]ZX^[XYURWSP]ZW`[X]XUZUQVQNXSPYUR\XU^YW`\Za][^YWXROVQM\XTYSOTNJWRM`ZW]WTVPLRLGQJETMHZTPd_]gb`ea^gc`leb|sعݾ۽׸عڽػַϰбҴڽػҶֺչԶعܽ޿еܾ׸޿ɬ̮ƨ̮ڼֹ̰¦ѳܽշع޾ҳͮϰغ߿ݸ626K-$U7,6   * <(N1!.*' ')8A> 8A?.+ ;G%I'L&71= J%P*\9+Q1%3 <hF3fF3<#& ,?#="& % F(J-!I+ E%D$M-&. %,4825>5D'H,E*6?$ @%g?,[4'9- <C!A $B"_1&zD7~F9YGbNrK=').X1 d8*a9,X2%1;P* V-#??;.0H&S*Jm?3P?|J:o@4j<1i8+s>-j8)\."=;<W-!V,_1 ]0 U0#\5&G(;c9'?' A S+>#.8R0#'" 53/51&, AG!K#=& Y1&X.#:.. ))%=;8<, 0M,!=5C#5F)931-+)+ +)+//-,=<4<,   *.3§غͱݿǫɬΰܿոֹոβʯзӻj_T=:3/0(//'41,-..((())),,+KF@d^V}qv}|p|ti[UM    $0' B7-OA6ZJ=iVGiVGQE9PE9UI=\OC]QD]QE[PDSI>SI=VK?cWJXNBvnc{{xxrquj]dYMaUI^REZOBVJ>RG;QF:RG;UJ=VK>VL@QGXMB@<7$%%&&&#$#  82+B<5122122011/11/00/00...***,-,454566.//***+,,/0/%%%$$$%&%&&&&'&&&&)))***--,/.-/........./.111232./.-..FDBOKH?<87401/*/,(0-)+(#(% (% '$&#""#"#*& :61B=:B>;FB?ZQKsǭ߿ظܿǭƫo[HbM8yhuxl|n}p~p~q~pylvj{nyl{qeui|sgwpeibX]UMYQISMFJE?B=8<7273.63.62.40,41-.,))(&('%'%#"!!  NIBLG@}ujƠѰмòǵznX"&( 3);0$:/$0'e]S|xlpf\i`VOG>yjrdrd}pcxl_~pbte{lzj{luf{lz}puoyjopxitf}nqq=;9VTRVSRURQSPNUSQXVUVTSTRPMJHHFCHDBIFCLIFOLIQNKXUSXUT;98                  '"FDASPMWTPQMJNKHQNKSOLOLILIFIEAJEAMIEHD?JFBRNJVRO[WT\YUYURSOLWSOYVR[WSZVSXURZVT]YW[XVZWTYURWSPYUR]ZX_ZX[VS]YVb^\`[Y[WT]YV\YUYURWSPWROZVS[WU\XV]YV]WSUOKXSP_[X`\Y^ZW^ZW_[Y\XVXURZVTWSQTPMSOLPLHRNJWSPWTQWSPZVTWSQUQOZVSZVS]XU_[X]YVZURZVS[VSZURZVS]YV\WUZVS\XU`]Z`\Y_ZW_[Y\WTVQMYTPa]Zb\Y^XT[TOVOJVPJXRN\WU`[Ya]Zfb`skgռַո׻ܾϱбϱгֹټعֶӵѴд̰ϳβ׺ۿ׻ֹǪܽȫƩŧƧħ̮ۼ۾ӵݾ߿ۻʱ70+D(!U7,4 # + =)M1!.*& (+=A;;A:+ .@H%E#H", 7A"N'T0$];-D&0Q3%nK7X:+/!8@$2K*Q0#J,!F)E$B#: ' )-6632:=!% ,< 4G( ?$:!I.#fF5D+ /& 0:=>=9K+ G+B': @% I+ k@/C":%%@E#E$ O)b4)}F9~H:]I_K`>3 -4 ]3#b7)a9,P-!1 < E$N(AA=.. B#T+ K!a5*O?|J:qB5j<1i9,r>-l:*].";:;V-!V-`2 ]0 X2$[5&@!A#a8'<& C!Q*>#+;R0#&!' = "  44+ '=C G"K#=*[1'X.#;--( %?;:>* 4K+<5E$/;:64*))) -0./-/% 9?+ 4@. ! 3"غոͯĦƪնڼټ˯ŪʮũƬؿodY@=622+/0)51--..())))),+*OJDhbY}qwx|ob[R $2)"A6,N@5YIEC?BA;8<:697497420.0-+953D@=GC?LGCTMIf[Rvū̱ͱq^M\I4n^w|puiuithzpd}rfzocynbzoc{pdrh\ynb}rf{nxodlcXjbWf^UaXOWPHRLDQMEPMFLHAFA;HCA!@C* 9H%O(Y6)V5)67bB0kI6E+( ,?# G(]5%:& L(Q*>#*=!R0#$  + . *51&6AA!F"K"=.[1'X."=,+%&?7;>) 4C%75H%07:84' % *-,/ /-*0(1?4# >;" % ,"z۽ٺغݾۻڻڽ̰ƪȮؿj`V?<722,01*62--..)))))).,+PKDkd\}ryy~qhaW    $2*#>3*J=2VG9dRCmYIWK>PF:RG<[OC^QD_SF]RESI>ZNBXMAdXJ]RGldYvvuwjseobUaTGVK?RHWL?VK>[OB[OA]QC^RDaTF\PCND9J@6QGND:=95%''%%%#$# $ 60)A92***'''&'&))))**'((%&&())+,,011111232233233121$%% ! "#"#$$#$$###%%%''')*)---...010010010000/0////...><;MJGLIFNLHJIDHFAHFBJGCIHBGE@CA=C@8B>9>;620-KF?|mf\MHBղЯϮӲݻЯҽðWN= %)!.%.%6+ E8*D7)<1&LD;}~}xtfwjri_iaXd\Te]Ue\Te]TcZRg]Td[Qe\Rpf[~qym{n{nwi{n~q~pyksfsfrcxhyB@?XUTWUTYWUYWVWUTVTSTRPTRPURPXUSYVTZWUZXVWTRURPURP=:9                              #" 864)"4$F;5LHDOLGWSORMIQMIXTOXUQZWS[WTZWSYUPXSOUPLSOKSOJXSOWSOWTPZWTXTRVRPXUR\YU^ZW^ZWZVTTPLRMJVROZVSZVSXTRVRPUQOSOLWSPXTQWSPYURYUR[WT\XUZVRUOKWSO_[X]YV[VSVQNUQNYURXSQSOLXSPZURZVSVROSNKSOMZVS]YW_[X^YU[VRXTQXTR[WT^ZW]YVZVS[VS\XUXSPSNIRMHSNJWSP[WU[WTYTQTPMUROZWT]YW`\Z`[Y`\Zd`^gbae`]_ZWZURXROSMIUOJSLGRLG[VR_ZW^ZW`[Y^YWe\Vzmʯ߿ݽ޿غвѲѲȩȩϯҲѲܽݽںٽ׻ݿعغַвչܾ׹ܿYE<41& 2P3)-   6@*G,,)% '1@?9@@2;>94B=, > M&Q+\:-J+ 0H,lJ6aA04$9@#- C%X2$J-!H+ B#D$< ,!$,4724'9=!# ,9#% ,K+]2%b8+a8+V0"@#7,<B5, . =V-!N$O%M>|K:xG8j=2i;/p=,o<,_0$>7;T, X-a2!X-W1$[4&> K)^5%;& U/ O)>#( @#Q/"(* / $ +2* 0 @;@!E!J"?7\2'X-"?2:*!")=.==+ 6I- 7 6I&0699,!" &34. 0-+0-1@;" 1G#P*!< 0I3*ƫڻڻ۽ո˯۽ͱۿԸĩԹëpf\FC>44-12+51,-..+,,+++10.TNHoi_zozx{nldZ     %0(!9/'H;0TD7`N@jWGZNAQF:SH<]QD_RE^RF_TGTJ>[OCXL@bVI_THiaW|qyodi`Ui\PcVIXL@TI=TI=VJ>XL@^QCZNA\OB[NA^QCaTF_SESI=J@6RH=SH=MC8SH=C?:&''$%$"## ! '#81*C;2%%$"""$$$()),---..,--,--+,,-..,--***)**-.../.&&&$%$&&&&&&%%%%&%))),,,-.-/00.//000111121011000010122B@?ROLNKGNKFKICHE@HFAKICHF@HFAEC>C@;EC>><8<:5:85;86@<9UMHxj_{ҵϲҶԸq_YF1l\L}wj{re}tfuh{qdtk_qh]neZh`Ud\Qe\Rf]Sh_Uuk_vx~||zotmboh]haWe`VicYb\S\VM\VN^YPYTLFB=('$D?9~rxpeNHAӱã˪ӱ޿ˬԿXO=( +"2'4)8-!J;-J<-@4(D;2y{nzmug~p|rgxoevkzou{ptjyncthvjt{wwyvv~r~rvu}p|lsdy-*)LIGOKJPMKRONUSQTQPVTSWUTVTSTRPWTRSQOROMURQWTRTPN;97                                 /-+MJHOLI$*#7&IA;NKFKHDGD@KGBNJFQMJRNKTQNYVS\XUYUQVROWRNTPLSOLYUQZVR[WTYVSXURWSQTPMXTQ\XU]ZX^ZXZURTOKNJGSPM\YV\YVYUSUROTPMSOKUPLUPMYUR]YV^[X_[Y_[XYTPTOKXTQ[WTZVSYTQYURWSPSOLPKHSNLVQNUPNRMJQMJTPMXTRZVS\YV_[X]YVXTQWTQYVS^[Ya][^YVUPLSNKUPLQLHMHDOKGUQNXTQUQNRMJMHDKGCUQOXSQVROSNKVQN[WTa\Zd`^fa_b^[[URNHDJD?MGBQLH[WSa\Ya\Z]YW\VTk`XuҶ۾ܼڻдϱҳնַٹݾٺյӳϰԴܿ׻۾ܿѵֺݽ޾ټxbV*1'+M1'- 6@)E*,)# %6@= :A<3D"?44E 2- D#O'U1%Z9,<2 \=,mK7N2$) ,@#63L+V1$J,!F)C#C$9*" (-6632# 9>"' +"N-"G+G+5 C$m@1xI5i?.* :C!W3'0?!Z.#U)!p>2yF7WDgC8+*2S._3'a8+`7*P,=!00?A2 , .6V-"P'J wG9}K;yH8j=2j<1p=-q=,a1%=3;T+ X.a2!U+V1$Z4&= E$O+;% " X1"H&="! C%L, &/ * !& (( + >?#?@!E!J"D=\2'W,!?A2)E7- . ;+ >B 8>%X<*9;K'38; <9$ !! .;#// .*-1) ;>* $ E$Y/%G%.ܿڼ׹ݿȫϱڽշۿڽ§׼ƮldZHE@55.02*20+,--*++,,,541XRJrj`~vkyy|pnf[       & -%7-%H;0SD7_M>hUE[OARG:UJ>\PC]QD]QD`THTJ?YNAXL@aUHbVJe\Rqh^WLBXMA^QD]PC\PC^QCYNASH6-D;1$$# !"#$%&&'('&&&%%%######$$$$$$$$#$$$%&&)**'''%%%&&&%&%%&%&''***,--,---..+,,.//010010010121000/00BA?ZVSXUPROJNKEKHBNLFRPILJCJHBJHCIFBJGBB@;?=8C@ά̬ڹ۹ʮǫӸïİȴ^SB!+"-#6+8, :."L=.M>/B6)90&uyvi{peuhztvlxn}rxx{~rxyyxwssv~}wlzpe{qf}pc{kzA>;LIFMIFNJHPMKVSQWUSWUTWVUXVUXUTXVTVTQURPVSQWUSA?=                                  1/-IDAJFC;85",#;*!MGBPMIPMIHDAFB>JFBSOLSOLQMJQMJ[WT\XUXTQYURYURWSPWTQXTPZVS[WTZWTXUSTPNQMJQMJTPN[XVYURSNKOKHRNKVROXTQZWUYVSWTRWTQ[WT[WTYURZVS\XU^ZX^[Y]YVYTQXTQ\XU]YV]ZW]ZWWSORMIPLHSOLVROWSPWSOVRNRNKNJGSOLVRPXSPXTRTOMRNKTQNXUSYVT[WTVQNPKHTPMVROQMJPKGRMJTOLOJGNJFOKGOJFSOKSNKSOLTPLVQNZUQ^YV^ZXZVTVRORMJPJFOIEQLGQLIUPMWRO[VT[WU`[Wsjּ޿۽޿ˮ˭вԵطӳ޾ٹ׷պƫͲھ۴3()K.%-  :='D*,)$ (:@; <A88D":46E- 0 L&P(Z7)Q0%2 @$iG4dD27' : ="! .<R."R0#J,!D'D#B#4&  +/755."8>"+*D"M+!( F$X,#X,#wB6yH8VEW90  ,<$U/a5)a8+]5(F$< *$ 2 A@/-.1T+ S*Im?3M=zI9l>3j<1p=-r>-d3&=3;S+[/a3!N(V1$Y4%E&85;$ $ X2#D$@!E!J"E=\2'W,!=G9/?3*! 250 :=7H,\=+<>K&="E,!B&C!B&+!!8 D) 6- . +(/)- ?/ $ ;W/$Q+" $ 3 oZMݾۼۼ۽ԶħũȪǩ˭αչԻĭ}d[SC@<55/12+74.,,+)++,,,974]VMska{rgw}tqi^   & ,$5+#F:/TE8_N?fTE\PBSH;WL@[OB\OB]QD_TGSI>XMAZNB`TGeYLcZPjbYYMA]OB]PCYL@YL?\OBWL@TI=VK>^QCcUG`TF^QDZNAXM@PF;VL@ZOBXK?VJ>XL@YMAG?7 !! ;3*A8/?6.2,&2-'.*%&#!  ! "#"#$$#$##$#$%$(((()))))*++)**+,,,--./////...---,--;:9WSP[XUVSNROIMKDOLGTQKQOHOMGPMHQNIURMOLGKHCLIEOKHUPM`ZUtjʱԷūuVC.dTDwq~p{n}uhsl`vobty}pzsg|o}|yxrkdZ@<7/+(qj_tSMEغгçȲѼԿ_TC',#/%8, ;/"<0#M>.QA0G9+8.$|oywmazper|wuzov{~x~s~rsuw~rtz}~uzn}o}lz{mq 753OLJQMKROMTQOURPWUSYWUXVTVTRYWU\YX]ZY\ZX^[YXVU<;9                                    ;96OLHRNKMJG3/,%-#>0(JFAKHDLIEEA>@<9DA=LHEPMIUQMQMJQNKTPNTOKTPMZVR\YV\YVYURXUR[XUZVSXTQVRNWSPXURXURYVTZVSUQMPLHOKGRNKOJGSPMXTRWSQVROZWT]YW[WT[XU]YW^ZX]ZW^ZW]ZW\XV[WU\XV^ZX_\YZVRTPLVRNTPMQMIOKHPLIRMJPKHJFBMIFMHELHETPMWRPXTQVROTPMPLIUQOXTRWSQWSQUQOSOLUQNXTQ[WTYURWRNUPLUPMYURZVSXTRVROVQNZVS_ZW_ZW[VSVPMTOLUQN[WT[VSPKHMHEPKGVQN[WTf_\|r«ؾ׹ӵֹܿػԸ׺ԷѴػۿ˯ū޿ȰؿعдѴն˭߾ȪҴն޽߿ܾڻ׹ϱӵػټػؼؼۿӷչۻи4*% D*!-  <<&D+-(% +=?9>@5>D";46N+b?0H'O'P*Z8,C$0R4&nK7X:*+ /@$4'<>"V1#M-"J,!=!B#@"0# " ,2745)# 7>"-) < ;$ )4 A=,10- O(V, J a5*N>{J:oA4i<1o=.r>-e5'=2:Q*[/a2!E#V2$X3%>!2 7;"* Z4%@#:  H)4" #% ' %'+ .9!=#=@!E!I"D@!\2'V,!= L>35*#%#3. 7. :6R2"[<*?B I$6:$B'H#D#/& +A'>%1- , )(/6A. # -U.$W.$)93ȭֹܾ˯̱ȫʬ̲־ȳw]UN?<844/01*95.,+)())*+*;85`YOtkayper{}uwnc&$    % .& 8.&H;0VF9aOAhVF]PBSH;ZNA]QD]QD\PC^SFRH=[OC[OC_SFfZLaXM_XPTF;YK?TH=QF:VJ>XL@XM@YNA\PC_RD`SE]QC]QD_SEXMAOE:VK?YM@ZM@VK?PF;G>4;4,3-'4.'3-'0*$*& 3,%<4+91)6/(6/(6/(-)%)'$)'$+(%+)&*(&)'%*(&+*)**($#" !""#$$#$$%&&%&&&''&&&((()**)**)*****987VRNURNWTOYVQXVPURMPNGOMDPNGSPKVSN]ZUWTOSPKTPLUQMUPLVQMc[U{oϴ޿ѶYE/hVE~|vw{|unbIE?)&#e^UySMEظʵ¯B9-,#/%2(:.!>1$>2%M>.SC1I;,8-"umb~~p{pd~o{xvk~rt{y~r}q}quzx}ysynssy{~mrzz "! PMKWUSVTRVSQVSQTQOURPXUSZWTYVTVSRXUT[XW^[YWUR310                                /,*IFASPLQNKNKHHEB(# ' 0#D80LIEIFBHD@GC?EA>KHDPMJVSPWTQUQMNJFLHDMHEJEANJFXTQ[WTYVSZWT^\Y[XUXTQXTPYVRXUR[XU[XUXTQRNJRNKOKGOJGNJFUQNZWTYVTVSPROMWSQZVS\XV]ZXZVTUQNSOLXTQ]YW[WUZVSYURXSPXSOWRNVROPLINJFMHEJFCMIEPKGOKGOKHQMJOKHWSP\YW_\Z]YWUQNOKHPLIOKILGEIEBKGDNJGQLIQLHUPLUOLRLGUOKUPLUPMZVSXTRSOLRNLXTR]XU^XT]XUZURXTQSOMUQOWSQQMJRMJUPLVQMTOK_WR{nϵԷαֺ۾ոʮ˰ѵʯƫ࿤ɭڼȬгҳŧήڹغ۽Ӷնܻܽܿ׹շѴӶͱƩ̮߾ݾٺعݽG1+3,% 3*  :8#C*/( % ->?8??5B!E">74 X6)tL:V/"P'Q0&P3+66bB0kI5D*& 4@#:N-#H)=B%V1$J,!H+ 4A"= .# &-5744% &6>".& ; ?"L+#<#9 Y;-`A25. -<<<>!O."K, E*C'" A#Z2(e<,|K7R1#1B E$=, W,!T)!f6,xE7Q@pJ 7]:'a<)D H$K%/1@&J%G#2, 8 A'8 1+ * &*2@3 ) Q-#[1&D"35&ۼո̯չշոѶͲ˱zmWQK><844/-/(73,,+)())***>;8c[Rvmb{rg}q{{x|sh0-(  $,$8.%H;0UF9bQBkXH]PASG:[OB_RE]QCYMA`THSI>]QE\PC]QEgZL]TJVPIOD9QD9LA7TI>\QD\PCYNA\PC[OB\PCaUG]QD]QDbVHZOBRHYM@OD9B:192*:3+;4,;4,:3+92*:3*;3+:2*5.'4-&70)92*92*81)71)70(70(70(60(6/(6/(6/(60(5.'3-'1+%1+%/*$-("($(#&"%"%"$!#!" #!"!! "! "! 542SOJPMHURMYVPXUOVRMQMGQNFTQJURMXTO]YT[XRTQKTPKYTP]XT[UQZTPja[~s^I1jYG|pYTM # YSKzKE>y׸ʵ?6*1'2'5*=0#@2%A3&L=-TC1I;,:/#ri^x|m~ntexjvjujznsvjxncyoevlbrh^si_ulayod~rgwkznvk{qfyoezn|}{m{ B@>XTRXUSXVTYVUVSQTQOROMTQPWTR\YW[XVXUSWTRKHF&%$                                     0.,EB>KFBLHDQNJPMJLIFFC@")"3$J@:PMHKGCIEBHEAHEBNKIROM[XU[XVZWTXUQRMJLGCFA=FA=OJFRNJQMITPM\XVZXUVRORNKUQMPLIOKHPLIRNKSPMUQNRMJNIEMIETPM]ZW^ZXYVSUROUQNVROXSQ]YV]YVWSPOKHOKGPLIPLITPMUQNTPLWSOWSPXTQTPLPKHNJFNJFPLHSOLVSPURORNLTQOZWU^ZY]ZXZVTVQOSOLPLIMJGJFCIEBIEBHDAKFCJEAPKGTOJOIDTNJXSOWRO[WTYUSRNKNJGOKIXSO]VRYRNSMJOJHMHFLGDPKITOLVROZUQ]WTZTPh^VuƬ˯۾ټܾշԷշԶӶھڿۿгʮͰҶɬǩȪǪβӷҵдӸ׾پ׸ӵ׸ع޾طյӵѲԴܼ}j_,.&((  82A)/( % 0>=7?<6C!E#;:?iB2lE4Q)P(U6,E)"2 F)lJ6aA/1 "0J+"e<-W3%;E(U1#J,!D(4C$9-" ).7651# '/>"4#; @#M,#<#;"]?0eE5L2'0 0=<;C%P.#I,F+?% T0%L( k@/zJ6H*4A D#87X-"T)!o<1xE7RAfC8V8/3 3J)\1&a7*a8+M+!:/ .<B4,97( C!\0#M$I]3'|K:uE6i<1l%<$6- ) ' '& >;" $ F&]2'L'D#25yh߿ݿӷǬ¥ڽܿؽδz{naQLF<:633.+-&30).,+)**+++B?;e^T|rgwl~ry}|yy}ti3/+      $-%8.&H;0UF9dRClYH]PATH;\PC_SFZOBTJ>aUHUJ?^RE\PC]QDi\N\SIRLEMC9RG]QE`TG_RE[OB]QD]PC]QDdWJ_SF_SFbVH]RDYNAUJ>JA7B90@8/@7/@8/;4,81)92*;4+:3+81)60(6/(81)92*92*92*92*92*:2*92*92*70(3,%2+%4.&5.&5.'6/'5/'5.'4.&3-&3,%2,%2+$1+$2,$2,%3,%2,%2+$1+$/)",&-'!2-)B?;TQN]YUUQNURMURLWTLZVPXTMXVM^[S]ZT^ZU\XRZVPSOISOI\WS`[W^XTUOK\UQkb\uḬ̆bM6m[Hvd^V('$'$!ZRI{JCEA>HEBLIFWTP\XV\XU[XUXTQSNKMHDID@LHCQNINJFIEAOJHSPNWTQRNKNJHLHEIEAGB>LIEQMKPLIOKGQLISOLWSPYURYURWSQSOMQLJMIFMIFSOLWSPURNSOKRNKPLINJFOKHUROSPMUQOZVS]YV\YVXUQUROUROUROVROWSPWSPUQNRNLTPMXTR[WT\XUZVSXTQQMJQMJPLIPLHPLHNIENIEOIERMHTOJPKGQLHRLHUPLXTQZUTYURVQOSOLRMISMISLHRMIQLHRMJQMISOKSNKNIGPKHWQNZTQti`չϲշոɮҶ׻ٻƫϲܿټӶ̮ʭг۽ػ׺ڽھۿٺҴٺݽݼб׷ڻܾܾ񯙉1'(' %=1@'.( % 4?<9@<9C!G$9:F"nG6]6'P'N+ S6-:2 <"L0#F+ ' $:b;/d;,V2$9L, S0#J,!?$8C$4, +1765*$ %*>"9$ 9A$M,#<#;"^?0eE5L3(/ 3=<:I*P.#H+F+: ) Y2(B"rE2vH48 :B L) 3B"W,"W+#uA5tD5g?1\<3T7-,;#L*a4(`7*_7*C%:& % 0?@/ .;F(.7\0#P'K T+!zI9xG8j=1f9.Z, ].#K%-9O(`2!^1 B"X3%Y3%>, G#P*"3b5'].!909# #%&&! ! #*/95A!D!DH&[1&S)K9/PA53- ( ="B 9 C!:nG0d:'N)X0!V*0-6 L'M'=/+  6<$8 .* ( +)==7.?"]2'M(F$ & ?fM@ʭغӶβĩŭ}ui[MHB<;6650.0(42+974---,,+EB>g_V~ui{oux{{xwzrg2.*     #-%7.%G;0UF9aPAiUE^PBUI<]QDaTGYMARG<`THUJ?]REZOB[PCj^P[RHSMFSI>]QD^REaTG[OB^RE^SF_SF^SF]QEcVIbUH`UG`TG\PC[OB\PCYNAXM@UJ>SH71<6/82+82+71*5/'5/(2,%2,%1+#0)"/(!0)"/)!/)!.(!5/*=95OKHWSO[WS]YV^ZWVSOURMWTMYVN\XR\XPZXO^[S`\U`\V]YSYUOSPJTPKZUQ[VS`ZW\VR]WS^XTja[{pʹmWAr_J}y{}yymb[S/,($" WPH~F@:oh]նٹؽƱ8/$3)4)=0"C5&D5'E7(N=.ZH5[I6E7)aXM~~xhwj]yj{kxhpascxi[i]PcYNe[Pykxv|ypxj|mvs}nykuhwi{naodYzod|pdC@>OLJPMKPLJRNLWSQURPTQOQNMTPNSOLTQNPMJ864                            <;9RPNTRNOLHMIEMJFTQMVROWTQUQOQNL?<:",#;+"TOLTQNNKGFC@GDAKHEMJHNKGQNJUPMTPMSPLWTPXTQWRNUPLRNJRNJNJFLGCOKGSPMUROTPMOLHIEBGC?GC>JEANJGSOKVRNUQNRMJSOMSOLTPNVRPUROVROSOLOKHMIFMIETPLXTQYVRVROSOLQMJWTQYVSWSQXURZWT[XUWSQQMJROLXUSWSQUQNWTQ]YWZVTRNLQLJOKHSNLRMJQLILGDNKGTPMTOLQKGPJFLFBKFARLGTMIQKGPJGKFBLGDRNLTPOVSQUQPUQPPKILFCKFCROLWTQZVTYURUPMPKHID@E@1b;+N, :R/"P/"J,!9= A#1# ",3754& ' # ="; # 8C%N,#<#;"^?0bC3G0%+ 5=<>N-"N-"F*F*5=H&vH4rE2-$?A D"+ L'U*!]0'xC7qB3^:.]=4I0'(C&P+c5)X,"P(; 9 )3 A>,1= R0#0/[/#S*L!L#tE6zI9k>2h;0[-"]."P(/9O)`2!\0@!X3%Z3%9- J%O*6g5'g3%4/0 #$'' "#)-1- ? F!CK(Z1&T+ O>3UA5T2$1/:$B 6 C B'pH0_3#V/!\3#V*- -1K&M'A .0))8!:"-, ' ) *9=2H(Y3'^4(O(D" ?V:0ˮ޿պζ{m_QJD@>;::513,31*D@<875431PLFnf\ymsuw~zy{vyqf;72       +$5,#F:/TE8`N@gUD^PBUI=]QDaUH\PCSH=_SGUJ?\QDXMAYNBi]OZQGRMFYNBZNA^QDbVH]QD_SF^RE_SF`TG_TGbVHbVHcWI`TF]RD^QD[OBWL?UI>OE9J@6@8/:3+92*91)92*82*81)82*81*71)60(4-&skU֦˝ruhkb[[UPXRMVPLYUPWSOPLHQMIOJFTPLVQMVRNQLHNJEHC>C>9JFAZURWSPVRO\XT^ZWZVS[XTSPKSOJ[XR]ZS\XRZVNZWMZWO`\T_[U`\V]YRVRKUQLWRNWRO`[Xa\Ya[X]XTZTPja[yp˴̲p[EuaLyǼżƻŻz~ujaZR51- #!OIA{GB;jbYɭǨȳ2*5*7+A3$F7'G8(F8(O?.\I6\I6G9+RI>|~v~ni_V{n|nzmsvt}qdMF>H@8n~x{976URQTQOSPMQNKNJHRNKTPNRNKLHFKGEIEBA>;&$"                         <97\ZX][YUROROKOKGIFBMJFTQNYVSUROMJG1-+%.#B5.XURXUSURPPMJNKHQNKOLIMIEMIEOKGSNJUQMYUR[XU[XT[WSWSPSOKNJFNJGSPMVROWSPXTQTPMKGCHC?KGDOKHVROZVTZWTYVSRMJQMJTPMTPNXTRYVTWTQWTQVROQMJNIEPLHYVT[XUXUSSOMNJGRNKWSPRMKWSPYUSVSQROMMJGNJGUQOUQOSOMRNLTPNUQNMHENJGPKGRMJRMISNJPLHNJGQMJVQNTNJPJFKEAGAKEAOJGQLIKFBHC@MHFNJHNJHMJHQMKQLJOJHNJHPLJRNLQMJQLIQLJQLIPKGKFBHC>SLGthӹַ׸ݿ۾ܿ۽۾Էβշ۽ٻ߿ع׸ٺعܽ׻۾۽ݿָ۽ѵ߿95+(' ) 3/<#1&  3;%9"=?8?C"D"9:Z7*^7(O&R, X7,= 3 >$85* " H) e>2^6*I+<= U0#L-!I,!6A"@". &-5752# (# =!=!*5D%N,#<#=#`A2aB2F/%) 8<;E$P/#K+ E*E*.$ 7O,"xI5j@. +AC"I'* R*S)!c5*xD7m@1\:0\<3>( +F(U."b4)T&F :5,5 A<+4C%U2#%*V, W-!L"Hk>0|J:m?3i<1^1&\."T),8L&`2![/E%Y3%\7(=$2L'L(>!h4&c1$% 3- ##%$ "!%,( ! <J#CL) Z0%T+ O>3aE6e<+56!;#B+ # AM0 pF/Z/ Y1#[2#V*--/K%M'D"//1 .9"21) ' *0>% Q-"_7*^5)R*!J%:  =T8.ַܾɰìoZRJ?=9::634.10)VPIUPJKGBaZRwmbsvtx|}w|uyqgB>8     +$5+#C7,RC6]L>dRB]OAVJ=]QCcVI`TGUJ>^RFVK@YNBWL@WL@g[MYPEMHA\QD]QD`TFbVH^SF^SE^RE`UGcWJaUG`TFaUGaUG_SE^RD]QDXL?QG;I@5@8/=5,;4+;4+;4+;4+:3+:2*92*81)81)3,&"E>3pΦ֥nhrn^icZb\VYSNYTOWRMXTOXTPWRN\WS]XT^ZV`[Wc_[`[W]XT[VQZTO[VQ[WSXSPYUR\XUYURSNJVRNZVRURMXUOZWQ[XQZVNZWNXVL\YQ]YR[WQ]YRZVPVRLTPKVQM_ZWa\X_YVWRNUOJ]VQh_ZtkêӷêaN;q]HɼǺŹĸ}}ppf\UNG2.* " IC8A C"?9<a=/lE4X2$W4'S2&4 9A(- -" 9d<1b;05" ;?!T0#J,!H+ 8C#= )).763-$ & $; @#22E&O-$>$=$aB2]@1E.$) 9<;I)P/#E(D)D)( .9W2%yJ6\7(4@P.#lE6>#U+!R( g8-wD6i>0[;1Y:14"2F'[1%a4(R%@ :. .8B8+7I* g=,E(& O(\0#M#I `5)|K:pA4i<1^2'[-!U**8J%a2!X.F&Y3%X2$I$J( M(I&F&i5'_/"+( , )# ( 2 #" ,% ?!J#CM) Y0%T+ O>3dD4W1#:6!;#:) >@'f<)X.[2$Z1#X+1 .,G#L&G#2.9# '7 550' * .=# H(_7*_5)R*!M'h;+A%7BٻݿĮe]U@>:88323-..'kcYvndg`Xxocwkvxsyxuz~rxpeD?:     ,$6-$B6,QB5]M>aP@\OAVJ=]QCeXJeXJXMA^SFWLAYNBYNBVK@fZMXODID>]QE^RE_SFcVI^RE]RE]RE_TF^SE_TF`TFaUG^RE^RDYMAPE:H>4A8/?7.?7.>6-<4,:3*:3+:3*92*81)70(*%'"[QBrǢ׫ʽ{hpo\lk]jh]b^W]XRWQLXSNYSNYTOZVQYTP_ZU]XSWSNYTO\WS\XU\XTZUP[UP[VRZUQWSO\XT\XUYUQZUQZVR[XUXUQVSMVTL[WP]YR^[S\ZQZVN\WP\WP\XQ[WQUQKVQLYTPb]Yd_[b\YXSOVPLYRM\UQbZUukds¨ϵq_NlYDķvxzwwxtvjldYPJB0,(?:4|pe^USMFŮ̮Ӽw7+ 8, >1#B4%D5&H9)M=,]J6ZH5K=.F;/v||zkUMEzpeh`Wumcwl|q|rfvk_UMDqcUp~}xTRQVSRWTRTQPQNLLIGHDAGC?KGDLHD953                              +)(C@=HEBIFBIFBNJGPNKPMJLIENJFOKGMJGMJGFDADA?"*"3$J@;PMJMJGKHEOLIURPZWUZWT[XU_\Z`\ZWSPOLIQMJSPMUQNZVSXTRTPNOKHOLISOLWRPSMJQLIUQNYURZWSa]Z`\Y]YW]YXZVTXTQTPMMJGOKIMIFNKHURNTQMSOKNJELGDLGDLHDOKHMJGSPMVSPWTQSOKKGCFA>PMJQMKPLIQMJQNJSOLVSQTPNSOLTQNSPNROLQMKNJFKFCMIETOLRMJPKHMHDJEBMIENIFNHDKEAMGBNIDNJFPLIUQNUPNRNKRMISNKSOLQLJOKIMJGNJHQNLQNLQNLRMKSOLUQNRMJMIFMIFPKHcZS~oӸۼӶغԸϳݾݾ۽ڼڽӶαȬ̯ѳعݾٽũܻŧӴֹԸ׺ܿҴвӴ׹ܿԸܿӷ񴞌2)'  G#4,84'  3;$8>=8B D">9?hC3oI7`<-[9+B#3 ?%9 + * %U2([6,Q0'F)B%@D%T1#J,!E):C$8#  +1740'& "  #8?#7.E&P-%?$>%aB3Z>/D-$)! :<=M,!O.#B&E*A&7@!9_8)xI5K,8?X5)jE6B#V+"S)!n=1uD5d<.[<2S6-,4A$V.#]1%O"C :&$ /<A4,9N-"tD2h=,3G#`2%T, N(O)zI9sD6i<1^4*X,!X,!18G$`2 S+< Y4%X2$M'O,#M(G%J%i3&]."A7*'# -7 $ #+) B$J#CM) Y/$S-"Q?4a?/H$97";#7& 28C(`3#K'_5'Y0"W*0 0+D!K&I%5.; '# 49"@'9( + 2=' ?#`7*_6*V-#H$l>,H)71ݿɳne]HEA;:545-,-$ul`vyn{nrxzryv~txznvncC?8  $-&7-%A6+OB4ZJ;^N=[N?UH<]PCdXJh[L\PCaVIWL@XMA\QDWL@eYKWMCEA4@8/>7.=5-=5,<4,;4+;3+:3*92*81)4-& ;3+tgXšѩƠ¯ykyv`nmZihXji\lkaea[`[U^YS\WQZUO[VQ\WRZUPXSNVQLUPKXSOXSOZUQ\WSZTPYTO\XS^YU]YU_[X^[W`\Xa]Z\XUXUQWTNWTMYVN]YRa]Vb_Vc`Wa]U_ZS`[T\XQ[WP[VP^YT`[Vd^Zd_[e`]^YU]WR_YT_YU\VRa[Vpf^wʱԸƬubQhT?uykf^SA<5 =83umcog]MGAڻ¡}5*8, >0#E6'G8(J:*J:*\I5]J6P@0E8+~q|xykNF?thsri`xznsi_xm`kaU pcVn~~z}~}OLJPMKTQPURQTRPSPNQNLROLLIF1.,                             864GDAEB?EB?GD@HEAIEBGDBKIFMJFPLHROKLIELIFKHEC@=#+#6%LE@PMJKHEGC@HD@PLJTQNXUSVSQXUR[WTUQNLHDNKGLHEHDALIFQNLVRPRNKTQMSNKPKHKFBLHEWSQ\XV[WTZVSWSQWSQYUSVRPRMJRNKRNKSPMOKHHC@PLHTPLUQMSOKSNKTPMTPMTPMRNKTQNVSQVSPUPNRMJEA>GCAIEBMHDQMISOKPKHNKHPLJQMJQMKROMSOLTPMTOLOJGKGCSOLXTRWSPTPLQLHMIENJGPLHQLHSNJUQNXTQXTQXTRYUR[VS\WT[VTXTQTPNPLJPMKSPNRNMRNLPLKQNLQMKRNLTOLQMJQMIYTPvkbͲͱֹڼ׺вϱ׸׸ѳָԶ޾ܼݿغв̯ˮ˰ɭũʭҴ۽ϱ¤ŧƩͰոܾ۾շͭӴڼ׹ݾ׹Ȭӵгд׺к4,' ! H$2 *:5& 0:$8><8A C"=9F$iC3X4'X5(T3'68?'&+ - - 9`;092^:)S1#?I(S0#J,!C'<B#3 " ,472/$ ' $7?#9*E&P-%@%=$aB2Y=/E.$+#8;@O.#L,!@%F+=$C$@ =k?.tG38 :>`;.a>1I%T*!W,#tA5qA3^9.\<3K0(*(( 4T+!O!J!8 )0>@/ / :\6(uE2b:)A$9`2%W."S,!D uE6wG8i<1b7-X,!Z-"37B!_1 P)5Z4%X2$M(M+#F"<R*i4&X+ A1)%" , *"$  % +,! A#J#CN*!Y/$S.$U@4Z8)L(58#<"CB73M-_1!E$f9*Z/ U). 3*?K&J'7/9/ 2;#@'>", + 2;C#O-"_7*`6*X.$I&m?.K*99ջټ׼ӹɳyndYRKIE=@?434*vma}|uwy{sytzrvvkvncJD>      & -&5-$=3(J>1WI9`P?[N?UI<\PBbVHfYK\PCbVITJ?WLA\PCWL?cWJWNCD@:XNB]QE`TG_SF^SE\PCZNAZOBZOA]QDWL@KB7A8/:3+5/(3-&1+$/*#0+$1+%1,%2,%2,%2,$H@6׼ȦƱmuctm_lhZddTcdTeeVih[hf\`]V_ZU`[V]XS[UP^YT^YT]XSYSNVQLWRM[VQZTPZVR^ZUa]X`[V`\X`[X^ZV^ZW^ZW^ZW^ZWXTPVQMXTNXTM[XP_\Ta^Xa^U`]Ta^V`[Td_WfaYd_Xfa[fa\ga]ic_f_[ga^ic`b]Y`YU^XT]WT^YU`ZUne]xǫдxcQlU@xuvsqsqxjzobbYP@;6<72ld[~ujNHA~ή4)6+=0#G8(N=,N=,J:*\I5bN9UD3F9+|n~qyj^ULxkvxy~rvvth\obUo}~}{|qyozpyn}s{}|{wxvNKHLIFOLJSPNTQOSPNUROHEC&%#                              +)'LIEGDAGDAIEAJFCKGDNKFNKGPMJQNKOLHOKHPMIPMJOLI<96"-$9) KFBPMJKHEIFCJGDQNKTQNXURXURUQNQLISOKVROXUROKHNJGROLQNKTPMXTQ^ZWZVSRNJNIELHDROLXURWROMIEMIETPMXTRWSPRNKNJFLHDPLIQLILGCPKGXTPZVRWSOUPMSNKMIFLHEPLITPMWTQXTQXURWSPNJFJFCOKGTPLUPMVQNTOLRMJUQNWSQUQNSOMTQNUQOPLIMIELHEROLTPNUQOVROYTPVQMRNKVROUQNTPMVRPUQORNLOJHOJFPJGUPLZUR[WUXUSQMKPLISPMSPNSONQNLPMKQMKMIGOKHRNKVROb\Xynոݿݾӵϯ׷ۿٻַɭϳͱαָԷշ׹ڻܾϱȪƩӵ׻ռؿԹٽշаظټڽؼ׺αع׸ٻܾK5/4/& $ I%2 % ;#B+!& 09$9>:;A B"=9M+!iC3S0$N-!95 3/'1 3/ D*!d=165c=+G(>L*P/"J,!A%?!A#0 &-661-# (!* 7?";(D&Q-%B&;"\>/U:,D.$+ +:C#P/#G(=$F+=#E%;D"qD1pD1+$ >>hA3Y8,P(R) ]0'uA5`3(Y8/[;2>(*' * >"T* O!G!4,3 @>,3>!f<,rD1X6&X5'3_1$Z/#V."D k>0zI9j=1f:0Z.#\.";7A _1 Q)8Z4%X2$N)M+";/2X+g2%M%@. )/ 5% #!  (+' . G!CO*!Y/$T.#Y?2P.!Q,28#=!@=78X2#X.F$h;+Y-S(. 6*9J%I'5070 -45?$214<I%O-"^6*`7*X.$J'pA0J*;=ƬܾԺȱxzociaT[WGDC3qh\|~{{z|vx~rw~ruxmyqfOJC     #,%3+"=3)J>0VH8`Q>[N?UI<[OB_SFcWI[OCcWJTJ?WLA\PCUJ>bVIZPEB>8VL@^RE^RE]QD]QD]QDZNATI,J:*YF3cO:YG5F8*uk_}|oxiaWMxnc{vwx}ofZNwhzy~y~{|zwuwSPNRNLROMSPNTQOSPNDB@                                   /-*OLHKHDMJFOLHMJGKHDMIEOLHPMIROLSPLPMIPMIMJGOLI41.%.$>0)LIFNKHJHDIFBJGDPMJVSQ[XU\XUZVSUQMUQNUQNWSQNJHIEBOLJPLIOJGRMJUQMUQMQMIPLIRNJQMIRMJOJGJEAKGCRNK\YV^ZWYVRWSPVQNVROXTRUPMRNJVRNWSPTPNOJGJFBIDAFB>FB>IEALHDNJFPLIPKHKFBNJFTPMXTQWSPWSPWROSOLTQNPMKNJHQMJTQNXTQWSPTQNQMIQLIQLIMHFKGDPJGTNJTOLWSPZVSYTQYTQUQOSNLOJGJEAFA=IEBPKHUQOXTRVRPTPNRNLNJGNJHPLJOKIOKILHEIEBJFBMHE`YT~r«̲۾ָϲѴܽݿٻݾܽٺݿغֹܽݿٻ̯ѵݿٺ׺˰γٽֹϲбвˮӷҷĩèΰܻ۾ָֹ~k_1' $ ' B!. 8!H1%' 19#9>:>A @!:8R1%d@0R/#G'5 3 ' %. 32)R2(c<13= a<*3<P-!M."J-!@$A#@", (-750*$ & #-7?">"*A$Q-%D':!Z<.T9,E.$. +:E$P/#A%@'E*="@ :I&sE2h?. * ?B"nF7[9,S*Q( d6+tA5W.$Z:1X904!+) ) J(Q'O!D!1-6A;+5E'oB0mA.\;)oE2a5(e5']0$W/"K%_5){J:k>2g;0Z/$\."?5?]0O(8Z4%Y2%O+ J+!;3I!c4&g6'I#@+ )76# # -+( - H!C P*!X.#V/$U:-H%J)08#> @>:;L*E#N)j<+Y,N%- 8!*8J%I'5061), />%9149H$S0#_7*`7*X.$H%oA0J*>A§ٻݿѺ˶xyhvp[[XBsi]z|~~z{ut~rvstxlyqgOJC   !)#1) >4(K?1UG7]M:5OF<^RE\PC[OBZOBUJ=KA6>6-6/(6/'81):3+92*60(5/'3,%1+$.)".("+%&!81*rb̵׽ӽ~vfqh\icYgbZ^ZQ^[Sb`VbbUccSddUdcUa`U`\Ud_Zc^Yd_[hc_gb^e_[_YT[VQYSN[VQ[VQ\VQ[UQ_ZU`[V^XT[VQ^YU`\X_ZW`\XYUQWSO]XUVRMVQLZVPXUMYUMZVPZWO^\R_[R`\Tgb[gc[faYgc[ga[f_Zjd`kebe_[d^[]WTZUQ\VS_ZV^YV_YVa\Xf`[xnfѷɗo\C.~|{}|xxv~q~q|pzoszyxsxkibXLG@/+'h`W}qOIByַ5*8, -J;*VD1cO:_K8L=-odY~x~nmaVndZ|y}zs61,bVKqcx}qz{~w{{wtwURPVSQURPVSQSPN<98                              -+)MIELIEQNJROKNKHNJGOKGLHELIENKGQMJPMJROLMJFJGD)$!( 0$@3,IFCLHFNKHQNLUROVSQYVTZUSZVTWSPVRPXTRSOMSOMPMJNJGNJGNJGRNKVROTOKSNJKFCE@8=?@!:9Z8*b>/M+ :5 - &/ 325)]9.c<03B$Y7'' <P-!K-!J,!@#B#>!'  */740&&"  %0@!B$?#-=!Q.%H) :!Z<.R8+F/%2 ,;I(P/#="C(E*>!=8Q-!vH4[6'0?I)sJ:mD5U+!R( k;0r?3W0'[<2S6--,+ - R-"N$O"@!+.9A7+6N-"sD1e;*b@.rH5m=.g7)`1$W/"Q*L(zI9n@3h<1]1'\."G#4;Z/O(9X3%Y3%O-!F(:0K$hA0iC2H'@+ )=$+ $ !!  B".)#- H!C" P+!X.#V2&O5*M*@#38#=>;9K-;":V/"c8(Y,H"0< )G>4<4,6/(4.'91*92*70(5.&2,%2+#("  F@4xgɳеֻ«įrynbe^T_ZSb^WeaZa]V^[R_]S_^RccUggXfeXfdYfb[je`kfaid_hc_hd_fa\a[UZTO[UQ]XS[VQ[UQ[VR`[W`[V_ZV\WS_ZVb^[b^Za\YXSNWRN]YUZUQXSNYUNYUMYUMYUN[XP`^Tc_V`\Ta]VfbZid\je]id]ic^keaoifjd`hb^^XU[UR]WSZUQ\VR`ZVc]Yf`[mfb~tmռşuWA+v|ttw~yrgSNG! ,)%`ZQ~qOIB~r˭3* 3)7, :.!E7'N>,Q@.K<+TB0dO:cN9RA0i]Qytxl_th]v~y}wsNG?I@8naU{m~th|qv|ut{pwlvkTQOURQVSQNKI20/                               0.,LIFMJFUROSPLNKGQMIROKSPLTPLUQNUROPMKOMKJHEDB@#*"3$E;5GC?C@=MIFMIFUQNVSPTPNNJGKGDJGENKIWTRWTQUQOPMJPLIPLHLHEKGCQLIUPMUPMJFC?;7HD@NIFLGDIEBLHEOKHQMJSNKSOLQMJOLIKGDGC@LGCOJFMHEMIFMIENJGSNKVROUQNQMJQNJPLINIFNIGKGEKGEOKHSNKUQNTPMWROWSPVROROKPLIRNKVROWTQXURWTRURPURQTQORNLRNLOKIPLINIFOKGRMITNJUOLNHENJFQLIPLJRNLQNLQMKOKHNJGOKIQLJPLJPLJPKIOKHHDBFB?LIFOKHSPMVQOTOLTNIk`VwͱǬӷܿ׺Ӵӳں߿۽ˮħΰټݿܿҵɭǫĨʮҵոػӶҴɭɭӶֹڽֺֺ' $ .21 5I2&,18":>7>?@!;:^;-^:,@!6 1 &. 349=!0c=1b;03B$P1") >S/"J,!J,!?"C$;"  +182/$ ' ( 2I' F&?#27Q-%I)!:!Y<-O6*F/%4 .<L+!O.#;!D)D);<3T/"vH4N.!2>O.#sJ:h?1R(T*"q?3h9.V2)[<3J0'*-* ; Y1&N#N"; %$ /<A2 - 9\6(uE2]7'kF2d>-h9+i9+b2%X/"T-!;uF6rC5h<1b5+\-"K%2:Y.N':X3%Y3%N- D&9, N&jB1gB1D">)+J-!3!  # # J#.*%- H!C O*!X-"V3'I.$L)06!8!:?<;P1!67b7(^3$Y+=4:)D*"H#Y<29#3::( *2, 7<"& 25C U0$^6*a7+U,#D k<+I(C!U5+ϱ޿ۼ˴ɲѻnokRjaUu{sy{znv}wyym~ujYSL   #+%5-$@6+L?3VG9ZK;XL=UI=aTE_SF`TGUK?`UHWMAYNBZOBVK>aUH_TH:72H?6QF;=5-+& (#&!#!#$ %!% % +%+% JF7iɵʳqxnbd]T[UMZVO\XR`\V`]V[WPWTKXVL^]RgfYkj]ih[hg\jf`jeahb^d_[a]X_[Ve`[hb]a[Va\Xa\W`[Wb]Xa\X_ZU]XSZUPXSN]YU`[Xa]Za\Y_ZV`\X`[X`[Vb]Xb^Xb_W_[TZVO\YQ`^U`]T`\Tb^Xhd^ie]id\je^id_keaic_f`\hc`c][^XU_YVZUQ[UQ_YUb[We^Zga]ic^zqiԽֹxbM6w{~~ĻugaX0.*-)&LF@ymLF>}tiܼܽȩH?23(6+:-!G8(R@.SB/M=+Q@.`M8dO:XF4cWJut{lXOGxwuw}wqg]S61+_UJykvynsy|w|qtzovlOLIROMGDB%#"                              531QNKQNKYUSVSPPMIRNJSPKURNTQMURNTQNMJGDA?B@=<:7#+#6&KC?HD@>:6C?;B=9MHDRNJOKHJFCE@=C?;C?:HD@KGDLGDNJFPLHNJGMHEJFCJFCLHELHEJFBFA=JEAOKGMIFLHDMIENJFPLISOMVROVSPUQOQMJHC@EA>EA?GC?LHETPMXTRZUSZUSZVTZVTZVS[VTZVS[XU[XUXUSVSQQNLLIHOLKTPNQMJMHENJFNIESNKWROSNKPKHNIFPLHRNJNJGLHEMIFRMJROLRNLSOMUQPTPNQMKQMKROLPLJKHENJHPLIPLIOKHRMJ]WR~rhǮ۽ܼۼ޿ع۽ѳʬʭ۽ٻշշֹϳؽۿոԶѴˮϲֹҵɬĨῤ̯׺۽޿ܽҶϴî& $ 240! 4M4(L/"! 06!8=7?=69<eA1R1$5 5 * . 43<D%>#B(g?3a:/2@"A',@S/"J,!I,!@#C$7 " ,471-# (", 8N*#J(!?#9/P-$L+";"X;-N5)F/%7 .=M,!M-"8 E*D(<<1^6'vH4E(7=Z7+tK;a9+Q'Z/%tA5U-$S0'Z90@) *,(H'Y1&M!L!8 )1?@/0< f<,tD1U4$qJ5Z8(^3&l<-c3&_1$X/";h>/vF7h;1b6+Z-!Q(58T+M&<X3%Y3%O/!B$8+ N(jD2fB1D">*4S3&:!  &  * N%3*&- H!C O*!W-"U3'M-"I(-7#9:E@A!B'/ 9h;+Y.W*3 =8)A"J%`F;6 4>!:( *8 , 2>$/13@R."O* _4(X/$Cl<,K)F"_A6޾йîDzouqXh_Swzqu}~rw~wy{owk_YQ  "*#5,$A6,L?3UF8WI9UI:TIcVIbWK;73(('*$ @=.fvpthvkbaYQVPITOHVRKXUN]ZS_[T^ZTXTM\YPZWN^\QedWhgZedWcaVc`Zd_[fa]d_Zb\X_YTc]Xd_Z]WR^YT`[W_YU_ZUa]X_ZV]XSZUP^YTc^[b][d`]d`]b^[fb_fb^e`\ea\eb]daZ_[T[WQ^[Ta_V`]U`]Vb_Ygd]eaZd`Xhc[id^lfamgcjdad_\d_\d^[b\X]XT\VR`ZUd^Yg`\ic^ga\jd^{rjů}cM7zme\og]{nyƻu¶wke\740*(%NIBymID=rj`{ѳڹɪϹ]RC2&7, :.!I9)RA/SB/N>,Q@.^K6fQ;\J6[N@{oyj>83[RI[TKtj`vznutgd[Q.)$cXNv~{o~rw{{uy}~}yMIG@=;                        531QMJOKHUROTQOMJHOLITQNYVSWTPUROROLOLIHFBGDA852#-$9) KEAGB??;7@<8?;7JFCQMJQNJMJFKGCIFBKHDPLIXUS\YWXVSUROPLIMIFLHELHEMIFNJGPMJLIFOKGRNKSOKTPMTPLOKGKGCGC?GC?HEAKHDJFCFA=KGCQNKROLOKHMHDMHELHEMJGQMKTQOVSPSOLKFCFA=HC?LHDRNKWSPXTQZVS[WT[WUYUSZVT]YW\WU[VTWSPSPMQNLROMOKIOLJTPNPLIPLIRNKTOMTPMVQORNKQMIQLIUQMVROSOLPLHPLITPMVRPWTRXTRWSQVRPRNKRNKRNLPMJOKHNJGHCAHC@FA>JEB\VP{oεپ׻Ѵغٻݿ޿ۼܼܽعۼ׸ַݾѱåƩͱӷݾټӷˮħǫոֹгӶ׺غݿԷּ̱˵% #  2> 0 ! 1N5)U6'"06!7=6><, 8?iD3U3&@ 1 0 444A#D%T1#d")M+#M+#;!R6)N5)G/%#?"87@R."H$[3'`8)Bl<,L*Dk[ѻDZq|w_f]Qvy}~qr|sv~xx~rwka[R  )"5,$B7,L?2QC4VI6UI8SHdXJeYL=93'('  "#c^Hqmd}t`rh[bZQWRLWRMOKGKFANJCTQJVRKWSLXTNYVOXTM^\T`^Ua`UddWhgZgf[fdZd`Zb]Yc^Yc^Y^YT`ZUb]X_YT\WR_ZU`[Ve`\d_[`[W_YU^YT_ZVd_[e`]c_\b^[b_\_[Wa]Yd`\ea]b^Yc`Za^W]YRZVP\YR^\S_\Sa]Vc`Zea[a]Va]Ue`Yhb]ic^ic_ic`gb_e`\a\X`ZVa[W`ZU]WS`YTga\lfajd_ic^ohc|skӼپ±\G1vMHA%$"53.QOG`]Tuqesv{ymhaX951%#!MG@wkB=7jbY~yָ׵Ƥs^+8, ;."I9*P@.SA/N=+O?-]I5hS=`M9ZL=~~pwiG@9uj_ync|rg{ovj~qduh[cYO+&"g\Qwjytxuwxzzv~s}r41/                         1/-KHDFB>IEAIFCFC@LIFOKHSOLTPMUQNQNKQNJJGDFD@1,*%.$=0)LIFKHDGD@FC@A=:IEBPLIRNKQMJNKGOKHQMJSOMWTSXUSWTRUROQMIOKGOKGMIFLIFLHENKGRNKTPMUROVROVRORNKKFCGC@HDAKGDJFCJFCJEBHDALHEPMJRNKMIEKFBLGCMIENJGNJGOLITPMTPNSOLQMISOKUQNXTQXUSYUS[VT[VSWROTOMUPMWROTOLSNKRMJOKHNJGQLJRNKQMKSOMRNKTPNUQNVROVROVSPXTQVQNQLISOKUQNVRPVRPXTQVRPTQOVRQVSQTPOTQOTPNTPNTPNTQNOKHJFCGB?GC?JEBOKGaZTs϶ϳдո۾ֺȭԸݿ׹۽޿ܽ۾۾׹׹ڼغշѳ׸ݾڽӶ׹ݿݽ߿ٹӴϱԶӶֹ۽ֹշӵѳֹھٽҷؽܾ˵%  1A"0 ! /M4(U6(& 04 7=7>=' 81h@4_7,22*7E"Q/"I,!I+!A#B#-'-740&% "  '1G%P+$O+#D%@#-K*"N,$>#N3'N5)F/%=" 2@O.#H)<#F+@$<56j>-mB0& $=<d?2nF6U,!P'e6,n=2A Q$N(.++ /Z2&R/$O G!1,7A9*4O-"sD1e<*2F,3;l<-f6(c2%Z/#W/"m>-zI8j=1g:/\/$Z-"E"6J%M&;W2$Y4%Q3#B$3( M*jE3a>. ' - 3>"-# " 8P%7*&- H!C+S-#X.#M/$8-4 ;"A<C8I*76W1#f9(X+G"2 G#+2H#X9.T=4083) 851D)!6+ : @%;:AQ-!I%Y2&`8)Bl<,J(>pԾʴθrxs[e^Pwz~}p}qzruywsvib[S    )"4+#@5*J=0PC2TH4UJ8RG;cUFaTFeXJWL@ZOCYOB[PD\QDUJ?bVHeYL>94%&&!!! !!"!"!/-$gbLniR`]IWSDNJAGD?FD@LIELIEJGBLHAOLFTQJVSLWSLYUNYVN][Sa`WbaVbaTbbUbaUcbXc_Yd_[d_[b]Y[VP^XS\VQZTNYSN^YU_ZUe`[e`[b]Xb]Yb]Yb]Y`[W]YUb^[a]Z]YV]YU`[Wa\Wc^Za]Xa^X]ZS]ZS\XQ\YQdaVmh\icYgc[fc]c`YeaZgc\ic^e_[d^Ze`\e`\c]Yc]Yc]Ye`\ga]e_Za[Ue_Zjd_hb]f`[ic^lf`wogɲԺܿ^I3}mxph_WQISNF_XOTNFE@9A<6FA:41,740EA;C?9B?8]WNaZPYRIhaVum`vi}psttvurzwtzmxncaZR<83"!MHAzn?;5^XOyԷԱo 6+:."H9)N>-Q@-K;*K;+[H4iT=bN:VG7z|{lxiF@8ncY|qftixlwkk`Urc[QG ZOEvhZut}q|pzoyn|pzo{pwx}rsi_zoew                        0.,KHDGC@HD@EA>DA?KHEQMJTPMTPNTQOROLSPMMJGC@='!(!0$?3,IFCIEAJFBJGCA=:?:7A=9GC@LHDNJGQNJUROXTRTPNOKHPLIQMJOKHPLHPLINKGMJFNJFMIFKHEJFDMIGQMJPLINJGKGCKFCLHDMIFNJFMIENJFMIEMIFOLIRNKTOLTPLRNKRMJPLIOKHPLIRNKRNKSOLRNLSPMTPNTPMRNLSNLWSQZVSXTPQMJNJGPLIRNKSNKNJGMIENIFOKHTPNUQOVROVQNUROVRPUROUQOSOMRNKPKHNIEOKGSOLWSQVRPTPMSOMPLJOKIOLJOLJOKJOLJTQOVSQVSQURPQNLOKHMIEOKHQMJaZS|o˳ܿӷҶȭ̰պڽѴϱ׹ڽԷ̯ʬշܾػԸβ˯γڼٺշαħŨոԷ׹Ե˭˭ΰշҴع۽ػغַܽҴͯͰٻ۾ոܾҵдֹؼֹػټڼؼؼ׺βؾ׾ 4A"0 " ,K2&Y;,+ .47<8>;# ; >%mG6R0$844.+ >D%F'_8*f>1h@4\4)11)1H$P/"I,!J,"B$@"( )/83/# '  + 4L)"O+$Q,#D%A$5H( : 5O3'N5)E.$<# 3B"P.#D'<#F*>!<1? m@/g?- ( =@!kE6jA2S)R) m<1i;0C"Q$J&,+) :]6)P,"O!F!+.;A6+7\6(uE2Z5% ! .2f9+i9+c2%_2$p@.}H3{I7n@3g;0]0%Z-"H$6C!K&;V1#Z4&P2#C%/.Q-!kE3_=- ( 166   &  % :N$@ )' - H!B<[2'W.#I* ,-5"@"A;;<G++ 2 d:)Z/ W+:@C!(;H"cG;M7/39/! / :9E*!=#+ 4@%<9>O+ H$Y2&_7(E k<,A"8Ǭϸį­{}cgcK`YKw}qrx~quytt}sgb[R!  )#5-$@6*G<.MA1SF5VI9RF:bTEaTFdWJWLAYNAZOB[OD[PCVK?aUGg[M@;5$%%""" !  ! !"" +'#! b]G_ZC94("IG:FF:??6;;4?>9DB?JGDMIFLHCLHBOLFXUO[XP]YR]ZRYVN][S`^Ub`V__R``S_^R^\R`]Wgb^d_[^YTYTO\VR]XS`[V_YTa\Wc^Yfa]e_[`[Vb]Xc^Ya[W^YUYTPa\Y^ZWYTQ[WS]YT_[V_ZV_ZUb^X^ZR]YQ]YR[WNkeWxgwgulagb[c`Yeb[je_mhckeajd`ic_hc_fa]f`]fa]hb_jeaf_[c\Wf_Zic_ga]f`Zjc_lfaoicyqkxǰ̰hQ<{jyvmb}ui{ytlbldYvlasj`tmbtndtndvqgqkcke\hcZe^Ue^Uh`Wi`Vf^UjbWmdZh_UbZPcZQaYPTMF:51! QKD}qGC,K;*H9)UD1dP:eP;XG6s{{lyjUMDd[Qzncvjvjvjsu|n`TI@tdVp{lreylzvykrezmvvt|o~q|o                           :85JFBHDAFB?EA>B?KGDURNVROROLKHEHECIFDA?=#*"2$D;6LHEHD@HEAHEAD@=B>:D@;HD@LHDQMJRNKQNKRNLSOLRNKTQNUQNRNJNIFMHELIEMIFJFCGC@C?:!' A(lG5P.":31! , ?D%I)b:,g?2h?3^4(31(1I&O."J,!I*!B#?"%  +071-# ( ".:O+$O+#F&2A#6@#: : H."M4(E/%>&#7C#P.#D'@'D)<;-I'rD1`9*->E&oH8e=/Q(T*!X0'L+#H%Q$A!)+(H&Y5(K$O"A!$" 0>@2 - ;f<,tD2K,& +2+R."k;-c3%_1$p?.}H3xF5pA4g;0_2'Z-!M&7>K%;U0#Z4%J+D'.?^4&kF4Z:+&. 86$ ! *1=G!? )' - H!B<[2'U,"?") 06"F!=;8G'B(,D#k>,V+S)3 I"8)A!M*nSG@*#56*$ 7:F) S3'/.?$>!9<M*g=-|L8a9*E k<+= 3ѴֽϷӼ|}bkhMaZJs}~vux}pvy~rv|sgc\T'$!   ("7.%@5*G_SFg[MA<6$%%###!"! !"""## !!*'#)$XS@SO;EB2*$,+$68/8:3<=7BA=EB?JGDOLIUQLWTNYUPZVP[XQ\YQ]ZR_]U`^Vc`XdcX__R__Sa_T\ZP]ZSb^Yb]Y_ZU_ZVa\Wfa\c^Y\WR`[Wfa]id`fa]d^Ygb]f`[`ZV_ZV\WR^YV_[X]XU\XT\WS\WSZUQ]XRa]W`\U_[SZVOYTKwo]zyvnceaZeaZjf_nidnhdjd`ic_id`jebkfcjeaf`\gb^f`[c]Xd]Xf`[g`\f_Zke`ojeke`lfaslfvmؿӷkS>tc{ym|px{}y|ov~}y~rzmvt}sgi`V=83OJCwWRJOJC}ɱ״! 9- 8- E7(H9)Q@.O?-I:)Q@/`M8gRFB?B?IFCPMJQMKOMJKGDA>;@=:853#+#5%IA>NKHHD@HEAHEBFC@GD@IEBJGCJGCMIFPLIRNKPLIRNKUQNWTQWTQSPLPLHMIEIEAGB?B=:>:7>:7@<9EA=JGCPLIQNKSOMSOLRNLPKIOKHOJGLHDLGDIEAHDAJFCMIFNJGMIFMIFMHENJGRNKWTRXUSWSRUQPSOMTPMRMKQLIQLIRNKQMJOKHPLINJGOKHNJGOJHOJGOJFNIFNJGOKHPLJNJGMHEMIEMIFMIFMIFOKHTPMTPMSOLSOLRMJQMKQMKOLIPMJURPWSPTPNQNKRNLQNLOKILHFKGEKGELHFMIGOLJRNLXTQkaZwk|ŭȰéǬպȭ˯Էѵ׺ܿԸɭȬӶɬྡྷǨӴۻݽغٻֹܿ˰ҶܽӶ˭ɬʮβгӶ׺ۿ޿ѴˮɬƩβڿWH? 57/ #, H/$U8+) ,25;7=9"  M1%nH6Q/#J*9 - 1A!D&I*c;-g?3g>2_4(31(1J'N."J,!H*!B#< ! +271*# '+ 1A"P,$M*"9* ?"8=!B$( $7E$P.#B&B(C'<8-O)rE2W4%1=I*!pH9`8*P'V-$=!2O*"P$8*+* U-"Q0%K!O"=  %2??./ B%mA/oB/8 ).1) ;k<-c3&a2%h:*}H4yF3sD5m@3b6*Z-!Q(8<K&<U1#Y3%I)E'( M%e9*lF4W7)&2- 2+( - I!BA"[2'R+!4* 3<"I ;:7P0!9!. Z3$g:)W*G!4 H#+1G"\>3nUI562&  / 9@!b=/A%* ;!?$::I'wJ6V?^6(G"j<+> A ɰٿ׽Һս־׿ɳ®{{asnUc[K{o{~|xz}qt}x|pwzqfd]T)&#   '!6.%@5*I=/WI9^P<]O=SG;aSD_RDbVIVK?VK?`TF\QE[PCTJ>\PCfZMC=7$%%$$$"#" !!!"##$%%!"#5/('"=;.76+23)-( #$24+56/;;5DC?IGEOMJQNJUQLXTNXTOYUO\YR]ZR^[ScaYeb\ge]gf\ddXbbWdcYecZc`Zb^Yd`[a[W]XS`[Wb]Y^YTXSN_ZUgc_jebid_f`[f`\b\X]XS\WS]XT\WT^ZX]YV[VSZVR\WR^YT_ZUb^Xb^W_[TZUO`\RnIJƦϹ{rgfaYc_Xhc^mgcjd`f`[ga]id`kfbfa]`ZVa[Wf`[e_Zd^Yhb]jd_lfbnidmhchc]ke`pjeqjdunиֺŪbK7n\~~{xv~quu}ps|}|}xz~rznzm}qtvxlulaGB<HC=uYSKKF?޺̨2)8- 5*@3%G8(SA/RA.M<+P?-\I5gS=XG4ynazvpXOFB;4JA9E=6MC;ZNCZODh[NZPF% >6.XLA\OC]QEZNDaUJh[PteWm^}l]wh[{natgzl|nvh                           ><8OKGJFBJFAJFADA=D@>DA>@=:EB?LHEJFCHEBLIFHEAC?<2/,#,$8) LGDOLIIEBFB?GD@HD@KHDKGDLHELIFMIFOLHQNJQMJRNKRMJSNKRNKPLHRNJOKHJFBJFBHC?D?;B>;B>:B>:HDAQNKTPNRNKQLJOKINJGMIFNJGMIELHDIEBJFCKGCMIFOKHNJGKGDHD@HC@KGDTQNWTRUQOQMLPMKUQPWSQWSQUPMSNKRMKRNKUQNTPMRNKPLIOKHPLIQLHQLIQMJTPMUQOSOLPKHOKGPLISOLRMJRNLTQNVRPUQOUQNTPNSOLPLJMIFIEBIECNKIRNLSOMSOMQMLNJHKGDJEBIEAJFDLIGPMJPMKTOL^WQmbYqeuxzxrtvv}ɰ׻ǭǬĩټ۾ͯåɫڻټھܿ۽ܾԶǩŨӵݾۼַػػغҴ׺ٻڽݿ׸ַַֹؽؽRD; 485&+ D* X:,-*24;885! S5(nH6Q/#N-!I)6"6B"E&?"V3(h?3g=1_5(31(:D!K,!J,!G) B#; ! ,450'" $ 12G&P+$J( 1* ?":7F'=!@'K2'F/%?)!( 8H'O.#@%D)A$;5.T-!uG3I+6<R2'qH9Z2%P'X/%7;$S-$M#1+* 1Y0%E&M!N"8)4 @=,1N-"sD1e<+(+01( , g:+i:+q@0a6(yE2yF2rD4{J:d8,Y, S* 9:J%=U0#Z3%J)B%& Y,h:+lF4Z8*(6 =$# +  ( ><! (+( - I!CI'\2'L(* +5!H$E::<P1!52 j>,^2#V*9A?(;J%nSG`I>16/! !) 88X5)R2&( 6@%:9I(}M9U>S/"K%g:*;O*!ٽԹһʴʵixrYc[Kuivz|~r}qxv{owxodc]T,)&   & 3+"<2'G;.VH7`P=]O=RG:`QC^QDdXJYNBVK?`TF\QE]QDTI=\PCh[NG@:%&&&&&### ! !!!!!"%&&"#$2-(.&,,%-.'--&(%#$/1)46-:;5DD@JHEPNKQNKUQMXTOWSMXUNZWP[XQ[XP]ZS`^WdcZff[baV__TbaWb`W_\U_[Vb]Xb]X_ZUa]Xa\X[UPZTO\VRb]Xgb^gb]d^Ya[V`ZUb]X]XT_ZW_[Y]YVZURZUQ\XT\XT_[Va\Xb^Xb^W^ZSZVPe`XxĢܻθwjkf]hc^je`keaic_ic^jd`jd`d^Zb\Xa[Ve_[e_Za[Vf`[hc_ic_hc^fa[hc]lfanieojeqkf~unֽ̰hTCvfVzxxtwus~rznylzk~orss}qrvxz{xy~~|r{shmf]und|rx{|sQLE >:5ym^XPHC<׳ϷRG94*4)@2%F8(SB/Q@-L<+O>-YF3fRIFCFDAGD@HD@JFBKHDLIFLIFLIEGDA-)&%-#;.&NJGMJGLJFIFBGD@IEAIFBHEBLHENJGKGCLGDOKGSOLVRPUQNRNKPKHMIEKFBID@FB>KGDLHEJEAGC?HC@GC?JFBOKHRNKTOLUQNTPMQLJPLIQMJLHEIEAGC?GB?IEAOKHRNKQMJRMKPKHNIFLHDLIFPMJSOMQMKOLJSPNROMPLJNJHSOLVRPWSQYUSXTRVROQLIPKHUPMUQNVROUQOVROTOMQMKSOLQMJPLJSPMRNLPLIRNKQNKQMKPLIOKIPLJQNKQMKJFCHDAIFCMIFMIFMIFNJHNJGLHENJGLHEKGDJGEKHFLIFMHERLHWPK_WQj`XodZpe[th]vi^xj^|m`}oasdx̲ؽũ¦ҵۿ׼ؽͱͲؼٽַɫȫٻܽٻ޿ڼͯϱټ۾۾ڽշвӶػڼԷɭͯҷؼдٻK=44=:$' A(\=.5' 02:9<9"  ]<-nH6P/#M,!J*7$ 7B#E&;S1'h@4f;/a6)41(<@I+ J,!F'B#7 #,43/$ # " #25M)"O+#H', .E%>!0I( =!?%L3'F/%E-$.9H'O.#@%D*>!;;!,T. sF3:  :;V5*mE6V,!P'U.$1E,%T-$J",+) =!W.$=N"L"3,7A8*4\6(uE2Z5%$,10$ Y2%m=.vE3k=-sA/{F2h=.|J:k>0X+ W+!<8I%=R.!Z4&L*?#.a/"h:+lF4]:+& *9"7!  "* 5?6*,). I"BI'\2'I&* /<$S&?:8H)L/7K(o@-V*P'0 G"0,D!V7,x^PN8/34) !!' 37F&\9+.0?%<8H'P;T>N+Q)f:*9oSGվîʵ{{be^Muit}}|p{pvu{nuwndd]T1.*  $/';1&G<.SE5_P<^P>RG:^PA`SEgZL]QDVK?^RE[PD_SFUJ>\PCi\NJC<%'')**$$$   !!!"!!""%''$%%('%5,$&&!**$++&#!()"/2)7919:4??:EC@JGDNKGTQLWSNURLXUNWUNYWO]ZS]ZS]ZSa`VccX``T]]R_^T_]T_\Ua\Wc^Ze`[_ZUb]Xa\WZTPUPKVPK]XSa\W`[Vb\Xa\Wb]Xe`\c^Zc^[b^\^ZXYTQYTO_[W^YU\XT^ZV`\V`]V^[S\XRgaYyǥݼѻ{nskcjc^gb^gb^ga]ga]jdafa]ic_ga]d^Y`ZV]VQ`YTd^Zd_Zc^Xa[Uhc]kfalgcnidnieohd|smŮβеlZJseV~qumb}tj~tjsu~rwltyz||z{p~vmzo|o}pwzyzqhe_VWSL`ZSvk|yVPH2/+rj`mf\@;6yܹϷ_SB/%3(?2$F7(TC0P?-J:)N=,XF3cO:]K7i]O{twhncWNIB}mw|~rfWNF?834/,.*'-)%,($+'#($!# # !(%"E?9                   =96RNJQNJKGBJGCJFCFC?EB>MIFMJFNKGMIENJFLHEMIFHEBFC@DA>(# ' .#?2,QNKPMJPMJMJGEA>B>;D@=EB?IFCMIFJFBLGCNJFOKHQMJSOLRNKQLIPKGMHCLGCJFBLHEPLIRNKPLHNJGMIFIEBHDAKGDROLXUSYVTVRPQNKOKIMIFMIFOKGOJFNIEOKGQNKOKHNIGLHFOJHPLIMIFLHENJHOKIPMKSOMROMPLJOKIRNLVRPXUS[XVZVTWSQSNKPLISOLUPNVROUQOVRPTPNOKIMIGNJHOLIRNKRNKRNKSOMRNKQMKQMJPMJPLJOKINJILHFMHFNJGOJGLHDKGDMIFOKHOKHPLJOKILHEGC@FA>FB?D@HDAMHDVOJ^VP_XQaYRd\U`XQYQJZQJl`Vpҷ騧ٺӵٽѶҵ˯ͱ©ªɰͱ۾߿ݾھټոԷٽӶί̯Էҵ̰ٻݿԶȫȬˮٺ[KA5?E"$% =#[=/<#$ -* -085" $ b@0mG6N-!L+J*; *:B$D'; [7,g?3e8,c8*41(4A I,!J-!F( B#5!(-62." $ " ) 2;P,$M*"D$( 1I'?"*G( =!>#I0%F/%J/%6:H(N."D(E)=@ ]6*4[2$sF35' =:^0,-)1 J"AH&[2'D$( 1I'O#;:7T3">#/ c9)f8'V*D7 ?(9J#iOBmVI9"52$ "!6A%97Z7*<"+ $%&*++$$$!"! !!!""""""&((%&&!##(%"(#"! && -/'13+7919;4==8?=:B@:4znzֳѺ|mY,!4)?2%E7(SB/N>,K;*M<+VD1`L8_M9aTF{y{lwk_WPH|lyssi_aXPQJCKD>NF?QHALD>H@9>8282.93.!$#"B=8                  1.+OJFSNJQMIKGCMIFKHEFC?HEBPMKSOLSOKVRNXTQTQMTQMNKGHD@=:7"(!/"=3-GC@IEBJGDKHEGC@FB?GD@FB?FB?KGELGDMIEMIFOKHNJFLHEKGCJFCMHEMIFPLISPMQNLSPMVRPRNKOKHMIFJFCEA>HD@LHEKGEJFDKGDLHEKGCLHEOLIRNLSOLUPMUQNSOMMIFHDAHDALHFPLJMIGIDAGC@IECIFCKHFNKIRNLTPNUQOUPNWSQ[WUZVTVQPPLJPLJPMJPLJPLJLHFLHFMIFLHEKGDLHEKGEKGDLGDLHFNJHQMJSOMUQOVRPUQOPKIMIFMIEMHENJGSNLRNKPLINJHLHEKGDMIGNKHMHFKFCJEBJFCHD@FB?FC?GC@KGDPKHRNJLIGKHFIEB@=:?<9RLFyodŴŮϵͳɯڼʯԹھظϰˮѴ˰ټݿݿֺֻܿʮӶܿӷȭèèũʭԷպڽۼԷٻveW6@R*+ $ ; V9+H, *' ) /4' !(Q3'U6)I*F(I*3d7*c8+41(3A I, J-"F(B#1"*-51+!$  - 2B"Q,$M*!A"':I%=!-F'"E,"G0%P3'< 9J)A%<#D(;J'd:-3^5&nB0% + >;d?2g?0Q(T+"U0&8!U7.R) ?)** U."O*!CO"G!% 0>?/ +>#qC0oA/7 ( /1+ " %. f9+l=.xF4k=-|G3i;+qC4zI9`3'Y,!D"6B!>N+Z4&O+6C"e1$h;,lF4[7):>%=%6 ! )   = <=, ( +)4K">G&\2'F%) 4 S)H99? \9&. A!sC0Y-T)3 ?1+C!U5*t\OG5,25, !!,H+#I,$; 0G)I+!(9:>C!P;O:>U-!\4%(¦׽εζйŰϺlf_Ouizz}wym~stzvuzqgjd[850   #.&;1%I>/UG7`O?dTCUI<\N@cVHk^PdWI\PC_SF[PDaUHSH>9=<8A>;IGCMJFOLGLHCNKDSOHVSL]ZSdaZcaY`_T^]S__T_^T_]SZXO[XQ\WR^YT_ZUa\Wb]Xb]X_YTa[W_ZU\VR\WR[UPZTO]WRa[Wa\Xd`]a]Z`\Xea^gcafb_b^[^ZV]YU^ZV]XS[WQ[VP[VQc]Wrŧ˭ȳ|vj`^VP[UPa\Xe`]e`]hc`fa]ga^fa]gb^d_Zd^Zc]Xb\Wd^Yhb]ke`lfbje`id_keamgckd`tlfyǮԹsaPn^N~vned]Th`Vslas}~rxlx~}z|ymyocwnatl_og\kcYsi]~tgzodbZQE@;-+($#!,*'D>8cXNzmayodne\ID=&$!TOGwoe<82umc}׳׿|f4*>1$E7(Q@.M=+M=,N=,YF2aM8dP;]O@~~}~swjOIBvhwwuvzyynxmdti`oe\lbZkaXnd[od[j`VcYOWNESKB72-#"!950                    DA=RNJSNIQLHKGCJFBGD@B?61?;8EB?MJGKHFLHEIFCGDAIECHEAGDALHDNJFNKGNJGJFBIE@IDAIEBKGDHDAGC@IFCIECMJHTQORMJLGDJGDNJHOKHNJGNJHOKHLHELHENKHOKHNJGNJGPLIQMJOKIMIFKGEIEBFB>IEBMIGNKILGEFA>D@=D@=FB?EA?EB?JFDOKIQMLOKIQMJTPNVQOSNLOKHOKHPLJRNLRNLMIFJEBKFCKFCKGCNJGPKHOJGNIFKGCJECOKIRNLROLSPMUQOQMJPLISOLPLIJFCIEBMHENJHNJHOKIOKINJHNJHKGDHD@GB?IEBKGDKGDJFDFB?D@=B><;:9998<<;98711/431GD?nh_DZԼ̴̳ʱ©©γӸչγȫڻ§ŪèƩƪɭͱ̱ѵ޿۽в̯Ҷؼؼڽݿոؼܾݿھα׹qb6>S+, %8I."L.!' ' ( /8& !,X8*Q3'I*F(K)?"2>A&B(C&e>2f>2d7*d9+41(2A K-"L.#E&A#6 ).50)!%  02I' P+$L)!;( B#H%:!3A#; >!C)G0&R4(D&:K+ 9<#B&9S.$a8,0 b8)kA/"1>= jD5a8+P'V,#K*!<%X90Q) L#1* 3[0%H&EO"B  $ 3 @<# ' @%rD1e<+('01( #% W1$m=.tC2rB1wD1q@.`8+|J:f8+Y,!J$6A @N+Z4&O+0P(f1$h=-lF4W4&?E) =%/$' >#S,$<E#. %*.)6K#=? T-">+?$V(=97M-Y3#-]5&n?,V*M%3 <)7J$iOBeRE*54& ! 7K-$G+#;25M/#/39?@N:}M9=U- Y2$2ϵռѹη¬лǴribPwk}ywy{outzyu}ting]?<6   #/(:1&G;.UF8bQAeUCTH<[M?dVGl_PeXJ^QD_SF\QE`TGSH8]ULh_Vg_VGB; >:5vnd=93gaX}zٻݹ˨5*>1$G8)P?-L<+M=,J:)XE2dO:gS=[K;t~uqTNF{nawsxm|pzo}q|rhukbrh_tjaukbtjawmcynevkauj_sh]laVME>! *(',*(,*(<72                            NKHMIEGB>B=9A<9@=9?<9?<:D@=A>;FB@JFCJFCLIFIEBIEBEA=B>:82.-#8/+@72C94A72?94EB?FC@GC@FC@@<9A=:GC@FB?KGCLHDKGDMIGIDAHC?KFCMIFNJGLGCJEBGC@C?EA=EA=HDAJFCJFBMHEMIFMHFLHEHDBJFCNJHOKHKFCMIFSOMTPNQMKNJGLHDNJFOKGOKHQMKUQNUQNTOMSNKRMKSOMSOMRNLRNLSNLRNKQMJRNJOKHKGCID@KGCNJGOKIPMJPLIOKIOKINJGJFCGC@HEAKGEJGDIEBGC@C@>9983449::??><;:331;96NJDqj`зֻպƭеֻܾҴдβɬȫʮβ׺ֹˮҴܽԶָټֹܾܿԶغϲӶyj6?U,, &7>'K- & ( ' .9( 3mG6kF5J+F(L'A 3>A&A'D'f>2e<0c5)d9+41(1B!L.$M/%D&A"8+,/40'"%# 25M*#O+#M*!11L)F#8!59="= B(G0&O4(E&;G(5A'@$:Y2(]6*3 g<,a;*6>C&nF7\3&P'Y/%G) B)!X90Q(N$1) 5K#b9*Q(O"=)5 A: ( V3$tE2W3#"(10'$%= k<-l=.wF4tB0yE2T/#zI9m>0Y, O'7>@H'Z4&Q, /Z- d0#f=-lF4U3%@?!1& (  Y3*V/&>N*!, "*.)7K#=1D!, -T, W'A:8^:'H'=tC0_3#V*;61+C!W8-pZL8,&,60!! "# B'K-$B' 840<"0, 5?8tG4tG47M(A#C Իʳìθ¯zba[H}sg~xt{rwty|w~uinf\C>9    $.&:/&F9-VF8aP@cSARG:YL?cTFm_QcWIZNAaUG^RE`TGSHGEBOLJOMIOKFOKEOLEURLXUN\YQ`]Vb`Xa`V__T__U`_U^\T^[S]ZSZVP[VQXRLXRM\WS]XT^XT^XT^XS^YTb]Xc^Ye_[d_Zgb^fa^b]Zb]Z_[W\WT\XTa\Yc_\b^ZZUQTOKUPKWRMZUPZUPc^YsҼwvnif`]^YUa\Ya\Y]XU`[Xa[X]XT[UQ`ZVd_\d`\_ZUga\keajd`fa\d^Yd]Yc]Xb\Vd^Ymf`ynٺͳŬ¬ufh]Ru}q~qsriaYkd[g`XjcZf_Vg`WiaXaZQe]SlbXd[RaXOf]Ri`Usj]xk}o|nsgymayoc~uj|tjwlynria_XPPKCC?9973+*)#$$!""'&$;84TNGd\TibYKG@30,mf\83/[UMyzֻӱů*!5*;/#F8)N>-N=,O?-I9)XE2fQ:iT>\K9{m~ssWPHui\wvitiyytzoukypevlbsj`pg^sj`ri_tj`}rg~rgreh]SD?:@<7B>9<84NHA                               #! NKGLHDHD@C?;EA=EB>B?:A>:FC@JFCHEBJHEKHEHEBJFB?;7% 3+'@735,';/*A3+C;6C@=C?FB?IEBHD@KGCKGCIFBKHEMIEMJGPLIOKHNJGKGDGC@EB?FB?C?=;::9343888>?>?>=<;9LHCYTMumcxsѵɮѵֺڽϳֹ۽ݿ޾ܾҶѴ۽ڽٻ׺ڽ۾ڼ6=T-, %5=$Z8(7' ( & -9* 8"jE4`>.F(F(L(B!5>A&@&L-#g?3e;/g9+g<-:2*4C"L.$M/%D%?!7-,13/$ " %' 2<P,$M*"K)* 9N*A"7"9 1A$9B'G0&K2&:"( 2* B(>!:F(C&7k?.\7(:<F) nF7Y0$Q( O)8J/&Y90Q'N#/?"@Bj?.Q&N"6,8A4"/h>,sD1G)#, 1.%$%3!fD!yK7oC19A , qVKٿ̴Ʈվp{sY^ZD{qeyv~syvy~zvkng]C?9   & 1)"=2(H;/XH9`O>aQ@RG:XK>aREk^ObVHZNAbVH`TG`TGRG;YMAeXKULB$%%***%&%$%$!!!#$#$$$$%%*+,)**%&&"## %&!,,'/0)12+56/791681;<6>=8B@751-,*### !! !! .,)C?9ZTLe_VLGA'$!TOH+($84/umb|tjٹ߽Ȩį1)4):."E7(K<+N=,R@.I:)SA/cN8iT>]K9}rd}uubYP_VLzj|owwu~s~s{p|q{pzo}sivlbwmc}sh{pznwkxl`_WOQKDb\T]WOaYP                      *(&MIFNJFKGBEA;@=:A>:B?;B?;D@=DA>FDADA=C>7C=6=8262-)%!3+'B947)" , <,$E<8EA?FC@JGDLIFKHEKGDKGDKGDLIEPLIQNKPMJNKHIEBIECIEAHDAD@=EA=D@NKHOKHOKHOKIJFDIECNKHPMJTQOVSRURPSONNKHPLISOMQNKSOMTQOURPXUSYVSXTRVRPRNLOLIOLJOLILHFHDBD@>B>;:75331<:9:98111676@@@A@?DA>\VNf_V{rgq~o{txԸҶ׼պպֻҶڼֺ۾ٻعٺܽԶгո۾ټ׺Ҷ̯׺ܾܽӵڼ35J(- $32Q1#B") * % + 6* /H+!/ ?"F(L(@ 7>A&?&S1'g?3]7,g;-j=/>2-7C#L.$L.$C$> 6,+12.# # %+ 2B"Q,%M*!F%&= N*A!7#:#*>"3A%G0%L3';# .- D)=<G*=#:l@/O/" =;P1'mE5V,!Q( C 4P4+X8/P&L#-X/\2"nB0rE2O$L"/-<A, # @$qC0nA/7 &/1, $$+ D4,]=2l<-j<-vE3zF2b7&]6*vE6Z-"U* ;9C F%Y4%T/"@!K+{E4g>-lF4H, ', #& 8m>4]3*X2$^8'6*7)B!K#93=) <"`."I!D6V4#Z4#=o@.f8&V*D - /+C!X9.kVI& /4% ! " 8K.$E)"96;=215C"N+]7(U?c:*9/ %yؾȱӹŮr{_faKzpc{|swuy}wlqi_D?9   ("0(!:0&F9-VF7^M<_O>QF:WK>^PDj]NeYK\PCcVHbUH^REQF:WL@bVJVMD%&&*++&''%%% !!!!!#$$$$$*++)**%&&"## $& +,'01+23-35.57046/560>=8DB>LIEPMIRNISOIUQKURKWTMZXQZXQYVN\[Q]\Q^]R_^T][R^[S^[S]YR[WQ^XSb\Wc]Yc]Xb\X^XT`[Va\Wc]Xc^Yd_Zd_[idaiebfb^hc`fb_e`]c_\d`]gcagc`c^\\XTZUQ_[W_[W]XT^YTvlcܻ׸ҵƭ{sjde_[a\Yb][a][`[XYTQ^YV\WS[VS^YV[VQ\VPd^Ze`[e_Zf`\id`mgcmhdkeaic_jeangbyphxƬټq_aSE|o}uj`ZSGE@997444122222565454344454233011.//*++-..-.....320;95C?;963&$"%# 63.UMḚɩ˴RG92';/"D6'H9)M=+P?-J:*Q@.`L7hS=_L9zna|xvi_UYQI}m}{vkyoe~siwmzpu}rzowm}rh{qgtjzoznuj|pdpf\jaXqh_ri`vk                   741LHDJFBGD@HD@JFBIFBC?;EB>B?;B@=CA=C@:?:563.,(#%!%")"8/*:+#/% +# 2%;.'HDALIGOLINJGMJGQNKOLIMJGOLIROLOKILHEKGCHC@HD@LHEMIFHD@C@=B>;B>:KGDRNLTPNUQOPLJNKHRNLTPNTPNURPTQPQNLJFDJGDMIFLIGQNLURPVSRXUTXUSVRPVRPTQOSPNSPOQNMNKHLHFHDBEB>HD@NJGQLHMHDKFCLIFLGEFB>GB>LGCRNJVRPWSPWSPWRNTOKQLIQLIPKHKGDQNLWSQVRPVRPXSQWSPVROXSQWSPWROVQNSOKPKHNIFJEBJFDKGEJFCKGDLHELHFMIGLHFLIFJGDEA?GC@@><542431=;9<98110566?@????FC?h`Wwncyl~xi{m|ḭֹ̃ӸɯūҶֺۼѴβԸݿֺټۿӷֻ׽عڽع׹ۿ38L*1 $;G(M/"D$-+% * 5)/B(,=!G(L(? 9=@&@&Z6+g?3U3)f;-k>/A!1-2C#M/$L.$C$=3,,21-" $ $ -2H&P,$L*!?!& ?'K+ ? 8#:%+pC1J,&>:X7,kB3S* Q( @G)U7.X7.P%K#3^2f:)R?% # R0"tE2e<+((01) $%2+M<3K2)j;,h:,pB1uC1q@.I(wG7]0$X,!@7@A!X3%V0#C"J*zE3g=-lF4I-!8# (  7O)!F#T/"a:)O0#2' 4(@K"53?( J'\+ G ?:c>*F%T.!wE1X-T)3 -*8L(fNAH;2'! !"A&J-$?$68991/.E$S0#^8)T>Z3%:+вջ϶ֻ~knhRvm`}{tuu{~ymtlaGB<     & -%7-#D8,VG7\L:\M;RF:VJ>[NBi\Nh[M]QDdWIcWI]RERG;XM@bVIXOE(('*++(((%&& !!!!!!!!$%$$$$)**)**&''#$# %& *+%-.)12,02+23,34-34-=<8CB>JHDLIDPKFQMGROIRNGSPIYVO[XQXUNZYP[[P[[P_^T^\S^[S]ZRYUNXSM[VQ`ZU`[Vfa\jd`e_[d_[d_[fa\e_[c^Yfa]kgcjebfa^hd`hdagb_b]Z_[Wc_\ea^b]Z\WT[VRa]Zfb^c^Z`ZVne]}ʪܽ۽иĭvvlef`\a\Z^YVYTQWRNa\Zb][`[Xb]Z_ZV^YSc^Yd^Zgb^id`mhdoifnjfjealfbniekealeaxohujؽոucaSC{owyqg]XQEB>764232122122122233132011011122011/00/00011010///000-..*++*++-...//-.....111DA>d^Wv³²صţi]L-"?1$D6(I9*N=,M=+J:*O>,YG3eQ905/(40,?<9A=:  +"3%.#4+'8*$/!D>:LIFMJGQMJQMJRNKRNLOLIPMJSPNSOMQMJQMJRNLSPMUQOROLKGDEA>D@=FB>HDAOLITPNOJHGCALIGSPNURPWSQXUTYVTSNMFA>@<9A>;DA>LIGNKINJHLIGNJHQMKTPNSOMOKILHFLIGNJHNKINJHKGELHEOKHPLIMIFIEBJFDNIGKFCJEBLGCRNKTPNTPMTOMRNKPLIMIFNIFOJGJEBJFCOKHRNLUQOWSQUQOTPMUQNVQNWSPZVSYTQSNJOJGNJGOKIOKHNJGMIFLHEJFCHC@FB?GC@GDA\VP`[SUPKFC>A=:GC@D?<432776>?>??>HEBng]uss{l~׻ƫʯ˯ȬҶټ۾ֹ׹ܽϱغٽ̱۾ǭӷݿݾ߿߿յ3;Q-1 %8I)A'C$6.% ( 3- &=&. =!G(I)F';;@%A'_9.g?3V4)g<.l>/D"1-+D$M/$L.$B#=2,,31*!% $ 06M*"O+#I(5( F.#J)<9$<%;9/ H,9AqD1?$.?<a=0g>0R)Q( >K-#X:0X7.P%J"A"c4!l?.R S0#^7)R=9IFBMIETOJRMHOKEOKDQNFUSKZXPZWPXWNZZO\\Q__Ta`W_]T[XPXUN\WQ^YT`[Va[Vga]lgcgb_fa]fa]f`\c^Ya\Wd_Zfa^e`\d_[hc`hdafb_b]Y[WR[VS[VS^ZV^YV^ZVa]Zd`]d`\d_[nf_|ȩҹwtjce_[_ZWYTPUPL\WS[VRYTP`[Xb^Zd_[d_[fa\kfbnielgckfbmheid`jdahc_ga\e`[ic_me_{pg|ȲҶmcRAtj_|}|ukc^VFD?543010122122132233133011/00011122122011011///.//-..---+,,)*))))+,,...-..-.--.-753TOIvmc|ԼЮ¡t_%=0#C5'J;+P?-J:)J:*R@.TB/dO:cO;pcTz}{viFA<|lrxlynxmxndoe[h_VkaXyncpg]mcZpg]tjxnynuk|qfuj_xl{~rsv                 ?<8IFBKHEFC?FB?IEBGD@KGDLJFCA=GB<@9161)950B>:MJFPMJJFC,)'  ,#+! -(#972A>8EA:B>:D@=HDAJFCIEBFA>GC@KHEQMKSOMQMKQMLRNLOKJNLKSPNOKIKGDHDAHDALHDKGCIDAJFCJEBNJFPKGPLJQMKQMKSOLRMIPKHKFCIEBNJGQLIQLITPMVSPWTQXTRVQOTPMVROXSPVROWSPYURWSORMJNJGOLIPLINJGNJGMIFKGCJEBIEAKGCSOJznxltlac\SZSK]VOZSLFB>CA>HFDHGEPLHrj`xsy~Ѷѵ׻ֹ׹۾ؼչٽٻ۽ܿ۽ѴϳѵϳۿԸγ׻ۿַܿӴ0<V/!1 * 641:9.% ' 12  8!/ 2T2'i=.o@1M(1+" C#M/$L.$B#=2,,30(!&% 1:Q,$K(!@#/-L2'H(:9$=%G$775F-#I2'K.$.0<"C';?!H,9C!pC18 4?@ _9,\1%R) P'6 G,#W90R2*P%N%X/d5!tF2RU1#W2$G$W-!v@0e=,lF4L.!B #)%: >^4+O*!a9)O/%.& <")@K"22C, W*CE6X7%\8%M(wE2]2!V*<' *7K&B*")  # +E)!K.$A%689 %m]]B5"8S/#`9*P;D"D ]1#iL@Ժ׼̴xloiTpfY|~yvrsy}x{ntlbNHB    '"0)!8.$F:-VG7^L/rA1S,"0.* C#M/$L.$B$>0,-30'"&' 3<I( F&>!* 0M3(H':9$>%P)7>"+E,"H1&G+"10?%A%;@#H,5A#]7)' * =>Y2'Z/#Q( N'9P2)L1)3O#S)b5"c4!wH4Q;_4&N =*9A3 ="qC0h=,+(.1+ '#5!J3+M<4<( +7f9+i;,k>.L9a6&F'l>0Y,!O'7:=S/"W2$E&V, p=-f=,lF4R1#K&,07 E#i;1N)!]6'I,"7"1 B&)BJ":8D3T'@B6`=)J)`5'yG2V,V*G!/+E#B!" (   +7J-$H,#96;-t`Sý;1C%W2%vG4?K'Z*rջδªɲ{orlUkbU||y{o}qy~uxlqj`MHA    $2*#;1'I<0YH:^L:GD@MIDOJEQMGPMFOLESPIVSL[XQ]ZS_^TbaWcbXdbYdbYcaXb_W`\Ud_Zd_[e`[ga]fa]d_[c^Ze`\e_Zd_Ze_[d_[fa^gb_jfcgc``[Wa\X]XT[VR`[W^YUZUQ\WS`[Xa\Ya\Yb]Yc^Zjd_xѸҸ۬vlec]Y]XU]XT]WTXSOWRMZTP\XT`[Whc`mhemhdlfbkfckfchc_e`[e`[a[W]VR_YT`ZVc]Xwnf{γɮsbQ?j`U~||z{}~xxlwoea[SKGB975///-.-----.--..,--*+++,+././0//0/...-.--..-..//////,--././//...,-,+++***)**)*)***+++210KHCng^tʩ׾{9-!=0#G8)TB0H9(G7(TB/P?-aM8iT?hXHx~ppE?9yj]sts|k{k~owzvz|twjylaznbxl~q}otytux                   :61FAB>9@<8@=9A>;A>;=<9B?9=81OJFPMIMJFJFBIFBC?;;85A>:?<8'$!    +,+>;8ICFCAHEBIEBFA=C>:?;6>:6?;7B>;D@=GC@HDAKGDLHELHEKGEJGEOLJRNMPLJMIFIEBIFCMJHRNMQNMRPNQNLOLJLHGNJHKGDIDAMIFPKHMIENJGPMKQMKNIFKGCNJFQMJOKHMIGMIFNJGOKHSNKQMJOKHQNKSPMTQNVRPUQOSOLRNKOJGOKHUPMWSPTPMQMJUQOUPMPKGKFBLGCNJFMIFKGDIEBFC?DA>FB?OKF}qzx}sgxlxntlbzshtxnyqgym{vj|n˰غæĨɮֻܿն׸շϱç޾ç׺ػ׺ػۿ׹ҵڽڽӲٺںں>4.+ :a5&7.B 8L4(8!@!0' % ,/! 6"<(/sA2T-#047D$M/$L.$B#=-+,3/% " ')45#6C$) 7 N3)G'99$>%S,:G'%A(H1&P4(90A'@#;B%H+. =#O."& >=S,!Z/#R( N&?T5,F-%3P$W+f7$f7$}L8O:W+ N"7,3 4& " P."tE2^8($* 10* &#@* M80L:23-- T/#l=.b7)M:tD21 H&W+ T* 98<O, X3%L*P(h;*d>,lF4Q0#7 0  6 7!9a6-T-%Y3$K,"9%6%G(-CJ"<9F 6FB<@#fA,E#rA0l>*U)U)H#+3K&,   )  +/=#K.%B&688ʰ߽{J-% 1U(\-!<G#Bϲ϶ĭҺpqjRg^Qy~~rznwwympi_NIC    "0(!=3*J=1ZJ;aN>jWDUIeXKfYK[PCdXJdXKaTGUJ=XM@`TG`UI/.,++++,,'''"""###!"!"""%&%###&((+--'((#$$!" $%)+$*+%-.(/0).0)-.&/0(66/;94?<7FC?JGBKGBOKFSOIUQKXUO[YR`]W`]Wb`WdcYddZdcYcaY`^Vb_X`\V`[Vd_Zd_Zd^Yc]Ya[W`ZV_ZU_YT`ZUc^Ye`\ea]fa^fa^e`]`[Wb]Ya\X]WS`\Xa\X\WS\WS\WS]XT_[Wa\Xc^Zic^vϷӼϷ~tjb\VQXRNd_\c^[_ZV_ZV\XS\WSd_\gc`kgclgcjeaic`gb^d_Z_YTa[Vd^Zb]Xb]X`[Vb\Vof^zmêݾ޿ɮreTAg]Qry{{{{||{{{}}ywwuxlng]ZUNEB=431,,+*+**++*+****+++*++*+++,,,--+,,++++,,+,,,--,--,---..+,,,-,,--+,,)**())'(('(('(('((())...B@>c^Wzo}ܺͬ¡0'8, >1$F8)UC0H9(F7'R@.P?-]J6jU?iWFrvD>792-UJAZMC\OC[NCcUIl]QugZuh[pcWn`UpbWqeYj_Th\Qj^Sxk^sf~ob}p{|u|p                 )'%@;7ID?MIDMIDIE@FB=FA:6@<7:73  ()( '((;95IA7KE?JFCJFBEA>GC@IEBKFCKGCKGCJEAIEAIEBHDBHDBGC@IECLHFLHFKGDHDAC?=B?=HECKHFKGEHDAIECLHGOLJPLKNKJOKJMIGLGEKGEJFCLHEPLJPMJNJGNKIOKIRNKPLIPKHQNKSPNROLPKINJGOKHPLHSOLSOLRNKSPMVSPWTQYUSWSQUQNSOKOJFLGCMIFQMKPLIMIFUROYVSWSPSNJRMITPMRNKNJFJFBEA>@<9@<9D@$L.#f>2_:/P/$j>/l>0L)"048B"M/$K-$B#<,+.3.$ " &,61 9D$' ='N2(G'99$?%R+:L) *8"H1&P5)B$2C(?!;D'F*1 @%S1#( >>S+!Y."Q( N&CX8/=& 7P$X,g7#i9&O:}M8Q&N"0/0$ & _8(tD2O/"#, 1/)&%I1'P=4C1),.-E%k<-f9+mA1|K9?,T*W+ A E#?L*X3%U.!L%h;*c>,lF4T2$E"$ * 6 7"3S-&[2*S-!R-"6$4#>#.BJ"<:F ?>D8E)b?*R, }I4a4#V*R'9)A!E# ! # )   10C' J-$;6:-q嶐vL-1% 6>;C Hֹ׽Ȱëĭ̶uunVf^Pw}~w{nvysqi_OJD   "0(!?4+N@5YI;dQ@mYFUIYMA^RE`UI0/-*+*+++&&&!!!"#"!!!!"!%&%#$$&''+--'((#$$!" #%(*#*+%+,%+-&-/(-.&-/'44-760;95FC?FC>GC=JE@OKEURLZXR]ZT\YS]ZT_]UaaWccXddZdbY`^Ub_Xc^Yb]Ye`\fa]b]X`[V`[V^YT^XT_YTb\Wc]Xhb^fa]a\Ya]Yfa^gb_c^[b^Z`[W_ZV`[W^YV\WSZUQ\WS[VR\XS]XT`ZUynưطƱ~skc\Xe`^gb_b]Zb]ZZUQUPLZURZUQ_ZWfb^id`hc_e`\b\W\VQ[UO_YTa\Xgb^e`[a\Wb\Wjb[}qeʹ§mUF8QI?QKC]VMe]SldZog\ri_sk`umc{sg}ui}th{rf{rfzqevjxlui~ui|sgtmbe_VPLE=;7.-,$$$"###$$$%%%&&&'''(('(()**+,,+,,,--,--+-,,-,,,,+,,*+++,,())'(()++*++)**(*)()('('%&&%&&&''())443PMHoh_{pz|t׶ʩռ6-#8, =0#D5'SB0I9)F7'P>-Q@-YG3gS=hUC{m|tgZOE;>:7?;8C?=GCAHEBJFCGC@?:8>;8DA>KGEJFCKHELIGIFDIECIECKGFIECHDAJEBIDAJFDJFCHDAHDAOKHQMJQMJNJGKGCMJGROLROMQMKRNLTPNUQOVSPVSPTQNUROWTQVSPUROTQNUQNWSPUQMSNKRNKRNKPLHNIFUQNYVSZVSWROTOLSOMQNLSOMPMJIEBD@=C?;KGBXSLqjayqgumbyqepi_~vlyyvwj|nٽβӶӷѵԷ۾ۼ׸޿ݾڼݿJ>6+ =c7';) D#A<&='46* & )-!.B.#D, G(H)A#::<"P1%f>3[7,N."j>/k>0K)#1447M/$K-$B#<,*/3-" # '/6, "A#@!( B+ L0'G&89$B&Q*7L(8)H0&M4)I,"4D)= ;E(D(2 @%S1#+ ?>M(X-"Q( N&C P0(7!8P$Y,g7#m=)P;zJ6O#M#)! /-  1k?.qC1@&&.1-(%,N7-N<48$,/ .N,e9*l=.U0#hA3W1#"N&Y,!M&P)!G$F%X3%V.!?h;*c>,lF4g;*R)+" 28!5 @!Y1(O+R0#6$4#?#5@J">65E%AB3T5#kA-h:+}J4Y-V*K$-.J&3   $ ( 22G+"E)!679Ѹ޲sQ. H"& /<9DqVIּëѷվ˵npiQe\N~r}}z}pv{xrkaPKE     "0(!?4+N@5XG9cP@lXFVIYM@]QDbWK31.*++,,,&&&######!!!""!$%%#$$$&&*,,'((#$$!"!#$%& (*#)+#*,$-/(./'.0(12*65/<94C@;FB=MIEQMINKDOLFVSMYVPZWQ\YS^\T`_UbbWccYcaXcaXb_W`\V`[Ve`\fa\c^Y^XT]WR^YT]WR`ZVe_[e_[hc_id`c_[`[W`[Wc_[d_\b]Z^YUXSOVQMVQMUPMXTQ]XT]XT\XS[VR[VQ|qg®ֶɳzqkeae`]`[X_ZW[VRUPLXSO[VS\WT^YUd_[hc_fa^_YT\VP^WR_ZU`[Vd`\a\Xa[Wa[Wb\Vh`Yujڻع|im\Kp`Ppg\|sumb[UMD@;640-,)&%$""! !!"###$$$%%$%%%&&"## ! !!!###!"" ! !!!"##"""!"""#"!!!!""!""$%%***<:7WRKqi`|qyxkԳĤҹLB46*?2$C4&Q@.I:)E6&M=,Q@.UD1bN:dQ?yk}~{lxhYteXvi\wj]yl_ti]qg]pf\kaWrf[qfZlaUg\QeZPg[PfZNeXLgYM2,&e[Qwwrv               <:6NKGLHDIEAJGCQMHWRMSMHJF@JFAKFBD@<42.973B>9PMIOLHKHDJFBLHDMJFKGCJFBGC?FC>IFB-*'%2+'%110F?6QF;UPJSPKROKPLILHEJFDMJGNKHPLJPLIMJGJFCGD@HDAHDAKGEKHEJFCGB@@;9<85A=:FB?IDAJGDOLJMIGLHFKHFJFDKGEMIGOLIOKINIFMHDLGDOKHRNLTPMRNKSNKPKHQMJQMKNJHNJHPMKROMSPNROMROLQNKSOMWTQWSQUQOTPMQMJRNKVROWSPUQNSOLQLIMHDMIFOKIROLSOLOKHMJHKGFJGDKGEHDAHDAIFCHEB653;97QNI]XR]XPa[S]WOjd[{qqvsrzl|oǫֹĨϳֺ׺ӶҶչؼk[O* >c7'8 ? E8"A+!)3+& ' -" ,A,"D,!G(H)A":9: S2'f>3Y5+N."j>/m@1K+"1412M/$K-$B#=/*03-" $ '06' %F&8,E-"L0'F%79$C&N)4G%E'"E.$L4(S6)5D)=<G*A&2 B&Y5&/@>@ S* R( L%A@$ :P$Z.g7#p@,R,lF4j=,M&/ ' *66!5T-&L(N.!2"5$5439753B"I!@1`>)k?-m=-sC/V*U)C!(9F$   .4' -17J-$@#69-zԬoEU)AG$C!.A u׼׼ƭ̳«oslScZK{o}}z|p|q|wpj`OKE   #/&;0'K=2WF8aN>lXFXK=TI=SG]VOmf\oeZۺʩз\P?.#A3%C5&N>-H8(C4%J:*O>,Q@/_M9aO:QLHSNIOJEKFAID?KGBTPLUPKJD?FB=IE@=95741862JEAPLHHD@B?:?;7>:6?;7DA=IEBFC@C@=EB?-*'%3,)& !!;96KA6OG>NJEQMHVQMVRMRNJOKHNJHOKHLHFIEBIFDNKINKINJHPLJQMKNJHGB@C>:D@=EA>GDBNKIOLJLHFJGELIFNJHOKHOKIOKHMHFNIFNIFNJGNIGOKISOMTPNSOLSOLRNKMIFKGDLHELHELIFMIGNJHPLJROLTPMUQOTPMRNKPLIPLHTPMVRORMJOJGOJGNIEMHDLHDMIFMIEJFBIEBIEBJFCLIFKHEIECGDBHEC10/00/>=c7'9;J"3F/$92.( ' -# # =* D-"G(G)@!:98 V4(f>2V3)O.#j>/j>/B'140.L.#J,#B"<0*22+!% )29$' G&0/E-#L0(F%79$C&O)6A!L*"(?*!J2'S7*;!D)<=H+?%4 @%[6'+6??:O(R) G!A@" @P$^0 g7#tD0R5@-%,, .@#^6'-^5(l=.L+ g@26>X,!Q)J&I&;V2$Q.!" `6&d>,lF4i<+?F.#D.#*+' /40C"H&N. 0 4# ')4:34 B!H!>3iC-i<,|I4h;)V)Q'6*F$7'53$00>#I,#9791% ڿŧQ/%U)H#K&<8:αؼԹǮ˱uxpWcZJ~rz{}u}q~{uqj`SNH$"    #/'!;1(J=1UE7cP@q\I]O@TI=RGWK?[OCeYL641)**,,,%%%### !!!"!""!"#"$%%$%%(**&&&"##!"!!"#$ '(#()#,.'-/(./(12+45.;:5>;6A>9IFBHEBJGCKHBMICOLESPJWTNYVP[XQ][RaaWbbX^]T^[S`]Va]W_ZU^YU[WRYTOYTOYTN]XS_ZU`[V_[V_[Wa]Zb^[ea^b^[]YU\XT_[Wa\Y\WSXSOYUQVRMUPKXTPYUR[VSZURYTOZUQjaYɭ߼ٹǯvllc\^XT]WS^ZV]YUZVRXSOXSOXSOa\Xd_[c^Za\Xc]Xc]Ye`\fa]b]Yd_[ga]ic_id`fa]jd_umƯ̲èzgUB/ZJ:NF>VOF_WNZSJXQI_XOlcYvnb{sgwkymwk|th|shvncgaXSNG=:6,,*'''&''()(()))**+,,,--,--,--,--,,,,---...//...-..-../00010010000000000/00/0/./......../.-..,,,+,,+,,+++***))))))((()***+++,+864?=9zlyػطģѹr\%A4&C5'K;+I:)C5%K;*P?-N>-_L9aO5-dWKkp~p|{wx~}{yz}tgYJC<}y|pzn                EA=VQLYUPZVRWSNSOJPKFKGBKGCPMHNJEJFAID@741973862NIEMIEFA=B>8@;6?:5<73?<8EA=C?ND;HC=D@2P/%M-"j>/i>/>%1357L.#K-#B";.*32+% % *38!&I'- 5J/%L0(E%7 9$D&N(:<I)!;!<&I1'S8+B(D):= H+<#3 A&S1$/9=?:M&R) ?B> BP$_1 g7#yH3RF 77 mE/k<,M7^2#V*J$+4H$  .)%$! !$!$!&"*'#+($-)%+(#&#  !""###$%%%&%$%%%&&&'''(''''()(())())()('(('(('(''(''''(((+,,,--,---.-><9^XQke\βٷģηn @3%C5&L<,N=,C5%J:*N>,L<+]J7_M:ugXwmb@81bVJ}ktyvvzz~}~}~rd0-)xmaujvkzn                 *(%GC?MIEPLHOLGMIEPLHMIDGB=B>8A=7@<8B?;C?;42/874640MHDIE@GC>GC=FA:C?;FB?FB>><:$%$ $3,))"  --,EB>OG=TNGTPKMIDEA=FB=KFBOKFTPKVRMTOKJFCD@;EA>GB@GDAHECD@=E@=GC@NKIRNLPLJPMKNKJLIGOKIPLJLHEIEBJFCLHEOKHRNKOKHOKIOJHQMKQNLPLJOJGPKHOJHPLJLHDLHDNIFQMJQMJLGDHD@JEBLGDHD@KFBQLITOLTOLRNKQNKTPNTPMUQMTPMPLIOKGQMJRNJQMJPLIOKHNJGMIFJFCFB?EA?C?=C@>221./.7779::333221221110111666@@>AA?986763:85CA"9/* ' * ' $ %1D."G(F(::62Y6+f>2M-#L,!j=/g<.;#835:L.#K-$A":.*4103),68 , D$' =&J.$I.&D$8 8$E'M(<:C%L+#?'I1&N5)H- E*5A&H,63 F(R1#086>=J$H#<B< DP$_1 g7#yI4R(:60,/106L*0* 2&,..1 :>D,<$mD/rA/|J4W,U)?)> >   ?#5-324G+"=6:! !X4+S(G#K&6G#^@4Դ۹ǭƭϷ|rzrZ`YHtxur|~r}{{zrhZTM,*'    ",$8.%J=2VF9fRBwaMeUEOE:OE:_SFl_PbVHWL?dWIgZLZNB\PD`SFi\O840&''+,,$$$#$$$$$ ! !"!$%%%&&(**&''""" !"$'(!(*#*,%,-&/0*640752973=:6A>:GD@GC?DA9=9395062../-775850PKFNIDKFBHD@ID?KFAJE@HC?GB>D@=--, "2+(*# <;9LFDA>GDALIFNIGNJGOKHOLJPMKRNLRNMOKILHFOKIRNLQMKNJGIEBHDAJFCNJGJGDMJGNJHPLJPLJQLIMHELGCMIEOJGNIEOKGQMJRNLSPMPLIKFCJEALHDLGCMHDOKHSOLTPLSOKTPNXTQYURWTQWSPTPLRNJQMJQMJPLIPLIOLIOKHNKGJFCEB?C?<>:7>:7110..-66578711000/554565/0/1228989::232,,+,,+331776tk_pwiʰչδھ۾۾Ӷۼۼݿ˱# Ae8'H(1M$9J/$<$A 02& ( * . +.D.#F)F(::41Y6*e>2M-#L,!i=.e;-7 ;257K-"K-$B"9.+610.).95 4? & B*J.%H-%E$8!8$H'K&9;@$R/&@&H0&J2'F,E*5C(G+44 O.!O/"078>@C!- 7C8EP$a2!i9%~M8O:X,!N"6/, Q."sD1d;+/*06/(%3#O=5<( ,- .@"a8(P- K)l=.^4'^=1I(L%W+ D!L' ;G(X3%>"M*f@.lF4F-"@#W5'Q7*6>8128#102E&;"+">0(A) 1,2 84B& :!h<+yG3uE1V*Q'2,E$.,>"6-41=#G*!784{kQ) S(H$J%9GeUڷ̱ŪɰԻu|s\aZH~qv~w~rv~}}wl]VO.+( #-%9/&K>2WG9dP@r]IbRBLC8OD:]QDk^ObVIVK?cVHj\N\PC_SFcUHi]O951%&&*+*$$#"##$%$!! !"!$%%#$$)**&''""" "##$ $%!%&!'(#'(#+,'0/+20-530852:74@=:@=9=:5=:5@=8DA;LHDPMHQNHRPHONEPOGRPIROJQNIRNJTPLRMIOKFNJFOKGLHDNJEPLHPLHRNJRNJOLHOKHQMIOJFLHDQMJVROWTQYUSUPMKFBJEANIFRNKTPMQLINIENIDWPJreƧϰϰҲҳعٻ׻˲ջylaaYRWQLXRNZUR\WT[VSXSOWSOXSO]XT]YU]XTZVRXTO[VR^YU[VRSOJZUP[VR]XT`[W`[Vb]Xib[{odw͵ܸӵl_TB=941//,*/,*2/-2/-520853975965743-+*,*)$#""      "!!#! %#!&$"'%#3.)bVJ|ĩۼ׵ۿ͵/&;/"A3%E7(Q@.B3$E6'M=,K;+XF3]K8l]Myk][PFn_vwwutu|qw~v}qw}v?93odZuj~shym                 *(%JEALHCLHCMIEOKGMIEJFAID?LGBJEAHD?HD?@<852.01/652:60HE@EA=B>;A=9D?;D@EA=320  !1+',%! 553IE=QJ>YTM^ZUYUPWSNYTOTPJUPKUQKTQLVSNYUOYUOTPKIEAFC?IFCLHEMJGMIFMIGMIGMHFKGDJECGB@IECPLJSOMSNLOJHKGDHC@IEBIEBOKHQMKSOMVQOVROTOLRNJRNKQMKQMJRNKQMJMJGMIFMJGMIFKGCLGDOJGPLIOKHQNKTPNTPNUQOYUSZWTZVTXTRVROUQNTPMRNKRNKROLRNLRNLQMKKGDGC@D@=B>;D@=776//.4433432213317867870111227779:9010+,+++*/0/,./mdZsxkŬͱѵĪҷؼˮα׺ٻټػܾܻۻۻ߾ظԴ־ Ad7'J)- N%=E':$E"09% ( (- - *C.#F)E'::3.Z6+e>2M-#K,!i=.e;-6> 351I,"K-$B"6,+62/+*1:. ;7* A*F,$D*"D#8!9$I(K&9<="Q-%D&F.$O5)P4&D)6?%?$)4 N- D(169<=<. 9C6 I!Q%c4"h9%~N9~M9R&N#0# 0) ' `8)tE2V3$-, 0;#,(#<,$L:22,. .M+c9)K*/d8*k<-O.$H,"I#X,!I#H$C#@$U1#F'T0 f@.lF4E-"L(^:+A-!, :3-/52!01:D(2 $=/'E*!0,3 =7@$ :f8*e:*_5%V*I#+6> 2: 8.32E)!A$6:% ˲ER'I$H$8AtӹҸԹϵʹŬƮy~fhaN{ou}{}qv}~zyn^XP41.    '!/' :/&J<1ZI;eRAr\IbRBLB8QF;\PCk^ObVIXM@dWIk]O]QDbUHeXJi]O<83%&&***%%$"##%%$""!!"!%%%#$$*++'(("#"  """%&&(((**)--,,,+,,+,,+..-121211211775775986:97<;9><:A@=EDAFEAFE@DC>DC?ED@HGCHFBFC@FC@EB>EA=IEAFC?C?;D@;GC@IEBLHELHELHDIFBIEAFA>B>:KHEPLINKHRNLRNLMHEKGCLHDNJGQNKRNKOKGMHESMHuj^պ忤ĦΰԷϱܿӷĪպ}qqf^`YT\WT\XUYURWRNXSOVQMYUQ]YU[WSXTPTOKUPLWSOWSORNIVQMZVS\XT[VRYUP[VR`[Wf_YzodwëֹشϲrdXGA=<86;75742853631520741742742853.,*,*)*(&$"!"   !!! "     %$")'&('%'&$&%#,+)20/420631LD>pɭ̫ٿů;2'9-!B4%C5&P?-B3$D5&M<+J:*RA0ZI6gWG~}}mVKAzk[qp|pdzpe}si|q{pvy}}zwz}qzmvsJB:i_Ushtiti           B?;RNIQMIPLHQLHQMHPLGOJEPLGQMHLGBDAA>;1.*.,'41+40*950=84D@;IEAIEAEA=@<8A=9763 1*',%"  .-,FB;PJ?LF>QMI\XS^ZU[XSXSNXSMZTN[VP\XR^ZTa]W_ZTZVPWSMPLGMIENJFOJGQMITPMTOLOJFNJGPLIQLJSNLTPNUQOTPNQLJLGDKGCLHERNLTPNVROVRPVROVROUPNTPNTPMPLINJGMHEKGDLGDLHEMHFIDAJFBPLIRNKNJGLHELIFNJGNJGPLJSOMVSQXURWSQVROUQNUPMSNKQMJRNKROLQNLMIGGDAB?;9:9///0101214434433324440111229:9<==455./.-.-232-/0ldZwwj{§§ȬͰոèܽũҵԷָۼܾٻڻ߿ҺAd6'K*, N&8A$?)D!0:$ ) &% % %A-"F)D&9:0+Z6+e=2M-#J* i=.f;-8 C$45( G+ L.$B"4(,72.*+1@!- B#3/B,!G-%>'>!8!8$J(K&9;67C"K1&jI8gF5F*:@% =#& 3 P- >#15;>>;- 9C0 K"Q%d5"k;(P;zJ6O#L#((0& 2j?-qC0E(1.2C+$)($E4,C0),-/1X2$b8)A$ .J)m=.a7)O2'L'X,!O&B L(.1)K)f@.lF4E-"X. Z8*3"" 0B'A'1./2"13L+C)$=.&N-#0.3 ?4>D$f8*S/!V-V)<*> ,&58.28H+"975eTJټGR(I%F#;:ɫؼ׻ӹ׼ϵȮrzbf_Mxlux{|pu|xxm^XP53/    ' 1)"9.%I<0ZI:fSBv_LbRBKA7SG<\PDl_PbWI[OBdXJj]N^REdWIgYKi]O>:4&'(***%%%"##$$$""!!"!%&%#$$)**((("## !   $$$%&%))),,+,,+,,+++++++------,,,010111343354454454566787898787677788898999898566333333332454676787887:99===AA@CCABBABA?BA@BA?@?=BB@DCACB@ECBFCBHFCIFCIFCHECHECHEBFC@FB?JFBcZQoдԷ׻׻æֺػʮβֻ˰Ǭȭپսɱ~xme_XTYURUQNPLHNIENJFTPLYTQXSPVQNVRNTPLQLHRMIRMITPLVROXTQXTPYTPXSO\WSZVR`[Uqg]q̰ܼۻݽֶtfZLFA@=:A=;>;9<97:64852964964;86;86420-+),)($"!$" $"!#! #!#!" %#!%#"%#"&$"&$"$#!%#"%$"%#"%$"$#!#" " " "! $"!#" "!$" '%#'%#'%$'%#(&%+)(+)'(&$'%#,*(0.,420742HA;yiӹմѹ^RC2'B4&E6'O>-A3$A3%K;*J:*N>-XF5aQ@w~tg[OteWwgyk|nuk`ukb{pwvv{qwlzo}r~s}rg{odtg{kKC:laV~rfsg~rg                   ,*(OKHUQMXTPYURWSPVRNRNJNJEJGBLIDJFB>:6;84=:6.,)31,4/)71,:50>94EA:NHALF?GD@LGCPKEXSMYTOVRMTOJWRLWSMVQK\WQc^We`YfaZ`\UWSMUPKVRMWTQWSQTOMQLIOKHPLISOMUQNUROXTRWTQURORNKQMJRNKUQOSOMQMKRNKSOLPKINJGOKHPLINJGJEBJEBLGDJEBIEBNKHPLIPKHPLIRNKNIFKFBID@HD@HD@KGCMIFQMKWSQYUSXTRWSQWSQVSPUQOQMKMIGJFDHEBFC@C@==:7<96676-..,,,.//443665221443333111899<==999111...332.01me[xj{uĩŪȬʮʭͰغ׸Ʃֹݿܼںݽ޽ܻŭ@b5&T/!) N'?6G/$J':?!& ) &$  $ ?+!F*D&99-*Y6+e=2M-#G)h<.g<-:!F&63! F* L.$B#3$-82.+,2B#& :, 6 C,!H-&;%;8!8$I(L'::99V5(M1&fF5cD4F)? A% ;"% 1 P, ;"04B#F#>B >=C0" L"Q%d4"k=)Q;uF3LN%% +/$ C$qC0g=,& , 08 G/'''*J807",- /7]5'`7(8 /&[3&J)26S)T)>N( 0% %L)hB0kE4A* _2#R3&9"). C*!K/$B'-.21 .88#(:)!T.#6 -4 F 6;R,!d7(S/!X,P'2*( ,66.2A&D'69*˰е?R(J%D"@ ;æежӸʰ˲~m~u\e_K~thyxzzntzxyn]XP63/     $0(!8.$H;/[J;iUDxaNfTDJ@6SH<[PCl_PaUH[OBdWIj]N_SEaTGeXIg[M?;5')))**$%%"#"#$#!!! ! %%%#$$'(('((""" !!  ! ###'&&'''((''''&&&&&&''''''++++,,----.--..-.-----...//./....-..-.-..../.././00122455455566343111222333455455455455444233122/01223344233344566677788899:::;<<:::::9<=D@=A>;9=:8=97<97<97:75741.,*.+*&$"#! " " $! %#"$"!" !"!$#!%#!%$"&%#(&%'%#'%#'&$'%#'%#'%#'%#,*(-+)-+)*(&(&$*(&,*(,*(+)',*(+(%+)&+)'+)'+)'/-+1/-1/-/-+2/-52/741852863HB=ufɰ޿մŦٿ{lY)A4%D6'N>,A3$>0"I9)K;+L<,VE3]MlaVvhxjtg                 D@=TPMVROXTRYURYUQTPLOKFOKFLHCIE@D@<>95=94A<7-,)42-50*C>9IC>KE@NIDMIDJFADANHASOJUPKNHCMF?TLDXRKVQKSOIQMGSNISOJTPJSNH`ZSf`Ye`Yb\U_YR\WQRMILHDSOLTOLOJGSOLWSQWSQWSQUQOTPNTPNTQNUQOURQSOMMIFJFCLHELHEJEBHD@IDAKGCJEBHD@IEBKGDKGDOLJROMRNLQMJRNLOKHMIEMIEMHDLGCKGCMHENJGQMJSOLROLQMKRNLPLJOLJLIGKGEIFCFB@EB?DA>?<9<96322+,+,,,01055555400/443222...555;;;;<;122./.232.00f^U}o{sͱֹæƩ˭ȫȫӷڽ۽ٻ߿طݼܻܺٸָܿؽܿ/$ :a4%e:)-#K%D ) U9,`@0? B"*' '(% # 9'F+C%9:-'W4)e=2M-#F'g<-h<.<"E&74" A'L.$B"3#-72.;24C$$"2( =&?)?' 6!;8"8$J(M';:;!?cA0V6(G+"E* ?#?!A%!; & 1 K(603F%I%=G#O) CC. ( O$Q%d5"pA-R.%b3'[,"24 <29X0$^4&R/!X,E"+& . 27714G+"= 680#ϳAR(J%C!C"H ޾׻ѷӹ׽Ʈδsw^d^Jzpc|z{ymvyy|q`ZR862    0(!7-$F9.XG9hTDv`LhVEKA7RG?=POJgc[}vjvIJ˹̹{|v|qzo|qyowm{sjwphqkcoiad^X]XRTOKPLHNJGOLIQNKRNJQMIQMJRNKQMISNJ`YR{peu׼ܺ߾߾ظϮܼвв׷ָݿٺĦϱݿбɫ˭ϱ̭ͯˮͯũǭure\^TLNGAGB>IC?MFBLFBID@B=:=:7:74731,)',*('%$" !#!$" '%#'%#&$#(&$'%#)'%,*(0.,-*),*(,*(-*(-+)+)'-+)-+)-+).+).,*.,*,)'*(%0-+31/31.1.,1.+1.+2/-41/42052053130.42020.2/,30-74174152/B>9~pcϷܽٸŦzf @3%C5&L<+A3$;.!E6(I9*G8)RB1YH7{l~||}oayiZxgqb~rfznvksjaulczpf}tj}si{rh~tj{pxx}p}qsULC\RHsfYrdXpbU                   (&$OKGQMIPMINJFMIEMHELHDIE@KGBPLHRMIKGBFA=D@HD@IEA<95  !*%""  )**?<8F?6JC:QMGTOIOJDJD>OG@UMEUMEVNGVPIUPJYUPVSNPMHTOIZSL^XQd^Vd^Vf`Xd^VWQKNICQLGSNJRNJRNLPMKQMKQMJOKHSOMSOLRNLRNLRMKPKHMHDJEBHD@GC@FB>FB>IEAMIEKFBHC@IEAMIFPMKPMKOKINJHOLIOKIOKHPLHQMJQLINJGOKHNJGLHEMIFLHEKGEMJGKGEJHEKHFKGEJGEHDBEB?C@>><9=9710/,,+--,11166655400/554232,,,112898;<<343./.222.00`ZQ{mvu׻ȫ̯Ͱ׹ݾ޾޿޿ӵڼ޾ۼ׹ٻҵ۾ܽոӶéֻG<53`3$j=+7 H#H!" N2&cD5?$? .# &(1( 7%F, D&;=0'U4)e=2M-#C&e:,h=.<"E&;4$ >%N/%E&3#-83.@!45A" %2(A*1 !6!;9"9$J(M'<::!>cB1T2$<=?"@#A&!9/ >& .2B#=>D!M) AA' ) O$S'f6"rC0R+#,,/-E'b8(Z3%&  -  ? >#BX,!H#F#I&0. T-iC1jE3B(]4$]8%C'+1F-$O1&G*/E#83'%:+"K:/a3&a/$46;>6M* W/"T/!P'2, >94952<"G*!78/m^ѵCP'J%@ E"cF;ݾؾҹ϶Ʈϵgg`Mtk^~z|pvwy~rb\T;84     -%6,#D7,RB5dQAr\IlYGOE:SG7(**)**%%%"#""""$%$!! !!!"###%%#$$ !! !"!%%%&&&(((()(((('(''''))))))+,+,,,./.010222010/00/0/010222233343454243233444344232011122233122011233232121222222222243344455454454344122011011122233343455687454121010/00111232233232333455576677566566:;:EDAWTOmg^}p{pnh`\YSMLHCCB@?>>=<@?>A@>?>EA=FA=IE@KGCNJFRNJQMIOKHPLIRNKQMJOKINJGKHELHENJGOJGPKHQMJOKHOKHOKHMHDKFCKFCKFCJFCHEBJFDKGEKHFKHFJFDFB@A><=97<8610///-,,+///566676110443000*+*/00787;<;455.//000,-.^XP|~o{zĩαڼݿ޿ͮѳܽݿ߿ҲŧΰڼغʭǬ_PE1Y- I'!I%L$" G-"dF7D,">7! &%1, 1C.$P4(N-"H(5%S2(e=2M-#B%d:,h=.:"C%? 4+ =#N0%H) 3#.83.A#59B# + 3( E-"%'7!99"9$J(M'=:;!AgE3U3#=>?"@!:7, :#-2G&;>C K)!AB' ) N#T'g6#zI4RK&4C(S,iC1jE3B'V2!_:&C%)8!G.%K.!;"5G$;.-*9) K:/`3&d0%96=F 6" I'O*V/ @ )( >&5M!94939 E)!C%69 zhγCP'J%@D$vѸ۾ƭγĭlmfSqg[yy|oxwy|pa\S<95    .' 8-%E8-SC6aO?p[HlYGQGi\NcVI^REeXJi[M`TF\PCcVHg[MG@9)++*++%&&#$$%%%%%%!!! #$$$%&%&&"""!""  $$$%&%()())(()())))))+,++,+,-,---.///00011000///./..//010121232344233111122233122/00/0/010000///.//.//.///00111121111000000121232232011111222333344343333344344233122011122232233233122011111222122.../00443<;9LIEa\UxqfvuyrhgbZRNI>>;565232233333232333454354133.12+02&-0&, ',#*355.13887>=:==;IFBJFBLHCd[SmcY}rfxȸͻ̹ϼ«êƮŬƫūĪϴӸֻӶԷϴɮβܿ׹гҵдɭ׹ݾƪǪ࿡ŧ˭Ǫʭαʮƪܾʯг̱ӷԷ׺շӷԸԷͰʭʮĨ޿ۼܼ۽ع׹Է{|qxk|nbuh\eYPNE>62.0-+41/31/30/41/30/52164241/41.20-41/41/0-+/,*/,*/,*1/,1/,31.31/20.2/-2/,42052052041/5207525301/,1/,2/-0.,2/-31/31/20-20-52030-630863;85952F@:yj]ūշήȩ׸۹ˬ׽}9-!?2$F7(B5%9- B4&M=,H8)Q@0TD3mbU|xyyxrdwhX{}rwl}rg|ptsxxtuj}qwth\Pk\Os|                       >:7RNKRNKQMINJFNKGQMIQMITOKTOKPKGLGBFB>B>:A<8>:62/+)&!0,'?:6JFBLIELIEJFBID@GD?B?<&&& ,--:84@7-D:.E?9F@;JE@HC>E@;D?9G@:LE?OG@SLDSKCRJCVOHZTM[UN\VO_XQe^Ud]T`YP\UN\VO\VOOG>RG>?"? 17 * 7! *2H'=>=F*!A A& + O$U(g7#qD1|L8Z."P#K)# 0- 1I(rD1g=,'- 0?& U:1)()>+$,. -0*W2%c9)J)    B$@ ? =6R(T);K&I. `@*Q*iC1jE3F(Z5#^8%;'>'G.$J-0A!C"2.-,8'E6,]1%f0%;5 ;B 5% J'O+T-1+/ H)d=,>O"?!5?#:!C( I,#;74-nɭDN'J%0ve޾ܽ۽ӴӵھжݾĪǮԸƭpnfSmdWx{zm~yxyym]XP:73 .& 9/&H;/WG9dQAp[HkXGRGZVPwqgw´õŷǸɹʹϾͼǵòŴ˺ȷɷ˷ѽҽιȴƱ˶ԾªªªȯūƬȭū̲ͳ̲ƬۿԷӶֺ׺ٻոϲԵۻݽݾԷĨʮҶͳzxkh\SF?:62/853:7696496441/53164241/30-30-41/41/0.,1/,2/-1.,0.,0.+0.+0.,0.,2/-20-30.31.52/52042/52030./-+0.+1/-1.,1.,30.1.,1/-1/,30.1.+52/852:75<95LF@rd׻̯ŧۼ׸߾ۺȩԻ+$8, >1#D6'C5&7,?2$P?.G7(M=.PA2dYLy|v{xvzm`i[Mv}|~otcTpx{                          852QMIKGDJEALHDNIELHDPLHTPKUQMQMIPLHSOJNJFGB>D?;C?;2.+,($0+$C?;NJGLHEJFBIEAJFBLGC864)))851=3(B8-B<6A;6HB2T2'@$_7*k>/G)>"E%537N0%H) 3#.83.C* 6@!;  / , 3G1%3479"9$J(P)A 8; I(iH5S0 ?=?"?!1:$ & 7 % 2F&B">=E*!A ?" + O$U(e6"D"S.Q%Q%A#% /.0V1$tE2Z5&"/0J/(N4,&&07#-7!-/,]5'b8(@$ !  #E&?> >* J$W+ D F#J+nJ2W0iC1jE3J)\6$]8%7)B*!H.$E)/I&? +3Q6. *7%A3*X/#g1&D 5 :?4% J&R*R)-0R>8bI@9#& ?#C&=I67A$<#H+#F)!782% E}lƫEN&J%yն׸ϯˬҶؼپٿʰȭȮֻrtkWlcVy~xk}{y|~xm[UN851  ,$8-%E8-TD6aN?oZHiVERH)++)**%&%$$$(*)%%%$%$$$$#$$$%% !! !"    #$$$$$$%$&&&)*)***())())***++++++,,,,-,-.-./....---,,,----.-...///111111000010122121010111232343343233232122222343233232232232222111/00.//.//////00///.///00122122010/00122243232021122344788=>=OMIlg`x|zojd\PMG;:8221011122232122122121121333343233111011111121121121222233354454455565776EC@]YSzsiu~µöŷĶȺ˼ξííĭĮ¬̺|xvvyssfe[SE@=75274386475475442053153231/2/-30.30.41/41/30.1/-/-+.,*/-+/,*/,*0-+1/-1.,1/-20.41/42/31.1/-.,*,*(,*(-+)/-+1/-31/2/-41.2/,1/,20-30-752964<96GB=uh[ֹɫĥͮڻܽܽۻڻعΰҳӴۼۼӴ¤Ϸ<4*4);.!@3%B4&6+=0#P?.D5'H9*L>/XNBwzwztsfZo`Roy{{yyxx||}|rk\Nsd~qv                          20-PLITPLNJEPKGPKGQMIPKGJEAID@MIDLHDLHDPMINJFKGCIEAFB>.+).,(/+%@<8FB?MIENJEMIEKGCJFB,+*  ,,+850=2&A8.D?9E?9GA;JD=NF?IA:F?9B<5@:5A;5KE>KF?NHAPJBQKDRJCVNFVOGSLEUNFZRJd\Sle[jd[WQIJ?4PHAQLHOJFKFCKFCKGCKGDLGDLHEMIFMIFMIENJGQMJSOLRNKQMKQNKQMJOKHNIFOKHPLINIFJFCJFBKFCLHEMIEKGDLHEMIGOKHPLIPKIOKHQMJQMJNJHJFDIFDHECJFDJGDGDAEB?FC@B?=>;996476566500/344:::;<<454454221///010887;<<444-../00*+,ZSK{}tsrѶټдֺظѱԴ߿ܽ֯ +" ? ^.%2 V:-U:-5F% $:!658 qJ8gB2I)B(&M/%e=2W4)?#\5)k>/I* ; D%445M/$H)!4#.74.>&5B"8 0* 7!B,"7!258"9%J(P)C!7; L+ fE2S/D#;@">!1:+ $ 7 $ 2E%D$<>E*!A ?! + O$U(d5":O*O#R&;+/03d;+sD1J,&01K/(A*"'&4#/ 4?( /+ ; b8(`7'5#+F&?? =9U*M%<M) b?,W1jD2iD2P,_9&Z6$. , D,#J.";#A!I%8,M1+WL*5$;.&O+ h2&K#4 9?4(L'U*J%)>-(^H?pRG4( / ' EH5: @$=$J-$A$6::2ugƪDM&J%޾ж§ڽͳyjskWi`Svyl|}zym[VO641     +#6,#B6+TD6bO?oZHhVESH7?92B<5F?8@:4D>8E?9ICLE>PJBMG@GA;KE?UNF]VMf^Th`WNF2V3)>#\5)k>/P/#5C$054K.#M/%>$#/74/11F%F&0- ) @)?* 8"29 77!93 =6; N-"eC1T0 J)6@#>!0, * ! 6 #.1?"H&<=D) B!> + O$U(a3!8R,O#J # ./2;m@.nA/7+ 119* (&1,A)?'/' F'c9)\5&+ $ 5E%?@ <;W+ S)=P*"L*S/kE3gB1[1"a:&Y5#*1F-$J- 6I%C".(nJ@aU*5#7*"C$h2&U)37?46Y.!X+? +N;5eLCnPF, ). +I@4="=#<#H,#67:8;L#wgͱ?L&I%ٿ˱ڼʮut]jcMdZN~qzm}|zo]XQ541   (!4*"C6,UE7aN>mXFiWERH:OJE`ZStlcs}}~wvyywsr}p}p~qssrr|o|prstyx}p{rfmf\[UNFC>76400/...-.--../00010000000011111011111011111121122222222232343343343333776DB>VQKgaY|tht{{{nni_YVOCB?776454454454232121121121010/0/010111/0/./.././0/010011/00010010/0//00010010010010/0//00/00/0/./../..///00/0/010121011010/00/00010011121233243122010/00010010/00011121121011.00011332@=:?<9B?:4A<7E@:KC8A<6@:5?94C=7GA;HB;NG@RKCTMEZRJNG>PI=SNFRMHKFBIEAKGCPLITPLOJGKGCJFBKGCIEAHC?JFCMIFMIFMIEOJGRNJSOLQMJOKHMJGMIFLGCJFBKGDNJGOKIOKIOKIQMJPLINJGOLIQMKPMJNJHHDAEA>D@=C@=EB@GDAB?=?<9:7596442043244334344489889822223223211100/333676333./../.+,,HC=vk_}ps{yrtͳڽèϲӷҵ۾׷޾е( 1* % * ! 0a0&C 8#\@23G%( %11.+I-"rJ8L+ H*+F*!e>2U3(="W2'k>/V2&3@"' 54I+ J+!< #.74/12G&P,$6&( E-"6$ 9#06567, ;4;S2&b@.T0 F&5?"=!2%(" 5 " /3>"N);=D) C"> + O$U)]17R+O"H! /0 2I(rD1g=,* /138((&,.H/&60%P-"d9)V2#$!  ="G'@!@ 6G!^."U*R* U-$C#T1lF4fA0e7%a:'W4"'A&L0&L- @"K'=&6 i\dW*5$7)!4e0%Z,"Q&>>4> \. W+5:(#[F>kQFiLB%+, 0J8590<#D)!-9:6:W+ ue<H$H$ƬڻػԹʯڽȬm{sZngPe\Nzn{n}|}q^ZR641    )"4+#D8-WG9bO@lWEjWDQG;WK>TI=fZLfYKaUGcVHfYKbVHXM@gXIcVIRI@*,,,--)))&''+++%%%$%$#$$#$$$%%""!#$##$####!"! ""!"""$$$&''(((*+++,,---////0///.//.00////..../.00000/./.---,-,-..-.../.-.-,-,,,,--,--,+,+*+*)))(((((())(**)**)++*,,+,,++++,,+--,+,+--,,+++)()(')(())()))+++--,---,++*)(*)(,+)-*),)'-)'.*(/,*/-,/-,1/-631?<8PKEb[Sxods{ysqtwwu}p~quvuw{w~pwipi^\VNGD?:96221-.-,,,,--,,,,,,---..../.......-..-------.....-.-----------.----..-10/975HE@\VOtkaxlu{|yxwvwy{|zy{}}}|pgaXOLF>=:342/0//0//00011010121121011/00/0//0//0/.//./.-..././0//0/./..///00/0/.//.//./.-.-,--,-,+,,,-,-.--.-,------.--.-,-,---,-,,---..-..-..-..,---..-..-..-.--.-./..//-..-/..0/.//-..-.../../.-.----,-,---,,,+,++,+00/B@<`ZRvj|õǸŷx|l{k\n}||wuw}yi[Nn^~|                   p}tqwkxmcqg^si`qg^pg]j`VZQHVMEHA:"" ,*'TKBaXO^UM[TMSMHKFAHD?))'%&%()))**&''!!! -+(6.%;2'=70=93=93B=7D?9@;6A;6HB;GA:ME=PH@LE=HA9E>7D?8C=7D?8GA:C=6B<5?:4D>8LE>PIAMF?NG?LE>ME:VOE]XPRMINIEMIEPLISOLPKIMHEMHELHDMHDKFBIEAJGCNJFOJGNIFPKHRNKQMKOKHMHEKGCLHDLGDKGCOKGRNKRNKOKHMIFLHEKGDLHELHFLHFNKHKGEGCAEA?C?=A>;B@=>;9;86:75:75531443110221443676676121221222332343343666222010/0/---?;6_WMtj_viv}}qyl˱ܿƫͱӷ׺޿ۼ޿}gZ8) % , $&^.%M% )[>08 A"." &2:",43hD3S2%J+1F*!e>2X5*>#T1%k>/W3&-<  43F)J+!= %-74/13?!@",' ) G0$/# 9#0556;!, 82:X7)a>-T0 B$5@"?"8$ '$4   09K(9>E) C#> + O$V)Y.5 Q)O!C" /1 0V1$tE2Z5&%0045((',9!M3)./& Y3%c9)M- C%P-#I) A!@.S([-!H&c=1T,#D#V2 lF4iB1l;(_9&R0 $ `9.a:.L-> D#?!'\<5xij]!' 5#5%'a.#^-#c1#I!=4@ [-T).L93`JBpUJcG= <2+N-!973! @&=#.;9. :W+ o8*"E#H$˰ѳǪͯ׺дػ۾׻¨̰~h{sVmfMf]Nzn}p{y}qb]U=:7   *#4+#E8.YH;fSCoZHp[IRG;XL?VJ>eXKgZLaUGbUHfYKdWIWL?eWHdWIULB+,,+,,))*&'&*++%&&%%%"##"###$$ ##"$$#%%$%%$$$$&%$(''(('(('&&%(('**),,+,,,,,+-,+-,+-,+,+*--,.--0/.//.,,,**)))()))()(())'(''(''('(('''&&'&&'&'''&'&%&%%%%&&&'''(((()(((''''(('))()))+,+,-,+++++***)(('''&(('))))))))(*)))))++*.,+/-,/-,.,+.,+.-,/-,/-,0/.520<96KE?`WNtk`}pyy{~xy|}ztrtssst~r}qs{nska]XPMIC=;711/,,,+,,,,,,--.../0////....//.//-.-----.--.-,-,++****)))()(()()))**)++*10.A>9YTLog]viryuqqsrsuwwtrstvxz|vrkaWSLA@<665232011011121122122122122122121121132132132233233233132021/10/00/10011011011021011/00.//.0//0/.///0/-..+-,,--./../..0/-..-...///0/./.-..-...///00/00.00-..,.-,--,...///00.0/./.-.../..//./.---,-,---,-,,-,,--,--321LICle\uznbVbUHrc}z{|zxxxtsvytwwsq}zj\m]Otu                            sϵɰ˲éٽѷƯ}wuxgp^ZNC%%$+*&seWxk\rfYoeZof\lbZ[SL !!"#""##$%%%&&#$# !  #$#,'#5,#7.$0+'4/*61,:4/;60;60;60A<6B=7A<6G@9JCTKBZQHTKCOH@JC=KD>JC=MF?PI@JD;RJ@\TKUOJNJFOKHPLIPLIJFCJFCOKGQMJQLILGDJEBHD@JFBLHEOJGPLIRNLSOLPLIOJGMHELGDNIFOKGQMJROLRNKPLILHEIEBHD@HD@HC@FB?GDAGCAEB?DA>B?<@<:><9=:8<98<97854864876/.-..-44355566612111101000/222111443010222121...640G@9[TKndZ}nzozqeĬéǬȬͱ۽ټغӴԵݾٸzk0. , " ! ].%R(# S8+>&5' ' )- 8 ' 74U4'U4'J*7!B'd=1]8-@$S0%j>/Z4(*824E'K+!>!%-75012( !) ,J2&#,:#0665 + O$V)Y.6 P(O"@$ /13d;+sD2J+(1.40('(,E,"N5+( +1_6(b8(C& D&O,"H(@!?& Y+ L%Q4'vN6I,Y4"lF4nD2p>*_9&O/, i>3Z5)L+0<>$.]Q|maU % 4#5$ V(`.#e2$G =4A[-Q(9&![F>eMDuXM[@7!D#.7%Y;,48,&D) 33;8! :Y-#qbC4,D"E#Ŭ̬ͯغͰϲ۽ؼǬгèvdvnTd[L~rt|x~re`WB@;       +$4+#E9.XH;iUEu_LwaNRG;XL?WK?bVIeYKbUGaUGfYJdWIWL?cUFeWJYOE*+*+,,***''')**%%%&&&!"""##$%% ! !! $$$'&&(('''&&%%)('))()((('&)(()))***+**++*++*+*)**)**)++*++*+,+,,,+,+*+***))*)(((((('(''(''''((())(**)***,,+,,+*+*+**+++++*)))'''&&%&&%''&'''&&&%&%%%%%%$&&%&'&&&&&&%&'&()()*)))(((())(++*--,..-.--,,+++*++*++*,,+--,--+..,752GC=_XPxodu|~~}znpi_\WPHE@764//.-.-----------------.-...././/.///00/00//0//0/...+,+*+++,,,,,,,,,,+420HD?^XPph^~ui}q~q~qsvuttts}p{o|o}pty|zzzz{{utmcYUNDB?775333122011/0/.//.///00/00.//.//.///0//00011021233233344344233011/00.//.//.///10022122122/10/00/00.///0/.//,--+,,,-,,---..,.-,---..-..-..-..-/.-..-..-..+,,*++*+++,,,-,-.--...//.//-.../../.-..-..-.../../..//./.-.../.?=:^YRxl~~y|rgof\mcYsh]j`Uk`VmcXpf[qf\sh]sh]th\tgZvhZ|l\{j[~n^~n^{k\vfWzjZj\OSG=k^QaWM                     sϰ£ƨвݾٽֹͱȬǬи`RF%'&E>6{{pyhqyzl_  !!!   ./.-("4+!5-$-)%/+&1-(4/*71,60*60+:3.;5094/;60@:3C<6F@9F@9E?8JC[RIRKCC?;HC@LHENJGKGCJFBLHEMJGPMJPLIOJGMHEKGCKFCMHEOKHRNLUQOTOLQMJQLHOKGOKGPLIRNKTPMTPMPLJNJGMIFKGCIDAHD@HC@HDAFC@FC@B?=B?=A><>;9:75:75=:8864864;870.-,+*110332444122122222221010-.-/0///.121111...2/,50+D>9XQIzob~szpdܿܿ¨ʯֹظظٻܽѴԶ۽ָڼ׷ܻ鼢 . . ' ( X+"R(*  F.#H/$, , * (, >$$ 29A#T3&J*<$>%c<0^9.@%O.#i=.^7*++04@$K,"@"&,75022&!#) 0H1%39#/565< , /3:[:+[8'S0 ;7@ A#8! + . / ! /3M* 9>C&C$> + O$V)V-6 N&O";(/2;m@/pB0:!-2, 9.&%*1 P5+K3)&'?"c9)_7'9 >"L+!G'? < % ].!:\>*`@C)^8&lG5pD2o>)_9&K,:l@5S1$H(4D$7 K0*sdyjfE<#3"4# E g1%q7'F </G"[-K%I71`JAiPFyYNM5,/G)!!K4&[<-15%/D) -6-2,T'wUGdUI(  ӹڽϳֺʰݿҶɯu}t[bYJvy{}qd^UC@<"!      ,%5+$E8.XH:iUEwaOycPRG;XL?WK?aUHdXJbUGaTGgYJdWIWL?aRDdVI]RH))(+,,+++'''(((&'&&&& !""%&&"##!"#!"" !! ""!""!!! !! ##"$$#$$#$$#&&%''&('&(('(''''&''&&'&&&&&&&&&%&&&''''('&'&&&&&'&&'&''''''()()))++*+,+++**+***)**)))(**)**)))('(''''(('))),,+---+,,*+****()(()(()(((((((())***+,,,--,-----..-././0//0/...---,,,,,,-.----+,,,,,..-541GC?_XQvmc}p|}~}}~}~y|oxpec]UKGB996332111110010111011011010010/0//0//0//0//0/00/010./.-.--..-..-..,----,763HE?_ZRyqfsx~}|}}}}}~{vpf]ZSHFC::9565344232011.//,-----././0//0/.//-.../..//.//.///00/00011122011/00/0//00.//.//.//.0/.//.//.///0//00.//./../....-.-./.-/../../.-..-..,--,--,---.--.--.--.--.--.-,.-,--+,,,--,.-.//.//.0//00/0//0//00010010011010/0/.//.//664PMGtmczwqrurtuttssq~nqxhtetftewi\dYNYQIrv                 ufXڻ߻ӰϮабϱӶܼƦظݾ¥ٹָYMB #"m`RӶ̱ƫѶo    %&&-,+.(!2* 60)51-2/+/+'0,'2-(2-'50*82,60+1,'2,(60+:4.@:3F?8F?8E?8JC;VLCYOE\PG`ULZQHE>7G@9VPHVOGE?8KD;[RGVNEIE@KGCKGCKGCJFBMHDNJFLIEMJGOKHOKHRNKOKHKGDIECIFCLHFQNKUQNUQNUQNTPMOKGOLIPLINKHNJHLHFJFCJFBGC?FA=FB>FB?EB?EB?EA??;9<96>:8?<9=:8=;8<:7753531:8620/..,332343555221222232443//.,-,///.../00.//...63/.*'52.KE?pgZvyzpd¨Ṵ̄׻߿޿غԷٹ̮ѳغշ׹%/ . -.S( S(3 3L2'.5% %(=#% +99F'K*J.#P6+c<1^9.A%J+!h=.Z4(& . 4?!L-"B#&*46121%!$) 4G1% ;$7!0565A". -4;a@0Z8'S0 :8@ A#:# - 7, ! +2O+!? =?$@"> + O$U(O(6 N%O"5*02B$qC1h>,, 01+ :* &&+9!S8.D.%K*d9)Z5$,<I) F&?:1^."( ^<*yP75\6$f?-vC/k<(^9&B%F'g=2Q/!D%@ G',|SI{li\3!!3"5# B`.#r7(E8I#[-M+YE>cKBnSIwWL5aNCbKAR9*O1&32"6?%.2" ( ! cG<ɩ|k\wfXѵũǬټϴε˳­t~v[e]Kvz}}qb\SA>:"!       +$6,$E9/WG:gTDwaOycPRG;YM@XL@`THeXJbUG`SFfYJcVHWL?`QCdVH`UI'''+,,+,,(((''''((&&& """%&&$%%!##!""!! ##"$$#$#"$$#""!!! !! !! !!!""!""!!!!!! !! !! ""!""!###"#""#"#$#$$$$%$$%$%%%&&%'''&'&&'&&&&&&&&'&&'&((((((&'&&&&''''''&''&'&&'&''''''&'&&'&&&&&'&((()*)*+++,++,,----.-,-,+,++,+*+++,++,,,-,-.-///./.----../0/332><9PKEiaXymyrxktla^XPGD?442..---,--,-.--.--.--.----,,,,,++,+,-,--,..../.././//////0/000010000332?>:YUNwpeyzx{}|zzurkaXSMDB>997565454343221010./.,,,,,,---..-...-----,-.-././/....-.-.../00021121122011121011/00...-.--..-..-.-,-,-.-...-.-..../.././00/00/0//00/00/00.//.0/-..,--+-,+,,,---..-..-..,.-,--,---...///0//00010010111122122011///-.-,-,,-----00/A?<`[Twkz~}z~zrttsssronuw||tnyh~o`~n_udRI@~o                 E<4Ǩ˫ȨʪͭаѲƩʭܾҴҲ߾طظۺѲ̭ۼ3-'uعյ׶Ƨ׹Ǩt''&&&%%%$""!  ,,,(&#*$0( 73.73/40,62-62.30,/*&0+'2-(3.(2,'1+%.(#2,':4.A:4D=6E>7E=5JB:KD6F>4QH?RJBNJFMIFLIEKGDJEAHD@LHELHELIFOKGPKGOKHOLJLIEHD@EA=FB>IEAMIELHEHDAHDAGC@GC@FC?EA=GC@JFBKGCLHENIFKGCHDAHDAEA?B?<@=:<85:73=96>;8=:7=:8;8663130/743/-,,,+232444788232222221442//../.343232233565344<84+(%.+)A<7e^R~p}sgǭ˰Ըܿھ߽߼ۼۻ׹αܽŨܾܽػո޿. . ,.Q'S(;' H.$0=  ! &="& '4:A"K*K.#T:-c=1`:/C&E(j?2K+#  +4:L-"E%*)27120$!%( :#B-" A(6 2444C$/ -6;_>.W4$R/78@@#< $ 0 <- . ! )2O*!C"=@#A$> + O$U(L&6 N%O"6+/* H(qC0Z5&'10+8'%&,D*!T9/@+"V1$d9)R1!( E$I) E%?3;W* T1$b:+3V0`5 {A,i<(_9&="U1(\8,O. >!D$G( =% l_{lsND'%# 7(;,#8#-K$s8(F8G%X.U5+bLEgNErUKqRGu`QC,%' 5 :5-! 9!71(0' |iZ㮗Ūھ̰ǫǭٽӷɰvoz]iaNt}w~~}~r`ZR>;8$$#     *#3*#D8.XH;gTEu`NydPSH_ZR~vj|}~z|oph^UPI><8331221442443221000///...,-,--------,--,,,,,,,-.-//...-,-,++*++*--,..--.--.-./.000221110...-.--.--.-,--+,++,,-/../..//.//.0//11011011011011011/00./.---,,++++*+++,+,-,,-,,-,+,++,+,-,-.-////00011122233233232122000./.,,,*++,,,-.-///764PLFrkav~swwssrtvxyusurwys|~k]Pvi}}|             tfʰֺչ¦ٻָĨ§Ͱڻܽܽk]P sdԷӶͰɫǩƧ~k#$###""" %%#&%$!! --+%"' 3-';84>;6;73950:61<83<7294/73.2-(/*%0*%,'!,'"3-(:3-?70B;3B;3G?7H@8F?7D=6A;472,1-(;60KE?>80D:.KC:SJCKGCHC@HD@JFBNIEOKGPLHPKHMHEKGDPLILHEIEBLHELHDHC@C?;C?;IEAJEBGB?JEAKGCJFBGC?E@&2;! %: ((19@!J*I+ X=0e>2a;/D'C&i>2M+%  )37K,!G&-)1852/#!%(>(;((C* 5 3234C$/ ' 5<`?.V3"P-9;?@"?"( 1<0 :. %1J(P)=A#C&= + N$R&C 7 M$O"5.- `8(tE2O. ) 2-/ 8'%%1(G:1M1'<]- u9(J"7F(T/ ^?5hOHkPGuVLdE<-s*+475( %=#.2' =3p_RͱܽвҴʭ§ֺѵƭrq}`jbOs{uy|{o`YQ=:7&&%     *#3)"D7-VF9eRCq\JwbOUI=[PC[OBbVIgZLdWI]QDeXJgZLZNB[NAdUGbVJ+*(+,,+,,***$%%)*)'''### ! "##%&&&''!!! !! "!!"""#""%##&%%)('*)(*)(*))-,+,++++***)))()('%%%$$$''(+,,+,,,--,--.//---,---..--.+,,,--.//.//--.-../00011122011012223233122011122233344344233.//+,-+,-,---..,-.,--+,,+,,,------.-//...-..-0//11010/00/000000///--,+++--,652IE@_XPph^xl{xke^UKGA98633222122111001000000/110332232221110..-,,+,,+..-//.00/00/010121343986HFAd_Vxmvxpd]XPDB=66422111022011000/00.0/.//.//-//.00/00//0/00//0///.00//0////./...-..-..---,,-,...010232121./.-.--..-..---+,++,+,--,,,*+*****+*,,,,,,+,+,,,-.-121333121///---+++())()()))))))*))*)**),,+--,---,-,,--././00121122111/0/...,-,++++,,,,,,-,/..<96ZUMvj|~}{|}~~~yxur~qtqsvv|nqer~ptwxspn_QmaV~qyz                    VMEuhtf{l^o`pryhp_ra{iy~~ªʱ}oa D=6©éͲֻ˰zjY  !!!!!!  !    !!!#"!' 1-(42.63/73.62-960<83>:5;72<82;6094.;5/94.0+&,(#1*%90)?7/>70>81@92B;3B;3B:3@91@92<5/:4/70'A6);4-C=7JEBKFBLGCKGCIEBMJGPLJLIFJGCGC@HEBKHELHDMIFKGDIDAE@=A<8B>:FB?FA>IEAJFCLGDKFCJEALFBLGBNJFMIFMIENJGMIEKGDHDBIEBHEBEB>EA>D@=>:8<96;8586320..,*-,+,,+..-110444677454333..-332--,++*110454010666222741)&#,)'?;6c[Q~przԷɯػв׹ܽɬɪί޿ܿٻݿԵѲӵػָѳغٻ׸mWKE!5-R. P-M&Q'@* !//;* %8' /;",B$=9\>2e>2b;0X4)b;.j?3Q-' " (16I+ H(,)0::2."!&(B+!1 7!B)53/14A#. % 6?!dC1V2"O-I.$F(?@"A#.294 :1 # 2G&U,"=>!D&> * V*a2!@7 L!N!0 .-' j?-sD1G).1* 1 4($%L-!R6,R8--7c8)`8'>$'+ ' H'H) C#=$ I(?  -O5$W7%?"W1f8${B,c:']8%C&i?3Q0"I);09#j]|lWL'8-'4)#">1(H;1L2'Ae1#u9)N$6! K+U1"cG>kQInQIxVMP3,cPD,462'0?%.-, >A8B,$ֺ^PEβ޽߾ݼغɭȭŪʱprglcPymyxut|{o`YQ<:6&&$    )#2)!B6,UE9cPAmYGt`LWJ=[OCZNAcWJh[MdWI]QCfYKgZLYMAYL@gVHbVJ**)++++++***###)))'('$$$!!!#$$%&%%&& !!!!! !!!!!!!!!  !""###%%%%&%&&&'''((('(('((()))**+,,+,-+,,++,,--.//...,--,--,---..,--+,,,--.///00.////0.//,--*++)*)*+*,,,***((('('*+*----.-..-..---,++++++++***),+*--,--,--,-----,11/:85FC>WRKld[zm{{zpwma^WOEA=654332222121000/0//0/110110110221543443110..-..-10/11000...-..--.-..-320EB=`ZRzrfv}}~}}~{~orj^YSKA>:44100.//./0///.//.00/00/00/..-,,,*+*++*+,+--,././0/./...--.--.-----.--.-,-,*+*)***+*,-,./../.,-,,-,-.-,-,+,+*+*****++*++*++++++,++,++,+*+**+*,,,././00.//-.--...//.//.0/./.,-,+,++,,+++,,,------,-,+,,,,,-.-/0/000...,,,+++***)))))))))()(()(.-,DA826.&=1&82,;62MIELHDMHDKGCJFBMIFMIFKGDIEAEA=EA=JFCJFCJFCGC?HC?GB>EA=EA;8<8585230.0-++)',,+//.010000233556222110+,+110./....221787222676122751*&$)'$<72bZPq~rtαۼγݿڻӵͮŨٺѳæֹ۽ܽڼ؀j\@9* Y2#[4$K&P'>2'* 6.#%6.  6!0B$;4bA5e>2b;0g>0uH7g=1T/( # '- 4F(J+!1(0981-"!' (B,!'B)!B)53054C#3 (6@#dB1U1!O-L1'F(?=A#648596" 1@#X/#>> C&= ) Z-i8$B 7 K N!30*1oB/oA/810'3E(I2)- 0 [9+Q6+Q7,(D%d9)]6&5*)* H'H(A!<2#U4(4 ,BM)W1i9%zB,`9&X4"H)b;/P. C%7&jG>yjseM3,/#:1*8-&! =0'H;1G1'E"a/!v:)S':G)S0!\>3kQJmRJqSKuSJ'tz.35/>%F*!;"%$-6\F;͌ziNB9β޿յյٽҷӸ¨̳qoltjV}thuts{o}q`YP<95&%$    )"2)"@4+SD8cQAlWFnYGVI=ZNBWK>`TGfYKcWI\PCfYJfYKXM@XK?iXIbVJ-,+*+*+++***""")))((($$$ !!#$$%&&%&& !""!""!!!!!!###"##""#"##!!"!!! !!  ! !!!!!###%%%'('''''(''(''''()((('))())('''$$$###$$$&&%&&&''&&&&%%$$$$''&)(())))))))()(((('''&&&&(('++)1/-<95LGAc[Q|qdt~~}|~}ylibZIFA442111221222111000121443332321322443332//.--,-.-//./0/---***(((''&&&%&&&+*)973QLEnf[ylvyyyusrttsrstsuuuxz}}{|}zyx}qog[TNG@=810.,,++++,-,,-,,,,,-,---./.000000./.--,,,,**)**)**)**)))((('''&(('''&&'&&'&&'&%&%%&%'''))))*)***)*)*+*+,+*+*)))())(((()(******)))((('(''''''''''(((()(()(((((((())****+**+****))))*)*++)**())()(())())'(('('((()))())'((&&&$%%$%%$%%$%%%%%%%%%%%&''21/QLErj_u~|uvw{~wslvi]{nznu                            &#!LGBQLGMIDLIDNIEMGBNGASLEWPIYRK\VO\UOZTNWQKWQK]WR[VPWQKVPJ`WPj_Urg]odZh]SfZOPG=QI@wi]wi^vi^ocWvj]LF?%&&,++++***(%$#!!  "!"&#*&".*%,($,(#.*%0,&3/)73,:4.83-73-61+2-(0,'1,'+'",'"2,&5/)60*;4.;5.71+4,#;0&C;3F@9RMIJEBGC?FB>GC@JEBID@IEAHD@FB?D@=HEBJFCIEBIEBLGDMHEKGCJEAJFBLHDOKGOKHMIFOLJRONRNLOKHLHEKGDKGDKGCKGCKHDKGDIEBGCAEA?A=;=:796384152/1.,0-+*(&..-111232222233344/00...))(./.00/332443776010555011;74,)&)'%84/^VM}oysvؼƬǬ̰ھݾٹԴնڼϱԶԵϰåᾟĥۻ׷Ʀ㿠Ǩгʮũˮݿݿڼܮ'2) U0%[4(E"P';:, + +71"# 35 /7'B%B"5cB5f?3b<0j@2uG7d;0T/) % ()4A#N/#6(0971, "!&'B,!$H-$I,;"33;!3B#6'8A#a?.T0 L+K0&E&?7A#;78598% 1=@$= ) [.h8$B 7 K N!40';!rC1h=,/2.(6J-#K5-,E(d@1P6,L3) R.!d9)Y4$0,)0I(H(A!?J,%=*$W5) ''J"M+X2g8$u?+I'2 V2(Z6+O. >!/8#h[{lWL&5*#<2+<2+"9+#I<2?0'=a/!v:)U)6N-"T0!_B8mRKpRKuULmLCra.350G*"H+#2|˰(%ڻӴֺԹϴپзʳyunukV{qex}}p~qymtb\S@<8&&$     ("2)"A5,SD8bPAlXFkVDUH;YMATI=]RFeXKbVH[OBfYJfZKYNAWK>hXIcVJ0/-)**+++***$$$)))()(%%$ #$$%&&%&'  !!!#$%$%%###"#"&''''''''''(%&&&''&'&%&&%&&&''&''())())()*)**)**())'((&''&''&''%%%$$$#$#$$$$$$#$$### !!!! !!!!!!!!  !! !! %$#.,)>:5RKDi_T~qd{l~oppp{m{n}prw{{vrswuxytrx}ywq}sghaWHE?//-++*++*+++,,+,++,,+..-..-..-//.//.///./......--.----+,,***++*-,,.--//.///0/.;84QLEhaW{qe{nrttqpqqqrsq}o~psttqqqrsssttstuutttsppqqrstwz|xzlng\TOG><710.--,++****+,+,,+,,+-.-././/./0/00//////.//.///00000/...--,++**)())((('&&%%%$$%$#$##$#%&%'''''''('&'&&'''''&''&&&'''''''((((('''&'&&'&'''''''''''''('(((((((('('&&&%%%$%$#$$#$$#$$#$%$%&%&&&&&%%%%%%$%%%$$$#$$$$$$$$"##!"!   !!###42.PJClcX~tgylzl}pstvz}zu|pym|o|ozn{o|psz|o}qxtuy{vy{|pi^S{nznui                        " LHDRMIQMIRNJNJFJFBMHCKFAHD?HC?KFBKGBIEAGC?HD@EA=B?;C@HD@QLHWRLYSMWPJWPJNHAKD>*'$! JE?XRNTOKMIDRLG;84"#$((),+,//.-,*)(&'&%%%###" ! ! #%!'#*%!*&!($ -(#1,&0+%.*$1,&0+%0,'1,'0+&/+%0+%/*$0*%60)71*-(#2* ;2(E=5LDKEALGBPKFMGCKFBJD@KFALGCLGDKGCLHDOJGOKHOKGMIEJFBIEBLHEOJGNKHJGDEA?FC@HDAIFCIEBLGDLHEJFBIEBEB?@=;<9795351.30-41/41/30.20.,*(332343444233222122..-...)))..-00/221332554///444//0;84+(%)(&73/\TK|o|{rϴܿɮˮֹ۾۾ҵǪȫȫ޾ֶ¢ϯڹմԴ̮ƩȪвָۿ׹նѶ31 V0&`7-=N%8F!P&C+1,$ C&N. @(*:)A&F$3 N4)a<1d=1c;.i?0a8.U0) &(%3<N/#9 '.961( "( /6 A+! J/%J-<"37?#3B#F$)8A$a?.T0 K*L1'C#>-@#?":47:9617X/#A=@$= ) \/i8$B 7 K N!4 0# F(tE2[5%+19=;@,%<)!( T4'a>0Q7-H0' [4%c9)N.) ,&3I(G'? >N4-5#G+! - $@ K+X2P-S/$/ - e<1S2&N, 7&kG>yjseM3,.!7-&=3,@6/$5( I<2@2)8c0"v9)V)3N-!U1!cF>nRKqSKwVLR3-tbUr_R$ .437 I,$D) >)cNCG-$}fZܽܽݾֹβҶϴѷ̲Ūؿʴ|kofQxnb}}{n{o{n}ud]TB?:('&    )#2)"@5+PB6^M>iUClXEUI:B>9=95>:5@<7A=8A=8C?:FA=HD?JFBEB=A=9<84 *(#KGCPLIJGCNJF=:6!!"'&&)'('&&'&&&&%%$$!! !!! &&& "%!'#+&!-(#*% +'!/*$/)$/*%0+&1,'3-(60*50*3.(2-'5/),& 2)<3*C;3bVKpcXnbWsg\j]SbVKfZObXNe[SaXQ`WP_VO`WP[SMWQLSMIOKHOLINKHNJGMHDID@FA=EA=EA>EA>B=:?;7B?;HDAMIFNJGKGDJFCFB?A>;>;9:868425203/,0-*30-42/31/20.-*(544221.//333565788222332//.333554553442332-.-232///;83*'$('%730YRJwky~}p˰ֹǫԸݿͲ۾۾ֹѴ̮ͯɫ⿡ŦήҳָͯշݾټܿغַȮ>"9Q-#d:/8\.$Z,#J$Q&L$. .-# R1"`:(E+',7%@)C#5F.#a=1d=1E(/P,%S/( &(#38M."D'),851&#- @)O7*A,!$L0%I,;"3:D' 3C#P)'8B%`>-T0 I)K0'B#>( >!A#;19993.4W.#D!=@$< ' [/h8$A7 K N!4 0! K+uE2O. -3>A<A0(4' X7)\;.R8-@*"' ^6'`7(?$)," 6H(I):>!O81393 00L+Y2U0"K* %?#g>2P/"K+11WMzkZO%3("8.'?4.D92&5'I<2B4*0X+v:)]-7O.!V2#fIApRKsSKvSJѷ6$ +/43?%J-$A&?Ȭ޾аݼָгݿػڽֺԸαͱ˰ũԼî}zmriRwma|p}qwz~ve_VEB>))(     ("1)">3*N@4[JYMAVK>YNAeYKcWIZNA`SEfYK]REQG;\PCdVJ530+++,--*+*%%%)))())%&& "##%'''((""" !    "##"##""""""###&&'&''%&&!""!"!!"!!"""""!""!!!""""##"##"#####"##"##"#"####$$###"#"###$%$$%%$%%%%&&''$$%#$$#$$"##"""$%%&''&''&&&%&&#$#######""""""$$$######$$$$%%%&&&''&&&$%$$%%%&%%&&$%%#$##$#$$$%%%%&&%%%%&&&&&&&&&&&''''('&'&%%%%&&%&%%%%$$$)(&31.640;84@<8@=8=:6<:6B?:A>:><7@<7?;5@<7A=8A=8?;7@<7@<7@<7?;6@<7C>9A=8D?9E@:E@:B=7A<6840('$ !! &%$20,C?9WQIg`Vtk_{re~tgviwjzl|n}n~p~pq~prtutrrrtutwyyyyupqvxwux|}}wwt~uhjcXTOH?<8220--,*+***))*)**)))(((())()*)**)*+***)()('''&'&&&&&&&&&&&&%%%$%%%%%%$%$%%%&&%&&%%&%%%%$$$$$#%%%%%%%%$$%$$%$%%%%%%$$$#######$#$$$$$$$%$%%%%&%&&%&&&''&&&%''&))))*)*+*++*+++**)**)++*,,,+++**)++*,,+,,+,,+-,,***(''((()(((''((')((*))+**++****))))))'((()(*****).,+B<8_TM|mapz~{tr}qzm{m~op~oqwxxzzz|{xwz}zss|~~r}q|pzo{|qxl}qsy~~z̮yj\xjwkwl                   >;8QMIOLHLIDJFBPLHRNJJFBGC?IEANJFTPLTQMNKHNJFMHDHC>ID@E@9E@;GB=GB=LGBOKFOKGHE@GC?GC?IFC=:8 30,MJGMJFLIE=:6#$$'''$%%"""!"" !'"($)$*% *% -("1+%5/)5/)2,'61*:4-:4.;5.;5/,&/'7/':3,pyvtmosb~n_{l^zl_yk_ymaxlbkaY[TNPKFMIENJFSMISMISMHSMGSLGPIDLFAHB>FA=EA=EB>HEBJFCHDADA>>;8;749649649638527416307426311.-,)'*'%643311...222455999333454210865:8687666566500/454122=:5-)')'%;62aYOswz{rϳܽ§ѵд׺߿׸ַַҲ׶ظԵˬݽݿָػ۽׻ܿ۽2 A$E#F$h<19f3)k6+L'O&Q&:) /# N. `:(H*(.2B%B#6B)a=1c:-H)! 4/ )'#46K,!H+ *,=51&#- C,!P7*9'.N1&I,:!3?"H)!3B"O(%8D&^;*T0 E&J/%A =$79:39795.2S-"G#=A$>! ' \/f7#>7 K N"6 0Q/!tE2H)/8@A;=+#.(];-V8,R8-5"1c8)\4&6*+  ;H(G'6E+$E2,:>!" @!6P-Y2U0#J)# R0&a;/P. E'.2>%fD;J1*-5+$9/(@5/G<5*.H:0E7./P'v9)b/!6P.!W4&kNFrTLvULlJAL:1ۿ-144E)!H,#@"<C)"ټܼطڸ޽׸ϱܾԶշټԷ׻Ѵϲ˯ŪҺzyrxnWvl`}qtu|wgaXHE@)))      )#3*$<2)L>3\KHE@HE@PLGTPJXSLUQJQNGKHBHE@FC?GD?JFALHCIE@=;7//-&'&$%$#$####"##"##"###$$$$$#$$$%%$%%$%%$%%$%$#$$#$$"## !!!!!!""!""  #"!)(%31-<94B=7D?9FA;ID>MH@NHANHANIAOJBRLDTNFUNFYSJ]VM_XO`YOc[Qd]Sg^Tg_Uh_UjbWneZqi]tk`ri]kcXh`UmdYpg\ri^sj^sk_umaxpc{rf}tgzrevnbog\_XOMHB;84,,*(('(((()(()())))*))))))))))()(()()*)++++++**))))))))))))('''''&((''('&'&&&%&&%''&''&('&''&%%$##"""!$$#&&%))(*++*+*((('''&&&%&%%&%%%%%%%%&%%%%%%$%%$%%$$$$$$#$$#$$#$$$$$$$%$%&%&&%'''((''''''&'''((''(''('))())(((())(+*)+*)+)(+)(+*),+*++*))((('))(((((((((((('*)(530NHBlaWyky}||{|}{xxvtuy|~{x{|zvsyxssut~r{zwlvk~rwxtwŨ|ue}                    C@JFBMHDMHCMHCLHDKHDHEAHE@IEAKGBHD?E@FC?B?;@=9EC@EC@CA?10.:73KHDKHCB?:''&.//011-..())#$$ !!    "&!'")$)$)$*%-("1,%3.'3.(61*61*83,>8193-(".';5.TJ@ɭŪ{zwuq~nu|orfseYk_Tk_Uvi_qeZmbWpdZti_mcYcYQYQJQKFKFCHDAHC@GB?FA>A>:>:7;85<96;85;75;85:7596485330.0-++(&+)'6433211113334448993322210/.75397587644355400/343333:84-*',)'?:5i`V}}r{uʰƫд޽ۺַܽںܽغֹֹ׻F1*2=e3)l6,M(K&R&D&' E(`:(N. (.+ C$C%9@&a=1a8*R- &= ) " /%"95G)J,!**<60&#0I1%P7*/8 N0&H+83C%F( 3A"O(%8G* ^;*T/C$I.%@;"0093;892*1N*K&<@#># $ [.j;'I*6 L!N!5 /]6'qC0=!0=@A;5!,'\;-S7,R7--:d9)Q. * ,) >H(E&5O6/7'#! ?"+6F$7R.Y2U0$K* %^7-W4)P. <"16@& 0.3'!6,%;0)A70J?8?4.C82H;1F8..O&v9)d0"5O-Z7*oRJuUMxVLM*#uδ/648I,#F*!=+o_ڹӲݽвɪڼԵ׸ټۿҶϲǫռǰ}|v~s]vl_tssx}wgbYGD@++*    '"1)":0'J<0YH:hTCoZH\N@ZOCXM@VK?dWIgZL[OB]PCeXJ_SFND9UJ>cVJ:73*,,+,,(((&&&++*+++'((!"!$%&&(("## !!! !!!!! !!   !! ! !  !!!"""###$%%'((()))***++*++)**)***+++,,*++*++*++)*)'('(((+,+,-,+,,()(&''&'&%&&%&&&''''''(('(('(('(('('''''''&''%&&$%%$%%%%%%%%"#""##"##"##"##!!! """#$$"##"#""##$%%$%%%&&$%%$%%$%%'((')('((++*=;7VRKke\undwpevocpi^kdZhaWh`Wb[Q\VM\VM_YPc]TgaXicZle\oh_mg]kf\gaXc^Ua[S_YP\VN\VMXRJID>31.""!!""$%%%''&'''((()))**(**()))**)**)**)++)**)**)**)+*+,,+,,*,,)**)++)**)+*./.;:7KHCPMGSPIQNHJGBCA=B@IFAIFAKICIFAHE@EC>DA=GD?GD?FC>FC>FB=GC>EA:5<94:72:62961961;83<8395041-1.**(%#" ""!$%$%&%%%%$$#$$$$$$%%$##"!  !! ""!$$#&'&()(()())))))()))*)*+*++*,,+,,+,,+,,+,,++++++*+*)*)(*)())')('))(**)++*+++***)))(('((''''''''''(('''&'&&''')((*))*))))(((((('&&&&&%&&&%%%$%$%%%%%$%%$('&630NHAi`V|qexlym|o~ptvwuuvuwy|wvvyzvx|w}rvvwyyy}{}l             /,*C?;FC>GC?JEAOKGRNJQLHOJEOKFQNJTPLMIDD?;A=8D@JFAMHDLGBHC>KFAMIDKHDMIEOKFKGCD@<@<8<9474/52/52.630=:7%#!:73EB>EB>.,*-..344233+,,)**)**())%&&"##   !#$ %!'"'"&!#$ &"*%,'!/*$0*%2,&60**&!$.' 2.)o_Ӵѳͯʮ˰ɭĨ{yp{i{jp{m~ocpdYcZRXRLVPKVQLVPKTNIPJEMHCGB=FAGA:796431/2/..+*.+)643543543665676898221000..-110443665443332./.232222531,)&.+(D?9kbW|}ouzŭ¨ֺ̱޽۾۾۽ָԶݾs_S0" :i<1C"e3)l6,M(G%Q&M$/ & ! A&`:(R1") 1) A#E&@ <"a<0b9+]3$1 C%* ! 1$!?6A#L."/);70%#3M4'M5(%@&M0$H+64G(>"3?!N( 7G* gD2a>,D%I-$@:#018/ <78:80H&M';?#=$ ! [/k<(N0!6 L!M!4 /]7'l@.32B"@A6-,( [:,Q6,O6+%C%e:*D&$-%% >H(E&:V?7)1B$$ D&D"0S/Y2U0$A$1c;0O/#M,45:"<$/2#4)"7-&<1*B70KA9TKC[QJL?6G:04$G"l5%`/ 8M+];/tTMwVMsQH5375A&I,#E(>ϲұɪۺͭ࿟˩߽޼ݻٺշ׻پедŪҸëuu^sh[zuvv~}wic[GE@..-   #/'!:/'K=1YH:jUDr\J`QC[PDZOBWL@eXIh[M\PC]PBbVH_SFOE:SH:[WOoj`}vktz{wr|owk}sg{rf{rf|sh~vk~wl}vk~xm~xm~wlwkyqfypewodwnctk`qi^`YPC?9'&$  !! !! !!!!!"""#$$$%%#%%$%%%&&&''&''%&&$&%$%%%&&&''&''%''%&&%&&()))**)**'(('((()()*)541LHB_YRjd[pi`pjajd\e`Xa]Uc^Ve`Xic[hcZfaXd_Wa\T`[T]YR^ZR`\Tc^Vd`Wd_Wc^V_[TZVOTQKSOIURKYUNZVO_ZS[WPYUNYUNVRKQMGNJDLICMICGD?;96.-,'('&''&'&%&&&'&&'&&'&&'&&''&'''((')()**'))&''$%%#$$"#$"##!"" !! !!+)&@<6RLE\VN`YQb[SaZQaYQd[Re\Se\Rf^Th`UjbWpg\uk_xl`{pctgxj{l|mouvtuxutuy~s}q|qxz~tju}v}r}svz{{}}xfsy~r              ?<9MHDKFBGB=HC=LGCPMITPKQMIQNIQNJKHDJGDGC?B=9@<7B=8C?;HE@PLGQMHLFAMHCPKGMIDHD?DA9<8473.3/*1.*3/+=:6?;7!1-):620.+'((344022.//-.-+++'''#$$#$#$$$$%$        !! !%!%!(#*%,& ,'!#-' -(#{ϲϱշܽٻնػոϳ̱ƪƪ˯ӶɯĬغˮyt~pui|peznc{ncxk`re[pdYi]Sf[Ph\QdYOYOGQHAIC==8531.20./,*,*(1/-210332554676676/0/-.-,,+0/.21033255433100/333222431.+(40-JE>ndY}rv}êѶ۾ۻ߿ݾٺۼ޾ݣz& 6i=1D$`0'm7,S+D%O&Q&:% " :"_9(W4$+0) ?"E&@!;a;0b;/H*(R-'5! & 1#!I&=;M."1)620%#5N5(J3'" F*"L/$H+65K+"9 3= H%4G* qN:pM9E(G+"?8#0181 =:6300B#Q*<>!>& [/k<(Q2#9 L!N!5 /a9)g=,16J&?A5,0 0`=/Q7,J2(L*b8)9 * 3)=I(D%C*#R<5 * 0 6!H(>, W1X2S/$4G'a;0N.!G(26<#203' 5*#8-&=2+C81LA9UJC\RKMA8H:08) -A!B!8K)dB7wWNyVMX70p`#08P2(P2(I,#ܽӴԵΰťԳ߽ϭӰԲҰ״ٺίӶչۿ׻ѵӸǭռʱpu]peWz}uwtz|wje\JHC11/    .& :/'K=1XG9gSCr]KaRC[PC[OCWL?dWHh[L^RD\PB`TFaUHPF;QF:aTGA<7+--+,,)))%&&******&''!"!#$$#%%!!!   ! !!"##"""###$%%$%%%&&&'''''''''((()))***+,+,,-..-//-//-..,..-././/-..-..-..,--+,-+,-,--,--,---..-..*++)**)**)********)))()))))())%%%$$$#$$#$$#$#$%%&'''('((('((%%%$%$$$$$$$$$$&&&&''&''&'''(('((&''&'''((())()))**)**())())())---;:7ROIic[~vky}p^XP641%&%$$$$$$$%$$%$$%$%%%%&&%&&%%%%%%%&&&&&())())())()(()))**)++*++)**())*+++,,+--+--+,,+,,,--;:6VRKpj`~vkswxstvt~q~vkvndslbqj_tlbvodwod|th|ti|ti}vj|uiwpfslbnh^mg]pj`uodwpexrfwqfvpetndsmcsmcsmcrlbke\^YRGE@//-$%$"##""""###$##$####"#""""!"""###$$#$$#$$!##!""!""!"#"##"#$#$$#$$"$$"##!"" !! !!""""##"##"##"##""#""#"###$$$%%%%%$%$"##"""""""""#$#$%$$$$###"""!!! ! ###$%%%%%$%%$$$$%%$%%#$$#$$!"" !     ! !!!!!! !!!!! !"!"""!"!   %$#.+(51-840951;7295084/951:6196185073.51,62-95/<72;60;60<71>92@:4A;4?93@;4B<5D>7IC;PH@WOFof[{yzxw|wv{pulc|qwwtzlyjwy        0.+HD?MHDNIERMHRMHRMGQLGOKFRMIPLGOKGMJEJFAGB>GB=D?:D?:C>9B>:FB>MIENJFKGCMIEPMIOKGIEAB>:B=9EA=B>:>:6;74951951;72@<8HC>=95$!  '%!&%#..-+,+()))**)**&''$%%!"" ! %&%%%%"##            #% '"'")#"$*%E<3yŬͳʱʯĩƬ̱ϳͰŨϲݿѴۿ׼ʹƭپԸϴγϴδ̳{zvqqrrpxj{mak_T`ULIB<72/2/-.,*)'&-,+//.221333333344000..-,,*/.-00/10.4323313324542225421.+<73SLEsi]|swyܾƬʯոݿݼδ  " f;/L)!\.%n7-V-!B%K&Q&D& $ 5Z6%R0!./+;E&E%@!c<0b<0=&&P,&8 &32# L'D!9L-"2(310%#8!O6)G0%' I,$K."F*47L+"/4= B! 5G)pN:oL9C'G+"?5$02 62 >:0-127D"<>!>( Z.k=(\;*BL!L!2.! h=,\6'-@"X.!?A1 ,81[;.R8-C-$T/"`7'1 ;"0=I(D%O6/H5/  D)F%7(P-W1!M+ '_7-Z7,P. A%46402#4)!6+#9.'>3,C81L@9UJC^SLRF=H;1=.%5!>#/4 E#gF;xWOwTKE"еvh--;!\<1L/&H+"9ھغѳͯåɨִ޻ձ޺عͮ׸׺ֺӸͲ˱ūؾ̳ĭ~rzalaS|pwxt{zzoi`NKF331  !0)#<2*H:/UD6eRAs^LaRCYNAWL@TI=`SDfYJ]QC[OAaTFdWIQF;PE9\PC@;5+,-,--***&&&)**)*)&''%&%"#$"#$ !!"""!"! !  !!!"######$$'(()))'(('((())()))*+,-.-..-..,..-//./0./0-//-././0.00/01/12134234234234123022012012/00.//.00.//+,,)**)**)***+++,,+,-*+,*+,+,,())'((&''&&&%&&&&&&'''((())(**())())())())(((())(*))**()))**)**())()))***,,+,,,---//.///00.///00554DB?YUOqlbw|faX<:6&'&$$$$%%'((())()('((()))*)())(((())())())())'((&''&''&((&''&''()))**,..-//-//-//-..-//,..331MJEkf\{o|~yvuuvz{{wssuvvvsuus~r}q}q|q|q}q~s{pxrgb]UEC>-,*"##!!!!!!!""!""!""!!!!""#$$#$$#$$#$%#$$#$$"##"###$%$%%$%%$%%#$$#$$#$$$%%#$$!"" !!!"""##"##""""##"##!""#$$#$$$$$#$$"## !! ! !!!!!!!!!!! !  !!!!!! ! !!    !!!!!!!!!""""#""##"#"!""!""###%%%%&&%&&%&&$%%#$$"###$$$%$#$#"##$$$(('42/?<8GB=GB8C@:EBVQIvncz{}uv}y~s}rtu{p|täq~o       ! ?;8JGBOKEMICKGBOKFSNIRMIRNJQMITOLVROUQMSOKOLGJFAJFAKFAOJEOJEHD?C>:GC?KFBJFAHD@GD@HD@KFBJFAFA=EB>@=:;7473/840>;7FB=HC?KFAIE@D@<<96)'% $#")**)++'((&'&%%%%&&#$$ !"" !!                       % '#WMCsesuuvtƭʯ˱̲Ӹھ©۾չԺêéūͲҷжǮԹƭ~|ssebWNC=81/,-+*)'&0.-220665676566344010///..-00/32132122000.2213320004303/,E>9`XOtgx}}ƬéǬѵ۽ٺ f:.S.%Y,#l6,V,!B%M(Q&N$.% % 0/%-.:E&H'<V8,Z$3?I(I*"ZB:YB::$ $G*D"- C$T0%C%1h>3S2'O- ;!65013'5)!7+$:/'>3,D91LA9UIB_TNVJBH;0@1(0  / @nMCyWNfEp[IaQBVK?UJ>TI=\OAbUG]QD]QCcVHeXJQG<9ZVOzsh||ymc]UA>9--+'''&''&'&%&&$%%#$$#$$#$$$%%$%%%%%%&&%&&$%%##$#$$$%%$%%$%%#$$!"" !! ! !! !! !! !!!!""###$$#$$######"##"##"""!""!""!!!   !!!!!!!! !!!!"! !      !!!!!!!!  !!"#"""" !! !!! !! $#"53/LHBb\Snf\ri_qi_sk`ulasj`nf\ldZldYjbXh`Vg^U`XO[TKYSK]WN`ZQc\Sd]Sd\S^WN[TK]VM\VM]WNf^Tyoc~y~uvzo~tivk}q~s|q|q{p~ukypf}r~vxzxzftfz       10-NKGRNJKGCKGBLHCOKFKGCJFBHD@HEBEB@IEBPLIMJFJFCKGCLHCQMGQMHRNIQMIQMHMGBMIDNJFLHCGB>IEALHCPMIQNIMIEHD@C@;@<8;72:61>;7DA=IEAKGBB>:<74B>9HD?=:7,)' "#"''%'(&%&$!"!                   ($ RIBZQH^UMf]Ui_VlaWsh\uisuw{}©¨¨ȯεҹӸֻêĬۿԺʰŪ΍uocXGA<1.,-+)'%$/-,10/221333455677010...//.11066498766511011033211021/40,LD>k`U|n}~zĪɮȭӷھ߿Ͱ* e9-Y1':O%J%B%N*Q'Q&8% " @(X8'$, /5D%J)<H1&Q;.>+!+ '(&&1$K'J%6H);"(000$$E-"P7*9&1 L0'J- E)3< K+"" 4;E#7I,!qO;nL8B&C&?2&03 62 ?@0 .+-3K'?<;( Z.k=)^<+CN"K 1.$k?.N-!.P,!T+88"-4 A3W:.R7-5!B$N,!  ?$C'G$I'M1)]E=X?82 F) K+!= ) M+!S/$M,"d;0h>3O/"K+76202#4)!6*"8,$;/'?3,D91KA9UJCaUO^QJH;0B4*3"$.E%rQHxVL]5&ѳD#:9M/&W9.H.%8޽ݼܻٺѳշչֺؽӸеҶϴ׽ζ{yvdmcRxm}{r|y{zwoePLF331   *#<2)G:0SC6`N>mXGbRCVK>WL?WL?ZN@aTFdWI`SEcVHeXJQG:)))%%%%'''((*++*++)**()*)**+,+*++*++*+++++*++*++*++++++,+*++*++*+++,,*++*+*++++++++++,,,--,,,542LIDmf]u~~~qph^PKD42/'('%%%$%%%%%%%%$%%#$$"##!"#"##$%%%&&%&&%&&%&&%&&&'''(('''#$$""" !! ! """####$$!""!"""""""""""!""""""##"#####"""   !!!!!!!!!!!!"!!!!!!!!! !!!!! ! ! !   !!!!"!!!!!!!!!!!!  ! !! !!!""!""!""!!! ##"862XRKumc{owxut}q}shxodxod{rfxk{nrus~q|o|n|o|oylzlqsruzzxlxmcrh^wnc}rgyodpg^wmd|rhvkyoewmxv{p}r~rrymtez              #! =:7KGCOKFOKGMHDHD@GC>NJGKGCHD?HD@DB@?=;C@=PLINJGGD@EA=KGBUQLVRNWRNUPLRNIMIDLGCNJFQMHMIELHDJFAMJFSPLTQMROKLIEJFAFA:EAGC>JGBHDAHD@A=952/#!  "!!!                952IC?FA=B=8C>9ID?PICVNGaXOmcYth^ylazl`pcrdqc~oapavf}mqw}zz}˱ڿìؼϳ̱ǬϴԹϵɮ˱˲sk_TF?:1.,.,*(&$-,*/.----000121565///,,,..-11045366544422144356533310/:51ULDwj]x}yڼȮͱѵֹܿϲB-& _4)]3)2FJ$C%N*O(Q&B% # 4 dA-& * 04E&J(@ F/$R;.B/$.')&&1$ L(Q):B$A&0405.+ >&N6)4 5L/&I,B'2?"A$ 49C!8J,!qO;nL8B&A#?.'03 33 @A ;.071==;8( Y.k>*_>-DN"K 1.$i>-C%3U0$Q)42,;A4 T8-P6,-D%@# # +?$D(E#I'H*!I0)H/(3 l?3a8.4 ;L(B$Z4*sD8a;/O.!B%5501 3' 5)!7+"9-$;0(?4,C80J@8UIB`TMdWPJ=3E7.-" ) G'rQHlI?xYH9=A$8 46:߼Ȭھ§ƫ̱ʰʰèռDZysdlbQ|p{{zm~x~|{voeMIC210      +$<2)G:/TD7bO?lXFdSCTI=XM@YNA\OBaUGfYJ`SEbUGgZLRH=SH:>:6>:6EB?FB>IE@IE@IE@MIEQMIVRNVSOTPMQMISNJUPLSOKKGCIFAHC>HD@LIENKGJGCGDAEB>B?:B>;EB>IFBJGCHEAJGBNKGMJFKGCD@:C?;@<8@=9/-*!! "!! #"!##""#""##$$$### !! !!!!!                0-*KGCFA>EA=E?;E@;HC?LGBOIDQKFRMHUOIXRLWOIXPH\TL]UN[SLWPIYQI_VNh]Sxk_tgqdobsd~nv{Ĭīêƭ~ofZPC>91.-.,+*'&.+*.,+,,+-../00666211--,//.00/11033300/00/3434541110//@;7[QH}m`}xָʮ˯αػʬ^J>[2&a6,2EJ$C%O+N)O&J"( # $ eB.4) 12D%I(F$A)R;.D1%.&*'&0%$P*T+C!<C'0506./ 9!L5(19N1(I,A'2B%<7+ W-k?+bA.E N"J 1-$ f<,>!7Z2%S*3,-C?/P6,O4*' J)6 ( & 30?$D(D"I(F'6701oA4V0'% B!@/ h=2pC7V4)N- ;!6202$4( 6)!8+#9-$<0(?3,C80J?8TIB_SLgYSN@7F9/9%4!! aB8xULV7/е9>!@$55r޾޾ɫ۾ũѳӷƫеγҹʴ~tei`Ns~|{oy{{|xqhKGA11/    *$9/'C6,QB5`M>lXFfUERG;UJ=XM?\PBcVIfZK_RE`SFh[MUK?UI=gXJRI@!#%()**++***)++&&&###### !!!#$$"## ! !!!!#$$$%%$$$#$$&&&&''''''((((()***+++,,*+++,,,--*++*+++,,+,,*++)++*++)++)*+)*+)++)**)**)**())&''%&&#$$#$$#$$$%%%&&%&&%&&&&&''&'''((('('&&%&&%'''))))))()(((('''''''''&''$%%$%%%%%&''****++***)*))**)*))*)***,,+--,------.../0/111232332232111000010111111121011121122221<;8RNHnh^}p~zvmcNIC21/--,-..-.--........-..,--+,,+++++++++++++++,,+--,..-..-..-//.//.//.00/11011011000/////0/00/-.-//.;95LHBa[S{rgx{wtw|vvnc[UNA>:210,--*++)**))))**())'((&''&'')******+++++++++,,+,,+,,*+,*,,)*+(((&&&'(('(('''''''(('''%&&%&&'((%&%#$$###$$$$%$%%$%%%$%$#########!!! !"!"#""##"##"""  !!"##&((&((%''%&&$%%#$$$%$$%%$$$"""!!! !! !"""##"###$$"$$"$$"##!##"##"##!""!""#$$$%%%&&%&&%%%%%%&'&0/.JF@me[t}}|}|yurruuwvvxyxyzzyluu}mylr{z}oqyszo{p|qt~ryk|kcWL~p}                 $" LHDPLGQLHNIEQMHSOKRMJMIEJFBFB>D?;C>9B=8@;6?:6B>:FB>LHCKGCJE@ID?ID@LIEKHEHFCLIESOLVROVROMIEIE@KGBKHCMJFIEA@;7A=8E@;D?;C?;C@;DA=GD@GC?JGCOLHSOKSOKPKGLGBMIDLHDOLGNJF:73$"!***,---.-./../.-..,-,,--,---...0/.00.///.-60*+'"                    $!@=9KGCE@=EA>EA>FB>HD@EA=B>:B>:A=:C@=GC@IDAKFCKFCJFCLHDNIELGCJE@QJDYQJ`WObYQe[Rh]Tk_UpdXyl_}obqdqeqezmuxz{|{}x~obWME<73.+*)'&('%-*).,+.--,--.//566111---./-..-/.-110//.//.232565111.-,>95ZOHqcvԶݾȬʭǪ̮ѳܽܿӳs^O#+c5(d8-4@J$C&Q+G&H#N$C!+ _>+H+& 01 D%H(L)>%Q:-E1&.(+(&0..S+T+E#6=!0405' /2D.#0 ;N1'I,>$3F'?#28G$8H)pN:mK8?%?@/(1+) 6AC S)=6>!17?;6, V,k?*eC0C!K J 0-% b9)48X2%T+1,1G?1Q7-L2(" " =! ( ?T) A!/>#D(C!I(H(86:# 8!qB5P,$7;H$8>"pC7i>3M."K+7501!4( 5)!6*"8,#:.%<0(?3+C70I>6SG@^QJhZSUH?F9/cLArUI?-'hJBtQGaK@&<@$=#46ؿ߿ܽ׸ѲƩα۾չͲԸɰɳrelcOvzr|yz}|vlKHB10.       *#8.'B6,OA4`N?mZGfVEQG:TI=VK>[OBdWJh[M_SE^REi\NYNBVK?iYKVLB "$)**)*+*++(*)%&%"#"""""##"""!!"""""""""####'''())))))*)***---,--,--+,,,--,--+,+)**())'((&''%&&%&&%&&%&&%&&$%%%%&$%%$%%#$$"#####"""###$$$%%%&&&&&&'(')))++*+,+,,,--,--,..-//.//-.-,,,+++*+**--,..-..---,++*((())(******)**)******++*++,,,-.--.-------./..//.//./../../////.///0/010010/0/.///0/000010231><9TPJhbYxl}wlUQJ764010/0/////00000111121010/0///.//.././/./0/00/00/00/00/00/00/000000000010010111010/0//0//0/,-,,,,..-763KGAf_V|th~qr}qwzxpe]WPDA=210+++,--,,,*++*****************)++*,,+----.-,,,+,++,++,+*++*++*++*++)))()((((''&%&%$%$#$$"##"##$%%%&'$%%$%%#$$"##""""""""""""""""#""##!!!!""!!!   !!!"##%&&&'''(('(('((&''%&&$%%$$$$$$$%$#$$$$$$$$#$$#$$$$$$%%#$$!"" !!#$$%&%'''()))))))))**)**())****+++,,+,,*++)**())**)863TOHrj_}pusvyzzz|zvi}m]sczk]tfYodXpdY~pcug{l|nuhvk_ti^wmbxncrh^uizk|k]QExjz            63/MIDMIEPLHQMISNJUQMVQMQMILGCJE@JE?FA:GB>HC?HDAMJFIFCHEAIFBIFCKHDMIEID@GC>GC?HD@HEADA=?<8B>;KGCQNIOLHFDBFC@EB?C@=@=:B?;8863#"!!"""#" !! '#($        740C?;HDAJFBHC?E@;EA>@;8=84>:5B>:EB?FC@HEBIEBIEAHD@KGCJFBHD@D@=;85>;8B?;GC?IE@IC?HB=JD>MGAMGBNHBTMF`WOmbXpdYvi]}ocugtfqcrdvi|nbdYPG@;741/-+)'&'&$,*)-,+///,,,--.233.//+++..---,,,+---///--,1107874440/.?:5VNEvg|~xҵ߿ɭгΰնܽݾںĝp6 l9+g9-6B!P+C%A$;"G%P%O&1 T7&];)" / 5C%G'P+ >#P:-I4(3 7!/)&10/S+T+C#36.8:6 & +?*3 ; N1'J- <"3I) =! 16L'9: I*qN:mK8?$?@ 4*1*) 8B D!P(E!7 B#$ ' ?<4. U,k@+eD1;GJ 0-& `8(48"W2&X.!1,5 I>0Q7-H.$(3+F"].$E$,=#D(0B$H(95@0<#oA4L("E#Q)G#/ H(nA6_8.M- B%5203'5) 5)!7+"8,#:.%<0(>3+B7/I=5RF>\PHfXQdUMbQFnTHyYLgK@cG>tSIc?6=-*_C7K+ C& 9!4,pZOݾҳʬίۼгӶӷϴϵĩϵª|nbjbNxxtzyz}vlKGA00.!!!     (!6,%C7-O@4_N>mZHiXGQG:VK>TI=[OBdWJi\N_SF]QDi\N\QDXL@gWIXND"#$**+())+,,())&'&()(%&& !!!!""  !!!$%$&'&&&&%&&$%%$%$((()*))))))))**---,--+,,*+++,,,,-+,,***)**)**())'((&'&&&&&''(((())*++*++*++)*)()((((()()))()()))()(((()*)*********)))))())(***+++++****)))**)++*--,..-//../...-------..-...//////...,--,--....//-.---,..-//./0/./.././/.//./0////////0//0/010/00122232232222564A@=QMGhaX}uitznVRL664010/0//00010010121122121121121232232232232121121111010010010010010010122233233132011/00010.//.//.//110><8VQJtla}py~{twlmf\VQJA>;210*+*(((*++--.,--,,,---././/////...-.--.-././//./.-.-,--,--,,,*++******())())())&''$$$"""!""!"""""###%&&%''&''%&&$$$#$$#######$$#$$$$$$%%$$$####$##$##$##$#$$$#$$$%%$%%$%%$$$"##"#"!!! !"""##""##$$$%%#$$#$$#$$#$$$$$$%%%%%'(('((()())))***+++,,+,,+,,,-,+,,*++*++)++())&''%&&%&&%&&$%%####$#$$$++*C@JFBOJEID?C?:EA=IEBJFBKGBQMIVRMUPKQLGPKFPKFOIEJFAID?JFAGC>D@:EA:6B>;HD@FA=GC?LHDPMIGEB'()"###$$())%&&&&%?<9DA> 2/-EB>A<9A=9FB?JFBGC?B?;@<9DA>JEBIE@ID@HC?EA=FB?IFCKGDNIFMIEKGDJFCIEB@><.//-..,---///00.//--,**)++*,,++++E?8QH@SJCULDVMEXOG_TK^TL\RI^TL_VNWOIIC?;7420.-+*)'&'%$+)(/.-210------122-..++*..-//.-,+,,+///./.3329:9566310@;5RJC{m_|}~۽̯ѵ׺ڽܽ޿޿ֹҵۼȬtef.j9-9C#S0!A"N- N+J*H!Q&=G.hB.( 5AC%F&R-!> N7+K6*4!:#6-&000T,U,K(44-8<9'  9"4 ?"Q3+O2(;"5K+"9- 36M'G#HC?)Q7-F+"(& ,I$\.$B#) =#F)0?"H( 95@1(I) C"G$Q)@'+ =$@%M,;!402$4)!5)!6*"7+"8,#:.%<0(>2*B6.H<4QE=[NFdUNn]UvbWvZMwWJvVJuTJrOEN+"A89RHOzqӸܼ]>/M.#@$74ֺܻԴˬٺٻѴȭɮɯڿڿжzhogQvzuyx{{pOKD10.!!!    & 2)!?4*K=1\K;YTLsj_}pwxz~|zrg`ZQEC>+, &"($"(),&,-,...///00011021233122/00.//.//.//.//./.-..*++)**())())'''&&&%&&'''*+**++*++())'((&'''(''('%&&$%%$%%&''$%%#$$"""!! """"""!"""""""""#"#$##$$###"##"""!""!""!"""""##$#$$#$$$%$%&&&''())*+**+*+,+,-,,-,,,,+,+-...//-..+--,..-..+,,)*+)**'((%''%&&%&&&''()))**)*****)*))*))*****763YTMypf}rw{{~}zvtsrvvmaU|nr|qz{}|suxy}nsf{lyzzk}iXp           LIELHELHDMIEJFAID?HD?D@MIDQLGPKFUPL[WS[WRYTPVRMTOKQMIJFBHD?MHCPKFNJEKFBLGCOJELGCJEAFB?FC?FB=C>9?:6A=8KHDNJFNKGSNJRNJGDB)**'((###())'''###221+---..+++++*++*+++())*++-//*++,--.//,,-+,,,---.--..-.-**)&&&())+,+)*)$%%+,+011.//+++))(***,-,+++())))),,,((((((***(((())(((%%%%%%&&&&&%&&%&%%$$$%%$%%%###'''/00***//.00/.-,-,,10/321221210.-,0/.42143142075342031/752853;86=;8<96964853420#"")% >80G?7IA8E>7@:5?:5A<8@;7B=:C@=A><;8641/.+*+)'&$"%#",+*10/433121343566/00++*--,..-,,+**)--,--,1106763440/-:40NF?obUtz~۾ӷ׼©Yl;.=> V1"> w_NZ<0K*O)R'E"# ( P,29F!C$F&T."B"L5)M8+5#:#9 /%.04U, V-L(16,7<>!+  21?$Q4+N1(77O-$7/ 35E#F#A!6)-&* :B F!I'M(:<(< B(- + V,k@+eD1<EI0-( Q/"/;%]4&Z/!1 4N+[,"f>/gC4R8-@$+ & /S)Z-#:( ="F)0< I) ;4?50C"J%N'6&6E,#J-!H)511 4)"5*"6*"7*"8+"9,#;.%<0'>2*B6-H<3QC;ZLDcRKm[SvbWv[OvUHtTHuSIgB8:0)+H?CLBGl][ɮոjL=K,> @ ([F=ݼֶӵǬʯдǫǫ§̵tskU|o{~yyw{}qQLF0/,        %.&<1'I;/YI:kXFiWETH;]PCVK?_SFfYLg[L^RE]PCj]N\QDUJ>_QC\QF'('*++'((+,,+,,)))*++&'&!!! !!!""###&''&''%%%$$$#$$$%%&''&&&%&&%%%'(('((&'''(()))()(((()))***)))***,-,,-,++++++*++***)))))()((((())(**)--,---......--,,,+,,+,,++++,,+,,,--,-----,,,,,,+,,++++***++*,,+--,---...///010000///././0///../....-----,-.----,,,*+****'('%%%$%%$%%&&&&&&&&&''''('''''(''(''('((((((()(+++-..00/321<:7LHCe^U~uivva[S:97///,--+,,+++,,,.//011122132233233122/00/11/12022255234122133243232011/00/00022233343344455133-./+,,)++/00887IGC`\Tzsgytuk[WQ{YLnWيkt{toqۏndnWbNuSEYC:(+$)"( %**,#*,*,,,---.-./..//...-..,--)**()))**())())'((*+*.///0/.//+++())'(('(''('&&&$%%$%%'(''((&&&$%$##########$$$%%$%%%&%&''&''''''((()()*)+,,,,,,---.--..,--*+*(((((()**+--,..-..-..,--*,,'))'(('(('((&''())*++*+,+,,+,,+,,*++*++,,,,---.../..///0/./...----,,,./.EB>_XQrj`}sh~q|}vw}|yxwwyy{~~wtf[Pxkui~rhxmzowm}rt~rtwzuuh{l{v}sr`P~j           631SOKLIEHD@HE@HD@HD?IE@ID?C>:A=8D@;HC>KGBNKFLGBPLGUQLSNJSOKUROTQNVSOVSOTPLSPLPKGMIDMIDRNJUQMRMIRMHVQLUPLRMIKFBLHDNJEJFAIEAKFBMJFQNKNKHSOLVRNEC@())'((#$$))))))"##+,,.///00,--,,,----.-,,,,--022.///10233/00-..-..-...//.//()(&''+--***+,,(((,,,233233,-,()(+,++++-..-.--../0/***'((...+,,------******+,++*).,+/,++)(-,+/.-***++*/00.//-..+,,***--,//.///111455/00-..,--,--+,,011)*+'((*++*++'()&'')**$%%"#####$%$#! &$"(/*>71:61852631853:76854521/,+,*(&$"%#!.-,110222221454677222,-,..---,--,++*//.///1104441220/-2.*B=8[QH}pc|u}{ҷҶؽھܾݿ޿ًcTm:-B :W2";q_`D7N,!f:*Y-!L%-! G&J+ Q/$O&C$E%H&F$H1&O9,6%9"9!2%+05J(V.F%+ 6,6<>!) 1/A%Q4+M0'69P.%5/ 35C"F#B"7!# !  * ;B F"F'M)>>52E*!0* V,k?+fE2=BH/-% E&/;&^5&W-,;!X3$tA1uL:gD4Q7-?#0" <\.#W,"5( <"E)0:I) <4>66C"L&G#)&9B"L+?$304'!5*#5*#6*"7*"8+#:,$;.%=0'?2)C5,I;3QB9ZJBbQIlZQvbWx]PuSFsSHnNCK,$- (#&914I>BJ@E{ibV6)H(<AiTIܽ߼ݾۻԵ׹дҶӷԸԸӷɮվʶŵ~zpZwls~|{uwzoQLF.-,     %1( >3)I;/XH9hUDgUDUJ=_SEWLA_SFfZLl_PcVH]QDj]O_SFVJ>[NA[PE))(+,,'((*++*++()()**&&&#$#  !!!"! !!!""#$$###!"" !!!%&%&&&'(''(')*****)))***--,-,,,,+,,+-,,,,,,,,--,,,,,,++,++,+-------.-..--------.....././//./....-..--------,-,,--,..-...//.//.///////0/010000///////0/000/00/00-..,,,+,++++****+*-...//---,-,+,++,,,,,,,,*++)**()))**)**((('''''''(''('((('(''('''''''((')))*+++++++*,,+531D@;WQJld[{oyd_W=<:122///-..,--+,+,,,-../10010000/0/...+++))))))*++,--+,+*******++*++*++*+*)**)))***,,,,--,--+,,*++*++*++,../00443BA>YUOtndvЙƖÕ|ݔqˈi{_jT_LyUEeJ>^F9@<8?;7B=9FB>GB>FB=IE@MHCPLGROKRNJRMIQMHPMHPLHPMHNJFSPLURNUQMTPLOKHOKGSOKTQMRNKPLINIERNJROKTPLNKGNKGMJGIFBJFCPLHSOLNLI--,..-531310''''''$%%'(()))$%%)**,--,--*++())*+*,,,-..*++...121121133./0-..-..+,,+,,,..&'''((/11*+++,,())*+*122232*+*'(',-,+++,--,--+,,-..,,,'''...,,,./....+++***+,++++---0//.-,.,*.,+,+*,,+/00011.//+++*+*//.//.,,,--,333011.//-..,--,--122+,,,,,.//-.-+,,*++.//***)*)))(,-,)**"""""!$$#''&''&&'&'''$%%"## !!&&&'''*++%&&&%$/-++)'+*)*)(@;6;74420853.,+*('%#"$"!//.00/111222344667343--,..---,--,,,+//-///010444333420,)&0-)E?8dZP~tgz{u|ɮɯԺӸչ۾ܾغ׹ع޾ӵϱڻݾۘsal7*H#8V1!<n\`C6N, i<+e8(P%5 < Q-!K.$Q(E%E&E$I&D+!P:-;*8":"1%)02>"V-< -6-5:.  ,0E(Q4+I.&2=!Q/&//3H%E#B!;!J+pM9pN:C'>B#9"#  ! . <B G#F'J(D9:(E) 0% V,k@,hF2? ?I6 *"90;& _5&P))>$Y3%tC2uL:eB4P6,0" 4" H#^/$M'-( 5F$?5I) =4=6<D"M&=&)=B!I)613#6+$6+$6*#6*"7*#8+#:,$;.%=0'?2)C5,I:2PA8YI@aPGkYPuaWz`SsRFtSHY=3$)'*)'*$!#'"%1*,;24E64Q2#F&=/yk޼߿ݼֶӶαѴҶھ׼ȭйκɹ~xoZ~ui~r}{u|qynOKE-,*      %1(!>3)H;.WG9cRAgVDVJ>`TGWMA]QDdXJk^OcVH\PCi\MaUHWK?XL?YOD))(-..(((*+*)**((('((%%%###  !!$%$"""$%%%&&'(('(('(('''((()))**)++*--,././/////---,,,+++*+*)*))**++++++*++*+++,,,--,--*++)**)**())(((((())))))***+,,+,,,--,--+,,+++****++***))))))*++*++)**)**(((%&&%&&'''+++-..011122/11/00.//,------.-,--,--+--.00/00.///0//0//0//00010010011010./....///000/00-..---00/975JFA^XPrj`~r}~ywy||yxm\XQ986/00.//.///0/.//././00/0/.//././//000.//-..././0////./.---,,,----.--.../.,--*++)**,--011133011.00/11011011122011444A@=URLpjas߬əĕ~zwxwwwvvvtvyzz|~}~uܑnădiSuSEYE<&.0 (-!,.,//./.-.-,-,+,+)*)'(('''()(*+*+++,--,..,.--..,--+--*,,)++)++(**'))'))(**(**())())&''%%%$%%$%%$%%$%%%&&&''&''&&&'('()()**++++,,*++)**'()())+,,-.../.,,,(((&''&''&''&'''('()((('((')**)**'((''''((())((('(('(''(('((,,+B?;icZy~{zy{yxvsv~ys}s\SJvhymbwkznvk}shzpfwmcri_qh^si`xndym~qwjzkwhwhuf]UNwm              OKGQLHOJENICMHBLF@LF@JE?LGBKFBJFALGCLHCKGDGEBKHEQMJMJFKGCMHCSNINJENKGQNJROLTPMQMJRNJSPLSPLMIFMIDPKFROJQMIROKPLIPMJOKHEB>FB>KGCOLHIGD&&&+**%&%&&&$%%%&&&'&'(()**+,,,--)**&''&&&'((,--***---233122243/00,---..,--,--,--&'&&'&-//*++)**%&&'''/0/011(((''',,,,-,*+++,,*++-../00$$$***,,+,,,---**)()(+++---///000100.-,-*)*)(+++/00.//,--*++++*00///.***++*111/00-..,---..--.011(((*++-..+,,,--+,-,--*+**++))(,,,))* ! %%$(('))())()*)***)))&&&!""%&&(((,--%&&$%$)**%&&&&&%&&PH>TKAD>6OG>A;4.*'#! &$"10/.---..///122455333---//.--+,,++++//.////0/233332421)&#'$"4/+JC<`XOulbxmp©ƬδպܿڼԶֶ߿ڻ׸ٹݾָʭ̯ͯͯ׺αвݽ޿Ԝwdi1$L$5M+@ rYIZ<0O,!j=,m?-V+ < 1Q,H-#O* D"A"B"K*!B'Q:-B/$7!:#3&'/1="V-8B%N*33;&  '0G(Q4+G-%1@#Q/&,/6X- M'A!;!K*oM9pN:C'=B#6 #  "/ <B G#E'F%I#8 7 A'0# U,kA-iH3C%=P"G!//+6#`6'I%)=%\3%uE4uL:Y:-D,$$ $5" P'^/$D"*) 7H#G".S0%G'1<6 @ E#K&1 &.A!C!A$21 7*#7,%7,$7+#7*#8+$:,$;-%`PGkYPvbX|cWtSGnNC=' +)--+/%#&&"$("$.%%. ;=. 4',и޺ܹ޼߾ѱ˭Ͱ̯̰ҶԹʯڿζʶǶxulV}sgv{{uym}vlOKE,,*    %1(!=3)G:.UF7cRAiXGVJ>aUHXMA[OCcWJh\M`SFZNAhZLcWIWL@UI=YNC,+*.//)*)*++*++'('&''$%%"""  !""%&%!!! #$#%&&%&&'''****+*+,,,,,,,,+,,*++******)**+,,--.-..-..----..,--+,,+,,+,,,--+,-+,,+,-,--)**'((&''$%%"#####$$%&'')**)*+())()*()*'))'(('((***+,+*++)**)*+)***+,+,,*++())'((())++++,,,---..-...//011011/00-..+,,***)))())())'(()))++++++,,,----.--.--.--------.-...-.-,-,,,,,,+--+641GC>]WOri_wks{}}qa\T<;9011/00/00011011/00.//,--*++)***++,---...//122344233122011.//././00/00/00/00,--())'((*+,-//,..*++*+++,,-.//11/01/00232;:8LJEc^V}ukåƙŖ~tikhfgdfhilijgghhhޑhkoqvy{~zvuҊisZYIVB:!,.*-,//011/0/,,,)))(((())())())'((&''%&&$%%#$$#$$#$$#$$#$$$%%%&&'(''(((*)*+++,,*++*******+*)***+*+,++,++,,-.--.--...//-..*++)**'((&''''')**-.--.-*++())'((())*++*++))))*)******)))()()))***)))())'(('''''''''&''/.-JFApj`~}yqg[{m`ui|pynvkuj~tiujvk|rgxnd{qfxmzntho`}l[yiYzk[D<4NH@                  &$"MIEQMISOKTPLSNJTOJUQLSOKSOKQMIOKGTPLVRNUQMLHDJFBNJFKGBHC?KGBOJFJFBGC?HEAHEBMJFOLHUQMXTPWSNRMIOJFPLGQMJRNJROKOLHMIFOLILHDJFBIEAIEBB@=$$#*)("""####$$$%%$$$*++(**)**-..---)**'(()*)./...-/0/244/00133022-..///...,--,--)**&&&*++*++*++&'&$%$,.-121%%%'('+,+,--+,,+,,*++,--122$$$''',+++**-,+*))))(**)+++///-..-.-*)()'&*('+++.//*++*+++,,***..-...+++--,//....-..+,,,,,,,,-..&''''(*++*+*-..,..+,,+,+*++&&&***''' ! $$#''''''()(*+*(((&'&#$# !!$$$'('+,,$$%&'&*+*'''%%%)**:84LE>XNCWMBXNCRI?*(%)'&20/.,,---...111565333---000*****)++*00////,,,///111320(&#$" ,)&940IC=]VNof\rf|ūȭ˯Ըٹطܻڻ۽ݿӵбʬȪвȫ̮ܵ{g-N%3F&D$K."N, O,!j=,pA/g6&M(! ( N*I+!J,#F#;<F%?"K1&B)5!:#71/00<"Q,, P."a8)83/   &1H) Q4+F,%.B%J*"" . 4W- M'B";!J*oL8qO;E)=@!.$   0 =B G#E'A!L&:4 ?%0# U,kB.jH4E&;P"M%?$+)0a6&H%(?(]2$vE4uL:L0$- ! %>"23T* ].$A!* + ;E!D 5~N8mB/0;5%C"F#F"'$ 4B!B!9 06)"9.&9-%8-%8,$8,$:-$;-%<.&=/&>0'@2)C5,H90O@6WG=`PGkZQvcY~f[uVIV<2%  &%)(',)',2/13-/*; ;. C9:TOWì޻ط߿ӳɫΰѳѴϳβĨҺ̷ƴuvmV}sg{x}vxm{siPLF,,* !!    $/' ;0'F9-QB4`P?hWEVJ=aUHZNB[OBbVIj]O`TGYNAhZMeXKWL@SHHD>KFBOKFQMHNJEIFAJFBROKPMIJFBIFBMIEOJEMHDOKGPKGNIEJFAEA 3  &2J* Q4+E,$-9-(U,M'B";!I*mJ7oM9C'><'$   2 ?C H$D'?K%?7 8!1$ U,kC/iH4E&7O"P%C&+:$@*"c7'L&0 G- _2$vF5uL:J/#$ # (F&49Y,"[.#B#' - >@C .|M7rF2/ :5/C"G$H$0#9B >13#9.&:.':.&9-%8-$9-$;.%0'>0'?1'A2)D5,I:0O@6VG=_PFk[Qwe[j_vWKN."7)&+"'&++*.2/2IDEWLLB542-0HDHb]cTOW߾߼߽ں޾ٹظںݿػγβּѸθ͹vtlV}sgw|}{{pyrhRNH.-+!""     $.&90'E9-QB4]LID?JE@C?:C?;A=9D?;HD?MIEPLHOKGKHDLIELHDIFALGCOKGSPLSPLQNJNJFJFBIEAKGCFB=EA:6NHBk_Vxi}߿ŪʮʮԶܿػӵٻղaZ,"3D%B%B$L)pTEaOg8&k9'i8'-, M+K,!F-$F* <;D"A!D%D%4 :$: 9310:!J( S0#_6(? &  $3M+!Q4+A)!09$ (T+M'C"?!D%[7&R1"9>;% $  #3 ?C F$D&?E"D 9&.1(R*jC/iH4F&6O"V)R/") ?' C,$c6&Q);F-_3$vF5uL:G-!#- N+7?\.#]/$T. '/A :C ' wI5sF2/ :57C"F#J%. $ <B ;1 7+#9.&:-&:-&:-&9-%:-%<.&=/'?0'?0(@1(A3*D6,I:0O@6VG>_QGk[Sxf]lbpSHJ'9#"$%*+'+ %$(+)-/.0103+*.))///5@>CYTXUQZ`VYܹط߾޿ܼϱ̰ھδ˲ůκxulW}sgy|}t|ujVRK/.,!""  ",%7.%B6+O@2XH9_O>UI<`TGZNBVK>\QDi\NcWI\PBh[MfYLYNBTI0.+)**&'''(((((#$# ! !""!!! !!&&&   " "!$"!$"!$" #!# (&$*(&+)'*(&*(&)'$'%"'%"'%"'%#)'%+)')'%&$"&#"%#!%#!&$"&$"%$"#" #!  !!!""""""##"########"##!"""###$##$#"#""""$$$%%%'''()(((()**)*)&''%&&(((,,,442B@MICMHCID@FA:D@;GB>HC?NJFURNUQNMIFLHDNIELGBHD?JEAJFAJFAKGBJFBOKFLIEHD?FB=B>;D@=;97+,+//. #$#### *++)**'((((((((++*---/0/121344233-..)*)+,,+,,())+,,,--+,,())*++$$$%&&.//,-./01233133*++"#"'(((((())%&&'''*,,'))())%&&(('((''''%%%)('*)((&%&%$''&---*+*'(')**())-../01/11+--***())%%%'''**)+***+**++())())%&&###%%%%&&#$$%%%%%%&&&%&&%&&())%&&#$$!!!!"!&&%&&&'''"## !!!"##"""!!!!"!$%%#$# ---)++NF=aUH_SG[PDaUHaUH^QE>83,,+100332222010110..-.-,++****++*,,+--,+++---./.4201,(+'$.+'30,41.851D@<]UOznbzĩʮͰӵܽӷ׹ۼڹ߿ɮe']-#4:>"A$J'tb~[*m6#=% H+!K-#I.$G-$>:D"B"C$E&7!9#; :41/: G'U1$_6'A$    $3M,"Q4+=&29&  +T+M'F#D!?"X3"M,<":6&$  & 4@C E%C%?=I#9. #/ (R*kD/iH3G'5N"U'V1#( @)"C,$c7&Q):A)^2$vG5uL:F,!" $3L)5H%].$c3&M*%3E"7E!* uH4wI4197=C"E"J$. ) @!A 75'!8,$8,$9-%:,%:-%:-%;-%<.&>/&?0'@1(A2)B3*E6-I;1OA7VH>`RIk\Txf^ndtYN: $""'%%)'#&  +)+1/1/-0/.142698>CDMIKWF@GA9A~ݻۻܾշغ̯ũٽϵ˳ëȳ±{wnX|rfx~}~wxl[VN10-"""     +$6-$A5*L>0UF7^N>SG;_SFZOCRH<\PDh\NgZK[PBgZLgZMZOCSH:b\Swk|}wu}s}qv}z}w~thj]Qzm`wk`|qezodqf\rf\wk_{ncti^pe\vlbyoe|qf|qfv}tfNG?          B?:A=9752+,,-.. """### ()*'(($%%%&&&'&))(,,+//./0/233133,--))),--/00+,,,--+,,+,,+++.//,-,***/00./0./0022011(((#$$%%%&''&&&''')**'((###$%$&&%(('))((((++*)))$$#$##%%$***'('%%$&&%%%%,--.00./0*+,)***++%&&'((+++++*****++)**)**'''### !!!!"#$$&''%&%%&%%&&%&&'''###"## !! $$$#$#""" !"!"##!!! ! !"" #$$!"!#$#00/+,,NF=`THaSG_SGbVJ`THdWJZNB951///1211111102100//+**+++---0//-,++++,,+...///420.*'*�,(51.63/841@;8SKEh^Uwi|ڼĨ˯Ҵۼڼܾܼæb"b0%77>"@#J'ucжfVr_=A%L.#J.$I.$@":D"D#C#F&<"8"; ;41.: >"Y4&^6'H"S.2 "0 3L+"P3+9#5:*/1O(M'E"E"?"X3"M,;"&  $ #  & 6AC!G&B$>6L&;4  + 'R+kE1jH4I)6N"R%X2$% ?(!D,$e7'Q)9@)^3%vH6uK:B)# # 8G%6R+!].$e6(>!( 8F". C + mC0|M757:A!C!50 % . A!@7%8,$8,$8,$9,$9,$:,%;-%<-%=.%>/&?0'A2)B3*C4+E7.J;2O@7VH>`RIk\Txg_ne{bW&! %""&$$(%!$  !""())/12:3290),A7;6/9zsڻ߿նʬȪǪæԸƮƮí~v_xnbx}}xxl^YQ31."""  ("6-$@5)N@2WH8^N=QE9]RE\PDQG;_SFj]OgZL[OBfYKi\M\QDSHaCgInQoSmQmRiPoTeNnI=80-&'*++,,++++*+****((('''&''&''%&%%%%((()))**),,,---,-,,---..+,,*+*)**)++)*+'((&''&((&''%&&'(()**)**)))((('((((((((())*++*+++,,+++,,,,--+,,())&&''(()++*,,+,,+--+,,)*****,-,,--*++))*)*****874YTMzqgz|wv{}{|vrh[Prcrcpbyk^}nauhtfzm}prfocYsg]}qfvjvztgB<6          ?<9TPKQMIPLIQNJSOKUPMVRNTPLPKGPMIRNKUQNROKPMIMIEOKGROLROLLHDID@LHEQNJQLHQLIQMJQNKOLIJFCGB>KFBNJFTPMYUQWSOUQLPKHOJFQMHRNIMHDLHDGC?D?FB>IEA753*++)** !!!"##!""%&&"#$ !!$$$''''''++*..-..-021133,--'''*+*-.-)**)**,--+,,*++,--+,,()),--,-.,---..*++%&%"""#$$&&&'((&''$%%!!!"#"''&**))))***(('##"##"%%%(('%%$$$#&&&%&%,---./,-.(**()))**$%%%&&)*)******)))()(***)**#$$ !!%&&(((%%%###$%%$%%%&&### !!$$$###  ###!"! !""###### ! "##$$$000//.ULB`UIbUIbVIbVI^RGdWJbUHKC;0001111112211/.00/***(((,,,100/-,)(()))./.111542-)&).*63/730851;73HB=[TLof[{mֹȫ̯ϲԷټؼγҶټػ۾ݾڼϮn;,c0%77>"?#H%o]չzh/$ 5L.#L-"Q(C!?G#C"A"E%B$:#:!;52.="; \5'^6'G"`7%X9,8"*4!V:)$ .D( P3*7!5:& 4"/L'W,J$F"A#X3"M,:!#  $ '- * 7AD!G&A#=1J&?7 '$ Q*gC/jI4L,3M!R$V0"$ ?(!D,$e7'Q)7?(a4%vH7tK9>&# " @#Y/"L%V,"^/$b5'/+ <E!'@- f>-O866?C"?*& $4A@":+$:,%:,$9,$:+$:+$:+$;,$<-%=.&>/&?/'@1(B3*D5,F7.J;2OA8VG>_QHk\Twf^mdj_7+%! $""&&%)%!$     ,%(@7;81:e[[ؾڶ۶߿׹вˬѳҵαħϴƭɲv{q[uk`}x}zv~vk`ZS641###   ' 5,#A6+PB3WH8]M;8><9>;8>;8?=:@=:A?;8<9753141/30.20.1/,0.,0.+1.,30.+)(&$#&$"(&$*'%+)'+)'*(&)'% $" &$"'%#'%#&$"%#!%#"%#"&$"&$#&$#(&$(&%)'&)'&)'&*(&/-,0.-0.-0.-0.,/-,/-,0.-0.-(&%&$"%$"'%$*(')'&*(&+)'*('%#"$"!$"!#" !   !      xD7vwlbZ|UxR{SO{KwGpBidEaFaGgLcJkOkQhQ`MkE9)$#!!"""!"!  !!!!!!!!!###$##""!"!!!!! !!!!!!!!       "##$$$%%$$%$#$$"""!""$%%&'''))'((&''&&&%&&$$$"##!"""##$$$$%%$%%%%%%%%%%%###!""!""""""###$$###''%;84ZTLumb~qxvws|p~qrtsqq~q~qqrr{nxl~vjwkzzbWNtetdrbrc|lp{lwi|nzm{mawj^~qdykwj{vs|re;5/             :85UQMZVS[VSWSOTPMUQMUQMQMIUPLVRNQNJLHEQMJOLJLJGMJFMIFMJGOKHMHDJFANJFQNJSPLTPLOLHNJFQNJOKGMIEPKGSOK[WS`\X_[W\XUXURTQNROLSOKLHDKFBNJFHD??;7B>:LHD975)**())  !!$%%#$$ "##&&&$$#))(+,+,,,.//.00*,,$%%()(*++'((%%%+++*+*'(()**)))&'')**'((())&''#$$ !! !!!###$%%%&&"##!!!%%%'''&&&'''%%%!!!##"%$$%%%###"##%&%#$$)**+,,*,,&'''((())$%%%%%())())))))))())'((&'(!""!"""##%%%'(('(($%$%&&%&''((%%%"""$$$##"!!!!!!!!!!!! "##$$$$%%"""!!!!""%&%.//--,[QFcXLbWKcWKbVJaUIeXKdWJG@8+++/..110211-,+00/---)*),,,10021/+*)))(--,110653.+'(%"0,(62.52.51-3/,:62LGAZSKrh]׻βѵͲ˰ƫǬҶؼۿ׹շշڼܾټԶڻ۽ָֹ۽ټ߾tD6f2&<7>"?#F!s`ŧ3kXJv( ( I+!L-#R(H$B"I%? >>@C(:#;51-?"0 ]6'\5&G!a7%gC4Q1&/ 1W:)# 0J+"N2*479# /0L(Y- K%G#B#W3"N,8  $ + 7, 8B D!F'A!<3G&F!9&($ S+eA.kI4N/!* GQ#T.! ">(!E,$e7'Q)47#c4&vH7tK9>%# ! G%`/!T(V+"_0%V.!&.@ A$ >7^9*O976B C"6&% ( @%A@$;-%;,$;,$;,$:+$:+#:+$;,%=-%>.&>/'?0'@1(B3*D5-G8/J<2PA7WH>`QGk\Swf]mdodVC;!!%"!%%#'#       *$'>58@8>D?FȰ׸ӴָշոǫڿҸ̵vxnXuk`}u~|vvxmc^V;:7%&%    ' 4+#A6*NA3WH9_O>SF9ZOB^SFPF;bUHk^O_SFZOBcVHl^O`TGUJ>JA773/&'''((%&&'('(((''''('&'& !!$%%!!!(&$1/,520520742741852<97=:8=:7=:8>;9@=:@=:@=:@>;A>;A><@=:>;8=:7>;8>;986475364253142041/31/30.30.-*)-*)/-+1.,2/-41/41/41041/20.1.,/,*.,)*(&)'&)&%&$"'%#)'%*('/-+/-+/-+/-+/-+/-+/-+0-+1/-20/31042131/420531532521.,+-+)-+)-,*.,+.,*.+*-+),*('%#%#"$"!"!!!!" #!  !" "  !    !"     ^L{m`WzQvOtKpHvIxIuGoAk=g&^=$b>#c=$mD'uG*|K*K+~E(L-L-O0R1U5X8X82           531VSOTPLVRN\XU]YVYVSWSOQMJHDAGC?FC?IFBIEALIELIELIFLIFMIFQMIWSOVQLSNISOKTPLTPLTPLROKPLITPMTQNROKROKVSO\YU^[WZWTXURWSPUQNVRNUQMPLIFC@IFCKGDGC?HEAROK;97,--,--  !!!!"" ! #$$!""%%%((')*)+,,*++'(("##$$$$%%!""!""'((&''$%%&'')**)***++&''&''#$$!!! !!!""!!!!!! !!!  !!!!!!"""###%%%"##%%%'((())#$$%%%&''#$$$%%'('&''''&''''''%&&$%% !!!""!!""##&&''((""#!""$%%'((%&&$$$%&%!!! ""!##"!  ! ""!###$%$"##"## !!&'&-.--,+[QFbWK`VIbWJbVJcWJfYLeYKD=6(((,,+///10/-++,,+***+**..-11020/,,+++*..-221:862.**�,(61-61-5/+/*'0-)>:5HB+ !B&L.$P+ J$B"H%<=><H* :#;!60.@",# _7([4&E!`7%fC4O0%/ * P5&$ /P.$M1)388 )/G&Y. K&F"B$W3"O,7 ! $ , 6- 9B E!F&@94D%K%92 ($ Q)b?-kI5P1"(EQ#R+ ! -T.!j9'Q)53 e5&vH7tK9?&# ! N*_.!Q'Y-#a1%J'&/D!:%8<\8)O976A C!2'$ 1C&A>';-%;,$;,%;,%;,$:+$:+$<,%=-&>.&?/'@0(A1)C3+E6-H90K<3P@7VG=_PFjZRud\ldpfoWN"!%!!$&$(         (#%;25B9>WNPŭֹܾܿշټдèԻuzoYwmazuz{ux{pe_V?>;'('   (!3*!?4)L?2VG8`O>VI;YNA^SFPF:aTGk^O]RE[OBbVIk^OaUHVK?KA783/%&''(($%%&&&'((&''&&&"#" !!(-74274163152/30-742;86=:8>;9@=:B?=A>;?=9@=:?=:>;8?<9?<:?<9@=;@=;975:75975964853:7596485374152063152063163163164253130.1.+0-+0-+52/2/-0.,0.,/-+.,*/-+1.-2/-2/-1/-0.,.+)0.+2/-42/631863;86;87:86964742632531/,+.+).+)0-,1/.20/31/20./-++)'%#"$#!#! " #! %#!&$#&$#" # !!!" #!" " " !$" )'%(%#&#!%#!$"!!" " #!#" $"!$"!$"!$"!" ! !" " #" $#"$"!"!  u_uf|[uQoJlEd?hAgAl?m?m?i;g8d6c1[-T)R)S&T)P'M&N'zI&yH'{H'yE'{C(W1[3Y1W/P,{I+kC(^?'X<&[<&\<$Z;$\<#\:#a<#kA&qE(tC&xC&F(G)J,M.R0U6S5T7S9U;\?[AZ@]B_E^F]HYFM>G-&  #"!&$#&$#%$#%#"'%$'%$&$#$"!" #! $#!%#"'%#*('*(')'%(%##!#" %#"%#! $ xodvirrzl}pzm{pdoeZtj_shvj}qf}rf~rg{msf~qvsxSLD               +)'MJGTPMPLIJFCOLIWTQWSPNKGKGDKGCJFAGB=GB=ID@NJFIFBMJFNJGMHEPKGVRNUQLTPLTPLQMHNKGMIFJGCHD@KGCPMHTPKSOKSPMTPLQLHIEAKGDSOLUQNUQNUQMPLIB>;A>;GC@HEAJGDPMK986&'''(( !"" !!" !!#$$&&&'(''''&''&'&#$####!""  $%%###!"""##%&&%&&'''%&&#$$#$# !"""##  "!!!!!!!!"""$$$""""##"""$%%"""#$$#$$"""###$$$#$$$$$$$$$$$&&&%&& !!""" !$%%'((#$$!"#%%%%&&$$$$$$ #""$####"!! "#"%&&##"!! ""!"#"!!!""" '('///42/ZPE^TH^SG^SG_THaUHfZLeYK@:3(((+*)--,--,,++)))(''-,+/-,.-,..-,,+++*--,210;963/*'$!.*'4/,61-4.*,'$-)&83/;5063/ǩͮҳ۽ֺϳӷڼϱʭֹۼغԶɬܾͯݿ߾ɑk[f/#A5=!?#=盄r4~&% !>#O-"Q)L%B"?!7A%?9I*!;$;"700C#" *a9)[3%E!`7%fC4N/$/ F. " * Q.$M1)497 #.C%Z. N'G#G&W2"N,0 $ - 51 :B E"E&?77B$I&;6 ($ O(`=,kJ5P2#'?P"F  [1"q>,Z1#00b3%rF5uL:C)$# S.!T,!G$\.#a2&;( 4G"3 '1AX6&O9765=1 '$ <#B"A>)!<-%<-%<-%<-%<,%;,%;,%<-%=-&>.&?/'A0(B2)D4+F6-H90L<3P@7VF=^OFiYQsb[~jdogh^1% ! $!!$%#'      % #5-0<4;tgdͰƪٻαɭжӹǯw}q[zpc{uwyvx{pc]U?>;())   '!1( <1'J=0TF7aP?WJ;8=:7A>:B?<@=:<95<96?<9@=:FC@FB@@=:@=;@=;@<:>;9>;9<97:75964:64864975=:8=:8;86:75;8696463052/52/74174220-2/-30.6417428537527416415302/-1.+0.+30.631741:85=:8=:9<:8:757425200-,/,*.,*1.-2/.2/.41063220./,+'%#%"!$" $"!%#!%#"&$#&$##!#! !$"!%#!%#!%#"(&$(&$&$"%#!#!$" )'%(&#*'$,*'+)&+(%,)&/,)0.+,*'*(%(&$(&$&#"'%#(&$)'%+)(,*)-*)/-,,*)&$##! $"!%#!%#"&$#%$"%#"%#" E'"mrbwUkKa@`<_:^:^7b:h9h:f9c7b5a2[,V+T(R'Q%O'{M&vJ$xH#uG#tF$uD%xF'}G*Y4[3X1Z1R,I(mE'_>%V:$V;%[<%Z;$X:#Z;$\:"d=#h?%k?$q?$yC%B&D'K/L-P1S4U6U7Q7P9N7K7R;P9R;RJGBFB>D@=IEBMIDJFBMIDNIEPLHSPKPLHIFBFB>GC?JFBKFBOJFQLHLHDHDALHDNIEQLHTPKXTQYUQWTPSOLMJGB><=:7?=:?=:B@=FCAFCA0.-"#"#$$"##$$$!!!!""!""!""#$$$%%&&&'((()()))'''&'&%&&%&%%&&%&%$%$$$$&'''((%&&%&&'(('(('('&''#$$$%%###   !!!"!"###$$ !!!!!  ! "## !"" !! !!!!!""" !!#$$#$$ !!!$%%#$$  !$$%&&'"##!!!##"#"!! !! !! """&&&""!"""#""!!! !"!***010741\RF^SG_TH\QF]RFaUIfZLbVI40+'''+))+*)(('(('++***)1/./-+('&((&*)(**)++*//.9741-(#!+'%0,)4/,60,.)'+(%3/+61.,+*}ۼƩ̭ήέͮбܾٽ׻׺гϲ׹ڼݿٻָͰԷټӵ׹ۼԶвΰϲ׷ظҥoe*J"5=!?#>ڰ^L@% '"2V- S(P'H&?!9 G.$>4F(?&;#4/2F% /c:*[3%C^5$fC4N.$/ P. B$1Q/%L1(495$/B$Z.!O(G#H&W2"N+,  & $ - 3/ ;B F#D%?59B$97 9! ($ N(^;*hG3O1"(9Q#F  [4(Q>vI6"0_2$nD4vL:F+ $&Y1$M) K&^/$\0$.* :F"+(,G"Q1#O8773?"0 '( C%A A!?-%>/'>.'>.'=.'=.'>.(>.(>/(?/'?/'@/(A1)C2*D4+F6.H90L<4O@7UE<]NEgWPq`Z{jdpiofTA: ! $""%&"&     !")$'+(2la_Ӽٹֶ׹ٺ߿ɪܾŨɬ۾˰ȭ˱ǯwu^yob|uxxvwznc]UA@<*+*      ' 1( <1'IVI;WL@]QDQG;_SFl_P_TGYNAbVIgZK^RFVL@PF;C=6"$$'''$$%$%%'(($&%$" 2/-631864975:75<97;85;75=:8?<:@=;>;8;85D@FCAFCAFB@FCAFCADA?B?=B>;A>;@=;?<:>;8<96:74=;9B?=@<9>;8?<9=:6;85852974;86:86:75:75;87:75852742741742641853:75974:75<97>;9>;:<:8964632531/-+-+).,*0.,1/-1/-30/20.0-,'%$%#!%"!&$"%#"&$#'$#&$#%#"+)(.,+.,+'%$$" $"!$"!$" %#"&$"#!#!%#!&$")&%.+*1/-30.0.,.+)-+(-+(-+(*(%*(%.,)0-*52/63/52/74131.0-+.+).,*)'&)'%+('-*)/-,.,+.,+0.-/-,.,+(&%&$#%#"%$"%$"$#!%#!%#"E("pt`qRdF`?Y7X5Z5Z4Z2Y2_5`6]4[5\3Z0T+S*Q'N$}M$zK%|M$N&R(W,X+U+S-T0Z4Z5X0Z1T0{I(nE&b>$V:$T9$W;%Z;$X:#Y:#Y8!]9 b;"h="n9z>"@%E(F*J,S2W6X8T8T8P7I2G2G3B/H1F2D2A2B4JC?:ID@MHEOKHPMINIEKGBHD?E@;HC?FB?FB?MIFPMIIEAHC?IEAMJFNKHKHDIE@KFBMHDPKGQMHVRNYVQUPLMHDPLHSOKURNWTPXTQXTRVROQMJHEB010+,+*+++,,+++'''&''$%%###%%%&&&)*)*++*++())'((&'&&'&&''()),---/.011011/00/00-..-..-.....-..-...//./..//.//-..,-,+,+*++)*****+,,+,++,,*+++,,,---..-..-...//-..-..-..,---..-..,.--..-..,.-,--,--+--,--,--*++)***++*,,)**)**())())())())())())())())&''&'&'''&&&$%%&&&&&&%%%%%%%&%%%%$$$###%&&&&&### !!##"$#"!  !! %%%!"!""!"!!!!!,--011=94cXL`UI]SG[QE\QEbVJeYL`TH2.*()),+*-,+'&%$$#(('+*)310521-*)'&%('%)('(('--,642.*&" )&#/+(3.+50,0+(+'%/-)730..-qۻ˭ַظаȪǩ̯ػ׻۾ټ׺׹ܼ޿۽۽ڼֺܾѳҳܼۼ׺ͰշԾd%N%4>!?#=|ȭ* ')*0 `4%a5&T-"H&A":!K3)? 8D'B';$533E$ /c:*[3&C]5$fB4J+!0 V0!U/!3R0&I/'295'/8Y- Q)G#L)W2"O+*  -% - 3/ <B H$D$>3;B$02 ;) '$ L&I"G$>2>Q#H  V0%S?pE31Y/"hB2wM:I-"$* [2%H'R) _/$N(&, ?B'('D!I+|L7577C%- &0E$AA%@0(?0(?/(>/(?/(?/(?0)@0*@1*@1*@0)@0(A1)C2)D3+F6-I90L<3O?6TD;[LDdUMn_YyidpkrjnXP!! ##"%$ #     "" $&#(##/VORؿѰּϰնۻڻָڻعɩ¤ͯǪ۾ڽϴª~ybxna}v}xvwzne`WDB?+,,   %-%;1&G:-PB3^M\QDQG<[OCi\N`TGYNAcXJgZK^SFUK?QG;8B?DA=D@=EB>EA=EB>GD@GDAGC@IFBIEBJFCKGEGC@EA?C@=B?=B?=DA?FB@GCAGDAFC@C@=C@>@=;?<9@=;A=:@=:B>;@=:>;8;86<97<:8;97;86:75<97<97863741742853964;86;86:85;86<97;97<97:7674296496430/1.,1.,0-+1.,1.,1/-20.1.-*'&-+),*(,*(+)'.+*.,+.+*,*(.+*/-+0.,0.-'%$$" &$#)'%,*)-+)-+)+(&*'%-*(0.,30.42031/31/30.52/74286363063063064152/74073052/6302/,-*',*(.,**(',)(-+)/,+/,+-+)-+).,*/-,1/.*)()('(&%'%#&$"%#!%#"&$#&$#G(!oubxWnKa@[9W5W3V2S0S/R0T2W4X4X5Z5[6Y3Z/V+T(U(S(Y+]-].a3k9q?wF~N׃UY[؅XzPgAO.d=!U8!S9$T:%W<%X;#Y:"Y8!\9 _8g<"q9|-?-@-~=,=.}=1}B7xC8S3,%%$&%$%#"#! " $" #! !$! $#!$" $"!$#!$"!$" '%#'$"'%"&$"%" &$!)&$(%#(&#+)&/,*,)',)'-*),*(,)(-+).,*0.-1/-20.3101/-/-,.,*/,+0-+2/-1.,0.,2/.1.,/-+0-+1.,0-+1.,1.,1.,2/,52085396351/73073030,.+()(%('$'&"('#+)%)(#&%'%(& *(!+(!0,%72*$ypd~t~nwhsbTp}ztutc[Q           =95NJFLHEHEAKGCMIEMIEMIDMIENJFOKHPLHSPLSOKQMIJFAHC>JE@IDAE@!?#8ɬմ2 -%)+-d6&g:*[3&H&C#8K4*?!;?#F) :#8 6"5D#4d:*[3&B[3#fC4J+!0 'X1"S. 5S1'H.&394)05Y- S*G#K(V2!Q-+  ) $ - /. =B G$B"=16= ) + ;0 ' ,F"DB<5<P"J  U0%T@b<+ /O)b>/wM;L/#$5^4&B#V+!_/$A '/D!;'( %A$J*xJ5430F'- %:F!AA) A1)?0(>.(>.'?.&@/'A1*B2,B3,B3,B2+A1*B1*B1*D3+F5-I90L<4O?7SC;YJBbSLl]Xvgcolsm|e] ! ""!#%#&    !!$%#('&+ #1lb`׶Ĥʪί׷ۼڻعٹ߾طϰʬҴͱé׺zxbuk^zx~wvxzofaXDB?,--  % .&:/%D7+N@2\L<[M>VK>\QDRH;B?FB?C@=B?<@=:>;8?<9B?D@>C@=A>;;86;86;86;86<97;97<98<97853630630530742963963:74:75974963853752975:75:755214207426316316306308538532/-30/1.-0.-/-+0-,0-,0-,/-+30/410521521.,*+(&,*(.+)-*(.,*0-+0-+/-+30.63197596464164263152/74174141.52/75274152/52.40-2/,41.2/,/,*.,)-+)*'&+('-+).,*-+)-*(.,*/,+0.-1.-+*)+))*(')'&)'%'%$&$#&$#&#" %izj[uPiD\:V5R1O.O/M.N/O/S2W5\:dApHwLzMzIvFsBsCtEvE}LňWԔaߜgorvx}~uΊelLoI0P7 O6!S8#U:#Z;#[;"[9!`: j?$t< >$L,L/M/P3X9\=\?[@Y@W>S:M7H3E1@/;,;+}8*{8*x:*s<.u;0zC6\91*&%""!'%$&$#&$"(&%)'%*(&*(&*(&+(',*),*(+)')'%*(&*(&)'$(%#-+(1.+1.+0-*1/+52/30-.+)-*).,*.,*0-,1/-30/2/.20.41030/31020/1.-0.,1.-0-+/,*2/-30..+**(%,)'.+)2/-731841<73B<6JCID@LHDOJGOKGPLHQMIRMITPLTPMRNKTQNTPMSPLVROWTPTPKQLGLHCJEAID@ID?KGBOLHQMIQLHPLGPKGNIERNJZVR\XTZVRURONLHNJGMIEFA>C?;HDATPMXUS[XU\YVZWTQNK221-..-..,--,--+,,'((%&&$$$%&&'(((**+,,+,+)**(((&''%&&%&&'((+,,-../00/00/11/11011133233133122122233122011011/11011122122/11.00.00/10011011011022011.//-..,--*++)**)**)++)***++)++())'))'((()))**)**)**)**+++*++*+++,,+,,++++,,,--,-,,-,+,,+++******+,,,-,---./../.-../00122122000/00/0/000010000/0/111232121000-.-------.../////.---++++,+++++++..----,,+)**)))'''#$%:5/+'".)$82+F>5UK@bVJdXKXNB$#"&&&'''&%$$""! $$"+*)4438874110,+0,*/,+)(',+*642.*&#!+'$2/+50-2.+0,)/+(+(%2.+0/-n¥æȫӵٺٺ׸Եٺݼ޽عܾܼѳȪŧˬնܽݾͭãϯԴҳܾԳaW) 4>!?#7ͰlXKG4*(+# O,h;+`6(J'B"5G2(= >@#K,":#:!7"8A"="e;+[3&B[3#eB3G'/ B G#A <16:" # :5 " /E"DB;5;P"K 0 7R6&jA1zI7J*0B#^=.xM;N1$# 9\3&A"Z-#Z-#0) 3G"3 (('?(!N,qF2/5<"F'+'BCA B.%A0(>-&=,%=+$>-&@/(A2+C3-C4.D5.D5.C4-C3,C3+D3,F6.I90L<3O@7SC;XIA`QJi\Vseb|nkrnnf0&""!#"!$%#'   "%#''%**)/%5xۺصҰӲմ޾ۻܽٺӴӵغҶҷչ}r}r]sh\xzz~xtxynf`WA@<,--      & .&8.$C6*OA2]M=^O?VJ>]QDRHKD; !"#$$  ###'('&''!"! $"!%#"('%.,*20.420964963852@<9A=9C?;FB?IFCHEBGDAFC?IFBMIFOKHQMISOKSOLSPMQMJRMJQMJNJFJFBIEBHEBGC@JGDJGDJFDHDAGC@DA>EA?C?=?<:>:8?<9A>;@=;?<:=:7631520742:75<:8=;9=:8<:7;86:74853742752853852:74:74853<86=97=:8@=:@=;=:8853752:74<97;86;8685385386352196585374353163153164263152063185485452141/41/731;73>95<6262/41.731;75<97;8595363163163174174163074185274286363/1.+/,)30-2/,0-*0.+0-+-+(*(&-+*/,+/,*-*(0-,2/.410310,+*+)(+*(+)(*(')'&(&$,)(,*(+)'20/--,((tap_tQiF_>W8S5Q3P2R3Q2T5V6]LHDKGBMGCQLIRNKRNKURNUROWTQXURUQOTQNTQNUROVRPXUSWTQQMJMIEHD@GC?KGCIFBHEAHD@LIEOKGOKFSNJTPMVRNYVSYVSTQNLHEIE@HC?EA=;+-.-//-./-...//.00,..+,,*+++,,,--.///11011./0.//-..-......//011011011/00/00/11133244344233133233244233122011011122122122122011011011122122122233122/00.//-.-+,,+,,,--,--+,,,--++,'((%&&%&&&'''(('(('(('((())())))))*))**+,,,-----,-,,,,,,,,,,*++*+*+,,,---...//...+,,+,,.///00/00.//,--,---...//.//.//////0//0/...,-,---,-,)*)(((*****))*)++*,,+/.-.-,--,,,,,--+++()*D=6:4.HA9B;3,(# 4-'YNCXMB$#"$%$((()'''%$&$#$#"*)(2328875431.-.+*/,+)('*)(210.+(%#!*'$2.+51-2.+/+(0,)+(%2.+/.,{k]Ūͱ̰շݾݾڼ޾޽ۻܼܿܽۼɫҴڼ޾Ҳ|N@V!4=!?#6ڽշjYLXJ?# C&Z3$O, B#=B*!K5+9? >!N-$;$:#7#;$= B%f;+Z2%B[2#gC3K*/ 7f9(P,9T1'C*#.' !-/# N(W,H$J&M+L()  & $ + + 1>B L&B!;088  78! ) BDC946 N"O"EH'eD1c@.?3 ) ( 2_=.xM;N1%" D$Z2&F$]/$T* ( * 9F!+)'+<*$O-!lB/* 8L.B%&(B??!C1)@.'=+#;(!<*">-&?/)A2,C4.D5/D6/E6/E6/E5.D4-E4-G7/I:2L<4O@7SD;XIA^PIg[Vpd`yljqoqj;/+ #!$#"%&#'   #!%&$)&%*,+2!4ȯ޻޻ضִճյ߿Եбʬ̯׹ӷ¨ӷ̲ǮzycrgZxz{~z~qvxmgaXA?<-.- & .&6,"B5)PA3_N?_O@TI<]QDRHgZL`TGWL?^SFfYJbUHXMAYNBQH? !"$$$!!!!!!###''''('"#"! '&$/-+1/-0-,2/-964=:7?;9A=:C@=FB?HECJGEHEBKHEJGDMJFQNJPMIROKTPMROLQNKRNKSOLSOMRMJLHFIFCIEBIEBKGEIFCGDAHDAJFDFCAEB@B>;@=:>;9<96741:64964742964975853742964:75?<:?<:>;8=:7=:7>;9?<9=:8<86<96>;8A>;A>;8?<:?;9>;8=:7:86:86853742531631964;86:64:75<:8?<;?=<<97742631@;7TKE\RIQH@G?:F@:ME@WOHVNHOHBC=9964752:75:85863853974964:85;9696341.1.+30-52/1.+2/-20-0-++)'-*)/,+/,*-*(2/-7429759751/-0-,20.31031042142041031/30.632,-cVxfz[mOdG]AZ>Z>Y=Z=Z=\?bFdJpWg˔vޤᦃן}˗uđqkikmnqqmkkmp˗v֡ݦઊ䬋誈楄ࠀ՗yˏredMeD1S7"fD'uN-uI(M*X2[7a?bCkKnPoUpVsXtYrUpRkNcH\DT@I8C2>.;-7+:,}:-z<.v:.t=0w@4c;32-+/.,1.,42/5202/-/-+0.,31/2/-2/-20./-*0-+0.+.,)1.+31.30-30-2/+1.+30-2/,/,)-*(,)'-*)0.,2/.2/-0-+30.30/53164275464353142030/0-+2/-30.631520631741=96NHCqdYpxuuz{l}c{a|cjuszeL@2j_R~ti~preYpcVz}~~~uuiwkui          730KGBMIDKFBNIEVQMWSPSPMPMJROLUROUSPUROSPNOLIMJFNKHOLIKHFLIGKGDIEBJFBKGDLHEJGBLHDLHCIFBKGDOKGNJFJFBGC?NKGQNJQNIPLHMHDLGBPJEPLGUROWTQUROURNSNJOKG?<9:85975975653764:86<;8=;9;97420$%%$$$%&&$%%"##!""!""$$$$%%%&&$%%$%%$%%#$$###$%%%%%&''%&&&'''''&''%&&%&'&''&''%&&&''()))**)**))))*)*+*())((((((()('''(((&''%&&%&&'((())(()())&''&&&&'&%&&%&%%&&%&%&'&&&&&&&&&&%&&&&&%%%'(()**)**()))*)*++,--+,,*++*++*++*+++,,,--+,,+,,,--.///00.//,--,,,,-----./../.----.-.///0/./..//...+++++*++**)(('&))()))++*,++------...,--*++F>7E>6]SHZODNE; *%E=4$#####***.,+-*(,)''%$'&%,,+00011030/.+**)'''&(('10/3/,*(&+)&0-)2/,3.+/+(+(%).*2/-l_Sƫͱαҵ׹ۼ޿޿޾޿ܽ޾߿ٹعܽݿٸ׸߽ۼ޾ܽ޾àT4=!= 6ܹbM>'7* 48H1'L7,:? = N-#;#:#8#;%< B%f;+Z2%BW/ gC3N,!/ 5f9(M+<T2'A)"0) //! J&Y. J%F"8?% ,$ ).8?B J#@91:4 6;% K'Y/H#CC845 CJ$GG#cC0aA.8 :<+  _=.yN;O1%! G%S.#L&_/$J$&+ >B')'0"=+%L, yK6^8(:K.A$&+B>@#C1(?,$<(!:%:' =+$?/'A1*B4-C5/D60E70E6/E5.E5.F5.G70I:2L=4N?7RC;WIA]PIeYTnb^vjh~olnh7,(!!#!$&$'##    !#" %%#((&,#$.OJM̲ܹܺ޽бʪԵٺټγҷ̱ҸƯ}gshZyy}|ov{tifaYBA=./.    $-%7-#D7+QB4^N>^N?TH<\PDSI=RH=fZLaUGVK?ZOBdWIcWI[PCZOBTKA###$%%!""!""$$$&'&()(#$#   *(&/,+1.-0.,1/-631A>;GDBIECNJGMIFJGDJGDIFCIFCJGCKHDNKGOLHSOLSOLPMJOKIRNJTPMUQNTPMMIGIECGC@JFCJGDFB?D@=FB?IECHECDA?@=;?<:>;9?<:B?=B?=@=:>;8;85?;9?;9=:7;8596485262/953<96?;9@=;A>;=96<85>:8?<9>;8;85<96A>;B?:7>;8B>=B?=?<9>;8<97;86964853963:75=;9><;?<;=:8753741JB:8TLFuhвɭͰβո̯ӸȱƱɳ˵ưwrou{r[N>j^P}qfuhmaV\RH{yzxxz~s~ti}rg}qf          =:8IEAKGCLHDIEAGC?KGCPMIRNJSOLROMROLROLPLINJGMHEQLISNKRNKJGCJFCOJFOJFKGDMJGPMJPMJPMJPMINIFMIEOKGRNJMIEFAMIEQNJURNROKSOKXSOUQMVSPVSPUROQMJOKGPLHOKGNIDHC>D@IFCLHEMIEOKGC?<$#"###%%%"#" !""!"" !!#$#"""""!%%$%%$&&&""" !!!!!!!!$$$$%%"##!""!""$%%%&&&''$%%$%%&''!!! !! !!$$$$%%%&&%&&%&%&'&%%%%&&%%%%&&''''(''((((('(('((((())())())(+,+,,,+,+,,,--,,,,+,,)**,,+NEbWK^SHWNC !!!""!'''+**+)(+)'*(&&%$(('++*,,,0/.2/.,*)'&&(('11/30,)'%)'$0.*52/40-1-*+(%(%"0-)30-dXNéŪçǫϱڻܽܽۼܼػڼܽڻܼ׹׹вָͯ߿Ӷ׺޾޾߾ʭǪ¤ϯӲظ˩V7>!:ud۹ݷ˟qS{WDM/"+ 68I2(L6+?!@ @!N,"<#;$8#;%< F(f<+X2%DU-gB3O-"/ 5f9(F&;T2'@(!1* /.? Z.!N'G#D"B& 1%)/8@C!J#?62;0$ 7;+ [0j9$J%CC7658T- g8(@!_@.dC0>"9<* R4'U5(2 # Q+J(S) ^/$<#0D!;'( '4% G-%U.!P9P9G'H,C%(- C>A( C0(?,$<( 9#9#;(!=,%@0)A3,B5.C6/D6/D5/D4.E5.F6/G70I92K<4N>7QB:UG@\OIcWRk`[sgd|miub\$"$&%'*(*   !!# #$"&&$))(-$3aYZĬ߽޼ҴɪڻݿչʮٽͲжӸĮkui[{y~pxxqggbYEC?00/  $-%9/%F:.PA3\K<]M>SG;[PCUK?QGcVHeXJ^REXMAUKB###%&&!""!""$%%&&&()(#$# -+)410632632642:75DA>GDBHEBMIFJGCHDAGD@GD@GD@IEAHD@KGCPMIROKQNKQMJQMJRNKVRPXTRVRPNKHKGDIEBKGDKHEEA>D@=JFCKGEIFCDA>C?=B?=B>;DA>EB?D@>A=;?<9>;8>;8@=:?<9>;8=:7<96B?B>;?;8B>;C@=@=:=:7>:7A>;@<9@<:@=:B?B>;C?@<:@<9>;8=:8852742964:75;86=:9?=;A><<:8<97RJC}nc~{~zoh\RC=985364120-2/,631853742741:85;95:74<96;74:74:74853963;7595363141041/:64:75;86<97=:8<96742964:76;86;86;87:86><:;;:J;8o⛁֔}ʌun~hzcw_v[x[|^dŠjƑqʘ{ʞŞœzztt}qwlod~i^u`Vq\RnYOmWLoWLv\OdUo^~jvʛ̝ɜřzqȍoٗv宅ؓqy]nTZٌckpsuvxxywvrofx\oUhN]GS?I8C4>0<,8+|9+z:,z:,v:-t;.xB5]<501/20.1.,30.41/63253152152163164263131/31.31.41/53074152/0-+0-+2/,0.+0-+/-*/,*0-+1.,1.-0-+520742975975742742:75<97=;9A>A><@<:B>:7SLFylêαϱ¢ȤɦƤģι}u{xfXFdUFzwj^sfY[PF[QG}x~r|}py            =95GC?GB>JFAMIDID@EA:5>:6C@M+!?$:$8#:$;N-!f<,T0$FU-hC3P1%/. d8'B$>S2(>' 2) 01(2Y. P(G#A >&  1%(.9@C!G">53;,*592 O'Y-51 8566:c7'zE2;E+O0#;!8<* 3" )Q+ @ Y-#[.#- :H#3 (()8)$E0&R3#}N8Q:N, I,C%&. A>B,$B/'?+#<( :$7!8#;(!>-&@0)A2+B4-B5.C4.C4-D4-E5.F6/H81J;3M>6PA9TF?YLFaTNi\Xqd`zicXIC %#$&$&+)+)'* !"$!%'$(+(,/-413@sgcػ޾ڻܽӵʫѳͱͱɭ§ҵҷ϶krgZ~{~szxqfic[GEA010   %/' ;0&F9-PA3ZJ;`O@RG:[PCVK?OE:cVIcWIYMAUJ>bVHfYK^REVK?WNC$$#%%%"""!""$$$$$$'''"## ""&%"/-*420420742975<98EB@HECIECLHEIEBIEBHDAGC@GC@GC?EA=IE@NJFPMIPLIROLROKRNKTPMTPMSOLMJGNKHMIGNJGPLIOKHNJFPLIMIGKGEGCAGC@EB?C@=B?=@=:A=:EB?C@=DA>EA?EB?D@=D@>EA?GCAGCAGCAFB?FB@D@=B?GDAGDAB><>;8B>;EB?FCAFCAFB@A>;>:7;75;85953:75;86;85964;86=:8>;9:76<97QJD}ocȮܿ׺ʮʯǬ~wh[HA<<85<9663052/<96>:7>;9?<9>;8>;7=96>;8>;8;85;86<96<96?<9B><@=:>:8;86?<:>;9=:8?;9?<:?<:;86;86=:8=97>;9@=;>;9B?=.<DA?IDAk_Vβ׸˪ΩϫϬɨտƲo_L_O?xwh[xhZl^QG@8~m~x|{zx{zwx|        +(%@:6E@;GB=JFAOKFSOKOKFLGBOJFRNKWSPYURWTPROKNJEKGCNKHMJGMJGROLTQNXTQYURYVRVROSOLKHDJGDQOLUROTQNQMJHEAIEBOLIPMJOKHMIEJFBJGCUROXTQSOKUQMXUQWSOSOJKGBJE@MIDLIELIFIFB>:6:61=95?;7EA>GD@HD@D@<:75###$$$)**%&&%&&&''()))*+%&&%%%&&&)***++--,+++((($%$"""''''('&''*++())%&&$$$!""#$$%&&&''())%&&$%$  0-*`VJYODTLAcXM_UIQH>!!!%%$''&'%$%$#&&%###&&&**)+++)))))((''%%$))(,*()'$'%#,*'30.52/63/1.+(%#-*'30-<83ԵӴݾ̰еչӵϱϱΰαԵշѳշڻӴ޾ܿոټֹڼڻۻ޽ݽݽݼϮͮӴӴعٸ߿ڼۺ[9C*#ϲٳʝ쭅娃ߤ؟ӝ~mW4- 7:M6+L6+= =? G'>";$8#:$:R/"f<,N-"FV-iC3V5(3(a6&B$?Q1':$2($/1)(W- T*H#F"@$ 2' % .:AD!E!=25;% 003 6 22, 4G+88=m=,|F3E%4H(="8<+ ( " 4 3K'C!].$U* ( ?G",)'-:+%8$: {L7R:P."I,D&43 ??B.&B.&@,$=*"<( :%:$:%;(!=,$>/(?0)@2+A2,A2,B2,C3-E5.F6/H81K;3N?7QD,/?ob^α۸ڹӳյյήǩڽ§ؼؽеȯʲí|yblbU~~xu|yrhlf]JHC221   &1)"<1(F:.QB5[J;`O?QF:[PCVK?ND9aTGcWI\PCYM@bUGfYK^REUJ>YOD$$##$$"##"###$#"""%&&!!!##('$0.,420520753964;86C@=FCAHEBNJGNJFLHEIEBIEBHEAFB?FB>KGCLHDMJFOLHSOLTPLTPLWSPUQNTOLPLISOLRNKOKGMIFPLIRNKQMJQMJRNKKHEIFCKGDKHEKGDGC@HEBKHDHDAGC@GC@GC@GC@HDAGCAGDAJFDJFCGDALHEJGDGC@FC@EA>A=:C?D@>C@>DA?C?=?;9;75;86:75;86;86<97:75853:64:74631963HB>obX{ɯĪгѵɭ۽tfPIC>;8>;8;85:74?<9B?;C@=B?;EA>D@=A>;B?;8;86=:7A>YEAt{upݓlӐj̎hċgfedjot{{xw}rxpqj~letb[iZSbSM]NGWHBTD=Q@8R@8VB9^I>iRFw]Rl_}ownpʒx؝夅줂ܒnxW^BzL7tG5K<[LkZwe}iklljez^nXgP\FU?R;J6I3B.=+};*z8(z7(y7(x5(u6(v5(t9+t<-t:0rA6K8400/20.0-+1.,30.31.30.31.41/1.,/,*41.863853742963852863963741963853852963:74742631853964;75<86<97<96=97=:8=97?;9A>;A>;DA>GCADA>A>;C?=JFDLHE\TNuªյʪɥѬүɨԾɵîíp[ZI8urfYyk^qeZF?8uexzvkypfxmwlw{}        :74LHCQLGOJENIDNJFQMJROLPLIQMISOLSPMTROTRNXUQYVRTQMOLHPMIPLHOKGTPLURNSOLQOKWTPWSOQMILHDGC?C@=EB>HEAMIFKHDIEANJGSPMTQNTQMRNINJFPMJUROTPMRNJROKTPLTPKRMFPJCMGAEA;;84<95C?;A=9GC>JFBGD@C?<753 !!!!! &''%%%$%%%%%'((())$%%#$$$$$()('(')))()($%% !!%%%%&%$$$)**'(($$$!!! !!#$$&&&''''(($%%#$$  !!   !!  """ 2/+`VJSJ@YOEg\ObWJQH> ###%%%'''$#""! ()('''''',,,/0/++***),+*'&%'&%+)'-*'(&$+)'/-*1.+3/,-*('%"-+(41.<84ǫݼֶۻƪç̯ϱշ׹۽ݾڼټշԶ׸޼ԴԴ׷ܻݽֵۺٹۻٷMV:1oݹըﱈ諅⧃ܤ֟Л}̙{|dd7+>!8>?"C0(B/'@.&?-%>,$?,$?-%?-&?,%>,$>,%?-%@.&@/(?.(?.(A0*B2+D4-F6/H91K<4N@8SE=ZKDbRKbQJ<0+" +)+)')+)+   !!## $$!&.+2;9B*-PE9[PCWL@LB7\QDbVH_RE\OBbUGeXJ^REUI>[PE*(&"##"##"""### !!#$$ &%",*(41/743853:75;96A>;DA>IFCPMJQNKROLRNKOLHNKFJFBMIEPLHMJFMIEMIFOKHPLHSNJZVS[WTUQMSOLUQNTPMRNKQLISOLWSPXTQVROUQNRNKQMIOKHOKHOKHMIFLHEMIFIEBFB?JEBJFCLHEMIGKHELHEPLJPLILHEKGEHDAFB?HDBJFCIEBJFCMIFQNLRNLPLILHEIEBHDAIEBHDAIEBIECC?=>;8@=:B?=C@>B?=@=;@=;?;9>:8<98<97@<;@<;>;9=:8;86<97<97<96>;8D?<`VMykȭūҷӶαϳ}mTLE?;8@=:B?=C@=C@=DA>C@=C@;C@=FC@D@=A=:D@=B>:7@<:C@=EB@DA?DA>HDAGCAGDAEA??<:=:8A>;2==cS|qmޖmהlȎkjf~f{fxf|m|o|o}r~r~sxorjng{iataZjYS_PJVICPC=O?9O?8O?8VD=[H@aKBoXN|e[vk|zqqǓ{ڠ몊暈؏lnPYTDZI_N^OaMdLgKkKaGV=N6H1B,;'9%{6#s1!k0 i/l/ k/!m1#n3%o4&p5(n8(p7*v<0qB7A5210/30.2/-631741852852963853630963;85=:7<96<96<96:74:85:75964=:7>;8<96=:7;85964=:8>;9?;9?<:?<:=:8>:8>:8=:7@=:B>:B>;EA>GDAFC@EB?753$%%"## ###$$$ !!$%%$%%&'(())$&&"##$$$()('''()(())%&&!!! &''&'&###&'&'''$%% ! $%%'('(((())%%%#$$ #$$  "#" !!!!!!!!!"##  ! ! !! """ !!! !!! ! ###$$# ! 950aVJPH>[RFh]PeZMME< ""!%%$&'&""" %%%'((()(,,,///++++*)/-,-+)('&)'%-*'*'%*(&+)',*'0-*+(&(&$,*'52/)+*ƬƪȬѴαгշ׸ڽٻݾܾ޿عԶҴݿ޿߾ٺۼݿ׹޾ҦŖꭇ䩅ߥڢԟϛ|ʗzǕynX]/$A"7>%P9.N7,9, ? >7;#8$9$=  R/"f<,J+!>Q*hB2_;-8"[3#>"F"M/%:$2($ ) % *# M,!Z. M'H#L&@<7!, $ +;B E!G"4088,06*7@8 +46 X:(c@,X7,8 ;!rB0|G3P,-L+B%9<5! 0W7*N)A S) ^/$; 8D!:() (5'!;+$6#+ qE1T<]7(B&H(DD+"B/'B.&B2*B1)A0)A0(@0)A1)A1)A1)A1*B2*C3+F5-K8/Q<3S>5K80C1)>+$?-&B0)D3+G6.J91O=5TB:O>7/$  (&'*()+)+(&)     #&$)207<9B()8z޾ݼطں޾ܼҲβǬǫ̰ūëqrhY}~wz|wqgmh_MKF342 ("4+#<2(H;/UF8]L=aPAOD8[PCWL@J@5YMAbVH_RE[OA`TEdWI`TFUI=ZOC.,*"##"##!""### #$$$# *)'31/753975@=;B?=C@>DA>GDAJGDJGDLIFLIFKHEPMINJFPMITPMPMIPLIROKSOLSNKUPL\XU\XUTPLVQNZVSXTQVQNTPLTOLUQNWSPWROWROTPMSNKRNKTPLSOKQNJQMJRNKOKHMIELGDKGDOKHQMJPLHQLISOLPLIJFBGC@FB?D@=EA>IEBKGDLIFRNKSPMROLOKHMIFJFCHDAIEBHDAHDAGCAA>;8@=;C@>C@>B?=B>;C?=?<:?;:EB@FCBC@?EB@DA?C@>>;9?<9>:8=96KE@h]T{m׹ˮѳԸsYQJC@<@=:@=;B?<@=:B>;EA>EB>FB?EB>DA>D@>FC@FC@EB?D@=D?EA?FB@IECJFDIFCGDBB?<@<:B?<9>=j{pjn֕nːllkygsdpcocshshwmuksivlpgmd{e\w_UnXOcOHWHBSE?PB]KDhUMwd[sj|x~nmmƓ{ޢ駈}ІchIS7qC,c:&e=(m?+{C/F3H5N;L=M<9>;8>;8@=:?;8>;8>;8>;8?<9?<9<96;74;85963:74>:7A>;C@>B>EA?C?=EA>JFCHDBFB?IEBJGDKGEIFCLHE\UPuڿӲ¢ӼɤͩʨģθűƱƯl\I6t{qe|ovkPJCzh{|}}vuulb|p       C@=UQNWSPVROOLIQNLSPMTQNURNVROTQMUQMSPLNJEMHCMHDLHDPKGUQNXURXURYVS\YV]YV]YU[VRXUQYVSZWTTPMKGCKFBKGBMHCRNIYUQUQMTQMVROSOLROLROKSOKSPLRNJQMIROKSPLSOKWSOXTOXTNUQKOLHGD@A=9=:6@=9FC?HEBIFCGDAD@=A>;31/%&&"##!!!$$$#%%&''%&&&((())$%%"##$$#()('(('''()(%&&"""""")**())$$$''&+++)**$$$"##&''*++*++,--'''#$#!""$%%!"" !!  !!!!!   ""!###"""!""### !""(((!!!###!!!!"" !!#$$"##!!! ! "! #"!#$# "#"%%%"#" @:4`UIPG>]THg\Pf[NB<4 !! !!! #$#&&&$$$!! $$#&&&((()*)+,++,+++*/.-1/.+)'+(&-*'*(%*(&,*(.,)52//,**(%*)&30-'('Ǭɭгھ۽ݾҴ̮ίαٺܽٹۼ׺ټϲѲ޾ݽۻ߾ѳܼ޿ٹˮɬ޿̝쮇橅ᦃܣؠӞ~Κ{ɗxēwufRN3(?'6@'P:.N6+4&=>4;!8$9$?!T1#f<,H+".Q-#g@0b>0;U/ C$J%I,$7"3($ ( ""& H(Y. R)G#L'A<6/# ( 9B F"F"*1:5, 36*3B#;+,26#Q0!]9/<#;"sC1|F3Q- B%C&9<5!" 5N1%O)?Y-#[-#-% =F"2 )(+9*#;,%;+$-Y;,~S=L, ?%D/%D,#C1)C4,B4+B3+B3+A3+A3+A3,B3+B2+B3+C4-E7/H:1M<3R@6XC9^I?dQFgVLcSITC;H94H82>*">,$<*#,  -+,*(*-+-""        "$"')(.64<64=C=AдܼܽۼظӴвϱǪѷĬtshY|}xz{{tismdPMH342   '!2)!;1'H;/UF8_N?cQAOD8ZNBWL?I?5UJ>bVI^RD[OA^RDaUGaUGVJ>[NC0-+######!"##$$ "$$ !%%"+*(420743:86B?>FCALHFLIGKGEKHELIFMIFMJGMIFPMINKGOLHRNJNKGMIEOLHTPLTOLVQN^YV]YVVROVROXSPVROUQNUPMTPMUPMWROVQNWROVROTPLRNJTOLTPLSOLSOLSPLMJFLHEKGDMIEQMJRNKTOLSOKRNLPMJLHEJFCJFBHD@FB>FB?HDAGC@KGDMIFLHEIEBJFCJGDKGDJFCIEBHDBHDBC?=A=;>;8C?=EB@GCAGDAGDAGDAHDBC?=B?DA?EB@HDCHDCHEC@<:B>;B?<@=:D@=PIEi^VrenݾдֻtYRKEA>A>;A=:C@=C@>GDAJFDGC@FB?FC?GC@EB>DA=GC@FC@FC@C@=@<9D@:B>;C?EB?EB?FC@EA>FC@IFCHECEB@C@>C@><>*zA-B.D0B0C0B0@-A,>*;&9#|5!x5 n1h0`-Y*Z*V)Y%]'Z%])c-e-h0!a6'i3$q9)w>0\;3431741:74A=;@=:?<9>:8=:7?<9>;8=:8>;8;96<96>;7>;7=:7>;8C@=DA>C@=A=:?;8=:7:63852952=97@<:A=;C?=GC@GCAIECHDBFB?GC@JFDGDAEA>LHEMIGLHFLHFMIFPLHpe\չִĤšƢƢţ¡˵ƲîDZåȩ͵o_J6zkyl~pvjc[SrbTqnzky|yz{t~{p~r      *(&KGDROLWTQUROIEBIFCPLITPMURNVSOVSPUQNTPMQMITPLUPMVRNYVRXURURPURPYVSZXUWTQUROXURYVSYURWTPSPLMIEPKGRNIUQLWRNYURSOLRNKTQNRNKNKGOLITQNURPSPMURNVROXURWSPXUQYVRXTQROLROLNKHGD@A>;FC?GD@GC@KHDOLHLIDHD@420)))''(""#"""$$$%&&(**'((()))+*&(($%%$%$))))**)))*+*((($$$$$$)**)**&&&(((+,,)**&''&''&'')***++,..'((!!!$%%'))%&&!""!"" #$$"##$$$""" !!!#$$ !!!!!"###$# """***$$####"""$$$$%%"## !!!#$$#$$!!!!!!  ! !  !!!###$$$&%%$$$#$#&&&!""@:3`UIOF=`VJf[Of[N@92!"!"""""!#$#$%$#""'%$'%$'&%&&%)))+++++*0/.421/,+,)'.+(*(%*(%.,)1.+74130--*(*(%1/,""ȭǬβۿѳԶ޿ܾݽԵΰԷڻعܽ׼ݾۺ߾г¤ݼۺݾۼٹѲ٬鬇㨅ޤڡ֟Ҝ~͙|ȖyÒvtql~flM>1 ?%P9.L6++#9? ;; 9$8$< X3%f<+F*!.P-"e?/d@1>  U/ `6&P)G,#6!2'$ ' #"- 4C'W- U+G#H$@>60# & 7B G"A*2:3,45(% /;7/6'U5(vK;E*$3h=,}G3_5&4C%:<' " !  ?C ].$T* /@ F"*)(/ 9*$;,%>.'>/(E4+jJ8I* ?"B2*B5,B4,B4,B4,B4,A4+B4,A4-A5-B4-B4-C5.E80H;3L>5QA8VD;ZG=^K@dQFl[PtcXh\T_ZVMHF  &$%.,--+-*(+       !" %(&,-,264;%&2l_Yַ߿նֵٹۻӵԶӶ̯ƪؾҺ¬swkZz{~w{x~vkuoePMH443   %1( ;0'H;0TE8`O@cQAOD8WL?VK?I?5RH\OB1.+#$# ! !!!!## !%% )(%.,+643:86>;:ECAGDBLIFLIFJFCLHFMJGMIFKGDLHERNKPMIPLIQMJNJGOKHPLHQMJQMIQLIYUQ[WTVRNTOLTPLSOKRMJOKGOJGRMIUQNVROVQNVROVROTOLPLIQMJQMJPLIRNKNJFMIFNJFOKHRNKRNKSOLSOLQMKOKHLHEJFCGB?HD@JFCIEBJFCKGDIEBJGCKGCGC@GC@KGDOKHQLIRNKMIGKGDJFDJFDFCAFB@GDBHDBGDAGCAGDAGDAC?MHC`WP|na}еǬҹy^WPGC?@<9A=:B?=iX~tpkۖmΑnljxipf|i_vdZxf]ucZtbZvd]tc]tb\dZgYeT_K{SBlG8nK=nOAiNAgMBeMC^JB\MF`QKiZSsd]vn|odTzWFwR@ZFjR{aȌoוvݕsˁ_pO]>zH.e=&]:$^;%a9$l=(|C,?+>+>*=*@*~;(w7'x5#~6"x3n2 k3e-]*X*W&V(W(X&X&Y%W'\'a,d.e1 h2!n5$s8't>/Q71764?<9C@=B?;8?<:C@>EB@B?=@=:A>;B>;@=:A=;DA>DA>B?;>;7@<8>:7952;74?;9C?;C?.gB3G&I)d9(Q)J.%>' 2($ ' #%7?A#P,Y- L&G#B?73% $ 5B G";*2:1,55* 9=48)H.#e?3R4-F("i<+}G3`6'$F'E':<(  15L%^/$I$ 5D!@() '3%:+$;-&=0(?1)>1)B3*@'? A.&A4,A4,A4,A4,A4,A4,A5-A5.A6.B6.C6.D70G:2J>5OB9TEVK?I?5RG;bVH\PC_RD`TFaTGbUHWK?^OC2/,$$$#$#!"!!##!""#$%& $$ '&$0.,420864B@>DB@IGEOLJNKIPMKROMQNLKHFJHEOLIMIFLIEJFBIFBLIEPLIOKHOKHOKHVRNZVSZVSWSPUPMQMIRMJQLHQMIUPMTPMTOLSOLTPLSOKQLINJGOKGOKGMIEOJGOKGOKHMIEMIEMIFPLIPLJOLINJGMJGKGDJFBGC?E@=FB?IEBPKIPLIOKGOJGQLIOJFLHDOKIPLISNKYURWSPQMKLHFLIGJFDLHFKHEHEBJFCMIFNJHNJGGDAHDAJGDKGELIFMIGLIFMIGKGDIEBIEBHEBEA>EA>FB?PKGf]U|nе͵|`XQKGDDA=B?;GDAFCAFC@JGDKHEMJFNJGKGDGDAJGDMJGKHELIFKHDHD@GC?HD@NJFOKGKGDJFCLHELHEKGDKGCIFBKHEJGDJGDHECJHESJFizplmԐlklwhncyf]vd[p^Uq_Wm[SkZTl\Vm\Wn[TaUcQ]GO9_<,"5%^D:rRDqSFiQGgSKj[Uoa[ykdyr{n`{WFwQ=zQ;7@=:B?D@=EB?C@=C@=DA>FC@DA>@=9@<8?;7@<8B>:GC@HDAFB?FB?EA>DA>GDAHDBEB?IECJGDIEBJFCJFCKGCNKHOKINJHOLIPLJSOLoe]˱ҲͫƣŸţáһҼθѹǨɫ׽}gS?~p`szmznpg]bVLvuvv~oyjpxyr}n{lsuu   31/RNJKFBD?:D@2)?2*@3*?-%?*"@1)@4,@4-@5-@4,@4,@4-A5.A6.A6/B7/C7/D80G<3K?7QD;WI@[KB]KA_LBaOEdTKfS|\v\{[FW>.$.,-/-.,*,   "#!&(%+(&+-+1&%0l_ẔڹݼֶбͮǩҶīͳħɫѼsshWwzuuynwqgQNI443!"! %2)!=2(I<0UE8bPAo[JTH;SI=UJ>H?5QF;^REYNA_RD`SEaUGcVHVJ>_PD840#$$%%$!""!##"##  !!""$# *)'.,*2/-:86@>=CA@IGEIGEKHGMKILIGJGFKIGPMJOKHOKHKGCPLIQMIPLHOKHPLIQLIUPMWSPYURXSQVQOSOLTPMVRNUPMWSOUQMNJFOJFRMJRNKQMIPLHOKGMIELGCNIEOKGOLHMIFMIEKGDMIFOKHPLHOKGQMJPLILGCJEAJFBJFBLIEQMIOKGQMIRNJUPLTOKPLHSNKTPMTPMWROVROUQOQMKOKINJHMJHOKIMIFOKIOLINKHNJHMIFPKISNLRNLRNLPLJKGDMIFMIGJFCIEAHEBD@=EA>FB?IDAOIDe[Rqu[SMKGDJFBFB>HEBKHFJGDIFCIEBLHEOKHKHEKGDMIFPMJNKGKHDIFCKGCNJFLHDQLISNJOKHMIEPMJRNKQMJOJGJFCKGDNJGLHFHEC@EDWM{wqmߖkȌkivfma|g\r_VlZRgVNeTMcSMbTNcUPfUOkVN[LaKZAxG/K.  *XD;qVIkTJo[Rn_Ywicvp}xtg^OxTA{T=T;^BkNvU{YwXqOiI^;~N0iB'^<%X8"V3^7"f:$m>(t>)D.>(w5$n3#p1!k1!a0b.c.a-Z,Z(W%S#R&T'S)S'T)V'Y&[&[&]*c-d*h+m4 u=%y;'o=2H@=FDBHECEA?FB??<9?<9EB@DB?GDAHEBIECIFCFC@DA>FC@FC@GDAHEBEA>B>:A=9GC?HD@JFCKGCLHEKGDHD@FB>GDAGDAFB@HEBKGEIECJFCOKGQMITPMUQOTQNTQNTQOTQN]WSsgӸۺέǣĠվͷͷϹռǧʫcR@vgW{zncodYmcYQG>~pbuh[sfZnbVk_Tj^Sl_RqcU{j[}l]zj[yhY}nyjug       JGDVRNSOJNJFMIERNKWSPUQNQMJQMJROLSOMPMJJFCFB>GB=KGBMIDMIDOLHQNKQNJROLWTQZWUZWT[XU[XV\YVZWTZVSVSOSOLUQNSPLTPMWSOYVRYUQYURZWTXUQTPLVRNWSOVRNTOJRMIQLHUQLWSOXURSPMNKHLHFIFCFC@C@>DA?EA>KIFPMJPMJQMJPMIKGD*))'('())$%% !!%&&)**((()**())%&&$$$%&%%%%$$$%&%)))*+*+++,,,()('(('(('((()*&'')***++"##$$$&&&(((())#$$'((*+*)**%&&'((%%&$$%%&%&'''('%%$! &$#*(')(()**+++))(%%%'('***(((&&&''&+,+--,&%%$%$)*)&''%&&%&&%&&!""#$$&'''''&'&%&&#$$%&&%&& !! %%%&'&""" #$$$%$#"!! ##"$$$  $%$'('&&&%%%()(%&% JB:]RGG@8`VJdYMcXK.*%" #! ##"$$$ ! !!!%%$$##*)()'&'&%++*,,+**),,+00/--,+(%+(%,)&,*'1/,30.7426427522/-0.*)*(ugʯʯӷڽټܾھ߾ֶڻܾ۽׺ڽαڻ׷ڻ޿Ѵܿطͭ׸޾ظ׷̮ӵ޾մ魉㨆ޤ٢Ԟϛ~˘{ǖyÓvrpli}dx`u^pRAY?2~\IuTD`D7=) + 7D#><7#7  ]6'e;+B' -N,"]8+iF7Z2!)5!\=,P*H-$E+$1(# ( #% G"@?L*V,W,I$E"?:53.:C ?.-19>!U2$83(&B!G"8 +*A$];4Z82b5'{F3B#E$I), '! ! # j7(h9*4;X,"Z-") ) >G#.)(+8,%:.&;/'=0(=1)>2*>2*>2+>3+>3,>4-?5-?5-?4-?4-?5-@5-@6.A7/A7/B7/D91G<3K@7QE=XKB]MC^MB]KA\JAfOEsW~]}\{ZvWfKqP;?-! (&'.,./-/'%)  !!#$"''%*(&+-*0#%3ڷ߿޾Ѳбظ׸ܿ˰ֻ¤ԾȴqqfVx}~tvznwqhROJ333"##   & 3*#@5+J=1XH:dRCp[JTG:RH4PF:]REWL?^QC^QC`SFdWITI=_PC=72!"#%%%!!!!###$$ !$"!*(&31/<:9?=;FCBFCBFDBHFDIFEJHFJHFNKIOLHTPMRNKUROTPMSPMUROVSPWSPXTQVROVQNTPMTOLTPMWSPXTQUPMTPLTPMOKHPKHPKHPLIPKHPLHOKGLHDMHDQMISOKSOLSOKQMIRMIQLIOKGMIELHDMIFQMJPKGRMIRMIQLIQMJSOKQMITOKXSO\VS[VSVRNUQNUQNSOLPLIQMIQNKQMJOKIMJHIECJGDKGDMIGLIFLHFMJHOLJROMROLSOMROLOKHKGDLHEKHEKHEJFCJFCHDAJGDKGDHDAHD@SKEwj_u{vj\UPOKIMJGIEBGC@MIFLHEJGCIEBKGDMJFKHDMIFQMJUPMSOLNJGNJFRNJUPLSNJUQMUQMTOKPKHOLHPMJQMJUQNUQMTPMUROROLPMJ5EDr`xpjj͋e}cram_h\vaVlYOdRJ^NGZKEYKFZMH\NIcPJfOFzWG_IU=j@)J.#(*?3,u[OqXNwcZ{kdvo{}vjdU{XF|VAV=W<_AkJuPtQpLjF`>Q1tE(a;$X9#Q6 O3V3_6!i=%n=&u?'q9#l1c. b,a.[.],\+Z*W'W(V%R%R$U&S&R%S(V(Y([(\)`*a+c)h)j/n6"t7!z;(gA7FCAFCAC@=GC@EB>B>;GDAFDAGDAFC@HEAIFCEB?EB?GDBGDAGDAFC@EB>D@=EA=IEAIEBKGDKGCMIFNJGLHDKGCKGCNJGLHFLIFNJHMJGPLJSOKTPLUQNUQNVSPVSPXURYUS[WUib\ĭݼŤκԿŢԽɳƱϹֽǨŦٽcTCl]M|vxk~rfg\QcXNRKDMGAJC=HA;IBC@<<95;96ECAFDAGDBIFCKGCMIEQNKJHF)**((((((#$$"## %&&'((&&&'''&'(#$$#$$$%%###$$$%%%((()))***-.-*++&'&&''&''())''(,,,,--%&%'((***)**&''"##&'')*))))%&&())%&&%%%&&&%&&&&%###" (&$*('((')*),,,**)&&&''&(((((((((&''***)))$$$'''-..+,,&'(%%%())#$$$%%'((&&&'(()*)$%%&&&)**&''!!!'''%&%###"##&&& ! !!!&%$ ##"$#"""! ! """%&&()(&&&$%$((($%% JB:[QFF?7`VJcXLbWJ-)%#!$"!!! ###"""""!&&%'('%%%,+*-+*(&%)('+++***))(--,//./,()&$*'%*(%/-+42/853863=:78530-+-,)ug\̲ҷڽͳպغڼڻյնݿۼִܺյض޽ګﰊ魉㩇ޥ٢ԟМ~˘|Ǖy’vsnkh|cw_t\oYjM>S9-xWFqQBkM>O5*% , D#?<7#9!! ]6'e;+?%-N,#X4*hD6]4#. -N/!M&H-$H-%2($ ( $C B?K(K&Y. M'F"A>964@!C <*.06C%W3%42'.A!?!1 ++@"[:3[:3Z0$|F2P,D"L*/ ("! 1w@/r?.0;Y,"Q( 5B C!) )(0#9.&:.&;/'<0(<0(<1)<2*<2*<2+<2+<3,=4,=4,>4,>5->5,?6-?6-?6.@6.A7/C91F;3K@7QF>YLD^NE^LCYG>V@9bLyZyZxYvWsVrUpShL~ZBZ@/3$0-./,./,/!      " ##!&'%*)',+).*(2i[Vҳ۹ۺѱίַڼαƨŧҼ̷ombQvzwrxznwqhSPK343###   '!5,$A5+H:/UF8cQBq]LWJ5QF;_SEVK>^QC[OB^QDeWITJ>[NB?94!"#%%%!!!!""#$# " %#")(&.-+<:9><:FDBGDBHECIFDHEDHECHECMJGPMJUQOQNJUQNVROUQNTPMUQNUQNVRPWSPTPMSNKRMJTOLWROWROSOLSOLUQMSOLRNKOJGOJGPLHQMIQLHOJFNIEQLHSOKWSNWSOWRNXSOXSOVQMSOJSNJQLISOKTPLTOLSNJTOLVRNUQNTPLXTP\XT^ZV]YUXTPSOKQMJRNKQMIQLINJGOKIPLJLHFGCAGC@GB@LHEKGDLHEMJHPMKOLJMIFPMJRNKOKHMIELHDHDAIEBLHELHEMIGOKHOKHJFCJFCLGCbYRvj`ymbj`YTOKOKILIFJGDGDALIFNJGOKHKHDLHDOKHQMIRNJWTPYUQUQNPLITPMXTQ[WSZUQZVRVRNVRNVROUQNTQMQMJRNKVROXTQVROSPMEKI~UN}|rkfьb_t^i[~eXv`Uo[QeRI\JBXHAUFASE@RE@VGB]KE^HAdJ?zTCoK9hB/\<,;*!-1#/%mWNzaWofyry~rm__O~WDV?W<\=bAjGjHmJkFd@V4~I-j?$Z8 Q5 L0M1S3V2a8"k>%o=&g8#c0Z*X)Y+W*W)V)S'S%S$Q#Q%Q$R$R'O&L$S&X)Y*[)\+c,a+b(f(i-p2o4#w:*_B;EDBHEBJGEIFCEB?FB?GEBFC@DA>EA>GC@EB?GDAJFDIFCHEBEB?FB?KGCOKFQMIQMIPLHPLHQMJRNKPLHRMJQMITQNRNKQMKPLINJHROLVROVSOUQNQMJRNKROLWTQ[XV\YW^ZW~tl˪տĠšվηưɴҺŧƨ¥©n^MaRBzl{vg}nukajbYiaXof]xndulbnd[pf[sh]xla}qfwwx    QMIWSOUQMSOKRMIQMIUROWTQXTQWSOVRNVSPTPMROKPLHOJFNJEPLHSOKWTP[XUZWS[WSZVRWTPSPMTQNWTQXUQXURROKTPLZVRVRMTOIQLGRMIXUQ\ZW^[Y]ZXYURUQMOKFNJFSOKWSPZWSZWTRNLKHEJGDIGCFD@@=9?;7=:5840962@=:FC@LIFOKHPLIPMJPMJHEC***)(('((#$$$%%!!!'''())$$$#$$%&&$%%$%%$%%"""'''+*)++*)))()(......***)++'(('((&''+,,,--'((+,,-..*++())"$$%&&'(('((&'''(('('%%%&''&''$%%!! %##)'&+)((((***---**)''&(((())))))))&'')**+,,)**(((*++*+*$%%'((+,,(((())+++()))**+,,$%%$%%)**'(("#"'(()**)))!"""""(((!!!"""&&%""!"""###%%%'&%&$##"!"""$%%%&&'''&'&%%%***$%%#$#OG>\RGJB:bWKbWL^SH$" !"   !!!!! %%%'''%%%+,+0/..,+)(',,+///*+*..-11/0-)'%#+)&+)&/,)31/853853<978630.+.,*k_UƬҸϴ׼ȯڻݾܾ۾ؼܼܼܿ߿ԵܼϞﱋ魊䪉ߦڣ՟М̘|Ɣx‘vrnjg|dw_s\oYjU|[HjLsSBkM=fI9Z:-I'A!E$==7":"# ]6'e;+B'4O,#W4)gD6_7%3 ( I*L&H-$H.&1(( * $=D>J&<T+U+G#E"?=7!5 @!B ;'014H)V3%45$ 55->5.?6.A80D:2H>6OCP:4}YEtWtXtWsVrUpSmRkPjNhMeK]EdG46&(&&.+-.,.+(+  ! $" %$"''%+*(-+)./+1+ظӳعڽʭŨŦӽȳtmbQr}wuxxzowqhTQL564#$$   (!4+$A5+G:.TE7aO@p\J[M?RG;UJ>H?5RG<`TFVK?^RCYM@]QDeXIUK?TI>>93 ""%&&!!! !!"## ! #"!'%$)('-+*=;9?=;EB@GECJGFIFDHECFCAGDAMJFOLJROMQMJVROVRNSOLPLITPMUQNUROVRORNKNJGQLITOLSNJRMJRNJSOKSOLSOKRNKQMIRMITOLUQMWROUPLRLHSNJVQMYUP[WS^YU\XT]XT]XTYTPVQMQLHSNJXSPVROTOKTOLVROXTQ[VS]XU]YU\XUYURUPMOKGLHDNIENIFNJGNJGNJHOKILGEGC@KGDNJGLHEKGDIEBJFDMJGNKIMJGOKHPMJNJGPLHRMJNIFKGDMIFJFCIEBKHEOKHOKHMJGIEBRMIXRMWPKTNJSPLUQOROLOLHOLISOLUQNQMINKHQMIUQNYVRXTQZVR\XUYURSOLTQNWSPVSOUQMVRNXTPVROSOLTPLWTPVROQMJQNJUROTPMPNKWLHovkcԎ_ȈawZo[i[|cVr\PjTJbNDZG>TC;PA;N@;OAaI>^F;bI=cJ>cJ?Q>56)"+!iVM~h_ulw~yxkj\^MYDX?Z>_?a@fCdCoGc@^:O/vE(c=#W8 N3J1N4"R4 T3^8!c;"b8#]2Y.S'Q&Q'Q'S'R*S'Q'O%Q$R%Q&Q%R$S'R&S%T)V,\+[2"`/c0b+c(h,o2!q5#t8$x@1RD@GECKHEIFDGDAFC@HEBFC@C@=B?JFCKHEPLIQNKNKGLHENKHROKTOKTPLUQMVRNXTPYUQVRORNJTPLVRNTQMPMJPLIPLIPMJSPMTQNUQNVROSOKRMJVQNXTRYUSWTRVSQb\WxѻۺѭЬͩ˪ǦѻɳDZֽåŨεxgWZJ:~wl_r|oyks}shyoeynt|x|}qxls{|x   DB?\YVZWSYURXUQVRNPLGPLIPLIOKGQMHUPLZVR\XUZVRYTPZVQZVQZVRZVSYUS\YW_]Zb_\b^\]ZVVROQNKRNKUQNZVSXTPUPMYTQXTQVQNUPLQLGLGCNKHSPMVSPUROWTPWSOWSOWSPRNKOLIUROPMJIEBD@9?;7961951?<8EB?IFCIEBJGCJGCJFCA?=*++**))**'((%&& ))))**$%%$$$%&&&''&'(&''$$$)))--+***''''&&,,,...*++*++()))**)))-..*++%&&*++,--)))&'&!"""##%&&'(('(('(((((%%%&&&&''%%%#"!&%$)'&*)((((+++,-,'('''&)*)()(****+*&''&&&,--.//*++())+++''''(('((()),--,--())'''*++())&&&+,+,-,&''&''*++&'' !! ''&""!&&%&&&"""###%%%)))*)(*('%$#%%$())&''%&&'''%%%)*)%&%&&%RI?^SHHA9bWKbWK[PE!! !!!###%&&$%$###)))..-0--*('++*222--,--,0/.1.*$#!*(&*(%-+(30-863;96=:89640.+0.+PHA̱ɱʹжպھھٽֺĬ̲ϴ޿ҳӵ׹ҵҵ۽ҵѴҵֹݿܾڼܽƓꭊ䩇ߦۣ֠М̙}ǔxusnjg|dx`s\oXjUeQ`L}[IuUDmN>gJ:bF7\A3T9-?"86=8"6! [5&e;+U2$[6(T/$W3)gE8b:*2 "D%O)M0&H-%2(( ) $3C?I#2E$Y- K&F#I$J)8"6 @ B 9%014N-!L, 37#  <5-@6/C71I;5P?9R>7N62X;6kRqUpToTnSlQkPiOhNfLdJcIaH_G{XBiJ8F1%,*+)')0.0$!%  ! #"!%#!&&$)(&,)',+(-+(0>7:ڻ޾߿ܾ۾Ѵȫ£ıuoeT|p|xz}w|pysiXUO886$%% %1( >2(F9.VF9aO@p[I_PAPF:VK?H?5RH<`TFVK?_RDXM@]QDcVITJ>PF;?:4 ""&&&!!!"""  "! $#"'&%('&+)(;97?=6M>7L=8L>:K=8P?:TB^?bAdBiC_"U4O5 K3J2K0M0R6 W7 Y5W2V0S,O(O%P%T'S)T+T'S&Q#P$Q%Q&P&R%U'R'S%V&W)\-`0c/f/g._&_(k-r9"u7"{:(kA7JGDMJHOLIMIFMJGMJHLHEHEAHEAIFCNKHNKGROLVROROLOLIROKUQNRNJQMISOKWSPVRNWSOXTQUQMRNJSOKQNJMJGKHELHFSPMQMJNJGOKHQNKVROXTQZVS\XVZWUWSQVSQZURukdɱ޾ѮӯѮȧťҼѻDZӻ˱vdRB1xoeZzm~sgvh|v{pxn~svw~x~vtts*('VSP\YV\YU\YV]ZWZVSWSPWTPYUQXSOYTPXSOWSO[WS]XU_ZWb]Y`\X]ZW[XU[XU[XV[XV[XU_\Y]ZWURNOKHQMIXTQXTQTQNROKPLINJGRNJXTPVQMPKFNJESOKXTPUROWTQYURYVSXURQMIIEANKHNJGLIEOKGPMINKFMJFIEBEB>C?;C@<%''(((())())%&&))))**%&&'''())&'(())'((%&%(('--,**)%&&&&&)))*+*())())%&&&'''''+,,()*$$%&''*++)))#$# $$$&''%&'%&&&'&$$$%%%&&&$%%#""$##&%$''&&&%((()))$$#&&%)))(('(((***)**%&&,-,/00.//()(*++,--,-.'((*++-..+,,+++(((&'&***%&&+++/00*++%&&+,,)**%%%##"&&&""!&'&())$$$!!!%%%)))++*++*+)($#"%%$)**)*)())))))*)+,+&'&'&%SJ@[QGG@8aWKbWKZPE" ! """!!! $$$&'&###"""(('---/-,+)(*)(321332,,,--+50,%#!-*(+(&,)'41.863;86=;8<:730./-):73wêȮƬ˰ҷٽŮëڼԷټ§¦Ȭʮëʯܽڻܼܽٺعٻ׺ټٻܾÏꮋ䩈ߦۤ֡ѝ̙}ȕytqokg{cw`s\oYjTeQbN]JxWFqRAjL0P7+;"9!=#=9!5" Y3%e;+U1#`:*T/%V3)\=2]7'I'? I(Q+P2'H-%1(' ) $7?E 1.T+R*F"N(^5"=$6 @ B 6&024U2%@%53# ?!<:B@>DA@A?>@>EA>IEBIEBMJGPMKPLJMJGNJGLHEOKISOMPLIQMJTPMQNKQNKTQNSOLOKHUQNSOLQMJUQMUQNSOKRNKSOLVROXUSXUSZVSTPLSPLWSPVRNTPLRNJRMIVRNXUQVROQMJQMITQMVSPTPLVSOSOLQMJQMIRNISOLRNKOKHPMIGHEuPIwvfڑ_·Y€XwTlRfRcR{]MqWHhOBaGUE>WG?]KBbOFjTInVKu\P{bX~i`tl}u|~~}zwzmn_eS_J\C]>[=[<`?a@d@]=[8L-pC&\9 J0K2I/I/J.H.K0N1P2S4R1P.L-M&O$Q'Q*S'R%S&R&R'R)P$O!R#T&M&S(T(T)X+\*^-c/f/b'^$e'm2!s5!v4#v:+[GAKJGPMJQNKTQNSPNRNKLIFOLIOKHOKHLHEMJFROLSPMPLINKGRNKTPLQMIQMIWSOUQMQMIRNJSOLRNJQMJNJGKGDKHDLIFQNKOKIKGDOJGUQNZWT[XVYVTYUSXUSVSQURPWTQ`ZVynʯ۽غӰհҮƤǧվ̶Įζ¤پŬ{hM=,ukbW~rf}rfs{wzot}xxy|"! NKIYVSYURYVSYVS]ZW\XUXTPTPLTPLVRNXTPXTPSOKSOKQMJWSP[WTZVS]YW[XUVSPWTQUROTPLZVS_[X]YUZUQYUQ[WT]YVYURSNJNIEHC>JEAROKTPMTPLUQMVSPZWTZVTYVSXURUROTROTQNOLHJGCJFBOKGSPMVSPTQNSPMPMKMJGKHEOLIROMTQOUQNVRMRNJOLIPLI@><"$$'((()(&&&%%%&'&'(($%%&&&&''#$$&&&'''&'&%%$))('''%%%&&%%%%&&%$$$$$%$%%'''((()**'(($%%"##'''((("""#$$%&&$%%$%%$%%$$#$$$%%%#$$#""!"!!!!#""##"&'&'''!"!$##'&%'''())+,,+,,&''())-../00'''())-...00)++())+,,*+*+++'((#$$)*)$%%)))-.-+,,'(()**+,+()(%%%###!!!'('+++%%%""!%&%)))*+*++*+*)$#"&&%***)**()(&'&,--./.()),*'VLBWNDLD;`VJbWJVMB  ! ###!!!"""###"""!!!''&...//.,++*)(0/-432.-,*)(3/*%#!-+)+(&*(%1/,641:75>;8=:7631/-*851|na}ostyz~ǭɮպؼĬ{p϶Ȭѳ׸ԵӲٸ޽ѴαϱԶݽݿ޾޽Ïꮋ䪈ߦۤ֡ѝ̙}Ȗ{ēwrnkgzau^r\oXjUfQcO^K{ZGuUCmO>fI9`E6[@2V: 4"% X3%f;+S/"`9*U0%W3)M1)H%_3 X-Q, P+O2&K/'3(& ( $ " 8?A/#G%X-J%F"]3!H(7 @ B 1'025O/"66,+@!="2'!-! !" ;G"N(L!H 1 # K); *&! l<,p>-7A].$E"( <E!:) )(0%5+$5+$5+$5+$5+%4+%4+%4,%4,&4,&4,&5-&5.'6.(6.(6-'6,&5)#3'!1$/ .-05 =(*E/2J15\>8fNlRkQiPhNfMeLcKaJaI`I_H^G]F}[E|ZDyXBwVAtS?hJ8M7)")'((')2/1%#&   #!%#"&%#''%*%#(#!&&#(/*0'ϴڷܺ߿ܽػӷʯӻʵι̹rmdRymx~{twrh[WP997&''   $1(!;0'E8-TD7\K7$%%$%%"##  #"!&%$*(',*)643642865?<;?=FC@JGDNJHTPNRNKOKHMIFJFCJFCJFCJFBIEBNJFOJGRMITOLSNJUPMTOKUPLTOKTOKSNJRMISNJWQMYTP[VR\WS^YU`[V_ZV]YTa\X`\Xa\X`[W]XU\WS[VSYTQUQMTOLUQNXTQSNKNIFPKGWROZURXSOUPLTPLTPMQMJLHDLHENJGMIGJFDLHFOKHLGDMHEHC?GA=MHDKGDLGDLHENJHQMKPMKNKHRNLRNKQMKUROSOKRNJUQNVROTPMROKOKGLHDQNJRNKOKGNJFRNKWTPTPMOLHQMITQMTQNTPMOLHPMIVRNXTPVRNRNJWROZVSRNKSPLTQNTPMROKSPLUQMWSPTQNQNJPLIUQMWTQWTQQMIPLI:QC>TC=XGAZH@^KBdPGlVMu`W{h`~ohyrz|~}|u}pugl[cO[EX>Za?c>[:U3zH+f<#T4I0G/G.G0F-F-H.J/L/R1P.O-N*M&Q'S'T$Q$S%S$T%T)T)S&O!P!R"O#R&U,U*W&Y)_/c/a-c(`'`%e+q3s0w4"nB7OKHMJGPMJUROUROSOLMJFOLHPMIOLHLHELHDQNKROLQNKNKGOLHOLIQMJSOLVRNSOLRNJRNJUQMTPMRMJPLIMIFLHENKHOKHNJGQMJVRO\XV\YW[XVXUSTQOUROVSQURPURQUQNkc\|ǰʯӵմֲײү̬ԾĮŮҸѷêoYF4~oldY{nxl`~oy{~s}qznzzs|p|psvHECXVSXURXTPWTQURO[XU\YV]YUXTPOKGLHDMJFLHDC?;B>:C?;QMIVRNRNJRMJUQNQNKRNKVROVRNVROVSPWTQWTQTQNQNLSPMWTPXTPRNJNJEOJESOKSOLSOLWSPYVRZWU\YVYVSROMIGEDBBKHGQNKRNJRMITPLWSPYWTZWUWSQTPNPMJNKIMJHOLJVTQYVSTPMNJGLIFLHE:86#$$)**+++''''''"""''''((%&&&'''((&''&''&'''''$%$&&&%%%&&%''&%%%&'&#$$ !"##&&&&&&'((&''$$$""#%&&(('!! !!!!""%'''))$&&$%%###"""$$$&''$%%"! ""! ""!$%%%&%!"!##"$$#'''+,,-...//(**&&&+++,,,$%$(((,-,.//)*+"##'(('''())())%&&&&&%&&)))*++)))$%%%&&)*))))'''!"!""!&&&+++)))''&(('''')*))*)*))#"!((',,+,,,***%%%+++/10)**.+(VLBULBOG>aWKdXKQH>!!"!!"!%%%"#"$$#%%%''&+++,,,--,+*)-+)1/-0.-+)(2.)%#!-+)-+(-+(1/,530975=;8<97742.,*31.VMGg\TmaYj^Ug\SncYti_tiynviylrq}otvz|sind\wkҵͰںڹյܼԵ׶޿Եܽ٩ﳍ鮊䪈ߧڤ֡ѝ̙}ȖzÒwsnlg{cu]pZnWjTfQcO_K|[HwWEqSAjL;8$K&_5'f;+S0#a:*V1%V2'O3*A!^3 Y.N&O+O1%L0(4)% ' $S0#Q- ?A5">![/!Q)D!W/Y2 ="A B -%258I+35# 2@!=#7*$4'! !! :F"c7'T(J 60<M*?#*&1vB0_3&1J$\.#36?E!/*) )3)"5+%4+%4+$4*$3*$3*$3*$3)$2)#1(#1("0'!0&!/% .#- +)(),0"6$(<*/B.3E/3E.0N30\HlRjPhOfMdLcKbKaJ_H^H]G]G~\F|[FzZDyYDxXCvVAsS?oQ=jL:Y?06% '&(/-..,.  " #$#'%#('%)%#'# %# %*',$!,h[Uݽ޿ػūȯı|vlYymy~|vuoe[WP997()(   "1(!;1'G:.UE8[J;fSB]M>KA6VK?H?5MC9ZOB^RE`TFXM@bVHfZLVL@LC8D=6$%&#$$#$# ! %$$('&)('0.-1/-421><;@><@=<@>=A?>GDBDA>EB@IFDQMKTPMRNKPLILHEMHEJFBHD@JFBLGDOKGPLHQLGUQMVQNTOKPKFPKGUPLSNJPKGPKGRMIUPLVRMXSN[VR_ZVa\X^YUZVQ`[Wa\Xc^[a\X\WT[VSWRNUPLRMIQLIRMJTOLTOKRMIOJGSNJXTPUPLRMJUQMUPMQMJLGCJEAOJGOKHIECMIGRNLQMJOJFOIEMHCPJGOKHRMJVQOUQOVRPVROUQNWTQVROTPMTPMUQNVROVQOXTQUPMQMIRNKSOKUQNXUQVRNQLHPKGSPLSPLNJGMIEOLHRNKQMJPLHQMJUQMVRMTPLUPLWSOYVRSOKSOLSOLPMIOLHSOLTQMTQMSPMUQNSOLVROXURXUSRNKMJG[KGotjݕeƅZ{SsNoMhK]GzXFuVFpRCkN@bF:[A7T=3N;3H82D61F95F;8I>;MA=QC>XHA]KEdQJiVNo]Vte_ylfuoz|||{w{pvhp`kYbNZCU;U8X8c?b@b?`=^9Q/sF'b<#R4H0F.D-H0J0K1I0F-J.P0M-M,O*N'O$P%R%S&S&R%R&Q)Q%R%P%O"Q"Q$R#T'R&T%U$\,`/]-b,d,a)_$k+p0#w5%x:+^KFLJGNJFQNJROLQNJNJFNKGQNJQMJMIEOKHSPMOKHQNKTQNROKMJFOLHSPLVROTPLQMJUQMZWTYURSOKRNKNJGLHENKHROLVRPYVSXURXUSXUSXUTXUTWTRXURVSQSPMQNMROMZURyofѸвմڶֱͪ͸ŬɯëwfO;{jvjxstxh}ozmxkzmt|pth{peyncsh^sh]wmbyodxmaB?=TPMUROUQNTPLTQNPLJROLROLTPMSPLQMJNJFMIELGCD?;@;6>95KGCTPLVQLTOJOKGGC?EA>OKHROKLHEIEBIEBKGDIEBFB?GC@NKGWTPYUQZVRYVQWTPUQMSOKNKGOLISPNVROVSPPLHGB>A<8HD@MJFQMIVRNWRNXTPZWS\YVXTRURPPMKPMKMJHJGDROM[XUXURTPMQMJLGD864$%%'((*++()*())&'')**)**)**&''()))**())&''&''#$$###"""&&%*)(((()*)'((%&&%&&%%%###%%%&''%&&#$$'''(((  "##&''&''%&&%&&%&%######$%$%%% ""!$$###"#""###%%%#$#""""""!!!%&&*+++++.//+,-'((*+**++"""&''())+,,(**!""'(()**())%&&#$$###$%%))))*)()(&'&%%%''''''""" ! %%$''&******)))(((%%%'(')))**)$$#**)/.-.-,**)#$#(((.//())0-*VMBQH?NF=bWLdYLOF<" %#!!"""!!!%%%!"!###)*)))(+++---...+**,*(-*),*),+).*'%# .,)0-*0-*31.853874<:8=:8963.,*20-?;8LGCMHDLFBKFBQLHXRM`YSiaZkaYj`XkaZmc[i`Xe]UjaYqg^wlcsiae]W_XRqf]tʯ׷޿߾ݽԴҠÏ變㫈ߨڤաН̚}ǖy‘vrolgzbv_r[mWiTgQcN`L}\HxXFsTBmP?gK;bF7\B3W=/R:-O8+L6*I3(F1&?!<6#L(_5'f;+Q."_9)W2&V1'R4,>^2 \0O'P+M/!K.#4*! %$\5'V1#?A;#@#b4%V,Q*X/ f9$R.B A )# 566<#33 5@!=%;/(:-'$ 7A E!i;*\.!J<1 ?"N, B%*#I'yC1G%3X,"V+!.=B C *))*3*$4*$4*$3*$3*$4+$5+%1&!, *'&$#$$$%&(+0!5%(:(+>+-A,.@)*S81{XEjQiPgNeLcKaJ`J`I_H]G}[F|ZF{ZEzZEyYExXDwWCvVBtVArS@oQ>lNaUHgZLWMAKA7B<5$&&"##"##  %$#'&%(&%,*(-+)/-,865975<:9?=;@>=FCBFCAGDBHFDNKIQNKRNKPLILHENJGMIFLHEOKGNJFPKHPKGRNIYURWROTOKQLGQLHVQNVQLTOKSNJTOKUPLVQMXSO]XTa]Xa\X[VRWRM[VR_[Wa]Y`[X]YU^YUYTPTOKQLHRMIPLHPLHSNKTOKQMJUQNXSPSNKQLHRMJQMIPLHOKGLGDNJGNJGMHEPKHSOMYTQVQMWQLTNJRMIRMJUQNZVTXTRTPNROKQMJUPMVROWSPXSPXTQ[WTYVSXURUQNRMJTPMXTQWSPYVSYURWSPUQNTPMSOLOKGMIEOKGRNJPMIPLITPLVRNWSNUQMYUPYUQYUQYUQXTPUQNOKGPLIROKROKQMIRNKUQNUQNQNKSPMVSPROLEGEWLy~p֐dЏ_ƄY}SqMmLeH\EyWCtTCpQ@jL=dG9^B6S;1M:2K:3J;5H;6H<8H>:KA=QEA]NIgVQm[Usa[uf`znhvp~x|}{{w}rzmtekZfR^H[AX;V9Y9b?c@b?_>^8U2pE&Z7 J.H/H/E.I0I/I-H.D*J,L-M/O.O+O(O%O'P$R'Q%R$S$Q$Q"P$L%M"O"R$R&P%Q#S%P#W*^-_.b,d(f)`"e(k4$r2!s2"m?7KGDJGCJIFNMJQNJOLILKIOMIOKGNJFOKHROKQNJSPLPLILHEMIFNKHMIFQMJTQNRNKSPLXURXURPMJNKHMIFNKGQNKUQOVSQXUSYVTTQOROMUSQWUSWTSURPQNLQNLRONROMSPN`[VznĪںٴ̩׿˶ĭѷչɰ|hQ<|kxkzoqo_}lzjrdyl^vi\zm`tg{obsh\f[PqeYvj^th\xj\   :85SOLTPMRNKRNJRMJRNKMIFLHEMIEPLHOLHKGDLHDPLIRNJPLGNHCJEAQMIQMIQMHRNILGCE@;GB>LHDJFCEA=D@IEANIFROLVSQXURWTQXUQYURZVRWSOVROWTQUQNURNTPLRMHPKFTPKTPLTPLWSPVRNWRMVRMUQLTPLPLIMJGLJHNLIPMJROLZWT\YVZVSWTPTPM:86())*+*-..,--**+&&&*+++,-*,,*++,--.00,..))))**'((#$$$%%(((**)''')))'(('(('(('((%&&"##""#"##$$%'((&''!!!###%&&(**&''#$$$%%$%%#####"###&&% !!!$$###"$#"$#"#$# ! !! """'((())+,,-..())())*++%&&'(('((+,+)*)"#"%%%)**(**#%%!""!!!"##&'&((('(''((&''&'&%&% ! &&%&&%'('()((((&&%$$$%&%((('''##"++*210//.+++"""'((+,,'((84/YOELC;NF=bWKbWKLC:$#"(%$"   $$$$%$(((%%%%%%,-,,,,,,,,-,-.-,,++*)+)(+*(4102.*#!*(%,*'/,)41.;85=;9@>;@=:<960.+1/,853C?=C?IEBMHEUPMWRNXRNXSOZUQXSOSNJRMIXRN\VQXRMSMIRMH^XR~qfܽԴյܾ޼ۺ߾޾̗Îėš컜黟߮ک֥ϞɘyĔvtqokh{bv^s\oXiRfQdO`K}\IyYFtUCoQ?jM#+ )j:*u@/@ >^/$I$* >F";) )(-!3*$3*$3*$3*$4+%6,&6+&1%!."- +*)'''''(*-0 5$%9'(:&(C,*cF9`KiQgOfNdLcK`J_H^H]G}\G{ZEyWDxWCwWDvWDuWCtUBsUBsUBsUAqTAoR?lP=hL:aG6ZA1M6).+)*2/0/,/     " #$"%$"%%"&%#''$(,(-#~p߿ԵѴгͰǪθxwmXzny~~w~{wqg^YR;:7)**      -%:0'I<1WG9]KG>4LB7YMA]RD\QDSI=`TFg[MYNBKB7E>7%&&"##  #$#  ! )'&*(',*)421531643;97=;:DA?B?=B?=@>;CA>EB?KHDPLINJGNJGPLJTPMVRNRNKPLHRMIUQN^ZWZVSVQNTOKWRNWROTOKUPLWRNVQMVQMUPLUPLZUQ^ZU_ZV_ZV^YUWSOXSO\WS[WS\WT_ZV\WSWRNVQMUPMPKHMIENIEPKHQLJSOLRNKSNKSOLSNKRNJNIFQLHRMJOKHNJGVPMYTQTOMVROVPLVQLUPLSNKSNKRNKVRPROLPKHPLHRNJUQMWROZVSZVS\XU]YVZVSXTQXTQUQNTOLWTQVROXTRYURVRNVRNWSPVRNTPLQMITPLVROUQMSOLRNKTPLVRNYUQ\XT[WSZVSXTQWTPXTQVRNSOKSOKURNVROUQMTQMTQMOLHPMJROLSOM?HFiW||jЋ_VxPtMiGdF_DYCvT?sR@nN^:X2wI*f@#T6H/I1I1I1I/J/I.H-I.L/K.M.N,O)Q(Q&R(P%R&Q$O#Q#P$Q"O#N%N"O"P#R$R$Q"O!JS%W&['`*`&e)d(b)k1 q5"v7&v4)YGBYLF|XJ_M_L[IvRF^OHQNJQNJSOKQNJQMJROKOLHNJFOLHQMJNJFOKHTPLTPMQNKTPMTQNOLIJGDJGCOLITPMXTRVSPSPNWTRQNLLIGQOMVSRURPROLPMJSPNTRPSQORPNVSPpg`{̶ԶݸϬģһĮɱպھּlWCo^ztdp~m~n^{jyisdufXo_vfwhZseXvh[tfXseWqeXyl_xg  20.OKHUQNQMJMIFKGDMIEQNJRNKSPLTQMQNJPLIQMIQLHRMIVRMYTPWRNSOKQNJOKGPLGOKFKFBJEAKGBJFAJFBMIDNJEPLHQNJOLHNKGPMIOKHLHEMIFPLIQMJTQNUROVSPWTPXURXTRZVSYVSYTQUQLSNJROKPLIPMJRNKSOKSOJSNHTOISOJOKGNKHLJHLJGPMIROLVSP[XU[XUZVSVRO432)**+++-..,--)**'''*+++,,+,,*,,,-..01,-.())*++*++$%%%&&)))**)''')))''''('()))**&&'!!" !!$%%(((%&&###%%%'((*++()($%%&'''((&&&%%%%&%%&%!!!"""%%$$$$$$$$$#$$$"#""##"""!!!!!!%&&'((())-..)**&'')**)*****()(*+**++%&&'((+,,())&''%&&######$%$'((%&&#$#&'&&''$%% ###%%%$%$%%$&&&'((%&&%&%$%%''''''##"+*)0.----))) *+**++'((=93\RGLC;SJA`VJ`UIG?7&$#*('$"!""! %%$&&&((('''%%$*+*./////-../0///.-,+.+*.+*74150,!%#!&$!.+(20,963<:7><:><9<960.+1/,530=:7=:7=97;75:63?<9D@>KGDMIFOKGQNJVROWRPRMJNIEMHDLGCKFALGCMHCQLGg^VpƫҴ޿ַܽڻٺںοǻǼµȸȴpjezau^r[pYkTfPcO`K~]IzYFuUCpR@lO>gJ:aF6]B3X?1T*65(*6+! 4@!@)#D6/E6/" "?#E"D j<*r?-L!J /*$ *&* r?.i9)7F"].$84A I#1))(/% 2*$2)$2)$3*$3*$3*$2(#0&!0% /$ /$.#-!,+*)))*+,0;'%[?4zXDeMfOdNcLbKaJ_I]G~\F|[F{ZEyYEwXDuVCtUBsUBrUBrUBqTBpTApSAoS@oR@nQ?kO=hM;cJ9]D4V>/L6)5$ &$%/-.301)'*  "!#!#""" "%#&(%)*'++','ػ߼ݹҲвϳȬؿ̷ƲȵsxnW|ozt{~|uka]U=<9***    !-%<1(K>2YI;_M=kWFcQBH>4TI=F>4KA7YNA]QD]QDRH<]QDeYK[PCND9LC;&'&"##"## !!#$#!!! !"! $"!,*(+)(-+)420753=;8=;8=:8<97B?sQ>nM;hH6bD4[?2X?5R=3O=5L=7M>9N@W8Y9Z9_4~L;S@VCS@yH8rB3pE9hNGWQLSPLTPMROLQNKROLROKQNJUQNTQMRNKVSOWSPUQNUQNTPMRNKNKHMJGLHEPLJWTRVSQROMURPOLJMIFQNLURQVSQURPROMSPNROMPNKOMKPMK\WRuj͸˩հѭƤĤѺϷ׼Ŧɬo[HyiXTJ@`UJi[On_Rn`SqcVyj]{m_}obtfviykvitgwivi}pc}ob   2/-NJGOKITQNRNKMIEKFBNIFRNKROLQNKTQMPLILIEROKWSOXTPXTPUQNNJFB>:?<8A=9LHDQMINJEMHDMIELHCKGCPLHTPMRNJQNJUROWTPTPMRNKOKGMHDPLGROKTQOVSPXURYVSZWTXTRYUQXSOVQMTOJWRNYUQTPLPLHQMJQMIPKFUPJVQKSNIMIDKGDEB@DA>KHEQMJQNKTQNVTQWTQURO322+++,--.00.//))*'(()***+++,,+,,,--./0+,-())++,*++$%%$%%'('**)()(***(((())())())#$$!!!!!!"""$%%''(%&&&''())+,,,..)))%%%&'''((%&&$%%''''''$$###"%%$%%$'('&&%#$#"#"$$$$$$##" ! $%%&''%&&,--+,,&''&''()(((()))'((&''%%%''')*))))&&&$$$'''***)**+,,)**&'''((())&''###%%%$%$##"""!&&&())&'&()(%&&%%%'''###)(()((+++((( ))))*)(**A;6]RFJB:ULB]SH^SG>70&%$*('%$#$## %%%&&&(('(((&&%(('---/0/---/00///,,+/-,.*)30.3/+" '$"&$!.,)30-862:859758646421/,42/520:74;85952841730:63<85B>;FB?KGCMIFOKGQMJQMIOJFNIENIELHCNIFNIFLGCVNH|m_ٻαغ׷ۻݼݼԶx{epXnWkUhRdNaL^Iz[GuWCqR@lO=hL;cH8_D5[A3W>0S<.O9+L6*I4(F2'D1&@* >9!5#M+W/#B$Y5'\6(U0%W7-6R,_3 X.V7'M. N0%9"+ $#3D'F)T."/$@#a5&2O(Y- T)P)B ; /75% .6% ( 4@!B+$H:2K<4) = E!E!l<+xC0R'K!7*& & # \2$[0!0M&W+!* I$R(H#* )) )1'"2)$2)#2)#2)#2(#1("1'!1'!0& 0% /% /%/$.#.!.!/"1#3$ 7($=-(G50bG8vUB_IaKaJaK`J^H^H]G}[F{YDyWCwWCuVBtVBrUBqTBpSAoSAnR@nR@nR@mR@mQ@lQ?kQ?kP?iN=gM=:)**    "/' =2)J=1UF8cPAo[IgUDG>3SI=F=4I?5XMA]QC[PCQG;YMAbVI[PCPF;SI?'''""""##!!!###!""!!! #! ,*(-+)-+*30.31/964:74852963?<9B?5O<5N>9QB=VGB\MHcTOj\Wob]|qlwr}x}xqwgn\iSdM]D\?\:Z9]2pF:pH:iA4Y5+Q2*T;9iNOcSOONJSOLSPMSPMROLSPMTQMTQNOKHKHDOKGOKGRNJTQMVSOTQNSOLRNKRNKSPMVSPWTRWTRYVTVSQUROURPVTRVTRUSQTQOURORNKNKHNKIOLIQMJe]U{l͸ȤЭȦãؿԼپ˫αȰweSq`OlaU|na}na~oaqc|obxk_}qdviuiwjymwkthxk}oxkyk     "! HEBMJFLHFLIFPLHTPKSOJOLHNKHQNKQNKSPMRNKNJFNKHRNKOKGLIEFB>E@;B=8B=8E@;JEARNJSPLQMIQMHPLGLHDKGCNKHNJGQMIVSOZWSZVRUQNTQLQMINJFMIEPLIROLUROWTRWTQROKTOKUQKUPJVQKUQLUQMURMROKRNJUQMQLGMHBJE@JE@IE@JFCIFBGD@HEBNJGQNJSPMUROPLIJGD+++++++,,,../00)**'''&''&'&((()**+,--//*++'((+,,*+,$%%%%%()(*+*()(**))*)***'(('''"##!""###""##$$&''%&&()))**+,,-..*++'(()**)**&''$%%%%%'''&&&%%$(('&&%&&&((('''$%$&'''('&&%"#"'(()**%&&+,,,--&''%&&*+**++)**%&&&''())'((%&%(((%%%!!"&''*++*+**++'((&&&&'&****++&&&%&%''&%$#!! %%%)))&&&()($%%###&''%%$(('(('+++'(( ! '(('('&''C=6\QEF>6VLB\RF^SG>70%#"#"!#! $## '('***()((((&&%''&,,+...+++---00/+**.,++)'.,)3/*" )&#&#!.+(2/,74075164186486321.75264152/741841:63;74<85?;7B>:D@iM;eI9bF6]C4Y@2V>0R;-O9,K6*H4(F2'C1&A,">;6#9 H"7W3%^7)U/%U4*5K'_3 Y/T4%M. N0%9"+ $#4E'J*Y1%9#>"]2%*? X. X- M&B 6 364&24  25@!D.'L=5O?6, <E!E!m=+{F2Q+>8)& ! 9O)0V*!K%( N)$L)"; ()(+2)#2)#2)#2(#1("1'!1'!1'!0& 0& 0%0%0%1$3%6(!<,%B2+I92P@8XF>]KChQF}[F]G\F~[F~[F}[G}[G{ZEzXDyXDwWCuUBsTAqS@pR@oR@mQ@mR@lQ@lQ@kQ@jP?jP?jP?jP?iO>hO>hN>fM=eL{R:vP:tP:oM8lJ7hG6cD4^A3Z@4W?5U@8TA;YGA]LFaQKjYTo`[ylg{u{|qzir^lUeL`EZ=W8]9_9cD@=JEAMIETQMSPLNJGNJGSOLTQNRNKTPMSOLOKHHDA?;8<84?:5HC>NIDNIEOKFPMITQMQNJMJFQNJVRNUQMNIDLGCPLHUQMWSOWSPVROSOJRNJRNJSNJPLGQNJRNKUROXURXUSTQNSNJRMGLGBJFAKFBOJFRMISOKSOJTPLQLGNIDLGBIEAJGDKHEJGDIEBGC?MIEQNJPLHOKHLIFFC@***++++,+*++,..&'''''$%%###$%%&''+,,-..)++&''+,,*++&'''(()**)**'(())())())))**+,,''(#$$%&&#$$#$%''($%%((()*)*++,--,--+,,)++*+,'((#$$"""$$$%%$%%$*))**))))***((($%%''''((%%%"""%&&())%&&((()**())%&&+++-..+--%&&&''())%&&!""$%$"""!""'''+++*++)**'((&''$$$&&&()('''*++*+*&&&"#"$%$((('''())$%%"##%%%%&%&&%&&%**)())'((()($%%H@8[PEC;4XOD[QF^SG;4.%#!#! $"!%%$!!!(('***''''('&&%''&))(((((((,,,111++*-,++)(,*)3.*#!(%"$"+)&1-*40-63/52/86486421.75285330-41.52/741=:7?;8C?;D@HD@IEAJEALGDMHDLHDOLHRNKSOLTPMQLISMHi`XvŭϳպҶ߾ض۸ٹݽܽ¿ļĻú¹|~xu|wtzw{wkcP|]Gz[GwYEsUBoR?jN0T=/Q;-N9,K7*H4)E2'C1&A.$><7#1I!:T1$_8*U/%W5+:!G%_3 [0R0"M/ O1&>&,% " $#8H(W/#`5(L) !: \2$+A%X0$S)J$B ." 762) 53*86@!F1)O@7SC94&9E!E!m=+{F2L*08*' ) ) ' I%, V*!:4R+&I(!7))(-!3)#2(#2("2("2("1'!1'!1& 1& 2' 3'!5("7*#:,%=/(A2+D5.H92N>7TClO>kO=kO>jN=iM=hN>hO>gO>gO>gN>gN>fN>gN>fN>fM>eM=eL3RH:C@=GC@GC?MIFOKHOKGPLHMIETOLVRNVQMVQNVQNYURWSPWROSNKRMJTPMUQMUQNUQMUPLVQLWRNYSOUPKQLGQLHQLGRLHTOKYTP_ZVa\Ya]Y`[W[VRWRNXSOYTQVQNVQMVPMXROYTQVQMWQN\VRVPLXRO[VR]XUZURVPLVOKWRNTOLXSQZVS\XU[VSYTQ\WSYUQXSQUQNTOMVRNYURZVT[WT]YV\WT]ZWYUSVQNVROXTR[WU]YWXTQTQNQMJQMJTPLWSOVSPXTQVSPUQMVRNWSOZVRXTQZVRZUR[WSVRNTPKSOKSOKUQMVRNSOKUQLWSOSOKRMIUQMZVSXTPSOKTPLQMINJFKGCHJG[Qix|{zیjρ]~VwMqHjCcAZ=U;wQ:rN9oM8jJ6dE3cD4bD6_C6_E9`F<_H?eNFlWNp[Sxe]|jcxr|wkv_jRcH_BZ;W6W3\7`9a:`;`;\9T4Q/pF'_<#O4H/H/L1K/K.M0L/M0O1O0L-L-N-P-P-Q,O*O'N&N%M$K$L"O#O"L K J#NQ!N M KJJ!K!K L P!V%Z(](`+b*b."Y%\&f(o3$p5+T1'T2(R/&N0)L1+^@>wUVc_xYLrWK_PIMIEKIFMJFIFBJGCPLIPMJNJFNJGLHDIFBHD@KHEOLIOLJNKHROLUROYVS[XVWTQTQNWTQWTRXUTURPWTRWTRTPMSOLUQOROLLIEIEBGC>MG@laSpƳ̩Эɧ¡йԽѷֻ̳xeaP?{~rh\zlxkzm{ozn|p|p|p}q}qymwkxlzmst} -+)FC@OLIOLINJGLHDOJFMIELIEROLTPMRNKSPMURNSPMTQNTPMMIEFB=C>9B=8FA;NIDVQMVRNVROWSPXUQSOKLGCIEANJFWTPYUQVRMUQMYUR\YUYURRNKOKHQMIOKGPLHRNJUQMVROSOLNJGLIELHDOJERMHMGAJE?NIDSOKVQMWSOURNTPLSNJMHDIEBHEBFC@B>;A=:HD@MIFROKVRNSOKNJGNJFFC@****+++,,()))))#$$'((#$$!""$$$%&&(((+,-)**'((+,,())()))**+++*++())+++)*)))),--.00())$%%'((%&&&&'''(#$$&''()))**+,,,--+,,)***++)*)&''$$$%%%$%$%&%****+*))((((%&%#$#&'&&'&$%$###%%$'''#$$$%%*++,..%'&())-/..00)++)**)**'((#$$$$$"##"##&''*++)**'((%&&((((''%%$%&%$$$()))))%%%##"'('*+****())%&%%%%$%%&&%)(')('(('''' )))*+*$%%JB:[ODD<5YODZPE\QF1,''%#$" $"!'''$%$&%$(((###$%%'''-,,.,+''&'''*+*/0/+,+,,+*))-,*2.*$!(%"%" )'$.+(/,).+).,)53186331/6419632/,2/,30-30-852=96FB>FB>FA=HC?JFBMIENIELHDMIEMHDNKGOKGOKGRNKRNJTOKc[Uyl˲ݽ޿ǫԴܹбֶܻ޾¾úú}wsuolrmjvpm}rl~i]vZGrTAoR?kP>hM;dJ8aG6]C4Y@2V=/S;.P:-M8,J6*G4(E2'C1&A/%>#>8!+ F ;N-!_9*U/%X6,>$? ^2 \0O*M/!O1&@(!17' $#F&K(Y0$`5)U/%#6Y0#,B&S-#L#E!A ')86+& 603;7@!I5-RB9WF<:,%7F!E!m=+{F2L+05*+& G%^3%H$H%/T* ) C"R+&G'1)) (0$3("3("3("3("2("3(!3(!3("5)#6*$8,%;.&=0(@3+C5.F70H91K;3O>7TB;ZF?aJ?jN=jMnZHq\JG=3SH=G>4C:1QG<]QC]QDOD9PE:YNB^REPE;WLA,+)!""###!"" ! """  " ,*),*(+)'1/,1/,41/;85;86;86=:7D@=IEBEA>HDAJFCNJGPLILHEOKGRNKSOKWSOVROUQNUPLVRNUQMSNKSNKTOLSNKTOLSNJUPLVRNUPLRMHOJENIDPKFTOK[VR^YUb]Yc^Z`[W\WS[VSVRNUPMZUR\WTYTQXROZTQ\VS^YU^XT_ZW[VS[VS[VT_ZW`[XZTPTMIWQMRMIUPLXTQ]XUYTQWROXSOZVRVRPSOLSOLVRPYURZVSWSPZVS_[Y_[X\XUYURWSPUQOWSPYVTWSQTPMTPMSOLUQNXTPVROXTQWSPUQNXTQYVSYVRXTQZWT]YV\YUZVRXTOUQMVRNWSOYURWSPVRNYUQYVRWSNXTP[WTYVRSPKQMINKFMIEJFB@EB`QlxzޏxޒwԈi|Z|UrKkFhCa@^?X=}S;uO9oL6mK6jI5hG6iH8iJ;kN@mPCoSGrVKz_Ti^rgul{ujtZjN_C[GDAKHEKHEIFDNLIVSQZWUYVUTROPMJQNKTQOXVTXVTXUSVSQUQOUROTPNOKHKGDIEAGC?FB=[SIwdվɧʨȧϸйȨϯ̭̳|hUE4r~xmawjsftguiwkvkvk~siujwkwluiui~sgs||  .+)IEBQNKSQNRPMQNKQNKQMJMJFMJFOLINJGJFCHDANKGWTQWTQROKMIDID?JFAJFAIE@LGBUQMYURURNQNJQNJUPLRMIRMIUQMYVRYVSSOLKGCIFBROKTPNMJFJFBMIENIENKGURNWSPVSPVRORMIPKFOJEOIDQKFMHCHD>OKGWSPXSOYURXTPSOKRNJPLGJFCC@=DB?FC?GD@NJGSPMVSQYURWSPSOKRNJFC@*++,-,---,--/00%&&*++%&&$$$())'((&''*++)))()),--()))*****+,,,--*++-.-)**)**.///11()*%&&***''&%%%$%%"##&&&'(()***+++,+*++'((())'(''('&'&&&&$%$&'&*++)**&''&&&#$###"(((())%&%###%&%(((#$#""")*)+--$%%''',--.0/+-,'('()(())#$$!""#$$"##(((,--,,,()(&'')))))(&%%%$$"#")))+++&'&##"'''())(((%&&!!!$%$'('(((++*,+*))(''' ((()**$&&LD;YNCA:3WMCZPE[PD+'#+)('%#%#"()(&''""!&&% ! "#"(((3102/-*)(''')))...+,,***))(,,*-*'$" '%"(&$+(&0-*.+(.+(.,)63085230.1/,85252/630841841<85>;7HD@HC@HC?JFBLGDNJFPKHOJGNJFMIEMIEMIENIEOJFOKGPKGVPLj`Wv˳Թ޿ٻ޿ٻʬȪа˫Ҳ׷ĺ|ysmjmgenhfrlizmfv`RiN;gM;eK9aG7^E5[B3X@1T=/R;.O9,M8+J6*G4)E2'C1&A/&>%>:+ C>L,!a:*V0%W4)?$:[1]2K*M/!O1&D*#14' $"N, M)Z1%X0$@"% -D$,B&S,#L#F!@$/955,6+9<8@!L80UE;YG>>/'6F"D l<*|F2O,12)'. g9)s?.P)E#2L&* L'"Q*%C%, )))2'!3)"3)#3)#4)"4)#4)#5*$6+$8,%:-&1)A4,D6.F80H91I92K;3O=6UA:ZE<]F8\E6[D6ZC5YC5WB5T@3S?3R>2N;0M;0N<1M<1N<1M;1N<2S@4VB6YD7[E8]G9]H:^H;_I;_I;_I;^H;_I;^I;^I;^H;\G:[F9YE8VB6S@3P=1L:/G5+?/%8( 4$'  '&(&%*'%'"#    #!'#&'$(JA>ڵүάģʪ̪ӲҴŪԹӷ£׽ʳuslUxnb~~xxkt{~wlb^V?><,-,   *#8.&E8.QB5aO@q\Kt_MG=2RG4D;2SI=^RD_SFPE:PF:YNB_SFQG;8DA>C?EA>JFCMJGNJGQMJQMJPKHSOKTPMUQNSNJRNJQLHPKGOKGQMJRNKTOKPKGPKGQLHQLHQLHPKGRMIXSOXSNYTP[VR^ZUb^Z_ZVXSPUPLTOKTOL\VT]XV]XUXROXRO^XU]WS[UR\VSXSPXSPYTQ\WT_ZW^XTZTP[UR[VRUQMWRNZUQWRNUPMVQMZURWSPQMJOJGQMJTOLXTQXTQZVS^ZX_[Y_[X^ZW]YVVRPQMJRNKTPMWSOZVRRMIOKFTOLUQMVROWSPTPMPLIVRNWSPWSP\XU]YVZVRXTPXTPZVQ\XT[WS\XU\YV^ZVYUQYUQ[WS[WSZVRTQMNKGMIEJGBMIEKHD:B@dRlw܋tՉsшqcz[xToKiFeB^>[=X;T:{Q9vN7tN8tP;pM9pM;oN=tSCzYI`PeUl]seqw™—t~dvZiL]?X9S2P.P.Q.V1X2W2X2S1~M,O0yJ*h?$U6 L0H-K0L/L1K0L0N.P1 P1N0O/O.O.Q/Q/S/P,P+N(N(N'M'L&K#K%K$I!IK JFHGJIHHI!KLK R!U&W$Z(\)_, V ^ h+r6*^1'C"X1%YCpU}bǂfÂfx^dNS@uG8nB7jJBSMJQNJQNJQNJOLHMIEIEAIEAGD@EB>HEBIFBIFCNLIQNKQNKROMRPNPMKNKHROLURPVSQTQOROMROLROLPLINJGLHDLHDMIFIFBNICjaSzʵáţʩսƧʫ̭϶kI9)zk|vl`tgtguhwkxlxmvkyoezpevj|otwyx{| <95ID@NJFROLQOLSPMSOMTPMQNJQMIQLHSOKQMIOKGOKGQNJVSORNJNJFOKFLHCMIDMJEMIDOJESPLXURYVSWSOVRNZVR[WT\YV]ZWYVSSOLKHEFB?C?;HD@KGCIFBJFBFB?JFBIE@IEBKHEKHELIFRNIOKFNICMHCQLGOKFMIDSOK]ZV]YTWRNNIFNJFNJFKHDKHDFC?DA=EB?NKHUQMSPLRNKRNJUQMVRNVRNGEB())*+++,,/00021"""###,-.'((%&&*++()*''')**()(***,--(()&''&&&())+++***,-,'(()**-...//&''$%$((($$$"""!!! $$$&&&(**)*)*++)**&''%&&$%$&&&&'&%&%#$#%&&'()'()%%%#$$!!! ! &'')**%&&!!!###((($%%"""'('*++%&&'('+,+-..+--$%%()(*+*%%%!!!""""""))),,,+,,'('''')**)**(((('&&&%))(+,,((($$$'''''''(('(("#"%&%&'''''))),+*--++*)##"'''()(&&&QG>YNC=70ULBYODZOC*&"%#"$"!%#"'''''' !! &&%"""###&&%10/0-+'&&%%%(((---,-,,,+++*.-,+(%$!$"(&#*(%0-*/,)1.+0.+630:7341.0.+641520630742:74?;8?;8FB?HD@HD@JEAIE@LHDOKGNJFMIFKGCHD@JEBNIEOJEMHDLGBMHC[SL{maܿۻݾѲͭϰӳ߿ݼ¾}~zwuolkfcga_idaumhq`VeL<1C M$S-"b:*V1&Y5*F+#5V.^2 M,M/!O1&G,%2.$$"W1$Q+ \1%Y/#/' & ) -E( S-#L#F"< 185@&35% C">8@ M91XF=[I?H80/E!D k;*|F2R. 2.S.!tA/d6'M'<:H$3Q*%O*$>"))(+4)"4)#4)#5)#5*#5+$6+$7,%8,%9-%;.'=0)@3+C5-E7/G81I92J:2L:3P=6UA8XC7ZD6\E7[C6V@3Q=1P<1O<0Q=1Q<1K9/F6-E6,H8.J9/J9/J:0H90J:1J;1N=2S@5WC7ZE9[F:[F:[G:[F:[F:[F:[F:ZF:ZF9XE9VC7TA5R@4O=2L:0G7-A1(;+#5&3$* +)+*(*(&(     %!#'#' ˲۵ֱ̪Ю׵ܻԶƩھťĦзǯyvnVtk_|~|uzqfznyxmeaYCA>,--     +$7-%E8.QB5]L=p\JvaOH=3QG;H?4E<3TI>\PC^REPE:ND8XL@aUHRH=WMB1/,$%%#$$!!! "##!*(&,*)1/-41/853:75853530641>;8B?;B>;DA=D@=HDAMIFKGEOKHLHENJGSOLUQNXSPVQMRNIOIENIEMHDOKGUPMVQMTOKSOKSMJQKGRMITOJXSO]YUZVQVQMSNJQMIWRNWROWRNTOKTNKVQN[WT\XU`[X_ZW_ZV`[X[VR[UQ\VSZUQ\WT^YV^XU]XU_ZV\VR[VR\WTUPMWROWRNTOKTOLRMIUPLVQNOKGOJGUPMTPMUQNXTQZVSXTQZVS]YW]ZW[WTVRPOKGOKGRNJTPLYUQVQMUPLVRNUQMTPMWSPXTQTPLVQNXTPXTPYUQ[WSYUQWSO\XT[WS]YU`\X]ZW[XU_\X]XUXTPYUQ[XTYUQRNILHCIFBIFBLHDJFB@EBnYmuތr̈́nƂj{_wXuSoMhFcA`@^?]?XvR@uSA{WF`NhUo\ub|lv~™ɛșÐxgsWeH]?U6O/zJ*zK){L+yK*}L,~M,K*M,yI,uF)oC'g=#[7P4H.H.K/K-K/K/N0M,Q0R1 P/Q.R-P-P-O,P+O)N(M'L'K$L$J$H"I$I"E!GIGGGEB A K!W- Z1#X/!P$IOS%U$V'X$\'T Zb%m2'e0'M(L7iR~h͉s̋rlqZYErF7d=3a>6`CAUIFQNJSOLNKGJFBIFBHE@IEAFC?EB>KIFMJGMJGNKIOLIPMJPNKPMKNLILIGNKHQNLSQNSPMROLRNKQMJOKHOLINJGNKGQMJLIEHE@YRIyfưѹĢ¢ս׾ǨίٿzJ;,{pc|xkrewiyl{nsvuzn}shuizmrwzx{~  %$"KIFVSPTQMTPMTQNSPNTPMVROWTQWSPVRORNJRNJTPLRNKMJGNKGTPMTPLQMHRMIPLGPMHRNJRNIQLHNJFQMJWSOXTQ\XU]ZW]ZW\YV_\Y^[XVRNLHCIE@KFBLGBLGCLHDGC?>95D@;LHDKGCLHDNJGQMIRNIPLGQMGSNITPLNJFMIEUQLZVR[WRWRNPLGSOJSOKJFCIFCIFBLHDKGDMIFSNJTPLOKGGB?KGCTPLSOLB@>())'((*++,--.//###+,,'((%%%)))())&'&)))())***+,-'()$$%###'''()((((***''')))+,,*++$%%$$$(((%&&""#  "##$%%'((&('(**(**$%&###"#"%%$&&&&&&$$$%%%$%%%%%$$$#$# ! %%%'((%&& ! """'('%&%!""%&%)**&'(%'&()()***+*%%%'''((''&&"#""##%&%)**()(*++((('''((('((&&&'&%&&&***-.-*+*&&&&'&&&&%&%'('$%$&''&&&((()))+*)-,+++*%%$''&***))(SJ@XNC@:3WMCZPEVLA" #! #! #! %%%&'' %%$#$#&&&''&32120/)((&&&*+*-.-..-..---,1/.)&#%"# (%#+)&2/,0-+1.+/-*52/;747411/,752741631853;85>:7;75DA=IEBGB>GB=FB=HC@JEBKGCMHDKFBKFBLGCMGCJEAID@JEAOJEZSMsh^}еپ޽Ȩ˫׷׷޾{|xzwysp|urzw~wt~wtxurlikebf`^d_\kebnaZdOA[B1ZC4X@2U>0R=8)"5G"Y1%b;+W1&W2'@&4R,_3 V1 M/!O1&I.&2/%$"[4%T.![1%V.#) ' ( +-E( S-#L#D 2 .65E) 64 ! I&> 9@!P<3ZH>]J@XF<:";E!D k;*|G2S. 3,A"L*^3&V- N(79>>R+%M)#8))(/#5+$5*$6+$6+$7,%7,%7,%7,%8,%9-&;/(>1)@3+C5.F70H91I92J92L:2SD@TEAR=1T@4VA4T?3Q<1L:/H8.H7.H7.H7-F6-C4,?2*@2*D5,H7.I90E7/C6.F8/G90I90J;1O>4UB7WD8XE9XE9XD8WD8WD9WD8VD8UC8TB7RA6P?4N=3K:0G7.B3*>/&8)"2$1"'  '&)'&(&#&  ! %!$ k^SүģѰۺ߿Զʮپۿζ˳}}u\rh\w~}~{tyqf}ujvynd_XDC?,-,     +$7-%E9.QB5\K`TGQGJFCMIFJFCMIFIEAKGDQMITOLWSOUQMSNINIEPKGUPLVRNWSPVQMXSOYTP[VRXSOZUQZUP\WS\WTZUQVQMQMINJEQMISOKUQMVRNVQNWSPYTQYTQ^YW`[Y`[X^YVZTP\VQ^XT_XU`[XZURWRNZTP]XT\WS^YU\WTXSOZUQXSOUPKVQMTOKSNKUPLSNJTPLXTQXSPRMJTPLXTQUQNVRO\XV[XUYUSVSPUQNUPMUQMUQMXSOZUPXSOTPLRNJSPLWSPWSOWSPYURZVR[WR]YU_[X\YVYUR^ZV\XT]YV^[X]YWYVR\YU]ZV\XT[WSZVQYTPWSNSOJTPLUQMMJEJFBEIGp\mqׇnʂlăjv]pToPgHaB`@aB`AaB]?X#_:!V4O1K1I/I/K0K0M1L/N0O/R0P2!Q/P/Q.P/M-P+P+O)M(M'L%J$J$H"F"G#H#F#E GCA?G xF2[CfLlPkPgNYDtF5Z/#O%P"P#V&Y)V#U]# j/%m4(q?,U@kXlrp}geQuJ;e?4[<3T=:\GK_MLPMJPLHMJEMIDMIELIEJGCFB?IFCQOMROMNKHJFCHEBLIFOMJOLIMIFKHEOLIPMJQOLTQOUQNSOKQMIQMJPMJOKHPLIPMJIFBB?;IE>i`Rn̴¡վҺз£ʫI;-sh[qzl_xk|ostzn{rgxnczod{pd}reylqrr~ot0.,GDAPMJOLIRNKVROVRPSPNOLISOLURNSOKNJFC>:A=9LGCSOKQNJPMINJFOKFUQMVSOQMIOKGPLHRNJTPMRNKUQNZWTZVTZWTZWT]YV\XU_\Z`][[YVSOKLHDOKGWRNYVRSPMJFB@;7@;7HD?LHCSOKSOKPLINKGJFBJFAPMHRNJNJFQLHYTPZVRZVRZVRXTPVRNSOLLHEIFBKHDRNJRNKRNJSOKVROSOLLHDNJFWSPWSP?=<())'((*+++,,+,,###*+*(((#$$"#"''''''&''&'&)**+,-())%&&$%%())())(((()(''&****++&''###$$$'('''("##!""%&%'(('((&''())'((!"#!""!"!##"%%$%%%"#""""!!!$$#####$#!"! $$$&''%&% ! !!!(((%&%!!!$$$'((%''"##%&%'''(((%&&$%%###&&&$%%%%%(((())$%$(((()(()('((&'&$$#$#"%&%)**,,,*++()((((&''&'')*)'('())%&&'''**)+*)+*)**)&&%%%$()(,+*TK@WMCB;4XND\RGSJ?&$"%#"$" %%$%&&!!! ! !""&'&(('10/20/+*)&&%**)-.-..-..-0/.521&$!&$!#!(&#,)&30-30-0-+.+)1.+;84=9631.97363041.630963>:7?;8C@HC>KFASNJ\WSpg`x̴а˩{zw|urwplunkvpltnkoifnhepifnheic`e_\b][hc`siedRHW@1V?1T=0R>:(!.5V/$[6(S0%P.$: 4L(_3 V1 M/ O1%L0(31& $"]5&W1#Y0$S-"  * ' *.E( S-#M#A& 069 F) 51& K(A!:@!R>5[J?]K@^KAF,$? D!D j;*}G2S/ 3& W/$Z1&_3&T,N(O'K&8I$R+&E#()) (2& 6+$6+$7,%7,%7,%8,%8,%8,%9,%:-&;/'=0)@2+C5-F6/H71I80J80NCBYVZTNPG6,N;1N;1J9/F6-F6.H7/F6.C4,B3+A2*@2+>1*=0)@2+B4,C6.C6.@4-@4,C5-E7/D7/B6.H:1O?5TB7UC8UC8UC8UC8TC8TC8RA7Q@6P@5N>4L<3J:1F7.C4+?1(:,%5'!0". %  #$#'! #   "!&!#ǰݹЮʩѰֶӴгçӷ׼ѸϷ­{|t\qh\w~|xuyn~vktzoa]UDC?-.-    (!5+#E8.QB5ZH:fSBq\JNC7SI=JA6D;2OE:ZNB\PDQF;KA6RG<^SFQG:FB>JFBKGDHD@IEAJFBLHDQLHRNJXTPTOKRMIQKGPKGUQMYTQYUQ]XU^YVXTP[VS\WS\WS[VRYTPVQMXSPXTPUPMQMIPLHRMISNJUPMWROXTQVQNUPMZVS_ZW`[X\WSYSOWQLYRNXRN\VSYTPWQN[VR]XT]WS_ZW]XTZUQUPLVPLWQMWRNXSOTOLVQNXSPXSPZUSXTQSNKQMJSOLVQOYUR[WUZWUVSPQMISOLXTQXTQZVSZVSWSOOJFJFANJFRNKTPMTQMWSP[WSZWSYUQ\XS]YU\YV[WT\XTZVRYVRYVS[YV\XU]YU\YU[XT[WSVQMTPL[WT`\Ya]Z^ZWVSOQMIJLIq]moтk~hzer\lRhLcF`B^@_A_AaC^@\?\?Y>Z@\D[EaLgQnXu_|emv~ĘǙșǗu}dlR\AQ5wG-h>$a: Z7X7Y8 [:!];!b>$c;"e="a<$\8"V4O0J.H-I/I.K.L/M/N1M.O/P/Q/O.P.O/P.Q.N+O)N,N)K'K'I%J%G&E&D&D#E$D"DEA7 Y0!aG}_|`tZjQ_GS?|K9uG8oE8c2X:0T;3YB?dMOiRQSNJMIENJFSPLXTQVSPQNKLHDKHEQNLPNKOLIJGCHEBKHFQNLPMJNKHLIFOLJMJGJGDLIFROLTPLSOJROKSPMSPMQMILHDD@#>;'0*9!5&1#0#/ 0F%^3 W1 M. O1%M1)31& $"^5'Z3%J(E% )' * .E( S-#M#A# 35:;43 $ J'B"<A"UB8\K@^LA`MCL5->D!D j;*}G2U/!3#  X/$I&I(O)O(X,"D#5M' R+&@!')) (4(!4)"6+$7,%7,%8,%8,%8,%9,%9,%9,%:-&1*>1*@2+>1*<0*<1*>1+>2+=2+?3,@4-=2+A5-E80E80D70B6/D81K<3P?5SB7SB8SB8SB7RA7P@6O?5N>5L=3K<3I:1F8/C5-?2*<.'7*$2%, +$ ))0""'#"'     !QGA۷Ϋάͭв׺ָǩؽ׽ֽȴ}~v]pfZv}ywvym}rxn^ZRBA=...  ' 5,$E8.OA4ZI;gSBoZHPD7RG;LC8D;2OE:YNA\QDRHJFBLHDGC@FB>HDAGB?MIDQMIVRNTPLRMISNIUPKXSOXSPYUQ[WTZURZUR]XU[VRYTPXSOWRNWRMWSOWSOVRNTPLQMIRMJSNKTOKTOLUPMUPLVROZUS^YV`[X_ZW_YU]WR]WSZTPZURYSPXSO[VRZUQVPLUPLVQMXSOWRMXRNWRNWRNZTQXSPYTP]YV^YV]YV\XUXTQUQNSOMWSQZVTXTRWSPVROTPMTPMVROZVS[XUXTQVRORMIQLHSOLUROTQNSOLSOKSOKSOKQMIVRMXTPYUQ[XT\XT[WSYUQWSOWTQWSP\XTYUQWRNWSOUQMUQMZWT^[Xa^[`]Z[XUWSOQROp^nm}fucr_nZhPeKcFbD`C`C\>]?[=]?\?\A\B^F^GeNkTrZxa{djs}ÕƗǗÒ|qyahNX?~L3rD+d;#W3S2N0P1N1L1P1R3R2R1S3O/K-H-F-G+J.K0M.L/N1M0M.O/P0P0O/P/N-N-N,O+O,N-M+K(L(I)I&F$D#B"A$C B@?4 T. eKb˄k}hs^bMN5aD=X81K M R#T%S&V"a)i7&tA/M;\JgTlZiX]LuJ<_;1U9/X=4]D@fOPnUTTMINJGOLHTQMXURYVSWTQROLPMJRPMQOLROLOLIKHEMJHNLINKHLIEHEAKHELIEGDADA=IFBNJFOJFPLISPLSOKPLHKGCFB>EB>B>:C@:[TGxcͶӻϷѸжԹεXJ;h[M|lwtgymb|qeymxywzwssqsv{@=;HDAFA>GC@GC@HC?JE@QLHWSPVSPRMJQMI[WSXTPSNIPLGRMIWSOWTQUROVSOURNSOLRNJQNJOLHMJFNKHOLIPMJQOKROLPMJPNKTQOUROQMJKHDLIFROLUROVSPSPMQNKIFCGC@MIERMISOKPKFOKGJEAIE@JEANIDRNISNIOIDOIDPLFOJENIDPLHTPKSOKUROXURVSPROKPMIHEBHEANKHNKHROLUROURPROLPKHPKHSNJPLH654)**,..,..+,-+,,$$#,-,+++&&& (((+,+)))%&&%%%'(()**'''$%%'''$%%%%%'('''')***++&'(""#&&&++++,,##" %'&'((%&&'))&'''('&''"###$$"##!! $$##$# $$#%%%&'&""! !!### '''())%&&&&&*+*)++#$$&'&'('((''&&$%$$%$$$$$$$#$$%&%%&&%%%&'&'''))('('%%%###!!!""!'(')**'((((''&%(('***)*)&'&&&&)*)***...//.10/-,,**)$##))(52/ZPERI?>70YOD]SHRH?(&%&$#$"!""!#$$#$$###(((000222..-''&**)..-///00011120/&$!'%"'%"'%")'$/,)3/,30-1.+52/:74;8552/97386341.963=96>:7EA>EA=GC?LIEOLIQMJPMISPLUPMSNKPLHPLHQMIUQLVQMUOJVPLTOJTOK\VQtja~ҹԹݹڷݻݾᵫ{vulhhcaa_]^mjj{wvºƾǿ~|~~{~z|y~vs{tpwolrkhlfckdbjdajdbkebhc`lfcmgegb_c^\a\Z]YX`ZW\NGR=0P;.O;.M9-K7,I6+H5*F4*D2)C1(A0'?'>=$0( .3&1$0#/$0"?!\1X1 M. T5(R4+=%6+%! _6'c8)81% ( +.C'T-#M#> &:"3? F$<#3$"H&B"=A#WD:]KA^LB`MCS=5=C!D j:)}G2V0!2$ ^2&;1L'Q)S* ;=O("Q+%9')'7'"O;3A1)8+#4)!5)"6*#7+$8,$8+$8*#7*#9+$;-&>/(@0)@2-@9:A?CDDHHHMKMTQQVG@A@2+E6/D6/F70C5.A3,>2+<1*<1*@2+@2+;0)<0*<1*=1+;1*;0*>3,@5-B6.C7/C70E81B70B70E92G:2M>5QA7RB8QA7P@6O@6N>5L=4J<3J<3I:2G90D6.A4,>1*:-&5)#/#**!%$' !' #"& #! ۷ٴҮѮήͰҵڻͯ׽ֻԼı}y`oeYu~}wz{p}r~wl[VO>=:-..  & 2)"B6+PA5]L=fSBlWEPC7QF;MD9E<2RH:7A>:GC?IEAKGCHD@B>:C?;FA=MHDOJFQMIUQMSNJTOJUPK]XU\WT\XU\XUXSQVROZVSWSOWRNWRNXSPYTPWRNUPMVQMUQMQMIRNJTOKUPLUPMWROWROZURZVS[VS]XUa\Y`[W^XT]WS\VS[VSYSPWRNXROXSOSNJRMIWRNWRNXRNZURYUQWRO\WS[VSYTQ^ZXa][^YW\XUXTQTPMSOLUQOTPMSOLOKHRNJTQNROLSPMTPMXTQWTQUROWSPYUQWSPWTQUQNROKRNJRNITPLWRNWRNYUQYUR]YU^ZV\XT[WSYUQXUQXTQYUQYUQYUQWTPVSOVROXURXUQZWS\YV\YVYVSQSQl]l؀iybr_o\fTcN`I^F^D\B[@Z>\?[>[>Z=\A\C`GcKhPlUqYv^zbgptywrir[cKT;yI0k?(`8"S0H*F*E)D)C*B*E)F,F-E+G+E*E*F+F+H+K,L0M/L/M0M0L/N0P1Q1O/O0N-O.M,N,P-O,L+L)J(I(G%E#D"C B ?>=4 G']CvYɀfŁkziiXQ?lB4_>2S:0N8.M91T@=^EAL(HJ"P&S+!S%])e5%n=-xG6TB]K`O\KyO@jC7^;2X;1Z?6_FAhQQqXXXOKPMJPMJSPMTPMTQNVTQUROROLROMQNKOLIMIFIFBJGCKHDKHEJGDHDBHEBKHDKHEDA=D@GB>HD@MIEOKGPLGLGCJFBIEBFC?><7KF=rgVu̶ĬªɯҷɰXKD=5WNC\RGMD;&%$%#"" "! #$####""!))(./....))(&&%)*),-,./.11123221/*'$)'$+(&*'%(&#/,)/,).+(.+(41.85263042.;85<9652/841<85>:7D@&=)!1) 0 5( 3&2%2%2$;Y0X1 L. U6)T6-M1)2,& W1#a7(<6# ( *.B&T.$M#>9#pD5e=1<$C P(G*!.)  B"C"<A$WE;]KA^KA_KBT?8=B Cf8'~H3_5%0 5^2&75N(L'D"@#I#P)#P*$2()&C1,VA:U@8P<5L91C2*;,$9*#5(!5(!5' 6' 7(!7*$7+(2*)3159:@<=B<<@>>BBDJIJQOKNF82B50C60G92E70B5.?2,=1+?3,B4-A3,>2+=1*=1*>2+>2+<0*<2+@5-B6/C7/B6/B6/B70A6/C81E92G91K=5QA8QA7P@7O@6M?5K=4J<3J<3J<3H;2F91C6.@3,=0)8,&3'!-!(( 81-JA<!'%*  !&!&MD?۷ԯҮٶֶѳͰʬ¤ܿѸ~fofYs~~y|}ps}vkWRL:97-..  &0' =2(N?3]L=hTCmXFPC7PE:ND9E<3UI>[OB_SFSH=OE9ZNAaTGSH=KB851-#%%#$$!"" "##!""      *'%2/,1/,2/,31.631520741852?<9C@C>:HC?KFBMHDPKFPLHWRN[VR\WSYTP\WTYTPWSPWRPXTRUQNQMIPLITOLSOKTPLSNJRMIRMISNJRMIPLHRNJTOLVRNVRNVQNSOKWRO]XU^YV\WT_ZX]XUYTP\VSa\Y^YW\WT^YV`ZW^YU_YU[VRZUQXSPVQMUPLVQMWRN\VR\WTZURZVS^ZX]XV[VSVQNTOLUQNUQOPMJQLJPMJPLJROMROLPLIRNKVROVSPTPMQNJOKHOKHPLIPLIROKSOKTOKZUR^ZV\XT]YU]ZV\YUYUQ\XU^ZW[WSZWSZWSVQMUQMVRNXTPZWTVROURNTPMTQMYVRZWTXUSJMLiXk{ew`q\kXbP_K]HXDVAV@U?U>W?V[@\B_FcJdKgNoWv^x_|d~ghj|fs]hR[DP8{H/i='W2L,C(?&=%=&=&>%@%A%B'A(D)B(B(D*F)F*H+G*I+K-M.M0M0L0N0O/O.N,O-O-P/O.P/O.N+K)I(H'G%D#C!C!B A?=9/ ~I4kOu[|dzfo^ZHpD4gB7\>3T9/R8/S:2ZB>gKHQ1*C!FH"P&O#X)`2"h:*qB2|L;9NKHNKHNKHLHEOKHSPMTPMVRNWTQUQNVRORNKLHDMIENJFJEAJEAOKGPLHLIELIDNJGKGCJEBPLHURNWTQUQNUQMTQMVSOTQNRNKPLINKGNJFMIDOKFNJFRNINKGKHEJGDKHELIEQMITQMPMIMJFJFBKGCQMITPLPLHOKGPLHLHCNJDQLGPMHLIEWTQYUROJEID@QNKZWT[XUWTQTQMSPLURNSOLTPLSOLOKHQNJTPMPLILHEKGCGC?0/.-.-())$%%())&''$#"'''-..-..'(($%$*+*+++%&%"##&&&*++**)$$#$$$%%%%&&$$$"""&''*++)*+#$%$$$***,--**)###'(''((%&&&''&''())())'(('(($%%$%%%&%&&%##"!! "!$"!(&%(('""! ###$$$ !!&'''((&''$%$%&&%&%&&&***()(&&%&&&(((()(''''''((('(($%%&&&)*))*)(((''''''''&""! %%$''&$%$&&&$#"&%$&&%######'('+++&''******--,++*)*)%$$+))951[PEPG>G?7VLBZPEJB: ### !!"!!**)./.---&'&$%$(((+,+-.-/0/00020/+(%)'$.+)-*((%#/,).+(+(&+)'20-74141.31-:73<9640-841A=:D@=HDAJFBOJGOKGNJFQMJUQMWSOWSPXTPYTPVQMPLHPKHOKGNIDRMITPLTOLSNJ^WQuj`yиۻԶַ޿Ծ<@EE5*}^Hu[elkkjfy_oXhSxYH_H7YB9]E;[C:V@6K8/E4,C3+C3+>/)0,+-,/((+-,056;9:@78<:;??AFEGNJIOM@=I:3E82I:4G92G92E70C5.E6/D6.C5.B4-A3,@2+@3+?3,=2+:0*;2+?5-A6/@5/@5/B70@6/@6/B70D81E92I=4PA8QA8O@7N?6L>4J=4J=3J=4J<3H;3F91C6.?3,<0)6*$0%+&%0'#C:5 *+1+)/   "!#"'#&ݸֱЬ״ܼٺϱؼպѷ~s}u\kbV~r|z|ssyshQMG553./.   &.&9.%H;/YI:fSBr\JTF9OD9ND9F<3WK?^QC_SERGD?;ID@LGCNIEQLGPKGVQMZUQXSOTOKVRNWROUQNUPNSOLOKHNJGNKHRNKSNKRMJOKGMHDMIDOJFPKGRMIUPLVQNVQNVQMVRNTOKWRN]XV_ZX\WT^XU]XUZTQ[VS\WT\WT`[X`[Xc]Zc]Zc^Z_ZW]XU^YV^YV[VSZUQ^XT]XU[VRYTPXTQ[WTZURZURWROUPLUQNUROVSPWSQVSQSPMROLTQNUQNWSPXURXTQUQMRNKOKHPLISOLQMISOKUQMVQMSOKXTO[WT[WT\XTZUQWRN[WT^ZW^[W\YV\YU\XT[WSXTPVSOXTQVSOUQNWSPUQNTQMWTQPOMrmgyyfwar[lWdT\M]J]IWDR@~P>|N<|M9R[A]D`GdJiPmUnUnVoWoXnXhRaKV@L5vC+k<'Y2J*@%;"<$:#<#=$?$A%A&B&?&B'A&A)D*E'G+I+G)G(J+L-M/K/J0M.N.M-L-O.O-O,N,Q0L.N*M*H'H'G&D$B"AA!>>;- U/!\BjOqXu`p]aO{L;i?1d?3^=3V9/U:0V<3\C?jNKX81B@@P' T' U'\/ c7'j>.rE6tK;qK3];2Y92T:3V>5]D>eNLpWWaRMQOKPMIPMJQMJOKHQNKSPMQNKNKHOMJOLIOLJOKHLHENKHQMJRNKROLPMIOKGQNJRNLLIFJFBLHCOKFMHDOJFPKGJFBGC?GC?D@=>;7<94ID=mcUnǯպҹoaORD7xse}}|~ywsttwzvq~pry  #! KIFQNKROLQNKPMINJGQOLROLSOLSPMQNKQMJPMILHDNKGQMJOKFJFAMHDTQMSOLROLOMIKHEMIFSOLVSPXTRVROTPKQMITQMUROUQNUROURORNJPLHRNJQNJPMHOLGLHC?:7=95HD@OLIURPWTQVRNSOKSPLVSPUROSPLPMHMIDKGBIE@FB=EA>C?83\QFLD;H@8WMCYODH@8##"'''$%%  !! ()(-.-...)))$$#&&&*+*,,,..-...320,)%(&#.+(.*')'$1.+2.+-+(.+)41.74174141.962><8741;74B>;EA>HC@GC@LHFOJGOKGMIFOKHTQMXTQYURXSPSNKNJGRMJRMIQLHTOKWSOWSOUPL[UQiaZxlѸ˳ʱ׻ܾڼҳԵݽܼǵL7)d⪁첇첉篈守ᬆݨ٥֢աҞ}̚zŕvmx^cO_H<7-* "&+CBB^ZYxqo~xusmjmfcmgdpjgtmjtmjsmjrlioiglfdicaga_b][^YX\XV[VU^YX]XWYUTVQPPMLQMLQFAL:.K8-K8-I7,H6+G5+E3*D2)B1(@/'>.&<,%;+$9*#7)"6(!6(!5(!6& 7E%M,M/ M2&R6-S5,4:& ! 6M-?#;%  ' ( /: S-#M#??$P>S@wK7U+ O$Q-#D'5.B"D$= A$VD;[I@\IB]ICYE@B&B!E H#>#5+8"N-"=&>!N(O(P*"J) K#P*%J&!))( ,Q<6T?8U@8V@8\D;^F<]E;YC9R>4L:2L:2H81A2,2-+++,)),('*11589?67<34989?@BIBDLHACI;4L=6P?8P?7P?7N=5L<3K;2J:2J91H90H8/H8/G8/E7/B5.>3,;2+>4-B7/?5.@6/C80D81A70>5/@60C81D92K>6QB9QB8OA8N@6L?5K>5K=5K=4J<4H;2E81B5.?3,:.(4)#/$)$* <3- "()/44<(&*   ""%"%%"$# 'LC=ײ̨ղٻؼҵҶĪ{rjunSi`S|p{|zzu~rvodLIC110-//    &0(!:/'H;/VF8eRBr\JVH:MC7NE9G=3WK?^QD_SETI=MB7ZM?^REQG;EA>MJGNKGKGCD@KFBLGBMHDLGCSNJXSNXRNSNJTOKXTQZVSYUSTPMMHEOKGQMJSOLTOLTOKSNJOJFNIESNJVQMYTPZVR[VSYTQWRNWSOTOLXSP]XV`\Ya\Y`[X^YV\WT^XU[VS]XT`[W_ZVb\Xc^Z`[X^YV^YV^YV^YV^YV\WT^YU]XTYSOXSNXSOXSPXSOWRNWRNTOKTOKVRNWTQXTRWSQTQOVRPXUQZVSXTPVROWSPUQNTQMUQNVRO[WS^YV]XU[VR[WRVQLUPKWRNVRNXTPZUQZUQ[WS\XT\YU\YV\XV^ZV\XTZVSWSOWTPVSOUQNTPMSPLOLILKIwoʳǗvbt_oZhUaP[NYJWFTBP?{O>|P>xK8{M8O9N8O8O8Q9T#76 9 ;"=$?%?#?%@&B&A%@%A%B'D'C(D)G+F)G)H+J*K+I)J+M.L-K+L+N,L*M+L*O.O-O+M)F'H&G%C#A!?=;<7* xE1^EhOmUnYeRUDoD5e=1a=2^=3[=2Z>3[@7`FBkOKY93?=<M(T,$Q%W,]3$b9*g?0iC4eC5^>2Z:0Y:1V81R82T<4[C:?=8A>8XPGravë׼ؾѸ|nXJB<8ID@TQNWURURPUROWSOVROUSPTQNTQNTQMRNJQMIPMINJEIEAJGCLGCNJEPKGTOKTQMSPLTQNZWT[XVZXUZWTTPNOKGMGCOJFQMISPLOLHKHEQNKMKH,,,-..,--&'&&'&###+*)"""**)---**) &'&+++&&& %&&*++,,,%%%#$$%%%&&&)))&''#$$())+,,())$%%()(./.---%&&'((&''#$$!""$%%*++*++''(&''&'''('()(((($$#%%$&'&'''&'&&&&!"!#$#$%%%&%!"!"!!$$$$$$&&&)*)'((())+,,*++)**)**'&&&&%$$$&'''''%%$$%%%&& !!$%%)))((()))()(((())('''$$#&&%(((%%%'((###&%$#"! !!)**,--%&&"##&&&***!""$%%&&%'&&@:4]SGMD;NE:8B?-%<,$:*#9)"8)"7)"7)"7'!8;F'L- E/%A+#=#-D!& " 5M.A$;. !#/8R,"M$@?"N=S@wK7U*O#P*!I*!70?!H&?!C("WE=ZH@[HB[HBXE@P<7K2+F!H#B$8 ' ;> ,D$N(P)O+"I(L%Q*%E#')'6%!R>6S>7R>6WA8]F<^F<\D;U@7O<4L:2L:3K;4E6090-,+++*.&%(--178>:5M=4L;3K:2J:1J91J91J:1J;2J:1H91E7/A6/B70?5.?4.>4.D91F:3@6/>5/B92D:3F;4NA8RC:QC9PB8NA8M@7M?6L>6K>5I;3G:3D81A5.>2+9.(3)#-"'-$ 8/* #$)119118%$'  ""%!$(%( ıֲţֹѵշȫֻ|pxrVj`R{o}{{wxsumcJGB00/.//   %0' :0'I<0WG9eRBr]JZJ4WK?]PC^REWL?MB7YL?]QDPF;MD::5/!##&''&''"$$&(( ###!""       (%#.,)0-+2/,30-30-42/641@=:FC@GC@LHEKHDJFBD@zM">!>$@#?$@%?"?!@#A%@%B&D'D(E'F(G(H)H)I*K)K.K.L-L-L*L)L*K*L*L+L)H(F&F%B"@ >=:938P9^EdLhQgT]LzL1_:0];2\=3]?5]@6^B9cHEkOLX81=9!7F$U/%L$Q)V.!Z4&^8+^<84A=9EA=KGBOKGOKHQNKWTPZWTXVSYVSYURYUQYUQZUQXTPYUQTPLOKGQNJVSOSQNJFCNJFVRNYVRVSPWTQWTQVSPWTQWTQVSPSQNOMJPMJRNKYUQVSPPMJSPMSOLSPMXUSWTQOLILHEOLIQMJMIFNKGPMIPMIRNJIEBIFBFC@(((*++,--%&&&''"#",,+"""(((-.-,,,###&&&,,,((("""()),--.//)**'(('('''&**)++*'''+++-../00,--'''*+++,+%&&&'''((&&&###$%$*,++,,())&''&&&&&&''''''%%%'('&&&&'&$%%#$#""!&&&%&&$$$!!!##"''&'('()()**'(()**-..+--)***++))(('&$$#'(()))&&&"##$%%$$$()(()()*)'((&&&()(()(%%$$$#%&%$%$***())))(&&% "##***,-,'''"""%&%(((###&&%'''B<6\RGJB9SJ@YOD[PE=60! " "! !! $%$'('"""##"#$#!! &&&..-/0/,--&&&''&--,..../.011653+($$"+)&+(%*(%/+(3/,1-+1.+740;74:74863973?=9:75@<:@<9C?GC@HDAHC?KFAMGCPKFSOJWSP\XU[WSYTPUPKSMIUPLVRNPKGSOKUQMSOJPLHTOKg_XsڼӶ(16iMȔ‘벋鰉嬆ާ٣Ӡ|ΛxȖtojcuZfNmO=H5, #545TPOlecuolrljjebf`^fa^idblfdmgenhfkecf`^a\Z]XWZUTUPOSNMTPNUPOVQPUPOSONMIHLHGOEAM:0K7,J7-I6,H6+G4*E3)C1(A0'?.&=-%;+$:*#9*#8)"8*#8(!8:B#B%?/(4",2N&) ! '6M.D':8*! ".5P*!M$A8M-'Q=6S>6R=6U@8]F<^F3/2/.++.'&))),349:ACJ?@GI?>H;5H;5I;5L=6O>6O>5N=4L<3K:2K:1J:1J:1K;2K;2L;2K;2K;2I:2E91?6/=4-;2,?6/F:2E91?70@71C:3@82G<6OB9RD:PB9PB9PB9OA8OA8N@8K>6I<4G;3D91A5.=2,8-'1'")3)%6-( ((/,,3((.#"$  "!%"%&#&# &KB<ݺֳŤٺäͮèѶëoqkRh^Qym~~{ww~rslaIFA//..//   $-%7-$I;0[J81"##)**'((#$$'(( #$$"##       $" (&#/,*20-41/31.41.631=:8?<9B?;GC@EA>FB>GC?FB>GC@MHENIEPKGPLHRMIQLGQLGQKGUPLWSPWSPVROXTQXTR[WTXTQWSPXSP^YVa[Xa\X^YU]XU_[W^YV\WTZUQ[VRZURVQMVQMXSO[VS_ZW`[Y`\Yb^[a]Y`[W_ZW[VRWROVPMYTQ\WTZUQWROXROXSPXSO^YW^YV[VR\VS^YU\WSYTPWQM[UQZUQ\WS_ZV_ZV]YU]YV\XU_[X\XUXSPYUR]YV_[X[WTVRNUQMZVR\XU[WSXTQYUQVROXSOXSPXTPYUPWRNYUPZVRXTONJELHDSNJ[WSZWSTQMWSOTPLTPLVRNWSOVRNUQNNLI[VQպyhZcVjYlZdT]N]MZJUGVESCP@yL)f:%^3 X0N+F&;65579"?$>"@!A$?">#A&A'@&A'B(B&D'F'G(G'H)I*J,J,K,I,N,L*K*K+L)N+J(G&E&E%B#@!=:98/H)S;\DaIbL^KTCpF7a;/Z8.Y:1Z<4\@6]A7^C:dJFkPLY;3=!:4?"P+ G K&O*R/"V3'W6*T6+Q4+R5-S7/S81N71Q;3YB:_IEjSSiSOJGCKHDLIELIELIEJFBGC?GC@EB?GD@IEBKHELIFPLIRNKQNKPLINKHOKHKGDMIERNKQMIOKGRNIPLHLGCHD@GC?JFBMIEJFBFC?EB>C@:6JD94C=8ID?NJENKFMIFPLIROKVROWSPYURXTPYUPWRNXSNXTPXUQSOLTPMUROTQNXUQSNJOKGVROWTQOLJQNLUROXURVTPPMJPMJNKHKHEKHEJFCNKGSPMQNKTRNYVSYURYURTQOKHEGC?KHDNJFIEBIEAHDAHD@KHDGC>E@;?;8%&&***-..&'''((!!! ! ,--###%&&.//011))(#$$*+*)))"""&''+++-..+,,)*****)))+**,,+***+,,.//123122*++())()("##%%%'((&'&%%%$$$)***++())&''&&&%%%%%%'('(('***&'&&'&$$$##"###'''''&###!!!###''')))*+++,,*++***,.-+--)**+,+**)%$#!"!'((,,,)))$$$'((!!!$%$)***+*)*)'('$$$&&&()(%%$$$#%%%$%$)))'''''&$$$ !""'((,-,)))$$$&'&)))#$#$$$$%%F?8YODA:3RH?XMBZPE<60#"!%$#" !! $$#&&&!!!""!"""$$#,,,-.../.)*)(((--,*+**+*.//653-)&%# +)&+(%*'$,)&0,*0-*2/,841;84<96;95852=:7964@<9@<9D?6R>6U?7]E<]F=XB9N<4M;4M<5L;5L<6H:5B51720++-)),'')01588>67=026248@BIBDLE@BH;6H;6C83D72F92G91I:2J:2J:2J;2J:2K;2K;2K;2K;2J;2J:2I:2K<3J<3D91?5/=4.A70C81A71@71A82>61E<5K@8QC:J?7L?7QC:QC:QC:OA9N@8L>7J=5F;3B71?4.<0*6,&+!D935,'  !++1%%*%&*! "  #"&#%'$&*'*лݺЭϭڷѰťȨϱĨϵʰ}lrlSh_Q{o||vv|pslbIFA./.-/.   #,$6,$H:/\K=hUEq\JZK=H?5ND9J?5WJ>[OBYMAXM@K@6[M@_SFRH82#$$)**())"##&(( #$$"##         !(&$/-*30.852963852:64>;8?<9A=:DA=D@-e<+f<+d<)c;)g>+g>*j>*m?*m?*j<(l=*f8'^2 X/P,L)E'?$98998::!:!#>">#>"@"A#?">#@$?#?$>#?$?$A%C%D&D&D)F)F*G*G(F(I+J*I)K,L*L)H(F(F&E%B#?!::87* X3#R;ZB]G\HXF{M=iA4]:/V6.V90Y<4[@7\A7^C:dJFjOKS70971;!L(CF#J'L+O.#P1'N2(M1)O3+Q6.R81O82O92V@8^HChSReROEB>GC?KHDLIFKHDLHDHEAFC?D@B?;>;7:73;82QJ?xjXuӽœ°oO<,tfwugzlzl{nym~shtu}vqwjzmtz  FB?TPMWSPYVSTQNOLIMJGOLJROMRNLURPVSQVTRTQPPNLJGDOKGQMJTPLUQNWTQWTQTQNQNKROMSPMSPMRNJOKFPLGSNJSOKQMIRNKTPMUQMVRNUQNXTPWSOXTOYUQWRNVQNUQNQNJQNJTQMQMJWSPXTPTOLURNRNLJGDHEBLIEOLHOLHJFBMJFLJGKIFNLJNJHOKHROLTQNRNKVSPXVR[XUYVSQNKLIENKGOLHOLHSOKNJFJGCMIFLHDNIEDB>()),--/00())***%&%/00&&&#$$-.-222...#$#((()**###(((+,,,,,+,,((((((***)))++**+*+++...012122-..&&'""""""&&&%&&$%%"$$&'''((&''%&&$%%######%%%''&**)''&%&%#####"$$$''''''""!!!!%%%'(()))*+++,,*++)**+,,+--())*+***)$##!!!'((+,+'((%%%'(("##"""())***+++)**&&&&'''''$$$$$#%&%'''*+*'((%&%"""!!!"""'''+++)))%%%'''+,+'('###!!"G@8WNC>81RI?WLAXNC83-#!  ""!$$$!!!"#"$##! %%#++*./.010---,,+10/''''('+,,321,)%%#!-+(,)&'$!(%"/,)0-*40-841962;85<:6852<:7:85B?:FA=LHDXSP[UQSNKQLIUQMYTQ[VR\XT^YV]YUZVR[WS[VRZUQZVRZVS[VSZUR[VQj`Xuǯʯϳշ׹ָݽҴٻצtSďʕœ“ﴌ벊歇ᩃݥآ}ӞzΙvǓpkhda{^w[sWjQ_HmL9J4(+"  -./OKKhcbpjijeca\Z]XV^YW`[Yb\[b\[_ZX]WUYTSVQORNMPLKPKJPKJRMLQMLQLKLHHKGFPEAN;1L8,L8-K7,J6+H4*F3)D1(A/&?.%>-%<,$<+$;+$;*#89>.'@0)B2+<*$-. Q'C)!X9.W<2O0$M-I+VD?VD?SA5[E;\F2380169;AEHPBAGF;7I<7E94C72C71@4.A5.C6/C6.C6.D6.E7/E7/E8/D6.C6.B6.@5.D80J<4M>5I<4D92A71?6/?60@71C92@71B94G=6NB:I>7A82L@8RD;RD;PB:NA9M@8I=6?60:3.:2-8/*7-(0&"NC<*#  ""'++1&',&',!"  $!#(%'(&(*(+ 'tiY޸ڴЬšֳͩάȧͭΰƩԺɱ|jsmTh_Qr~~vx}qrkbHEA/0/.//    #,$8.%G:/[K=gTDoZH\M>G>4PF;I?4VI<[OBWM@XMAI?5ZL?`SGWL@G>5>81$%%***)**!""%''!"""$$"##       &$")'%0-+630630963<96=:8=:7@=:A=:@<9=96A=9A=9@;7@;8GB?MHDQLHVQMRNJSNJUPLUPKWROWRNZUR\XUZVSXSPUPMXSPZUR^YV`[X_[X`[Wa\X_ZVYTPWSOXSOYTO]XS\VQWRMUOJVQMUPMQMIYTP]XU`\X`[Xa\Yb]Yb]Za\YZURVPLUPLXSOWROTPLUPLYTQZUQ[VSZURWQNWRN\WT]YU[VRZTPXSOTOJPJFMGCMHCPKGTOK[VR^YV_[W_[W]YUZVSXTQYVR[WTVRNXTQZVSWTPXTPZVRYUQXTPXTOVQLSNISNJWRNZUQYUQVRM\XU\XS[VRXTOVRN\XTYUQTOKSOKOKGBA>|piѹwki[kZl[kYdSbQ`NYIYJ]LXISERDzN@uJ$>#=">"@$?$?#?#@$@#?#B%C'E(G)G'H)F)G*I(J*K)J)G(D'E&D%?%="9 :64) b:(Q:WAYDWDP?pF7d>2[9/T5.S7/W<4Z?7[A8]C;cJGhNJP5.65.8H%@B!E%H(J+ J.$J/&J0(M2+O5.Q81P94N81T=6\FAgRRlVTKGBFC?HDAKHEKHDMJFLIEJFBGDAJGDMJGMJFKHDLIELIEKHEMJFMJGMIFPMJRNKPLIPLIKGCKFBMIDOJFNJFPKGOJFLGCIEAGC?EA>C@<>;896252.?:3aVHxastN;,}n_xzm`~ptgthuiz{xwuuvvvw  '&%PMJROLOKIQNKQNKHEBDA=IFBOLIPMKQNKSPMTRPQOMNKHKGDMIFQNKURNVSPVSQUROTQNRPMSPMTQNWSPUROSPLTQMWTQXUQVROXTQZVRZVRXTQUQNTPLOKGRNJVRNVRNSNKSOKRNKOLHSOKTOKUQMUQNNJFLIFOLHRNJRNJQMINJFKGCKGCMJFQMJOLINKIOLIMIFJGDROLUROTQNSPMTQNQNLMKHMJGOLIKHEDA>IFCHEB?<9FCAKIFKIF?=;$%%,,,///()))**%%%/0/'''"""*+*000./.###$$$((($$$%&%'''(((*+*&&&###&&&''')))))))))***,--.//.//%&& ###"#"!"" !!$%$%&&%%&#$$$%%"""!"!##"$$$(('%&%### ""!###&&&&&& ! !!$%$''')))+,+*++())'(()***,,())()('''""!%&&()($%$$%%'((%&%!!!&''()))*))))$%$%&%(((%&%$%$%%%()(())&&&&&&!"!!!!!"!''''(''('''''''******%%% G@8WNCB;4ULBVLAUKA/+&!!! !"!!! !!!#""##"&&%''',-,122./.-,+443+++'('+,+10/*'#%#!,)'.*'(%"%# /-*2.,40-52.740;84=:7863;96;86>;9>;8<85>:7B>;E@,%=,%=+%88?-'A1*C3,>-&-4O'E3,J:4M92R3&M-K,?#;2'*-G)!6 4-nC4UBa:-N#T&P$O%<7&4A#B& TB>UC?TB=P?:L;5H60G3,H+!="<"96]4$`9&=L%i<+g;,I%D)"F-$;!y`wZG-& 5$ Q<5M:3O;4P<4Q=5YD;[E;R?8L<5M<6N=7P@:RB4.C80H;2M?6N?7F;3?60>60?72B93A83@83B:5G>7MA:@83E;5OB:RD./..//    #-%9/&H;/WH:cQAmYG_O?E<2SI=I?4VI<]QDXMA\PDI?5WI<^RFYNAF=4@92%%&****+* !!$%%!!!!"""##    (%#*'%1.,63052/963953:74<96B?NIEQMIRMIQKGUPLYTOWQMWRNUPKXSO[VSUQMUPMVQN[VS]XU^YV`[X`[X_ZW_ZV`[WZUQWRNYTOZTO^YU`ZVZUQYTO\VS\WTWROYUQ]XUa]Yd_\fa^ea^b]Z_ZWYTQUPLTOLWRNXSPWROZUQ^YVZURYTP\WSYTPYTQ\WT\XTZUQYSOWRMTOJRLGOJEOIERMIXRNXTP[VR_ZV`\Ya]Z_[XYURYURWSPRMIVRNYVSWSPVRNYUQXTPRMITOKSOJTOKUQMWSOZVR\WS[VR]ZV[WSXTOWSOZVR\XU[WSXUPQNJLJFijӶreXhXm[lYhV_O\M[JWFVFWHVGSE~QC|O@wL$?%>$?$?#A%A%C'D'D(E'E%E%F)H'I)J*J*G*E)D'C%>#="9852& a:(P9T>UAR@wJ:iA3`<1Z:0S5.Q6/U;3Y?7Z@8]C;cKHgMJP5/54-5F$>? B#D&E(F+"F-$H/'K1*N4-P70P83M82P:3XC?dRSnVTOFAFC?FC?JFCNKGPMIOLHJFBFC?HEBKHEIEBFC?JGCNKGOMJNKIMJFMIFMIFMIEMIEPLIPLHKFBLHCNIENIFPLHPLHLGCJFBEA=C?;DA=?<874020,850TLArfTcp{wXF5{k\wj^}o{nwzx}~qru{|v  864JGDHDADA=E@=GC@FC?JFCPLIQNKLIGFCAGDAPMKURPSPMNKHKHDKGDLIFOKIOKHPLIPMJPMKROMTQOSOLPLITPMVSPWTQUROQMJSOLVROUROTPMUQNTQMPLHRNJPLHNJFNIDPLHPMJHECJGDPLGUQLTPKLGBGC>ID@NIEPLHROKSOKROKROKTPMVROVROSPLQNKOLHHEBLJGROLPNKKGCGC?EA>EC@C@>GDAGD@B?;A=9A>:>:7DA=GEBFCA654&'')**,--)**&&&"""+,,'(( !!&''+,+,--$$$ %%%"## ! ##$%&&)*)&&& !""$$%''''((&&&%&&'((*+**+*### !!"""#$$#$$"##$$$#$$#$#""!"""%%$$$#!!!  "!!$$#  ! #$#''&)*)+,,+,,'((%&&&&&%&'%''&''%%% $$$&''!!!"##'((&''!!!&'''''()()))%&%%%%&'&%%%$%$$$#''&'(''''()($$#"""#$#)*)((((('(((''')))+*)&&%!!!G@8ULB@92VMBUJ@TJ@)&#$" $$#!!!  !! $$#'&%++)++++++010/00,,+00.***'''*++320*'#&$!-+(0-*,(%&# /,)40-30-1/,52/;84=:7974;96<:7;86;85;85>;8C?:JEBQLHUPKVQLZUQ^ZW\WTYTPWRNVRNWSOVQNQKHPKGRNJQMIRNKRNLWRPa\X{qiؾԸֹڼ߿ѺmĎʔœÓꯈ䪄ߤۢ~ؠ|ԝyΗtɒpÍlhca~_|]z\wZrWnTlSiPaJyXDgI8I4)+#!"445VRQgb`e_^YTSRMLTONYSQ[VT\VU[VTYTSVQPSNMPLKNIINIIOKJQMLQMMLHHJFFPD@O:.O9.O9-M8-K7+I5*G3(D1'B0&A.&?.%?-&>-&;$<& A/(C1+E3-B0*. / ' D3.L;4L;5M7/M-L-C&:5(( .B&6 8<)#d=/UBmB3J"V'Q%P$?7* . @"A%SA=UC>RA;N=7J92F5.C2+C/'?#<":4\3$^8%<L$f:*^5)F& D+#D+#E,%gwZHB0*$>-&T?7K92M;3O<5S?7YD;XC;P>7N=7M=8O?9UD=WF@SD?RC?E960--,,0)),+*-33799?78>137238>AHBENKGLJ<6E93E92E92C70A5.@4-@4-;1+<2+<1+<2+?5.?5.>4-<3->4.>5.A70D91G;3L>6N?6F:3@70?72A94A94@94@94B;6OC;C;5?73H=7QC;PB:NA9I=6>6082-?60C92?6091+A72QE=   $#)008229,+2#"&%"$)'),),-+..,/)vk^ݷٳ׳̪ѯֶ߾Ҳŧåѷw{akaSuzwwkgbY@>;----//    ",$7.%F9.SD6]L4TG;]QDWL@]QDI?5SF:]QEYNAF=4B;3&&&((()** !!#$$ !! #$#     '%#)'%1.,641630964841630853?<9@<9?<8?;8C?{N=oE7b=1\:0X:1S70P60S:3W>6Y@9\E>cNKfNKL2-00*3G%<=?!A$B&C) D+#G.'J1*M3,O6/O71N86L71S@=`OPgONPB<@>:B?:GD@KHDNKGOKGHE@FB>IEBJGDFB?C@GC?HD@GC?C?C?JGDMJFNJFMIEJGCIEBEA>C?HD@IFBGDADA>FC?FC?EB>542'((%%%*+**++#$$ !!***((( !!#$$())+++('' ###%&&"""#$$"##$%%#$#"##%&&&'&'''&'&%&&&&&*+*+,,)** !! !! #$$%&&%&&#$$!"""""#$# ! !"!##"### !!!"""(((+++)**)**'('$%%$$$!"""##$%%#######$$ !!%&&%%%"##%&'%&&&&&'''#$#!!!!""$$$#$$"#"$$$$$#%%$''&""! """***)))((((('''&()( )''&%$&%$LEGB>MGCQKGUPMZVRZVRVRNPMJWSQ]XU\WSWSOYUQ\WTYTPVQMWRNVRNSOLSPNVRP\WTha[znūѶ̱ܿټնܾΦɓŒÒﲋ챊鮈䩄ߤ۠|םzҚv̕rǐnifb_~_|^z\vZrWqVnTkRgOcL\GtS@aD4E1'$!$<:;XTSc]\[VTRMKRMKVQOZTSZUTZUTYTSWRQSNMNIIMHHMHHPLLRNNSNNMIIHDDOB>Q;/Q:.P:.N9-L7,J5*G3)E1(C0'A/&A/&A/'A/(B1)C2+E3+F4-D2+5)  G5/M;4M;5M91M0"K,D(F0)@-') % -;!;#=%L91^:-UBqE5CV'S&P$I#8%- @"?#R@;TB=Q@:N<6I81E4-B1*B/'A%<":5Z2#_8%=K$h;*[5(B*$F-%@'!cH:mpUF8(##D1*V@7K81J81K:3O=6XD;UB:Q?9RA:P@:O@:TD>XGBUFASDAJ=:60/*+/++/)),22678=89>12702679?@CJ@?DG;7C82E92B71@5/B6/B5.B6.=3,;1+<2+=3,@5.A6/B70>4.;3,<3-B70D92F:3H<4O@7O@7G;4D;5B:5B:5B:6A:5A:6LA:D<6=62A94OB:QC;OB:G<5=60>71E;4A8192-0*&LA:A70   ##(219,,3''-)(.# !)'),*--+//-1/-1*'2ڴկǣƣƤǨ׷ҲˬʭçDz{|cmbSs}{w~thb\T=;8,--,..      *#7-%E9.PA4[J;iVDcRBC;1QF;G=3RE9\OCVJ>]QDJ@6SF:^RE\PDG?5A:2&'&&'')))#$$$%%!"" "## !         !*'%,*(31.853963:75:74:74963:74A>;?;8=96DA=FB?C?;A=9GC?TPLUQNTOLTOKVQL[UPZTPZUQ[VRYTPZUR[VSXSPVQNTOKWRN\WS_ZV]XU]XTZUP[VR\WS\WS^YV_[Wa\Y_ZV\WS\WR\VR\WS]XU[VSXRN[UR_YV_ZW[VRXSOUPLXSPWROSMJVQMYTQWSPXSPTOKXSO\WT_ZW_[X_ZW^YU]XT_ZW[VRTOJTNJWRMWRNYTP[VR]XT[VR\WSWRNTOKWSOZVRZURVROWSP^ZW]YUZVR\XTWSORNIRNIVRMXTPZUQ\XS^ZV_[WYUQWSOVRNTQMTPLTOKTPLYUQXTPROLqg`ȰѿԸk^cVhXfVaQ`P{^N|YJSGSESCQCSDSDPC~OB}OAvK=gB6_=2]:.X5'R0#K+H*E'@$>#>";";!:!;856889; :::;: ;!;!5488688 78869 :!8!9";#;"%?&64 8: < >"D&E'G)H*G)E(C'B'B&?$<":"751-! ^9(zL7|M:zM;tI9hA4^:/Y9/W91T81P71P92T>7XC>[HDbPOeNLM3-21+2H%<;= >#@%A( C*#E-&I0)K3,N5/O60N84M86N;8XED`HEWD?CA=DA=IFCKGDLIEMJFIFAGC?JGCLIFIEBGC@HEAGC@IFBMJGROLTQNQNKKGCIEAJEALGCOJFOKFNJERNJUPLUQMRNINJFLHEHEAC?;@=98621/+20+20*C>4[VBxZs|q]O=iYLqdXsyy||{{{r}o~p ?=;VROVSPTQNPMJNKHQNLSPNRPNROMTQOTQOQOLMJHIEBIEBGC?JGCNJGMIFPLISOKQMJPMJPMKOLIOLHURNZWTSPMLIFFC@IEBKGCIEAB>:B>;IEALHDLHDHD?@;7=95A=8?;7>:6A=8D?;C?;ID>LGARMGUPLTOKUQMYVRYVSVSPUROURNRNJOLHQNJPNJMIEIEAFB?KHDIFBFB=FB=GC?KGBOKGMJGNLILIFGD@HEAMJFNKGJGDJGDLIEJHDHEA210'(("""%%%'((###"""()(())!"!!!!'''((('&% ###)**())&'("##$$$$%% !!#$$(((&&&&''()))**%%%&&&*+*,,, "##%%%$%% !! !! !! !! !!!!!!  ! """&&&'('&'''))'((&''%&&"##!"""#"###  ! ### !! #$#$%%!"" "##$%%$%% #$##$#!!!""" !!###%%$!! !"")))''''('))())()*) )('&%$&%$ME;9DA>EA=ID@LGCOKGSOLRMJPLHMIFPLITPMVRNTPLWRO]YU\XU[WT\XU^YV\XUYVTWSQRNLTNJuj`|̳϶ؽؼܾܿ׹ӵڼܽ߾߼شɓƒÒﳌ魈㨄ߤڠ|՜xЙv˔qŏmida~^|]{]y[vYsXqVoTlRiQfNbL^IyWCnO/7)#%')HDD^XW_YXUPORMKUPNXSRZUTZUTYTSWRQSNMOKJLHHLHHOKKRNNSNOMIJIEEQD?S<0R;/Q:.O9-L7,J5*G3)E1(C0'B/'B/'B0(C1*D2+F4-G5-I6/H5.0 )H60N;4N;4N<5M92:#3I60D3.)!!;!K-$?%;!M6/^;/UBtH8H0)U'S&N$Q&="/A"="Q>9SA