From 2be0d1089522f669fe830a83b67184b3d075bd9e Mon Sep 17 00:00:00 2001 From: Yan Wu Date: Wed, 12 Sep 2018 16:35:05 -0400 Subject: [PATCH 01/19] sm_20 -> sm_61 --- stream_compaction/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stream_compaction/CMakeLists.txt b/stream_compaction/CMakeLists.txt index cdbef77..4bb0dc2 100644 --- a/stream_compaction/CMakeLists.txt +++ b/stream_compaction/CMakeLists.txt @@ -13,5 +13,5 @@ set(SOURCE_FILES cuda_add_library(stream_compaction ${SOURCE_FILES} - OPTIONS -arch=sm_20 + OPTIONS -arch=sm_61 ) From 253fd9c683aa1252252f2347efa6ccc2636d223d Mon Sep 17 00:00:00 2001 From: Yan Wu Date: Sat, 15 Sep 2018 00:20:58 -0400 Subject: [PATCH 02/19] Part 1: CPU Scan & Stream Compaction --- stream_compaction/cpu.cu | 30 +++++++++++++++++++++++++++--- stream_compaction/naive.cu | 10 +++++----- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/stream_compaction/cpu.cu b/stream_compaction/cpu.cu index 05ce667..f2bcb1e 100644 --- a/stream_compaction/cpu.cu +++ b/stream_compaction/cpu.cu @@ -20,6 +20,10 @@ namespace StreamCompaction { void scan(int n, int *odata, const int *idata) { timer().startCpuTimer(); // TODO + odata[0] = 0; + for (int i = 1; i < n; ++i) { + odata[i] = odata[i - 1] + idata[i - 1]; + } timer().endCpuTimer(); } @@ -31,8 +35,14 @@ namespace StreamCompaction { int compactWithoutScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); // TODO + int index = 0; + for (int i = 0; i < n; i++) { + if (idata[i] != 0) { + odata[index++] = idata[i]; + } + } timer().endCpuTimer(); - return -1; + return index; } /** @@ -41,10 +51,24 @@ namespace StreamCompaction { * @returns the number of elements remaining after compaction. */ int compactWithScan(int n, int *odata, const int *idata) { - timer().startCpuTimer(); + // allocate space for two middle status arrays + int *temp1 = (int*)malloc(n * sizeof(int)); + int *temp2 = (int*)malloc(n * sizeof(int)); + timer().startCpuTimer(); // TODO + for (int i; i < n; i++) { + temp1[i] = idata[i] == 0 ? 0 : 1; + } + scan(n, temp2, temp1); + int index = 0; + for (int i = 0; i < n; i++) { + if (temp1[i] == 1) { + odata[temp2[i]] = idata[i]; + index++; + } + } timer().endCpuTimer(); - return -1; + return index; } } } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 9218f8e..dde09d0 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -5,11 +5,11 @@ namespace StreamCompaction { namespace Naive { - using StreamCompaction::Common::PerformanceTimer; - PerformanceTimer& timer() - { - static PerformanceTimer timer; - return timer; + using StreamCompaction::Common::PerformanceTimer; + PerformanceTimer& timer() + { + static PerformanceTimer timer; + return timer; } // TODO: __global__ From 05c464dedbff6ca73fb61fb0ec8460788c2f36b8 Mon Sep 17 00:00:00 2001 From: Yan Wu Date: Sat, 15 Sep 2018 17:44:03 -0400 Subject: [PATCH 03/19] update cpu.cu --- stream_compaction/cpu.cu | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/stream_compaction/cpu.cu b/stream_compaction/cpu.cu index f2bcb1e..f5f99fb 100644 --- a/stream_compaction/cpu.cu +++ b/stream_compaction/cpu.cu @@ -1,15 +1,15 @@ #include #include "cpu.h" -#include "common.h" +#include "common.h" namespace StreamCompaction { namespace CPU { - using StreamCompaction::Common::PerformanceTimer; - PerformanceTimer& timer() - { - static PerformanceTimer timer; - return timer; + using StreamCompaction::Common::PerformanceTimer; + PerformanceTimer& timer() + { + static PerformanceTimer timer; + return timer; } /** @@ -56,12 +56,12 @@ namespace StreamCompaction { int *temp2 = (int*)malloc(n * sizeof(int)); timer().startCpuTimer(); // TODO - for (int i; i < n; i++) { + for (int i = 0; i < n; ++i) { temp1[i] = idata[i] == 0 ? 0 : 1; } scan(n, temp2, temp1); int index = 0; - for (int i = 0; i < n; i++) { + for (int i = 0; i < n; ++i) { if (temp1[i] == 1) { odata[temp2[i]] = idata[i]; index++; From 8a00f6923ba71d5244aa40b57f6a3f171a17cdca Mon Sep 17 00:00:00 2001 From: Yan Wu Date: Sun, 16 Sep 2018 02:25:36 -0400 Subject: [PATCH 04/19] Part 2: Naive GPU Scan Algorithm --- stream_compaction/naive.cu | 40 +++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index dde09d0..16d6b1e 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -2,6 +2,10 @@ #include #include "common.h" #include "naive.h" +#include "device_launch_parameters.h" + +#define blockSize 128 + namespace StreamCompaction { namespace Naive { @@ -12,14 +16,48 @@ namespace StreamCompaction { return timer; } // TODO: __global__ - + __global__ void naiveParallelScan(int n, int k, int *odata, int *idata) { + int index = (blockIdx.x * blockDim.x) + threadIdx.x; + if (index >= n) return; + if (index >= k) { + odata[index] = idata[index] + idata[index - k]; + } + else { + odata[index] = idata[index]; + } + } + __global__ void toExclusive(int n, int *odata, int *idata) { + int index = (blockIdx.x * blockDim.x) + threadIdx.x; + if (index >= n) return; + if (index > 0) { + odata[index] = idata[index - 1]; + } + else { + odata[index] = 0; + } + } /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { + int* inclusive; + int* exclusive; + cudaMalloc((int**)&inclusive, n * sizeof(int)); + cudaMalloc((int**)&exclusive, n * sizeof(int)); + cudaMemcpy(inclusive, idata, n * sizeof(int), cudaMemcpyHostToDevice); + dim3 fullBlocksPerGrid((n + blockSize - 1) / blockSize); timer().startGpuTimer(); // TODO + for (int d = 0; d <= ilog2ceil(n); d++) { + naiveParallelScan<<< fullBlocksPerGrid, blockSize >>>(n, pow(2.0, d), exclusive, inclusive); + // ping-pong + std::swap(exclusive, inclusive); + } + toExclusive<<< fullBlocksPerGrid, blockSize >>>(n, exclusive, inclusive); timer().endGpuTimer(); + cudaMemcpy(odata, exclusive, n * sizeof(int), cudaMemcpyDeviceToHost); + cudaFree(inclusive); + cudaFree(exclusive); } } } From 344d964803bab0db28e714a38b1a9c865678b872 Mon Sep 17 00:00:00 2001 From: Yan Wu Date: Mon, 17 Sep 2018 02:40:38 -0400 Subject: [PATCH 05/19] 3.1. Scan --- stream_compaction/efficient.cu | 53 +++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 36c5ef2..7724b27 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -2,23 +2,62 @@ #include #include "common.h" #include "efficient.h" +#include "device_launch_parameters.h" +#define blockSize 128 + namespace StreamCompaction { namespace Efficient { - using StreamCompaction::Common::PerformanceTimer; - PerformanceTimer& timer() - { - static PerformanceTimer timer; - return timer; + using StreamCompaction::Common::PerformanceTimer; + PerformanceTimer& timer() + { + static PerformanceTimer timer; + return timer; } /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ + __global__ void upSweep(int n, int k, int *dev) { + int index = (blockIdx.x * blockDim.x) + threadIdx.x; + if (index >= n) return; + + if ((index % (2 * k) == 0) && (index + (2 * k) <= n)) + dev[index + (2 * k) - 1] += dev[index + k - 1]; + } + + __global__ void downSweep(int n, int k, int *idata) { + int index = (blockIdx.x * blockDim.x) + threadIdx.x; + if (index >= n) return; + // need to check boundary + if ((index % (2 * k) == 0) && (index + (2 * k) <= n)) { + int temp = idata[index + k - 1]; + idata[index + k - 1] = idata[index + (2 * k) - 1]; + idata[index + (2 * k) - 1] += temp; + } + } + void scan(int n, int *odata, const int *idata) { - timer().startGpuTimer(); - // TODO + int *exclusive; + int length = pow(2, ilog2ceil(n)); + cudaMalloc((int**)&exclusive, length * sizeof(int)); + cudaMemset(exclusive, 0, length * sizeof(int)); + cudaMemcpy(exclusive, idata, n * sizeof(int), cudaMemcpyHostToDevice); + dim3 fullBlocksPerGrid((length + blockSize - 1) / blockSize); + timer().startGpuTimer(); + // TODO + // up-sweep + for (int d = 0; d < ilog2ceil(length); d++) { + upSweep<<< fullBlocksPerGrid, blockSize >>>(length, pow(2, d), exclusive); + } + cudaMemset(exclusive + length - 1, 0, sizeof(int)); + // down-sweep + for (int d = ilog2ceil(length) - 1; d >= 0; d--) { + downSweep<<< fullBlocksPerGrid, blockSize >>>(length, pow(2, d), exclusive); + } timer().endGpuTimer(); + cudaMemcpy(odata, exclusive, n * sizeof(int), cudaMemcpyDeviceToHost); + cudaFree(exclusive); } /** From 3ad83a506917f40e1d6186b741972667210d9ce6 Mon Sep 17 00:00:00 2001 From: Yan Wu Date: Mon, 17 Sep 2018 12:39:35 -0400 Subject: [PATCH 06/19] 3.2. Stream Compaction --- src/main.cpp | 13 +++++---- stream_compaction/common.cu | 9 ++++++ stream_compaction/efficient.cu | 50 ++++++++++++++++++++++++++++------ 3 files changed, 57 insertions(+), 15 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 1850161..cee371c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -126,12 +126,13 @@ int main(int argc, char* argv[]) { printArray(count, c, true); printCmpLenResult(count, expectedNPOT, b, c); - zeroArray(SIZE, c); - printDesc("cpu compact with scan"); - count = StreamCompaction::CPU::compactWithScan(SIZE, c, a); - printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), "(std::chrono Measured)"); - printArray(count, c, true); - printCmpLenResult(count, expectedCount, b, c); + //zeroArray(SIZE, c); + //printDesc("cpu compact with scan"); + //count = StreamCompaction::CPU::compactWithScan(SIZE, c, a); + //printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), "(std::chrono Measured)"); + ////printArray(count, c, true); + //expectedCount = count; + //printCmpLenResult(count, expectedCount, b, c); zeroArray(SIZE, c); printDesc("work-efficient compact, power-of-two"); diff --git a/stream_compaction/common.cu b/stream_compaction/common.cu index 8fc0211..6e9f616 100644 --- a/stream_compaction/common.cu +++ b/stream_compaction/common.cu @@ -1,4 +1,5 @@ #include "common.h" +#include "device_launch_parameters.h" void checkCUDAErrorFn(const char *msg, const char *file, int line) { cudaError_t err = cudaGetLastError(); @@ -24,6 +25,9 @@ namespace StreamCompaction { */ __global__ void kernMapToBoolean(int n, int *bools, const int *idata) { // TODO + int index = (blockIdx.x * blockDim.x) + threadIdx.x; + if (index >= n) return; + bools[index] = idata[index] == 0 ? 0 : 1; } /** @@ -33,6 +37,11 @@ namespace StreamCompaction { __global__ void kernScatter(int n, int *odata, const int *idata, const int *bools, const int *indices) { // TODO + int index = (blockIdx.x * blockDim.x) + threadIdx.x; + if (index >= n) return; + if (bools[index] == 1) { + odata[indices[index]] = idata[index]; + } } } diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 7724b27..3f257e9 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -40,22 +40,22 @@ namespace StreamCompaction { void scan(int n, int *odata, const int *idata) { int *exclusive; int length = pow(2, ilog2ceil(n)); - cudaMalloc((int**)&exclusive, length * sizeof(int)); + cudaMalloc((void**)&exclusive, length * sizeof(int)); cudaMemset(exclusive, 0, length * sizeof(int)); cudaMemcpy(exclusive, idata, n * sizeof(int), cudaMemcpyHostToDevice); dim3 fullBlocksPerGrid((length + blockSize - 1) / blockSize); - timer().startGpuTimer(); + //timer().startGpuTimer(); // TODO // up-sweep - for (int d = 0; d < ilog2ceil(length); d++) { - upSweep<<< fullBlocksPerGrid, blockSize >>>(length, pow(2, d), exclusive); + for (int d = 1; d < length; d *= 2) { + upSweep<<< fullBlocksPerGrid, blockSize >>>(length, d, exclusive); } cudaMemset(exclusive + length - 1, 0, sizeof(int)); // down-sweep - for (int d = ilog2ceil(length) - 1; d >= 0; d--) { - downSweep<<< fullBlocksPerGrid, blockSize >>>(length, pow(2, d), exclusive); + for (int d = length / 2; d >= 1; d /= 2) { + downSweep<<< fullBlocksPerGrid, blockSize >>>(length, d, exclusive); } - timer().endGpuTimer(); + //timer().endGpuTimer(); cudaMemcpy(odata, exclusive, n * sizeof(int), cudaMemcpyDeviceToHost); cudaFree(exclusive); } @@ -70,10 +70,42 @@ namespace StreamCompaction { * @returns The number of elements remaining after compaction. */ int compact(int n, int *odata, const int *idata) { - timer().startGpuTimer(); + int *bools; + int *indices; + int *i_aug; + int *o_aug; + int length = pow(2, ilog2ceil(n)); + cudaMalloc((void**)&bools, length * sizeof(int)); + cudaMalloc((void**)&indices, length * sizeof(int)); + cudaMalloc((void**)&i_aug, n * sizeof(int)); + cudaMalloc((void**)&o_aug, n * sizeof(int)); + + cudaMemset(bools, 0, length * sizeof(int)); + cudaMemset(indices, 0, length * sizeof(int)); + + cudaMemcpy(i_aug, idata, n * sizeof(int), cudaMemcpyHostToDevice); + + dim3 fullBlocksPerGrid((length + blockSize - 1) / blockSize); + + timer().startGpuTimer(); // TODO + StreamCompaction::Common::kernMapToBoolean<<< fullBlocksPerGrid, blockSize >>>(n, bools, i_aug); + scan(n, indices, bools); + StreamCompaction::Common::kernScatter <<< fullBlocksPerGrid, blockSize >>>(n, o_aug, i_aug, bools, indices); timer().endGpuTimer(); - return -1; + cudaMemcpy(odata, o_aug, n * sizeof(int), cudaMemcpyDeviceToHost); + + int num1 = 0; + cudaMemcpy(&num1, &bools[n - 1], sizeof(int), cudaMemcpyDeviceToHost); + int num2 = 0; + cudaMemcpy(&num2, &indices[n - 1], sizeof(int), cudaMemcpyDeviceToHost); + + cudaFree(bools); + cudaFree(indices); + cudaFree(i_aug); + cudaFree(o_aug); + + return num1 + num2; } } } From c8e50d2a920dfcff212d2f70839d6477152c241e Mon Sep 17 00:00:00 2001 From: Yan Wu Date: Mon, 17 Sep 2018 16:34:31 -0400 Subject: [PATCH 07/19] Part 4: Using Thrust's Implementation --- src/main.cpp | 16 ++++++++-------- stream_compaction/cpu.cu | 6 +++--- stream_compaction/efficient.cu | 8 ++++---- stream_compaction/thrust.cu | 22 +++++++++++++++------- 4 files changed, 30 insertions(+), 22 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index cee371c..e3ada2a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,7 +13,7 @@ #include #include "testing_helpers.hpp" -const int SIZE = 1 << 8; // feel free to change the size of array +const int SIZE = 1 << 24; // feel free to change the size of array const int NPOT = SIZE - 3; // Non-Power-Of-Two int *a = new int[SIZE]; int *b = new int[SIZE]; @@ -126,13 +126,13 @@ int main(int argc, char* argv[]) { printArray(count, c, true); printCmpLenResult(count, expectedNPOT, b, c); - //zeroArray(SIZE, c); - //printDesc("cpu compact with scan"); - //count = StreamCompaction::CPU::compactWithScan(SIZE, c, a); - //printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), "(std::chrono Measured)"); - ////printArray(count, c, true); - //expectedCount = count; - //printCmpLenResult(count, expectedCount, b, c); + zeroArray(SIZE, c); + printDesc("cpu compact with scan"); + count = StreamCompaction::CPU::compactWithScan(SIZE, c, a); + printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), "(std::chrono Measured)"); + //printArray(count, c, true); + expectedCount = count; + printCmpLenResult(count, expectedCount, b, c); zeroArray(SIZE, c); printDesc("work-efficient compact, power-of-two"); diff --git a/stream_compaction/cpu.cu b/stream_compaction/cpu.cu index f5f99fb..2bd0037 100644 --- a/stream_compaction/cpu.cu +++ b/stream_compaction/cpu.cu @@ -18,13 +18,13 @@ namespace StreamCompaction { * (Optional) For better understanding before starting moving to GPU, you can simulate your GPU scan in this function first. */ void scan(int n, int *odata, const int *idata) { - timer().startCpuTimer(); - // TODO + //timer().startCpuTimer(); + // TODO odata[0] = 0; for (int i = 1; i < n; ++i) { odata[i] = odata[i - 1] + idata[i - 1]; } - timer().endCpuTimer(); + //timer().endCpuTimer(); } /** diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 3f257e9..bee4a74 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -44,7 +44,7 @@ namespace StreamCompaction { cudaMemset(exclusive, 0, length * sizeof(int)); cudaMemcpy(exclusive, idata, n * sizeof(int), cudaMemcpyHostToDevice); dim3 fullBlocksPerGrid((length + blockSize - 1) / blockSize); - //timer().startGpuTimer(); + timer().startGpuTimer(); // TODO // up-sweep for (int d = 1; d < length; d *= 2) { @@ -55,7 +55,7 @@ namespace StreamCompaction { for (int d = length / 2; d >= 1; d /= 2) { downSweep<<< fullBlocksPerGrid, blockSize >>>(length, d, exclusive); } - //timer().endGpuTimer(); + timer().endGpuTimer(); cudaMemcpy(odata, exclusive, n * sizeof(int), cudaMemcpyDeviceToHost); cudaFree(exclusive); } @@ -87,12 +87,12 @@ namespace StreamCompaction { dim3 fullBlocksPerGrid((length + blockSize - 1) / blockSize); - timer().startGpuTimer(); + //timer().startGpuTimer(); // TODO StreamCompaction::Common::kernMapToBoolean<<< fullBlocksPerGrid, blockSize >>>(n, bools, i_aug); scan(n, indices, bools); StreamCompaction::Common::kernScatter <<< fullBlocksPerGrid, blockSize >>>(n, o_aug, i_aug, bools, indices); - timer().endGpuTimer(); + //timer().endGpuTimer(); cudaMemcpy(odata, o_aug, n * sizeof(int), cudaMemcpyDeviceToHost); int num1 = 0; diff --git a/stream_compaction/thrust.cu b/stream_compaction/thrust.cu index 36b732d..5bd0963 100644 --- a/stream_compaction/thrust.cu +++ b/stream_compaction/thrust.cu @@ -8,21 +8,29 @@ namespace StreamCompaction { namespace Thrust { - using StreamCompaction::Common::PerformanceTimer; - PerformanceTimer& timer() - { - static PerformanceTimer timer; - return timer; + using StreamCompaction::Common::PerformanceTimer; + PerformanceTimer& timer() + { + static PerformanceTimer timer; + return timer; } /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { - timer().startGpuTimer(); + thrust::device_vector dv_in(idata, idata + n); + thrust::device_vector dv_out(odata, odata + n); + + timer().startGpuTimer(); // TODO use `thrust::exclusive_scan` // example: for device_vectors dv_in and dv_out: // thrust::exclusive_scan(dv_in.begin(), dv_in.end(), dv_out.begin()); - timer().endGpuTimer(); + thrust::exclusive_scan(dv_in.begin(), dv_in.end(), dv_out.begin()); + + timer().endGpuTimer(); + thrust::copy(dv_out.begin(), dv_out.end(), odata); + + } } } From 69699a74f03185f4e6fdc8723967d66e54616df1 Mon Sep 17 00:00:00 2001 From: Yan Wu Date: Mon, 17 Sep 2018 20:17:43 -0400 Subject: [PATCH 08/19] Up Sweep demonstration. --- img/upSweep.PNG | Bin 0 -> 31160 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/upSweep.PNG diff --git a/img/upSweep.PNG b/img/upSweep.PNG new file mode 100644 index 0000000000000000000000000000000000000000..f1a6bc9688f72f65e412207199d87073a9730a42 GIT binary patch literal 31160 zcmdSAcT`l}(=Lc8yeOh5l93=eH39;Xkt{(G${```xBy0ExKC-1O#Ny zRTZ@f2(E((2(As15Cc!*l7~lu%Qbgx6?p>q0K+P9bHnDD<}(6F&i8ImPzrKE zbVk10%3g_ARi!ueIUQzZ%wUE)S6C#4B_}dwGza`pslv2n&8J1@E3#Mj0MQ8KHtr$t zSLSFEU{VAGmH00fBo|jjh_mEt0I;VxCB3a1ic1a3Q|IX32a>S+2AZg{xo>YuX$#l`>jOvR`{~2XXo-tLR=ho#_5vk?17Rt z;+ryETBIaiBq}AW8o7MR>xFesT3N2%b%PsaeBBvuQYMux{=tjdPL8-Af@as&mr<^i zV)Qc@b&X7HR;t5KuOu9u#JtLgNE?ez(TM3Rz01lVW2&aF^Le3^*v`S>Nzn_4sLrPV zBiN!ZndAtMd&u~D)I z=(egV06#Uj3FCb>Bn~Y!g)gsUaxY-Qgf+@vY~%<@Z)Nf3`9@S@?8$QmKo@tVo#`dJI@x2Yy2Wz8Q~2FMV;S)yx?wP2&w!s7mLo?%H4zKUv6w z>Vl`kHhpB0BUwBPg_FYvSVT9QQ#0JzY=ZUNr7Vmy67Sf~2GynVDokm z)EA;%=*yd^Kj3pa%6I@CST1tkx~j!tYD-?ppFMC`;b z+);eTTQ%ohNa7c>yjojbur zLhXl@6+?Zq+TE^>l3jdgkxv$oXjEUMkw>5BVNdGAg}$%k(XJUfi)Uu2zL_aZSwc5z zgwXMa+{#15a`F`0)LwH@=j%;OPG>K;$>9&PH?T1jBLTxIr9}t{gQZPU<0Wg1=%l93 zROs^Zk?4YJrd+y$n^8pxL(dq`^hX8tZ>{J&--OZJK;}cZcd-@RCAUYGUUMF@Fvk4+ z{*~z6S;tzB+sxEb@`?Qw0pqfCb8~Y99u& zvFiD_`(yr_U9lHRW!Z5wE+goHY7Wiq9suMKd%E>qh3#WJ~G`*b|`c@(N* zGhh17RSuRG5qV4an9}j%swA+Rm>u!9Qlp?R#{aQ;#1d|do-U?{aWBhlmhU*SpGOMm zre?4moj&3Qzhd=Zxnpl%!spO@McckC%;v=H=A7VT92e>3$b?106)1%|YNF;E%#F~E z{R<8Ix3+}?Hu(-o>Sl7i3o54j8}%QLFmfE6r~6I!nM%%~M>QjAtB<3%w_tr`*>wQW zF%yQsZ`jSCDgV@zN-2cty$fGeQXu+NfG&V}52GIeboi9dOuKr{fmovDOfNE;GpZ(*5I;biFxF zXliEGa+z!Um*q3d2Wpgs_>mpBX%TdDzPd$XA%+4$)8;R=o*0QhYaZvA38UtrMnrV^ z)U2A}kf=g*Kga$yzlZ5-rP!NKk!_Jzt~*j$z2XyL7@h4vg=493zO)dbGW+nV~{w&Pv3)v=#GdgMVoQ3g@`#6~T&pIm^M=s&9#ZWB_)VU~GO>F)}WdDS! z4D%pLj|`lkaQCI@5$QagUd1q5)Pab$u8e-i%0GABp7w=zNc;QrYhWe$P<#F$i(?pO zf2VoM?~oz&w!VXb#J7{?BC!`)WJ14o*Osd6T)(I4Gxv7IJ5-(h!-cZ{aMFU8VgD%W z=t3Sh2%uXqDXdqQn*nj|=So;?ys`6C*s=euMRBQ*4=Lr2``)+E^133+t(wc>3Y&ir z1eN-@gqH$wohK$+rrBY)Xy=XcrS;2f*96G|>g+CMQAY=nNMsQFs2t73V~gz}6?zvY zfTLx)2vY#8En6uBq~9(MJqb$=34=fOdCC0877EUePs_ff6+&r;25<6ujL}13vlV6MBiKI0Te+5ou;0 zIP@|XR_yfb#oncK_-KteRvW4CBAb-X@8!ce|JisO=P0lGU4{XS)QMu$gRHj>xT)*b zBs4E_7AXs-hqU|DSM0b1F)13rKqXx04k`xYuU-`2RpI1pQIAa-iM zOtZpJxc5a_SFyQ;-0v6}9kagUmx)>ux71$nFvZ+hn6zYUdmwy$f5ST*eoy<}<~t$p zhe27LbPrKz%Hx0q)Lvj*i!%ULL$v=6BlFs~k^cBCgz+$+$HiiFAV-`k%8$<&Nk)m-|;rpe$3c5t3#A}YnB%pO6Q4$4^y(ag#0Y# zd|v#~PYub@{kR35oNy$r3OUYOiG6-mzU*h3va-qC+0S{ydX@_E(J3*)-=ek+7OK7f zrsn8uVBN=B)yeRCLiYEgFu|#}m)_i_M(catNCo}xu(@>!@VzD*V7hWxH{EH4l$Y1_ ziZ{BW%Y7S>)>I=r1|Oy+p`lcs5Nm6(IZiz?hpf*eHkQ$`Lv^h)t{F#`cQ{_x`|aK~ zoUzvP37H|F);z>U@qRU&p01*J^5u!z=mGqq=++M5h|%{R&$&(qYsIWL8HGeGZ5>6- zBjswS%sN3{f4@q9d41It54)H={k;JByUD;BZz}@g5Xz^R5p;JYP8W_2k#E0m0YzyW zn_@=|P+fe9MG74die{L4XvQ0b(X`r0Pc>q4)6Zbkb_srX`S zgF;mruJ~b9umUMq%I~udDrSA|8b|x~W|X^b_H(sqe?lE)0mrMK%9{_z-p8nXy!pW2 z|9WDeW96I9qFE5D)SSMJZA=>ub`}OtKAg&J3YU`i{tmkjh#5!%hN~%JhmOPOnF4wI zu|@P!^xMi-p7GP`K$KBr1X%;4jEhg{3Qb=@eB&11P^&oQ6WuOzvDe9VpYrEebxC%W zG0+83(L|T$YMe>wn;xDXjAJK ze>SabDB}V{_u(z2fu814iQ~(=7}cG;=C{Vh(Gy!2p1Y*UsY2%Oa1AD)Sy-`gnFDUN zdSD=6d4G397piwirps~zAA8@B$6JCz%Fw=E=r}U0zsAH+;d7qEuYXo45n+(GdCje5 z1?_c}yXtwO)w%a7I#SfF&a<~O>xz%K7%mlvKWH|?qEn74c4RquzHk)sGvNZRt;prw zEiEAvM2kdN7-a@M7A>ZViSxqt@RlVYDEXzA`DkBLtyutpy&N+DitJCJ4No@9;vy;^ zaWkYXAd{0+a`bTlTEf#wx~lz`zuRsGoP>cc8VX?{ybeP7W}IFE;it3~9Eoa4IP$8e zuThOf{_sc?CNrmV!8JK8RN&<;99L3A#-+l6{2$@QH|oMqeZ#9=K#Uu(!e^4r5QAKl zeW7nbHKw9|nuRP*DpjFI8*EzAq9Wzjzkj3xY+rC5Q4Wp#;~nLi4!fsgZy45+hO=uhKol?G8=1FptQ4M)veoaDccp8pn)zV3|_|+ zAE{YJD@I6SMgQf@J84lmK)h2xNdzhMN@!%gST~!v<<@n$qk}U&Y1?7icw~U3)J5#m z$h_`n0o=ovahGqqY`3&QWem9P^Qb_rHDy4i#yL&sRpR$;7ql-yj-Q0Z|SP0!*Q*4C2KuVB-`{6Be1UY-cLLs42 zv1lJZIpRS}XLk6wfj`GhV1qD=YV$!)!XE{}94J1nE$udyy=?0%!?arXVI&;=(q*8} zMT$l*q8yv(W@Mxxr?nkLkA04aZDUp_=Q^r!s9k4UUz~z5j{3g&p7(_>sPBCSPEfBY z%1DH!SRuc)4ilIblq{^_C-u(}YTy4N-AwYr+jk4s@R%uPZfC?Bv==bI(IgJ<+&G`e zEDP_fZAOV3JpIH2^+A?J-9idvp|rmAF@CT}K<(UI@;P%@ICr3%qFqnRQrO!$@Vk^b z>-MusI`k2ny&G7TQ;cMaIjb4r*>)w}ZSc5Y*j$;EmVIrV1td=7UWJqh9gBiIWhJhu z8%x9J9ea}&jyq+_UnXa(o-H9;s$k0}&Zw}0(>mvz$%&65&cBKOAY;68`cH&sdiOh0 zQK+F55m{@>5ai)J1lwu#AoM`zt7*cj8?x6lN0I+F=( z=|KL0Scad_AirCz?KSUTp71x7nS3oPGvpc$DB0{hs=2dYU$a74{}X5F8Tp{fRHEf5 zF8#`$?hdd(rgu>*mWK=hvkQSog0n5A&pH;pk1riOrj7!#gW`Ty@u6M!D6k@Erl4(9 z>6{JN;t*gQf{)cT*MBmJMC-lq5?YCb|Cx8#VDC`x{Oo7qiK$5jE>~kHQx>?g(Snar&?Gc zN1E`q4I1Bvjmfk6piGm@~CGpsAu^0U?!|T1Fo_ zTJ)9dZ5!yfFQbe`yKXiXs9Q+fR=qecZ;hHPxC-3weDLJ)i40X0@zs)P3_DefzBC9& zoG+2dp+J8@w?8ksd;N(_KujoV!K*o$1IJPp<`nWi46X%e=UH@UcZD$h=`vO8o{)4j z-4#aL;&hUG7FXwTB1>E&i^6nY9dn!F3=>w?ydndbT6}}N_mjC#1N_ZYJY*9vC|sa* zCkNX8&1v9{bo3>T=nC&q?z4!{cpI`koUf}A~LklZ~bZSk3`n4fTfcfaRmF8ksN4 zkCK{8uk083t~#1mPM43WDl%4gJd)3(?_qt;q?|An5D>2OPs{B0$FpLlXWPiE9jWPe z?TbDqVYDrs3to{IL78n&Gc(V2ucS_z%N}H5diSI$dhD}ro;DmzhVQNTIXTlU0xonq zR}rhGD)5&!Q)CY17{X(B@S?*1JA|291KO$=otdaIaYWB+)C!o5Y~RZDJ_=l-zwckS2XYF(x_M+2DN`DE#n?e{@AfNBf?L)|uriwEAQP_YqCBT_rB$ucJ0Fn%svLde9pAX!oAKf5+<(N?UEBvoOoc_no*3f;4^# zT{Xh4-a0uBH90_O~2HmDR+0sbc4~OT28`28(W(-m>KYbf7J9^;>8T0HjZL)j&Yh)vbl&9PB zf9Y6r-aO8s?T2A2Vk{vmKE}!)w~Gm+pT0YJvHM2jr1a8p=z0RlfO}eG#2>+W4!XhK zy>Z(2jB{GwU0^eVd*cl~do@q!16MDM=$~O~O#KE9sr(Q~Tn-Mkw^Q9}zjAQ^^sbIgvnEQ=6OE*lQ!^DJ!9 zu}0YBF7V7%2`hi9P2o^Im)n|+SoD!#_z z*-e)J8$P+@WlOAwI(4+CY5mvvTmTUV0bJCUS7_+xg^F|dnH?LMwIr=qULy$p1sF#; z=qQ)V$9z~`uN<96dSpIsTw@lmFzTNId_9g8n)-^Y^mdHekg~pl&z?o!@TDV1qNCA} zR%XGBY(tn;10zM%UF8m+a}D|D>eX5a1+y;`qNYCm7MaRjvGDxZACMs;0!51>(R)p> zl$Dxs67aLo-LqC$(;*NeP40Y3>>m#=DxV7nqO04m-Vn%bgQ9!cBK}6Vb%1Cka%@{O z%_WC!K0!KdHbMB2{W<%vyBfI{bE*UN8Ja{s<=cDxZ}KUD@Z`>geZ(d$V&v?{*;n|N zeP~`Wd7#<%U@A?lTZKJL^xF{&z&*=jh2B<8icL|GfCHQE%24_)ls?-qdb1tKHXDVD z&3lW5&$OW?vrLZwj{TI_~@2 z`TS~W^bMMhC9_xhh*s}2kIHE{ zr$26fD>%JU;yXWb;jmN`&asVpj-&xtkfZM_?z;@{mrrT8Q1UwOG@Cqcl4z`n)5Xj= zc*E9DCaO`1ev+lFzF=_Y%c+!=a+#J3Z@_aM&>dYwb*`OA_B1(01{K^O1vj^-f7rxF znyUYVfGDo{AtF0s3_o<$4gQ8e70)%xYt6!OsGIxs^0v&O)tZl$%VKZcE1i;j@EL7o z3oB5+tHIbtlcbv2B3$nyB_pB;D#>h+V|k^Udkxfs&Z8Ta!KsX*y=18@=;to{94SN( zzECh3T)&WUA<9_Bh;-RJAzyfULi}oOVR8FJ`rBA~lPA2~$~Usws^UE3J{Po5ZmrRT zpR`&Q&?oala)ibWd&^W&YYjTCS7K~BAG&Pi8h9g!wfW>zs^XXo6{J1eNGT{0)maM^ z^dekkxQ}%Wz5iW) zf`bMX{EhBs{yVm3)mgZS@x8kuEW2c2--TxJk6$$Z{PxNs&$Yx3(QP;5IICQK`_8T6 z%&J@l2?IVBpelp{z<;>VxDQ`KL7N7rTPhC)Fz)+g>T4@SnXLGk;y_s*gO@LEK0u7P zwVb7$`&0i%-%{UYF9Q|K{prNu#4$ELqEdvLtkcThaHv;NG^5AbS7S^ug9dxk9lBec z6g{FWE@WiTP%_LSd1mi@b)vB4PI4cD{fQVea<@Bn?qy;#98a$-mKsnb3NN4RznM7y zVnVsQ{=Lb$y8nP6Pi#`b`(=X+#k{P3!a|w;xq^N+s)F~auZ)-e50?NL-OzKBQ5&79 z6aYzY@xv{)cw#oCKcr$rm3?HQzns6=3E*Q~I!QZj7Sr*;8@jI@s#qj22Y^p}F6x>` zHy$X>Bo2HWm`fy29sFgFK2xQ9dqr3$W>$`XK%4r1xhnTd z>%(}swW_Jl2iK`c_w>kalZKlWTnq%_10KT$9S&W{|0!2-N=V9p4qDYu$(azHm_zYzE%Z7>5 z6ok*#(a5_;n681A*2jF#nGf@nLu^hjW=eddxZ%}C(eg?>fRZQ2gkt$qcO>`+q8d6x;JGCb-%-40BPN#FR1~Ug{&zBF~e-!JXIqii;PKYFZuwglA5RnrRZJ`bmX|F z23;3*xjufD_8cN<(XwUr>CZ)#G%q*(5B^*G{(Yw5zpt@#Z)e(zEU%QMW>Jr6W8JoR zyXWiyr*9qt*Ry)39AKp0jtK`$goF|CHNj7DxEKgj;^|?Y6oBOHVUN4hnuMUKI$8dpO$Q=y=HePw^ z=@BMyvA&X0=#E2cfxQ0G=|8#i#bn8R2jOCq=o;HWo=qC33X`NnDOwLKV!QRSvhws= z?^u#PS)>GX#%r!^cjUEzQRRSCRrrp^BjM#V{{{!upkBSQjm!?=Pm!k=;`U?rCn^>c zdPjGc(k<>I@*m8-Ic*e~SieAx-A53RGDCklcE$2q9&U8<8MlSqLzv$~^wEiQn^xQc z+nf1!?T;J5%qbCl(ax2ao+N>GHYmUUAE#l9^o^Q>8uk#7e9C`KL@%8@Or9FJC}D*po4ZXzKtJe6z%H!Ndk7LR03r+N8%o$mfA8cfS)o6pfFI&-@x%Q4 z8W7laN27^=b@-pZ^7oF2O%l)>{yV^J@5V8Q-@jj#r;gqD-#rN2@)kJi&lgeUN=a)~ z17~#+z7^%}=xqx8G(?6l+8xFtj=~Hs-)-Ap6ZF5~iWcD&J1_`Nk46gLWR?ZF0oJ&+U3wa+(h*Ley?paBw(YUtxG>`OV?xwXV8{)GHhViUafNEQo>fMVJF#ZNhf=La8GHBjjB(GWaO>$+iQ*yfr`W6 zo1|yzXVZj+UO)T;o?6YIYmBYUCQQTnr}-tT=Wg2FLzte0@5?%U;S;tm4|<}18Q|<4 z<-`lr)Bk)Ls`*S+&3Yc+UuDD!Ep6O0pxyD#o-G-z+{nM(Z3bx$T-v0KZ**x`MTAN7 zlt(3dSg#Z6_$%mVjH`%$&>G8@=N>{0^2E2QOFqxPrIN}zO=0oGiGLIm^;9ABo0HHV z(Hh4Jou)sr+M8FQAEZ)JBHAdwuNCK(rx;<*g(Ki74`M0Dt3zK4$qzsWhSL zYlXB!!sEUPmF8GquRYtA9(~k3C%Kes;>Q zk`ii!XK!`yWDoWvj*N4^)bgvU#Zu|J4@pV#`U??)zBE0V8{~5uuj|Gqs*_;kg20 zS0IY6XBUF%zE~5G{@mv)QEg<#^P$ZFTKou_*QH38#2%j@_^PLGjEHMJ6t3oDIZ`3y zq`L@|vwG8D_UY5EFT5HGr|UB~V7#_D#=JE$S^}R84MEVt`CP}=v&esnb4kHW{YkE1 zR5EQ@YRRw~nSjGp3~hc>Dg>M*$)pxP9~z}C!lF_sN&NJ#I;oQH@gSjL)nf(Bfca|v zq2TwCCvu}2>-jUBuOmdCbPDQYc}kwp`qA{g4Id|7QX7mgvXlB_q{kUuDc?=2%j53M z3}tBswzIkkV3osel44@j=W6yJGafoL`P@TjvjX!RND@6!Z+}|}(gMV!owF``Vod$k zP!L+08qZr`T2*;c^P(UV?svTj^HpJZ5<=#@cW`OdfL=P0C^O^{16zK@Of6f|(){#k z0>E=aTj<m5(?QMkD~HBlnbW}`A2!x^1NGV zx?MAZD3!29#<4j#R%h2>nPPsW)6>4f{s8d61vKGLM#uZuCw51}gczzl!H=4gs8{m> zYv|EjB1z0aw^50pHq5N$_Ud~yQQfalc#Tl4CVX5kwe)qKykS@*-%V%iO<3laL3@rz1N9jlk*G0S;EmEh(+Q(Og~ zro4W+JL1p*6zd8AeWd-CV216_k`gKe13S^_x{0CTqwA8lQ-VO#OSfmIym~9e6D;4% zZ4Vr%WukStdoNwn_POd+YSZCI-;b7iN*g$zXMJ@VTDZ&k{OVQ1&{cKS(wGPA$OXaE z3@d&P>Frd9JI88KfN%GBUP?xwm)2@}8piUou9o!cqFfF`$ZG8U4v{femmembQ;^q| zo9teAXiEfVf_?!BoYN;#Ft3$^ayj|{mPl#a64EAB1~}VI^pb&$0&(rSfLKy^P-gh3 zJf<KgPO0mpzFtDj^XFgXv!DA z5h}Y^Xfw6heZ$L!HTL!V3w{#kaaSpzDN)0wyk|p9Iik1t*N)zYC!%ysN`f?|*jr$J zy=s`cv|d@~>dVa(bf`B_Ld6F_kWw_I=5KAQ8uY)6M*??Wl5rzd zh{%UjpwiqEVo$kTNUj;n4N2 zxP9&@t1tF_WbabNV-V}TI&@yxVxi0L!QRDg@$S%CnFw@VYiyct^VAd6$;}U+xuAkb z^5;Owx-KMZm~tEWaFlD|E8L|w0%mVfxW@puB~0Pz%^1#W?jOKXxp-EEd2J2RNzQ9l zzs*3`XgXZzi--d$bZa%Iq&oOJ^ zHFhxew_$Y{*-GH21sd?mO2!PR-eT286zSy1@qi10igWhRfFZRnD66QIwE@#g65h+R zZ=4t6?|UxX*W(83_3r<00FCOs>HINniDT$7uP+AKK9H)@YC;Lz+We3AIe3mL6;+*de9VJbu; z8AgyT$T@UYeSLVop96EQHI;6vMkWv@;o~);>>Xq;JMzvCra@ zI<%_2K-lNyZK7VBrOCk9M$bwLPJ8pZ!>s5+BR^8*E8Zj4qnD5`Foj~oPhUy2+SijK zN+=LK1-DZu5RnN!nZg*QS7W4L`u*#I+M|< zHXAQzRy4j8cV1;Ry+CS(;_RqI>Gu{#Kk8<>f5|4X^Ho*hKyF({K5g6UNlludveg_i~AP=`Jys%yJVAQuL)zLWo5@t$N9%%7PZ!4BqUrtDo z0r6n?Gpqi(Y+Hj_sf4dtB<)8^APu=si|~A^*E0?x5<*!Ty%8xktY2|2tbBphrtT04 zZ1|^S0f4^w{x?=h=sd!sn*p4k0&-4#FZ}QDL&Jx$Kw#k3{|1wjtvc3Z!*^!cP{KEm zlyEjnqxUkLM?NJ~9^*%9HNzN#s`H&$0fPcgqZ6&*NAfgQ{ph?RQ=S!#_@CfO$skz@f7sw+d>aN=Cgyg}XN0IIgCX{n%B4$0jqqM~i z0X}&(RZ=0jfqw3w(t6;jqv7)|ixcTygfzH<8)(fFc^=`s@T;YDeYM&et6gJMTgK&r zdb8r>o!91pn65F-2QQzU795I${q&*^Ar42hB1UR@6AI0s6lX&*XnVeq$D=4Vps(Z& z8Q%0IpoNnLYkT}FQM^_;-JY-quwGvZyI(~m^ayi(?!jTow|QfVbo2jae1!2#0N4ZJ zusJ}~%IgEg-Tyh?Bd`Y&*Z;p{jX*~;ytFSNr{G*;Ah7=PdBCWPPyO=TZtK}+jk+im zfS3BO+4y2%x74X%yq>V)l9Hi#pd~~GTH}~*HxZ$PT?=rE`B=1|+mezsy+hGmFRV~@ zg}5l#om0AEztY`*Eq=-*3(%}5rK=Zsl`)?H+fo^ePz>Blx8Mg4hQN_XUVd-|2{@=_ z36)%G5CT^RHS`Tpl2Iav!ETvWyp!mIw!5+h&EH-b8`FC>?XRgSr|3F3RI75y`oiyN-nKo*A~JkW!g3=jcVoUuB%OY?U7*GzLCWc`0th z;he^27IanPf4W*w={zT6;jA~xRRc6neRI#Zw6s*UUNPb3D;`WHB%uUMMA&Aa+8@vD z&1=tNM?aMHL`+f&ZMNIF&Gf9Z*}RIbZfR-yDtL9f!EH6kZT-}EXWca- z%1`3rwApO^o%+R9T95sH_VQ43fM3I(2;N9zy%A>06T|p`4`9e05pn8=Mfc9gCgPLK zSUd*U35?|M^=Z5LA1VJ>?lq?8IoPD07oVC5IZQkj--8J+c?kz`u1Nc4Miw%#9yv6q zBsVo^c#3W$w#_{h-J&&#A(GC0X~^WW)TSTF{=&KGAeq6vPcS|;)sC+sGoMT;UZltA zKAbLZ?Uaw(L@9`x{MKKVn|AJEJ7Xl!gg42L$7*>jRj3wHVp6{-zxufG!};n@+3w$* z#J$HN3s$qedzLej>$%Mpv-LI`nyErc(GqK1C;iTWth&0o9oqJVscG!B1UdTYz!8qf z?mG)q!Ef-a`42al%QXvEBrdkS43zwwp0oR7#67peHk)48_Ri68|G!8m>yELC?TK5@2cx{z7wytmx%dpCs_ z`Y>RBaJQY>jK==;4Kb-pLeqdta3*tFR2y7lzQU}Gi7RfgRtzT5Sq11fV z(Z+6zovaV zdjrFnN4P-F3<-~+tAGisLGZ7}gM0PCs(*>?@!6|C0TWs+&!~`NkbwF1Z-DyD>K@lt%qMA)d_dSdR0ir7jyAyaalhPqQcpqSi z+C;Sd?Ko-Ma%tss{+4at;eyUhA$LdD5_G{i4(MfAk2$a#9o=7pq_^662GThH|ZRk*Z%OKdqJyBtxzJ(bm5I`_|~6bTADf{(<2 z2?eu_j*oB&FnJr|H%f!w@XV>whqJ_kxV}Fc;_LHOmWu5psnxFWe1RSnPY)&cO+jq< z0$nIxcHUy=k`xbINrI06YFL2I|AZn%edQm?UMB0SXCMJ*jsyxZ9G+5`uKE)O$RW zSA}l|9xnk$65d(?%Y6$kHH|i=NE=h4je#RPE=t{&hIp4EPi$1r&Zg7{zA-d7EqUOP z^|YqURPs2@fA2!9Lpm-3ShojwczO$w7-B06+DAwojJ?+0;7WdPL%R6Bow^HWb76`Y zSm*J1x!f&_xp`*dy7Xxq8kaG8k#FJl=AG!`jFymzwx@u>&eghh%lVSNvD9 zs}VBxfyk7^3A8MI`-$%{&BoVT?KZn&R2EAWoV%<1 zGLsCath?v*FTlhyqFNFIt6T+1U&s6hf2S}e)|`#?NM{%7diPz5ulc*nE4 zZi_N$4lkLYf=ClVZQrEB_}bwq1h58}J+Ds}B8?7LZyNni`wKdx-*o}IjtkJ6oZ7_E zs*GWib4_1>9eld_l%pZ{{C?SI;<@c*wL||(mB4dU4DjAKP!rR_n|kjF za@Bpp^-Z|cP6vhgltV&`%!U4u(g#18>DOWUw^JlVr&&IG^2bxp1-+6vU1MFylmoc= zf5#m1t=j<`n$?*uj%yW6*Av)CUqmxv2I9;oMx zW%$oB0g!nxqhGoH8)RtOXtEVBZ+h|V=LO>?=caXSg411(1ekhwkK?*?f(nE&P7~)8 zf8C7n@zzZ?e7zoTo~j@3HXqAn1|9iumvWB^(3Q06)Sb-a&RlHn$9gy})ws=(9z9ob z3`P2G>zLKDg1{Yb0lcJT)wXcFkkX=EJbETL)kuirO8zm67= zF&*HS)Zfh-Na0Q|=t^*w;x6+)j_}{vqy`ke57^dU`^XPGM%}GEOPJZ+m_n_+E}1J| zBc|OSXBPJv=pM3j;%uls*KY7R=-1xW{!}ti7xtO>I=+;Qx9!}9m(3@NwE^XtEnMY@ zr`z8tbJ!Z67zavT)SX_9I)dnKD~A0mrCi$h(S%HsirRrjAtTS|>pb5Q9aPfVPi<+# zA{F%mheAfs=r9qp#D8|2cGt>WAUsPUZy-;5MW@icctl*U6ZOV{k;prByoP_+oP)iX&tS}bGS}_%?>aQ0y>}o z1~8x%ul19Q!%O=HSS`=1&ABu6*gYn9(+X23ccm&Q5V85d(q`L@qHA2!`!Zt%0DeZY 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 literal 0 HcmV?d00001 From 15319e8e17d081619fa7b3effa9bf09f14105019 Mon Sep 17 00:00:00 2001 From: Yan Wu Date: Mon, 17 Sep 2018 20:18:05 -0400 Subject: [PATCH 09/19] down sweep demonstration --- img/downSweep.PNG | Bin 0 -> 37719 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/downSweep.PNG diff --git a/img/downSweep.PNG b/img/downSweep.PNG new file mode 100644 index 0000000000000000000000000000000000000000..4ea15776a0eebbb4e491aeaa117480a25dfa662a GIT binary patch literal 37719 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 literal 0 HcmV?d00001 From 4a6e185258c7cc7077d223cb338cdc199c2f982f Mon Sep 17 00:00:00 2001 From: wuyan33 <36420452+wuyan33@users.noreply.github.com> Date: Mon, 17 Sep 2018 20:22:06 -0400 Subject: [PATCH 10/19] Update README.md --- README.md | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0e38ddb..075325b 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,29 @@ CUDA Stream Compaction **University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 2** -* (TODO) YOUR NAME HERE - * (TODO) [LinkedIn](), [personal website](), [twitter](), etc. -* Tested on: (TODO) Windows 22, i7-2222 @ 2.22GHz 22GB, GTX 222 222MB (Moore 2222 Lab) +* Yan Wu + * [LinkedIn](https://www.linkedin.com/in/yan-wu-a71270159/) +* Tested on: Windows 10 Education, i7-8750H @ 2.2GHz 16GB, GTX 1060 6GB (Personal Laptop) + +### Project Description + +This project let us implement a few different versions of the Scan (Prefix Sum) algorithm. +1. Implementing a CPU version of the algorithm. +2. Writing a few GPU implementations: "naive" and "work-efficient." +3. Using some of these to implement GPU stream compaction. + +* [Algorithm Slides:](https://docs.google.com/presentation/d/1ETVONA7QDM-WqsEj4qVOGD6Kura5I6E9yqH-7krnwZ0/edit#slide=id.p126) +* Algorithm Demonstration: + * Naive Inclusive Scan:
+ + * Work Efficient Scan (up-sweep):
+ + * Work Efficient Scan (down-sweep):
+ + +### Result and Performance Analysis + -### (TODO: Your README) Include analysis, etc. (Remember, this is public, so don't put anything here that you don't want to share with the world.) From b47d7ee6afde9c3ef99b7a9bc9901ee119da6936 Mon Sep 17 00:00:00 2001 From: Yan Wu Date: Tue, 18 Sep 2018 01:55:11 -0400 Subject: [PATCH 11/19] Compaction Test Sample picture --- img/CompactTestsSample.PNG | Bin 0 -> 22260 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/CompactTestsSample.PNG diff --git a/img/CompactTestsSample.PNG b/img/CompactTestsSample.PNG new file mode 100644 index 0000000000000000000000000000000000000000..d33d9c9335c9a0c19facc454b108060beb8606af GIT binary patch literal 22260 zcmd?RcUV(d+bxKi~SEu|5L= zk+Az#ukHZ;-*e5v836)GT;KfL#_~}>f}g!JH#@=@$!i5s74Zls0uBpO*N zmQrJbYz=mPd-%h5NkPqKts*u#60WEdvsp1Y9}Yi* zfrgrXw192{fqvQX|L4@x3s6%Njj_S_!P$12`DKe|-+5PZx3{g5wLqW-dnij;h_IvH`YNan3c>|H%!{doYsvG2uQT;-mcqVdVgTh=Kg2B*r>nr5gSeE`v`fQmiaU^*IXs_kJX=}^N5r|iWJwq7#yVPd61J6KD- z1FG-^Lf|DVj%z4R-v;_92ZOojt*)pf&IAJY* z2$wj@v&8mWCaI`;43_biE*v{9?8QwDDf=xO?-SQ7rLaN1sb9qMw zRc_@}7jS7{TzQV54efn5*fWki8gjX(S|9ufEkJVUPesGdwsb=e(|Gmmplg-O`K!vP zso=W=t&CKs)3e|1*B732ewl{_hw zE@5+c_AFrhYh`~*eY`MfZ=RWAZ=UvxGurZ9N`gOhDC70S#ybQFGl%#ZRk#wqA3T+i z-JBNVwC9S6o=Oe|SxmiDL}5mnci4wEXlWaWDjQc#D?`--<#^qR2K`1h(A*q)G;iue z#M)fdcc3O)_QHa;1n zc*GDItBv%XWbdS#Fbt((3t8G=Mh*xtjF|-I>10QrM}o@63(#iB>M*r3)96fE(|7-*gY8$j^p0fR6^Wy?^cfwy#C9 z-C$M=l?qYMXu1F`L3&Xx@axQj7pZE=5@k&%+5YuV=sU#G0sQlp(<|JndDudS!c^vx zTJkh7P;1bEu*c0_7FHJwW$U0%+UVADdDOQTKBivx$lP5`qao0ey+avs&#pF~lGL(= zjkR)huNZ?st5+P9h@8>#E;D)k;FKr%O3!Sb z-A(W>j<>$v#7j7?8QL3@1^BpzOl#ucaQ>Ir{V0e9v!xJA|F5wlOZV0x$D_l&-r%)6fSZCO-< zvZ`Ysgt?H9DD(E(n3!v@ zJ1Ke}!*VzP0#W*Z)STQ76b>bzl7aBwB%A;~h`+*s8h7KwL;N=&(C>TyyHl4E{Fh$| z*ByTbX8V6kx+heKpIlLI9TkXWc~IHQt2^ZdC6M%|-+8aw0CO_ys0wkatCcbvzi2&; zZrtbTI~)^n%=`G+Oo{_A-$%XhY{QOCj&5K=+Af+!n>^{5Jq1*VQ^B)%R>)Wla+h)= z6}Rsn)nyk8enF<~qR-#2jk51CQ&zwoKP$sux}ilW1Ik0$CFRY2HP!!zuKa&H1L15H_&n3zx~A;<2$uJ`ClIcrV8v&a+^?&tUI5vAMKYu$>F zA)dJbb&kucuk(?m(&8n@tP_OcmcVMH&ucP+yrloekh&_vM$cvi#}ZmYDP&=?iA1kz zXF9&c+QF>@)zc98kSXF?E|wR&iPRdH> z^hHZWaBLL@qsM~Qw6iGTu_<`@+tf=1)~_1E$ScaUVJWiAcxG^e55aW!y6AIqqM?Yk z)fz8gXZ+-H&vcGV!qj%*ITWpA{d!hBAE)(+%rX^NKx=>?Gr6`4T|6sMX}#*Ut;?{~ z>%1~I&wPS@7sc2Ds_=vUOZ{dQ)zU9{GAi;3Qv*S4UD0YQ3l-~KnETt2+2lJ*Y?_#5 z4tp(jEG?7ajL9nzjqf=1AR*BxfQAm`(#Yz8e5I5Zut!1qM zN7viLk9f-9So`VsiyrUoA0L{fyeMf_4w()`E4Z1#Uh6WEordu~b!4?rD`=)^h}&$e z_B=fZxa>R({V-FacUZ6Uh%LdZ0{R+Aq4QP>lYKK#y#Xt{e!Qs(@O^W!ZCt%|86mH& z;Vtmsd@}#=P$F)hgpm)tHm#Dv z8W-h;P5Z?GO6lg0Q2AqVn@`RwV{={jvDgB7;J3}UdhUos?;jHwwVH~t)s`^eE!Y0Q zQaQhQ2K41WzV;8MsAZn};?I9=+NFu3oXh@rHtS|_$5h%{gc_*faKeeZ9&0jwC`n3e z>`VIMILaJ`uBP9A7nmO!hMLjN%!Gs1_ewZ?*I9ic6+aFgcl^y{$)KYH42s_YTxtPb zu{iueQnFW-tBCln$un%3s-v;IxWmZVQ=@&)1*AbOIv!VxxT*}M2Ps{FIInnUqX=J9 zJ@0Fh=cD2^R^x{sZau@9uxQ4l0nV$r!GN4P?$7I)U)CnT6O0=tPIPr2VJDblrnJ}C znX*8htNkf+%UC{C! zXf~WdomUK13wPKn`^nM8&kA<5t+Lf@1+nnnOzVNFMb_KLLFw>tNY?H7h1mMh_QZN+ zLgeJ@iD(^BT_p_-rqKuuu97Pb*>I6t@8CdfI@d_>d95ON<(gX3p+02pm)s_Yd%g{3 zY!9)mKd(9-^90*m?P(7Glw&%zOyW7Wk0{i)$Bq)l-o>g1CRNYRbMDo|n}N4CeYaku zci_C!Zck^kefHW6Xj|Rm9j@|@Z94lZGGdaF*p^wpGFvKd=GS|mv=d{ig3cXven>+z zlzBKtBnq>KVBIi|%0N1}TSeolEBB=6YD_NKK(1_D+LPp~7TJ;PyQ2D#J3u(l!0vy^ zG?~fGbK<7*=aTODuD{=CM>9;)2Awn%c^z0W5|)8g=&orr;P7%|!LDt17O&^_G7web z!KS*L1)ic2LqPp8(@LTZfhO)cG^;28waKPl2nQ3r4{B1wSdj~Q=dnM! zUijYr*#}#dV!aF?Q^=M+T`40@OU0UGx@eTw4ciCABfDtKM`uKo1`wiK-h$(Wy5;^+ zeJVsA{V`gtT-VIDLn!bV!*pG46LT60;v=^nVjH!OF{f0NZCsDaXFCMpcxz+rYh2_#T5Y2C{Ss-cFVr3W>4j=^b^P;iR&=bE z*(}o7aK@#c;GI+Sm`fmC>rmifem|8{mW#*yBOBAXIlxn@&tAxn3ErMjY;8xbEOhJ6~c}qdMd;yy~A!-K;^WnO7!PDYH&61S~=WUe2A^vGY zAxd>_RZdZi%WYKalR2kyTun=*5oooX_|RN00|GO)q66F#cfj;i*0X_@Wt5RTZ%EJJ zQ1bbYIkKD4CHm@kD7SRgMz0j08xr1G895p`{?Y9;fi@GVCOev5H8=*|4-pldESl%b z0|SPiYrK`BW%jc+nEUhR8pbt25Bfz+>mqe&sj1o*rms@w$6JMFnsi6ZSQ`F;;VtX> zaEXdnjL8IpjKFDTeO*ChqM%irpmb7I%9V*PMqb#^;rFHf!E*XGdUMd^RW&B79!ehc z8(EyUebrJ`W_&ZMbY~uEt|Rx?oU_l|&6SC7j&ojS_tZp-Iry6RhOKZ6!F-b5$BLB_ z{@d&e$3~P+%XeG`H34(7>N_8-V_VeERrT45|9r^FQ;$VXew$dg7c|5hRM}j6oR;+L!UHnNvp0EvGPounD!>nYzn&NTg>Vl8kpug9wfu>G zYo6`^=|EJR9EU*d!>9(m_y1$2^PMqwxdb!x9JpGuYjUM(A!2q=*#2paw3-Mk6sGTc zwtzmfQt`yj)i^ufmS$rHNN9D^#dvAxT20Bx0wseiWV-c$q^MfHG26SB@WA5nP7;-S z)(BBIw-K)YJS3~Y{S1bmS+jql8Pb>1b&By^NrgB1ICjjWZy-K-Nfk$mX-#%hQ!*gdnea@f=|FbIbl62$Sji|f*BPU z@wDItXFB}L+3k|Hp&?F#?pbQ+m0?Mdo_wR*Lx%o_?%wRqcFErBpW2&! zouQTIpQZh98~yT5`S8!}q^C392M4D`BZUHLc3a<`zPzaG4N=(Q^%IGKeo@7|&1%68 zogUSeLZwXwPbiX1g-(^+kma)ZH@Gs*=RI*}jL6bhuLV($=U{tJ=&-%7S{hs?`MgNv zT*M1L-rv~lcOPyT>TvWQrEKM-AJikrhj}$*_&y%NfN)# zOpK%=;n8nN?MISL3l0gF?CY1gd%a(hFT&(8bz!503I3-kF9LfNy6}s|pL`pAZVor< zfIIgkyJg>sJlI-%r}db0N_g>*+c&Xqrh|$x_!6zg^Ch&#Oxd+G>FH}RrKhMF((JFb zdG11iZ&ffO=ttNQd*`JMuGB^!@pVZaQmGj35TcKGVxobQ$!&MQ#*9cX8?#kcH_+Ct`CsA#)y!h0KCi)P085l4 zSdWvZ1wEST1oIAo=%_H*WBu^XNV^ItqMF9xU}Gz1-cTf1ZE{?|Jl`W(QB}AgRYhQ_ zsG}Iid8x8PEE4jrl<$KuW7~wKA{hl=&-rwbW>%@HeCroq^WQ$oBwiW}#|&)*uK22^ z$?#E|kp>wreg2ojc~zt zC3I$|5^We$sOu5kOnRSHst82H%|F02QYl}b-e_^UL^~|Hc78vTG}%skPJ;I@etvwnXF)Af5jnPP-tC_T%XRSC6(DjrokrCYm~p zJK7B+D^sdzDA<6+kEhHI%-)49U=?MAmAvErY14by-7;leat7E)wHQG$S9_&ST4aCE zS8akce2T`Exnl1HUMbh+V##E)p4GXsgU(sh?<7_7I)$g{brA7;nmUl~!Z=j{M%ub3{WI+u(+XlYv|xrYQ@N zJT36!RT5-NWR*Ex%f;O=8}0@ENwJ<7xs3V|@dJE>bhmw|lDiGUnN0A1D4p=2_G>>^ zF$FZy2|p-RfgG{7t-8O5|Mq!~m1~DNxQ4rrn<|*1>K?)dvQAi!gee$dM{^ z!x|(BMLSZ_vZF}^Ot|E4_U)QGten7hd8d$)IufS!-S4JAsj_X4dcVNR-`-_L-uuk> zz()fB{(t`|*7B#*r}+GfAdEOra+7b)-uLgRg140kQ=E6z&G(D|X5rVtxU1*Zdv=$6 z2~x3za+iv07hEs<9Qr70S^-M<4(@MRlPW>j02_EI{Xmt#@$r zJ!hB9#++MnsC`FmB*4z1x1!QB9;O|uTFt&yT~hQQcK?NaA6Gbf0OVa7(RbabWW~l- zvE=Aqc%SOm?(mFj1Zr>_*z%32IAr|t4Q`*Nc1%K3kigF;k(Z;;)44hYH(AWdi)Tf} z`g0O}yTYRHQNkP3HX-lzpz3{7`kq7PkG)fVU!Mo(t`PaTt$LrP#xt*vu=qe^O2l26 zMqq2oHp)u$8{hheoW@t&LuG2@OWJP~MBw;kJUzBzfvz^_sOJi)D7jbhwR6xYVd{*J z4V3+x_L-od2@~xk$GF^!TC@hAtp7}TU z<=;@=U~!FBWCnp3o5CyHJcoe<*2;H{{}l}w+^L`n?z}}aV*z;7GVBdX)E?cDYr;VQ zXkM}NTCAluRa=BU{l{PTuBKKt=xBEz>o5z+3Tsf3=v5ylk=DPQg}G$K8fU)=C9^D{ z2eceuhP?BgW~EuN2fGA~(SKzFfb&5ayi?Ip5OaDi-s`}$(aVlgYaCtCz|w zo_1WPZDQ7>|AJXbs%S+cfX*qdtl6iHe)B)cIX0n4C1Zu-mLF-8F1V$rHL{Kva;YUk zqwxqZ@T-Z|P`G`KQr;vuW#W#~FG^*+Fx)I}4L=R0Exvo*M!k)&z9On)AlG%r_;k6= zcZGtI?B#s#|JvwvW7>(TgeMtl)n?uka&AktNwkw^H?j9e{ZJS~={iTQ^%~bcHNn61 zlu3bVZl2cU%!>d^XmWk&pMe)xLmlj0#?Dkpyz!Oj%f_1sBSBlMOG>X2QEbI!E+Tj4 zo%`_8HK6?~#*Q@>K-~>AKYBu{b0_`YIW3ik#}0Pv$?sFiCum)%JBbPz|6Win0KVB2`4}ez z^p&~#t@QnkBYb;(Yf@NO`S(j+K$3zM#ALqNp4-t>UZ9@_@`*Ks`rIo3u?d23N!pE9=WKF=Q?7w$&fEc!WJb%h-Ci*+Ckgw<7w3 z`eRd!1r&S^#-OPrYbPX3r48;v$T!&<#KI0s53hWaS*&S0`K@xp5x2(N3nM39rQ&_1 zLQWBiV?%Ke+n5A(s!?oQEMtTpBfv#rWutRtS5g31Vg^qLHvL?w8@ ze&qUL1XM-ZeCE2KBROwbm03CVf?a4(4PS@wUeuv4b(lA^bLgMA-Psz0s{qM%vduVk zP7KRH3$Q_5c9xJZV;UMoSMOol}Nx2jK zqwPbfPrAd$X%k4jJyZOZ$aw6#($d*8znadmL)gdd~-7G{MZM+p4Lc zPIuv~54p>)EUe1URGo)c<`?LDHm+$ukZBs5_pEX{_4ci(P0Qus^2V~121HBr~l)mbA1avNF{3m(^HEY_1QD2#F ztx+6yf*v(aS}wS72m&X;Lm*7kn~<7?n2&O0S4J1YHjYfrk&s$GMe@UC1SCY{yzV*B zi+S3>LC84!#ud}Ha4l)36Xm(_C2`okW!?j)(zgMGmIPWb;LG)PkGn{v5R+bi()E^i zuDvHXw6E0dW6{tA8+LH9@|39*+(oMMw~m>EpP2?7lJk{CL0!)y^>f0^!1UdNMoKHyc^!{;2uRlj&C@~1e&-; zed{_Evqrs6{d;2m761b$WREkPKa^Nokkg5Ou?=dq;qcVNs()e|&K}-m8=Rm2#WtMW zVjHq|{wKC!sg<;Qp(O~2!>AP5A{sVyv>GTfp8b^IY!XLxTI4ho0YppCiM5zAE6M42 zZy9wn&`S0qHaFvrwZ^NkPktL;Elns#6g>^ENcIywuy&9$BR^1|Wl1IgV=296UzCQU zIwmLbkye<41@{7X0LyF6mbc=LF;$&0+{m%)@FddMJ9?YS^D0st3qv!k9!)ZbA4GCD zF@E>BOtNDFNqdI1UML?rK4%!921MFD?O&GDBun=*DOl>Yb;4Lc|FG-GDmPlT?#&Xh z)`umvZ&28M3euOQXvdTzrs}*UUlPVbB!cT+9d9{5fAdbgv~7kI`;psiK*xE8`MtL^ zo2phEiGpD!A1^P25DQ0PG2yYt653>!2J}=;5qeCmjjB3p^`+hr>I6X>e!-#aJ!Wj( z!;8jilEq>CK-+75PG6FTdoaF4WlUaO3SpMc{WYie7$;An_xB$WmqW}c&S(S+ScBrX zt;!YHK%+)L)*;$Wj^dju-}%R)o~ ze^gtKaz~eT;qCgpQpCs0n>0lIg~dceZH<}koe%ZSH4GMB&ZeKZ8$<3Z zU9bBs^QC4w{vMpbWK}+ui?TJ1hO;W}=87Nh@LBAk>S*eOhwWvYSE`UwNpw5cMuH*s z%j2oa#*8NddmU1;KJ?ud7?ZU^}q?|%ihQUPzT>D=z zK7sGiCAl8oNSv@=py)~wBF@e#7?FDxe3BLyMW=m=prIIN8VK2y2x#jym-_!-&<&?u zFjgAVS@@Z(iSt1jLS*8AYN6?JaL;(kxYNn7B-ldI`IiNz2Yi+Pq8kt_^h`G|(CboJ z#Ap>Qnd4qB^@vu4(lWsn$S>8N$9Nk?mT2dO(qA9M`nSJdm+44;w>*4Mq=@KvaG(hR zjA^uV8|zN4l(F|ww>B5r$MEH)foFCdDf5J zR*Y<5r(70&080s-0_D5f5Cv+7s)`0_0|=~#r}2QUva>e>X(qDCDiR0+{>FU#gJfB=$ETn3^lAMdy6d^w}R3{J%_WZ<6VMB8FhU$GeG<17$b`HeYZhoCgWGr zCC-jD2dN*Q3?tnqc6zB7Y5d;)ThGdVN7pA1FioT>NZ(;it)Tgx>F8KL*m}zif@rLh z16~mvUpy**!fa(Ej}$YWfRkoWG;c%uI(7@Ej-=& znq4)pE^t81=m~@!^*Y!=t>6tLUH2s|ucQ|pQW=ttH{w;8B^u+~{JA|+BD)U$(p!`l zB)W>9w(sMM_ywi2d689<3qjZIhw%^iw>)U&n22`96E#N5WP-1{Z>UKgz7hU3`CVS@ zT0o--deD2i_BMx3y14LNNpw9o~bo$2Namyovhu80?Phirnf>walI?{!Fwt7)R?wX$P z@(+9zhz@wOuI-++dfDXcAA0YbYsH>fn^^3l+kY^x0pLqtp<3N!1n?7pUN7uZ6ynVM zynVG%Fhja;bJf^Ot#=??s8%MxqWV1WB?>Mm9y)-J$LVt^ph{CL+#>DxVngjz{ zuoOkGd<<;7J7H=lXkSP1KGyX$oz`P-wkQZ|rfFL6+ummFsoKtQeGkunr50R&Cyu^Q zkpZZM>pK5EwXl>tDE(ilg)#g8o?0jxLvD$~o74j1f1nm7YW|F7lUf-2+0l!CWusHiV;G=K7G{tbf+@IFzAx%hrsLOr ze|FIl+CH&c(oul9sUbbz61^NqM0SBa0GFcd?8Gly&sl^W1fKKCxB+_ol2~R>ubsEY zC%|N|nbRo@;BaY@+43}Ok_-U7wX0RmIRtJyZx#vA1i(=I(?bc0{Et@3wKIZ0!c|xF z_H16WrGRWAeN%~Eg>zeg-WY%t5a2m!z#d!A0Rd;XL+d7q^CAVP6 z#^c!q?q)}Bj5Q?qBkt*p%8jyG(;4S3T1mO)X$ikCjd5#%Kicv>&SmL?gCz__7_VBy ziB_u4;7_@|X>_~H@Tf~wO2ig-$G->!72=5#C9_Xl5*&8s16N;f`CH>9|2^#pn3sqSjM-b zM!C6nAb(2i3!zCw2T>sAh$K~c17hB~V2J8fxl$N51_tE8RUd%U*|ORCh%mCNj*L00 zTgTeoKhHnetMn^YiI|7Hm43ZA!P-EDR$*xoI#$DMY^Xi^+266$ifpc(`!@=}i1^PG z01H8@oX!nq8bkOC^Pl|GUgAY=$X|Sbj(?#9I9v)!J=&b&UHP+aaO&VmZh*uwl-r3v zTVo^bpLJJ*mGh>)ceR1SJ=HDkET9u4LS*Z5eziLRe#=*~7fHxgYI&Wppb_k!rWxqg zCL&NPr*iMb4gUboGgd&Zyi#TxoaETk8$)&aSM3M~Flu?tyFtIw{b%tQJ$`wZp7+ah zAC8MGB(#%g7U5p0m;YJ+SGGI8ssEc~;fX``!VHPJ>}v(ps}?ZEk(KxOjMuQSsXZ@i zSS+U_GTI=JZ)6+wdV1}*S2A-gpzeZ((_rg_i?OP<)$Njqh3l}xSX+{N>0-R*VlI31 z3|m9^bG4%~(Ya6*XERJ=nZ#UIBP7TG{ue{O)e^%;(>bd#X6o`OxST#^{0cltGKJ4kL0xm=r~bcTA1>Y%Db^}N+BhjUn4CEG-EjHBN4yKbjVYV~3EmIl7EseuEv`Dd`P%;p<3=bC~ie7E^3el3X$-kk7m zApV2X8m|SmR?yi9jp(8Lx-oUYLQ?@m_xue1M#zh(;$jy{HGlq?242TRVp=tgQYJx1 ze5Z|wzGEQy(bFRR9m!IZY<$3&nND7({)vRp*u8p`hiZi3ZwCw?m6-&0ImYfA7N*>OW)YRaGE&}U`J)}BTqTCxHF1i z_bQ&u4K{EaK=h^_rdgMxufbfVL#M086WIMD>ZuHNB~Ba{*wcgf3w18n(>KbZDV(s~ z*io_usZohoq!=f&{YkVH?6JhdmGe0=(u;oEEo7g0*qZ2#Y%6LzkwE)buz5_P=!}|R z=|h*B#wulGe<73O@AwcNJ)iHQJ{727MS|cydZF061=ZpJ%MWPZ_he?~^uee!m@!jG zD$9s8)|J{NZnjNbD>hb`XH4dZ(8f`1G2)KPwwb3*+v_IWsS)lk$3r<$GAmj&sd{gi z^Edr^2@%DPSaV%R99(no!;J3TmtQ`*5s+xaJC_ZnS2vSRz}E;qPu}VyFO}JS4Dul0 ziTgY?Oxj`3)FpDLI>6#Iy>q8CW`BfcV(k@RuqCTka;gtoQ~-dd@#BSTRV zpYN6_iy_^o?dN27W7H7&3{-|;)n4Y z0$c0sj6FKj{t7u>YG$KVw*;a6fn1W^XHum0kK#%kr~ z6Z<~d4;T)(QIi3cUeqmH5Or3t86LAdN{w)}xiItJ(g(T zYlQH~GR1c6FY89S2K%MqufFxFbe88DY+?6i93I2X*VPN&sARmZLKI??mr>>&(Hy7H zu5XYd?HgZDC@Yc^hg~kV0SvZvR;$Yu_oj?H&lhD&tA7OuNUrDjiG7dn`(nFq;WO71 zQ+L!MIcS6tz#nKZc}7+V4ngwy$t`Awo`d`Kvm+a#E0a$dS67dYjL0EWdfU*nXOD8@ zpHn>jL$j|eX(=TAt0?~N@1pq5O#~>Yj&I-|?q_!o_#5lH=wIl_5j*EKXLmhfRFx`5 z7!%^;n~zWrMHPS2(gUC!7KMTxo;d&Pm`0p<$*)n{K@WT0sbf6M%DDfSO69(^NR42y zLh}egGuynS!jWlG2f{4-+G^eC8(g3?p1!@PeEB1wM4sJtdZ5gDbGOko zjsMOn|96Gb^u^-Meqd$$;(vq-`g(WD^q^zrF}5?e0LIc+l&sY+x|#YdF*NU>cX}uh z^&*MqhBg516=a=-Z+RYKX;xJxz2EZ5s>jUg<*cz|9V zNGN<~B;l|$y223MEa(`1m9p4vT85yCn~~d^OaQI{aEI^G%!+Qy-Y<(%SQ8nVyLl!_ zgT5fzsFgKWD=od^_PqAPBx(*e3vshW$5r)HtGgP8Awn%rH0qi$wjbjw=`f4B@hq`FKCzf_MF zY0Ill%XU_1$>;F;0tcNA(USpza7&ZCQDGDcdl{5ES?AqtleqNSKYqg6T5US~Y)6(` zboPkS1^eZumWN&5w2I;E{FpfN%<1f$GNd|Jn$|4zbQ!iW&WoIc7t!o97mSO{N3IGh z19kK-nBFslL2G82d=C$*W7R1vw#W9V#;{EZpMYn>cg@r9*SP1I%zG5%EmdUHnW`{Y zfWz5%=5U_6aihR6TyFb~v2jX(q|?@ba!Xguz&OE2RABdqDOZ;GEP~Ni2X)A@Z{$LXt0I3*0A%d?W|PO^*oS)^d{dE~2TfO&4t8<2O^xP`eatuGhaNJ!|i!Rpfk=6XKy5kSo zLX5vldN1*j-YdR}ulfkz>?kjF@_7vA{m_f~W~6aE>-TAH1%Jsi1wS*4EI~u~<(U4i zG3NV5Grq86zcUf-rnJ{5_qdpbhvn`bKRxSoq}x=H5V^E+?OKju**<3+B=^#I>9iAk zo~ouWo80=@E#J+z!ELQV+Xr;I9-%@Ev$IJQPog&#!#50As2?osb%SX zSK@|^;JzETyae&?PR7rHpvcM- zBI}laSvP$IE_2{Uq;w5ZY|J6xcAD|vphf848+IV4=jv6wavIx6-iLY-wS;n}mfWcy z{Roluu!PQf3v>2|7H3usyF#*_6+mYjT;6(-rh(j^%xjLP-Zcuq`G&l|{cFae644){ zCRUpSHj81JPf18P)& z;x+b-@yYkO^|%wLh7C0-UStK`@>T~Nfoc*gVhMWrf&b+-dCNa8|W!&EC5 zwv-dUsuQr80?MQJ{7?Raej(3MB*hCt>%)ibZ8h>b6!=>}%yVM`0f~%?A1VEP z=$@5v9B+rF7Vz@AyF8P065vQ`3#v+akvkgeNTdbDMGO}7GCJ`wA~a7cbjm!OW{H* z6)ywO>9>7RQ2IJa7eKd5it%Rq;sMAdRR4uvGdRzvSq~Q?pY^Wa>Lrw|RUbVi&y&8v z*VpY|?`g^57VAm3N4PEftXP`|d*+j@CI_%hJv_fh0`x@t4q;tVsK>Gu{INgJX@(8p zIS>HErw%MnQRkry@_Wm?ffmCQlo~(;+>Q-eX@K4i&(s}${pImJ7k7%Y<%dV>-Q=4m zF|)dB4XWTr-o>76!jZbTJMabU89-Dd38f!W@b{g0PKUS8JluYI^UlY>RpOTFASBpe zm?Fr3-eO`CeWE;B^^vngo}6gz3u575~I<~%ZecfKI>1z?w57AY%{E+FF2l6 ztjY;CMjNyfjUVX}?fwD#_5|pKo7dku!n6yOebu5D8uQu17o4vlRWTUPjY9E~wN$9~wGR zQa7lQs63OcrZFGqp1atb2W+xi;p7&8y4ZlV(Pe((ZQ#bhsMYS@jQdr(gKkX@U0f_T z@E1F05hfB09u=nLal!Ns#Uxsi0oVM>p zhSImou;5Stl$L1C+Cbk4!bKiwdPY8hY8a^%;?!dGDBo<_PS4e##oF{yuJ<=}*{(*p z{dD!<5x|v_!Ni^Ge4_8^#bk1|O6cS4XQmxm*3WQlC9y*$vj>?K9f@-rJY8j+5RKw6 zx+U8L%e`I3jfB@&uXyC9IytauLq_%i!eF+J--7D5C+hswyi4HB%8qiS^S4UP)t47E-*EalWFemJV&H%P6>f*9EJc6(cOxXl3JCwR+l$ z!-8x37`E}85&ghym9|TsQuJCk*Ta?m*+oDN5?B0$c*y1@gF#;e88~6d`BLvk^u(Z0 zQZmWO@; zi)p}k5tUvBQXn*qyC91RJz62vE36&*^#ZIS{j&6|_d$NJJ!AY!LLEa%1k)HFhF8jX z0n%jJQ)75aJ6iwi70nY>^Lot4hI~Eeo|a38I}^K!EF+eYR2F+DnEsYoQ$7oe*T{tf zqB;PU z$y$JbzKDfXo%j2^&a1^ti&BQ}3-8wK-iLyO6c)HN-HEgt=*kZ+&%-lCcSP@z3js`3 z=?%M$FP3-B_yO(Cdn~ZJQkhkD-=`&CYv`r~*E4E)+(DG`qjRu4joh}Wtcp!fG4grY z*wexFCl{_g3y!aeRcDeLrDh(Vb5OaoL{bx%n6#8QVZj9qgdhA$$(}!S+g|3$EiNo~ zPYaZYZveQ&b2?E3*#*L)w*b>)05DP00{OOGU_3c-i7>LGrfinZk@bGb z-LAX`I%cNWc6t`YwW&@4J@a&9mlivmFYc3gC7~SC}Dkc*KDdG<169 zb1sE?FT>%stz3+O~IS%egBB%DN&`B+RiTofu{8I?8BXLDhvnU_O9uPV4k$PY; zLG`{ky*whTK|J3!87kTvy8T5s{?b1#~|7mdj4NE|7h+t8XhA#Ym`;ieYj zKAIs+Fo|OX=nTz~LP0jHl#v_{fRKZ1DP{BZ?ZHIugec6|4iYu>B+tte-9WrOKN}N z><_R!{5B`wEq-WT2pb;Alv)9C9StKJg8#IU!ahJOlC}G%7%MP;29|Is`lQpU}hsc?A%5YvZcNMo>5C9t(Q(f z!j|&Cj~;c}(B%2kXcZwz$iWvup%j0#h&E`t0;^63HxB0S5mU;Oq!e!~o}QHJt=vtt zJ{Ek4Y2EB{oO#E2K)Ky==|~C*{5f$9z25L-knYPAMe7~4&6L2|18k9RKieNz&PT4Z zTBdZjaD`Ss8wS@~Iag@f^5e?6A84pQfn5@==s*tJqpg)(Seg@NxD=Ik z%f+4V1(LGAx#CSab>2f|%yO>fv2#{YbHyH1+kBTSHY%j_iZLP5*}L*9cIe|4!mQiY zE(BJEohkW*{M8qHV7t@#Z$ADl2uC1@uwvPkIu}9&eA7l6v-N0zF%$88Ueu^z{nxh9 z2HFg1FCIDdm%w7Sc{$2r!+a$Cvy6Lc*Y0J|&`Zhnwn`FA}P}Ql=oyqRNPpByRanCUc*9b$N z)=XnCEgZA%Ok<~zMOeq015udzW+wfNCPBPZh4cbCk~RuxHOt%&VqDy44JR5*3YOdMlWP6bqcfl zIj}m6)kYA-*gXA=m|c@N3J6VJiMNLn&&SkyFX!i{2SIsd4xG2lF^Mj4_=YJUj;rFOO$iS$2}y zl}Lyf5?(q+#66(~K0$DW-Bg_qU0H2+**(aaSly$9Mfur5c8$RZ9Ck1JmYJOpRb1Wy64Qdy0Ue7 zn>$Ni)a-YHXX)2pBm9^}n47TOzn(xu4gXIbCzEGyMVQr}u~Vm*;)1 z_j^6p{oJ4X&gBdS)uIIFP1=i{xu){A&{v?+3L;TVn`c9*z&3`rfvt=k#re*R0Ww~= zmbi5V^IjA~qYVmI_K~7BiI{(O)%V{Q1rWlSpnK-e?(kR_&d}vnqvhkZTg2+pQfl`f z_Sv&B8V>G#Vz>zA?GT|M0HjzPs-*RSX3=EE9?1jY@mi?LOQXB7CL{G^y2%NwUxj~i z-`Lb0LrdX+qT{Era?;#yNd|ukt@E;L#=((za%8Jb+o620(q%3^-vl@LUs9`KhS%vC zuOGZj#EkvfCr<{ZUyF|ScYy|)cMyQr!U_XppSAdQADjnD%DQafb^dz7j=?Onl;{Z0 zH>UGF>Sd^O|7Nyfp-e_j25s7?By1w0fozuGHT#eX>@Ep7ao`WDOWK!=w{hGflsZBw zitr%>bN)T;&A!)O!aR)9J14`V=m}*08-u~N^pwnAE`LePm|k%<(5UL#32Gj-0OD6c z^P(Bxn>lNk3X*XIJ6XrJ=s=7jOn2Fhv4d6BVMC+@Qj9gse?LfGDhs9rty6?W+qRRB zXL$RHV4Q*5iQCU&I(K)*4fzPQe3~xir^4Fxg6SLEHRn~E`0>H~s$u*ye(RqWGO2yBf5%+=9YHlG>H;Y16k?R0wkl`fwR}s1huA;isbmraFHTKZ!B% zatLB&Eqr>?(#{D#iS1pC6=@qhB2_^W4< z=Ownk!ekbnN41N|T!(TYD^0HcF$9oFmX@#svy0IP7$F$9WSuZpXR`qF;1u+*=z7Jq z2c=~KeT;}m8&HREC47ERho+cP_srngIKEs&3fnVpr!{j#ddNI{JM$1 z=+1tRj64f5iCCb?({S`vU5^3y^n}7XveIZa7#J?7PG3`ww1WxS7UI7El^sior`O|M zPmA96JtOz(EfY^DjqU;2jO(M7DKX^Nz?S7oHq(zj(^4=0^_iXen{L3#RSHDjQj_4J z{{gRoB5cza3@n6(Td3uZihli2mNfF>)VbN2g}_QDZaCr?vwD(nFg<3x@!-Y;QYy-D z6-a~daLTWfTJ>LKPbt!Ot%>ihPpyI!ga=M9$N~2O!Pk(Sc!b{nSCCB>wUNSJefEVf z-W3TvO<>fA`vaeP@6+Yk zp3a=n$i8UhPd|VuK0t0MWhZuIGfXkQcd8EOehkeG=q0#=@em)Ebs)QjaX?#Zc~;8f zdMA&8|I36Ic<)jBI@)7g}yx>!U4ic%2_CtOL> zE$D<|nOO}Pey@&+0qqciZwrKK&hKEGv1(fF?Ng~?uCT*~my3p|ei34mV%Weq-5n;+ zt|=xPNIiHBXF$XB5*j_iesW)TwWKDUr@NVk3q`;MWAS4*?X0%echPIK67kFwCm#=I zV`t$`!R%;S*p(pPv)XCEeaBZ!n-^q*k+2oOcAf=%U_4=s-eL_D4SSl#Wq_CVPZacMa>2DieL1YK zMM20z{pVzY{?Qy%CYvfcvx8sv)N+iwG?l)`39l(P1g4t igZlsS>hdCWQ8UC6 Date: Tue, 18 Sep 2018 01:55:35 -0400 Subject: [PATCH 12/19] Scan Test Sample Picture --- img/scanTestsSample.PNG | Bin 0 -> 34364 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/scanTestsSample.PNG diff --git a/img/scanTestsSample.PNG b/img/scanTestsSample.PNG new file mode 100644 index 0000000000000000000000000000000000000000..b83b5e7e670dca510c881c968ffa8324d5417764 GIT binary patch literal 34364 zcmeFZX;f25-}V~;5odu`WDsmnQJDk<1PMV!Kv7XqW(bOa5GFyU5GL(bX@)e)AcF}C z${4~FkRb%ymM8%tQzC>(BLoN#k`N#XA@4@J`?;U<-0Obdb=Em+oeyWP<=Q0KyQ+5W z`d8KUtE)`9a@l(O7Nsp95NP{(8_R1Tkfa0%B=J~A8u;ej_@x@)v?1)8^%+oQx5_l| zLCW{^rPCl#HFE3f&5gk4%^^0kk z%5^=rDpQRlVnKlcEF~S)-*Zxrwcqi}b>90xfvm7=v3<`S@5IwnZ*{Z@F}IbSJz+ft z@G9AqV`uIha92t+uHU+5^!HIOA9O$>;GaWt*hcE}KgZ=a=`vN-e;?07G-N%!{yt89F*+n6{Fv}m=EB<3N- z3!F#dS?D)v>)M)F_JY*fiZP*Sl|$0|1FJ{aH>yPo)+4MP2;_HkBkbq`K|0jb;lk-k z#oLSmJIx(9k9~`oRM<$+{y?b_AN4AkscQv(i^Z)$8`o-PyJ8hPN|siaj3=VzKL_Gp zEh&37@Rn#$lKxSzQ{f`hJ%p^l!z}6=Bv3m))iNRV`w@twY0It{uXV+jOTCY@39pk& zRQc(gBoVUKHR0$mxY)Gg$s=mq!TW11r8N%f3+1o{ZAoI&d%46qod+C*N-?_DXn05g z25Ee?jNVlMJ;lwivHH;l`J83z`U5d_(nw$?h++xIsY2b@TSxP12Lv!t>_Fri*)s zyx8f~SH=-kod#UDv)`lLPK=0tdbBVF>z*Xyww57AI-ZH^57?c}X@RL`3v$ z{;~Xx31_do?#K~t7ZYS^lptiI!TBHv)Q+^vAUJrcFF z^ihmmR!-A`+SAj8FBm5==(}j|wo|kw`YDyO$jqxylll_o5EV9yZg3sSS$1BG^{@(> zt3Jx3@&~+W!kWKA6xVQ0eIa|T7uvM?oWPCLjh`g1=4gxJ;d6SczY;?Dg%Cku{x-7{ zvY%XcoJo!K34hhrBpo0SGwkk%Cp?Q&mGs-aFlk|%F#sVO-yIHu+-MG(wH*!3BYoDB zlYq^(u=DpZn?8oln^Sdg?$U)#sFtLnuT9e?$AmtVQx&y?Op*@SzGSTX*$$c@!X>t0 zrZn$HoVkO2bNFCe>)(A$YGArd5eTwTU|5A!lf1Cm;(~NFEi!`VMV zHMNVjC&^+9N8CQPqD+VExhzI|*b)?1L}OwR2`#XXKf39l;Y}OD&o+c3Hs1C%pDs$N zzs+q_-0(SE>n$7T&M2puyAFupvL9YGz=2RwUJ|En86Qs2Z6HVe2Ft>YHNVm$1rDZh zhC*jM945WWA`c5`KP|+Zem$g#vy-Oc4@@;-c2r>k_ht{ZQ=;thOfMH>%4yU6jC!48 z4zD_K=%#?%(7#5M`u2JoscXNZC4>UxuYF=_vFMs$&f>zhUh9Xwgnc&NeXu#p{eefG zHBnwXXn|Q|dL7hkJD<3^suXRj5lfG+P;?+IWql5+7kE|+h=&! zu(G$YbGApZGu?B?XHco``xq@c=v4-LC3D6XrndX{;=n;7)BG!IRgc&r?+G0fcfD*W zdFOnb@|xQ75<_kJ2HE35?S5h2SkGN?gO*Fa9vV_DkM7N6II5NFcmLf!FdhOSK zlztp~K~44oQ11A1hYw1Y2EZ|BnIeqT$y!rb0)1mRpBLR`LeY@K-gK2d?@huc?>82i z?Ob}OqZaH@FEv!^;TN6acU*8}CNCH!ye2R8(Jxu0c?kRVC5y6Ryeu1go$f+n#%6hq zZmr6upQJ%?b}ri*RFZGzHH51cVPU>Q*IlvOKQLb#{kaz!T)|=1HruE_+EQVR!_XunmvO4W}AdhPpr)P5D1C9}Fo{3ZS#KXPp(o&}6E!~+u3 zH_HScwzx(mr@C)`LJ-<}Q~n;8@@%A9*OteEew%Zmt;ott-2VH$+6Q>4x3&LsM4#wh>tLYMXb90g%i|6yN&6 zsJSkbTEOCt?BpCitH_K6zE>e}j3uDZZ0u@(17cgzo}$06S6xd5dC%)gffEq{lRlM)$rrC-A_f z;a;P%e7jEpX)bxM^%STeJS3S`7K%sciVwKmeN2_9GR^6%BTl-T-)fJmrDZ;q%DK{V zSoZM}o|A^FM?JPCf4|k2ubj9j1%~i$sFiNcm{w%oK~&tnRFDUGX&}Yti2Gu2DDrZ~ zfr}e>n?6$)Oo4+m!S-MjCCQ@F_~7PK=cSGg zM)Kh&WJ_A$z_lQfuG|Lxz4&dM_mI^A|C)k$*p&z33`=dfL^qaU)!JuAbx)CxhI5`w z6mR|Vtl~owCU3&ckL$%tUV%PEW66oD3t$P4PhdOs$s~&>_a_$d5?C9lm$7Ie~@lm@B}6a^F#IF0{eBL$oi4*5hs{Ri?OZ3)2iNwz3@AMGI=?#S&cK9oJ_PJ3z^t||DWsM5o8NGN4$YsL(JA& zKr!Lq=cicPf4U;?tnaaYa?`(kivReC|0h4b7&#;XS?{AD@g8vwP_^s^HAv^WB0e0q z8r6(IB<-D<;XdEH#rBk)RI9F9Fw*@EWEA47*+FjCA2V;gkVB5-iZGV~g)J@R2kr#e z@(L`En3^|%k*(v4lV6?b_R({EHeJLyLVFPazMRf?$vUE{?;8WN!$pY9=+dUC?>GoF zLEK^#Jqjs~Fe}%=u%jt_RcEq8BNo|kE=LFBPBwGO(`M8~P4IC%LFrBh=%D5-by|J{ z#_bq`h|%n!5@SAAp?{a@tmX4lv2}Ohf!mDGpLAh}3s?3JJ=ME~%xV7MW)_ABa#u#G zXnb@d^FNb3XB0g~P#+NBFt8(r3+@SozZ%}7ALNZtRlcn<4KE>jxrEU)C1aXZReQ9s zkFu;Q&@P*jK-vc+F5qp_G;gjo)_Jukg6E{e@Fz=?GpN$B)$u>YASM-_S*P0H)+WT1vrD5Lh1g_bvuYU+TqjOvtd3SbvgUL!Uo4gIyau*j zU(Y~-Kc(z(kOrhabKaelQGAN5s0C!Oak9rQ-zALw8#}2owK~7Hz1|1IsCiw9-AZmc zJ^NQC4c*I1QixWnr{_WuPyT1gaHc3`-wga2&3Ipoo1NNH(@@91pLSh~yRO80Fk}kFjTY9J9Tc<`ncNxiQ39f2zdS6*tDA>QES?DQ>JFwQco{f#>g72u*{G`LObh8gUP-!kF+fhv0^_ z3(FLE8C@kK6Cvv`r zszxrP>`Vf=*hp;~J?9y?Q035gvY{yX!M?p_+%PmgxoG*PFx$0Mmf?@&`Bn^|MY+(< z#!&J}NEdQ7cO=NynT*}~?Sf}b05$6totw*bf5IGeb!-Hu8peOmW_FNzcKV-oh=1#> z*_k_jQ)^znY7qABS7xGdZkeGuU-acZx1{)&%y@cC*UBQLy|(=vv&-?CL?uHiGse$u z(JgMNWttlc4{X{4e>+m!Z-ST%uj-}O5}7aJ<`hqVK8}6lb)WJ~jOl3k1NeJA#C$7G zs{oOm$i8*L#RHV(T}EuM8(ZPP=H zhV$B#*=scWOI%(jufmxT^O88_eLf*PXftxhiL?;#MgL=tV1GAtW;BVNGceI#eIv&= zdXlH<&*Ys|PuLTu0rYnZm(pbleqA3i#`Dx=ElAz+8`#VyO~j}?@Xb^O@|Sd(wi?=x z`4|0vH~-oou=QPGZe73AMk*nVqk~+IE#4SUR0M%$w*G|+S#{98 zZ*>#SeUVR8DcX*vWvPvojFm0(*hXSRLsZSFI4)`nCusX>hqcW^`fYS} zB>hMYb@D>Is(byxUM!}<#G$+k!|oJ*H0kjwSt79*99Fj7)%h$?^MKDZ%F^?0N=}VA zCB?3;3&;li=#o@izr_{l^dljn!-+k6za<-(E>Izk4N`IGnyq*v1{#|fw55e-&citq z+T%J&0S65pp5J`AxX5>wape%Qc&hdQvFX5uIIw*V6XqCR!DDN{13eBLc+!`hMG-ts zv%{|E16wuNy0q;`NVJb)d3u(|g0ZUYMyF6hb;_2apbJu=WK$V&iZ^mnU+S=W|-!d~j@u}nFYfH~Pi=Pvn>qgx!Z@d&v(4h^> zE1lKcm6;fP#Qr{C?z7$lF?+iHyr#t5ZGUrxf&O-zya^_zdTt*~n`$Fb&=g3&L`+DaAQx^CRVb6Xo&#adH4src|9;MGUWZkeMbiK2` z8$OFaC{e3_PvWX#Rd(E~{Y!!|mGRf`N9af6MyB(52P6`WNK`e{kCedllf~gaHatje z%77KnlvRi#;vZ){4@lOjL`}tOYmccdomaz^U~`fZ%a->TmShvRG(@koM8Po!cJ`S& z5ZXhn@|bHi`>yurYZIT{zdEw)LZ%wN!C)uu+Ch>YUq8G+}S)pGK>la|) zFX^?fe^kmE_k~x8;ZZv~Qq0+1r()t2Z_k7tDd{-mcQ1*s<fW(+v>>qI?Mz!KuV1~s?wj9sPHGgOzp6XHh zE;+}j4VR>V76@ATkMqKa9AGAxdLf?e6Y`1RQahk?>B_xv74&rs1(Q8mhXM zONpK`bRc9;WI>4AKrwa9F&P!n!x&h>HSwY^%g0_mQ6sjw;xgx+8qav^SlGM3eX#U^ zG6Pa@0;+b%aDd<98KpOqix1baqPAG7S7AmQoX5g+RWotz^ZcMapwG&3iJRc})I&}j zELeDOTNJmsB3P*U%V_n55vF7W_7dIYQeyu{xkP=xCc4={*(kie>@KG3p+65uJbkh) zpJ}#f0h}&l_6d{N5qVJxp4hnsxht0H3vhn^ir@{x zjfm?$3!h`s!OPi}o;Bw?hZc>x)Ot@W)F?JK_%Q;uh=b4us(<+Xedrq2J z+I#v^Q5Ok58;Uv?@AKM-H}qu8PE;|`D@NK0Cu5TrwMqktr0$b6=lE~h z^Kpx5nHh1|tsW$EO0eXGE5E0eGVw57hkDlT+hdsJrw)Xdu+d6JhZ8m(r*!1$gEqDk z=Lr9vdoB)&>AO4s-kxWWZ&K!eyZ zF|&7bm*Ewn%fQob(Uq`^NWXi!`D-lq=`jNnrLmn$<&NE^X_0Z~DE{T0QK}z!Ig{c- z6;f+`MywC@Ky|x6VG&M&FvCJ3D%iM*YBr8n3&Ihsq` zU&?-v8k)`Y8?kix_jTx+>2UcdJZXufJhqCebqEF%;7zdx6#uUqOKR+1p}ox( zm7cL2NsGwcrPi(UA4RHZPuIlUS}AVmD!y?l)%g|@Io4Xu@=v28!w6j-ITR)C(uM?$ z=uq`54^EIchrW);lp)e7ylvk2SYDT}cJ?xKG($ab>HagyrJ`56e>$IT-qCcsttvuy zUUvKSJ%LTq2U+ST(}nPt#NPJmduf@BYk1$(c$4lEap{fE1~P^74Pn8z7w+KI<{V*N z!Lf0?#Tj1rDLmR^Yi`3K2D2!>!UoI)7h? z+0|Gkc+6w`<#KY};1+Ydk(Fie`2330eXRKt3nmj{s z28YGXf7$p#HL}Zyg4kD%>Bg!Cw`yT`n%&&!I8e&bv#wJ>*Le_-%ENOu7++ zPKB0Jl^@?BE8&%|Or#-Yy1#XmQCx-9KDz#cl+U;iMic1NyIJtCR}5E|n2MtQhHZz` zVOG7T&)?Inv&mcb3_OMB@WO+;uqFg`81BaF?xz)}&@h48)^aa~QAcdQOVw0(F;Np< z;Q^Lyy3E3lhI<8s(FFn3LvCp|1csFInWU63Y}ff9`fso|0eJwyQ+eAbpIGFP;rr)% z3IZbk)*bJ>v$sowW!!(f*-u7b<++d46umT5fy_?Rpw(v0qg%c#w)e4~2!3ogntG6v|>bZjzc0aQ>HB6*r*ZX9<%Y(a-pk{)xbiHCjkL+# zu+BUM(8=8F0}|x6UzMWL^zTf%y*r;#^b(B#wT%M6^o?t*M9b2V6Co!!4G4-5XrsW$ zW+W?mEFE&4Le$zY{-HJSJ5O!1{!du7j%Mk}o;dTB6ab8d2`r2F7dJ)M&X&(oB2Y53 zj9|lTNb1Q;p9^nOEAq{Oud}Us8}3#a%Cg zrW<&7TE+yePSRZ42XnEO$R3?D^rytQk-IHM%K?T8u3e6*Ue!qR;6m>@SE6rM^`zZ{ zNp7TVo=!SE!UW23YV1VlF2?mWwXg&#Ig#a^4)nt4xgM_~a2YtJ$29UQwR1_3RB^T| z7mKOI0o*uz ziMrq&>pC2HpncHPfdJ+34$CFJ4U*g7b!O()ly{ly9i7J?&ez~VITuAslSiN@g3M%Z zX%e9ArkhzN`qY$KL+JEp*R`dR0aTuDP^#gcyDYZ=FmwRVENO~F9A!E2;7=$vx7XAI z)2e0$`w-_UbtuCD;jw9*%{L}*(&;MYk%7_IW0v;A=ie|qJVhA>Ox9ftug~;R@YXBY zype0jM|X7>tJOtiSZvQspT_Sp_cGoa;Joq+kc^AhnfFIrz9EmP+SL(VtLS|Xc56EC zo_6F)sSRDHIS+*r&o|!6=OG4?|6s)6Pi|9Es7LvXapAj(jWd{@m;7t>&cO$+!A&Vv5Y>@TyF-v-d*6x7TERMB1_5( z1l}Km#$dlpHX_b~Rofe#@*gC|eH0b8R7d?Jm$<{Er{)qezl1NrBNpI3sJ)%xewL07 z-8SK(8Ejhw#T(Ftk#&VLs^$7no`eo<*EE!rDh$NHFxexu4y|`01(TVB zp@^eQCqe#EV&F2Q7c0}iI+cTE?@fi-Dq?HwqV3kig7w%r>uscjrc_hhTvhd<*!s!g zyTpT4aq7$v59mJMn80tLmt(X?4c&folUL_Cb(?o%yv_*@GJk7|6yt29Oxu&zo*gnH ztQ94d5vwnc8YUyQ@^5Ke?)7i_d3&YzXy1A7jMT@A{BR> zp^(9I)uVRm-e$|4?=>d1INxA%ebq7T#iAm=R_P8{1R*%~WpU%&ARBR>@AQtX7Q5a^ zwYiVk>6646sH^G-%F#JyK8hYf7JT$7nd$q6_(;VsMYX_HWA}OG)4Wx~Mb65>BS6vK zx!M5!hP!7*yvonTA%~?I->5B`H?F3~H7ckuCY^MjHDHQkbPsj$IU3*L54WCqlJ=`!~1UBu#-HP`r5fr;cRo^b^ibo+hH+(xb9IM#; z0l)w2MS6uZ(S?S6tTW^Ez;b`dWwh04XI@v{>sz0#5S2b3pe5~h3XWp6Z{OI>?s!h&y>K?j0m~xANc%G9M2?M*- zsn!lBPikc*d$`uW0b(6|%_o_C{w1?2GH|dA{INo}I1STL@rwNXKxk_2((_R&Q?q7A zuq))os!~vQu_yYJV+!{MB7Y7(8y1qxL|UpJ`|SFCoHdh6YD@SIgM81ZA1jg6Uu&A^ zCOZPU6cpnX`;EEyed#lS`1Ai}C1Qt7ykbY~TGP5nH3v}9gCk?NqQ)Wv%!I6;BtZ!x z;Qk$l;^+9!$I4HyXS{yN$D}q!GvDK<^(;;z)PH~Q@=I7Rhc3r+9cncnokSP!vAaeL z4z)i$fJt=Ve`pWMpXG9b%y7IRw`p=bsoqk6%QPgyt@0ZD?O<`-xX{!o6TtPb9L8TJ z6(5eYO&Ia7y=SLhb+Y}UGZxmaIphPZPC>rYqBdLUz#~^y4=37eR|*R;$WVkT-`_0? z3%4!U9sS1;ENqRhmme?$u3oX;{FpI!@nh0z zyfYH@PN{%I|7gmD>7)brq~RIUL4B7pIy`VGB@B)sJ(-CI7*#63791amQZ4lMDg_J5 zQWOiy3>u_dxclGj_~j*UGW4iTsW5PGJ+GEFJL%jWBQmincV=lOr^~Mh+<0;Gq^&1m z+ZwT$cIdfG-P7hEf<#~zwqdd`!mt| z58cOG~`vwU~Q@!ls9oWuz$F$%L80%l3J%Jjz7X(ix#njJjSXN0^TtPW>Y%Y zLrE5PMO_@8&ScZ>sz*PtQrnu!QsHTnz5Y_39-j_FhHhrEmt09@#bc9Sj?|ehX)i+T^oYRB3Ghig798`e{rVuifU6;LT3UMMMwO% ziuz8P_Nz<2L=;lRPEM_m*{9}1SD?q`C2z2F{IBRCcL#A7__K>HI|P6JH`3&l>2>if zdR{nW6jK4OFiEXvFqMWWRF0|5|CKn+{&u(aUx<@u{0(A$^*C#-|<$(@NajyQ@BGy*?s6c0HFh_(p2^i`#!l=QGVy{wtcc; zfQ__jpIl;arFqZV4s^WFWdP&VpH*MDbV*J4EPiq7!*|wH&kdAcUy=lw|EFcU7w*7< zt!-{Ev_(;65&LHV@4X$0O{!ecGX0#WLvYji+QZ0xMDPe#g{Ka%y!kug(-c8Z+{ISo zQ^v!tl9_^HNQ`k_u8hhA&5hUa2`=hO8V4JXlvYM3G}#z!5;!FX?+HTa=S5Z=FM%yl zaC_akK(|#7A5)DbM@LWDJ_>VX~~ZpK$9 zdo3O@WXy6cf}RhgIjEhjnKT-?*HBIvF0qe&g>)d$-okcBR3OinP+f>kFkRC*n&e<4 zQ&cp7oyu)sHX2Z1w=q^7-x^hs2hmULV3CwKyzb0!a`8;kjuHj0{erqlQ%afUt$K$? zv11T>La|Y2M?~6gKRZ}p6g7TdzBSRLchWm%HuU`T*c$mN=uR|T{fcfK=N81R1(RG8 zrtyL0&deEkcHP2YK5s@fDAyr2T{Au1DBHlk>h~#ShwF>eCC29TE^Xc^DleQbXsU+} zH2dhzT*B`@iK))Va<~lPr-vOfQR=tbDup>IUI(-#9w}Arcb%@gKCtF_? zG^jjfi#!SNi3)lY!|^tzz9WT^=oG_u6CNhkV0E~>d{UC3gYeY@Yf-KFCSO36x~}^! zEQ5mQ?S>+q3i*uQhitd5f8|c6sK&=-ZHNltI_(;tCk?3!g{WH4ez2izi9$s5aht_+ z&72@9)#x78<=w{IKU+_qkjSyf!y91oY-~?Pg|-)u?(JK{Rrc4zxg_i+!9nPli>k8z zJUul!qPAX0EhO4)+VCAZr379HR32lgXc;Kjo5b&%zY&bL6b`s>UC~hRi1~owi%Oj) zaOgad8VVsrO&J~=!)E=(PM!+EDw-lO!*}!K#7az9k8($1^k=i|b-p@=sn`J*&g7AubXkO!Bj<)@H|nn!TkG%>_1KK?j|n&D z+yY9w^I8&vc6T~?U7NYH>^E#Dlz8${KOB9{OVfL{&* z2pOE`!bMGq;LL7U8aKQb;!vc@Z?f+89*iujRSoV6*I*TrKCq`NQoGtsK25q(o>9#~ zC!YY)zem}gdB!!!pgq<1FmsMMdg6KBwW2Q9O-Fl_ql%C1XoOL0FkuQiG9^GQ%P-*x3sg3%F{4N_&Eoj#hB!(t_&EVw8Vr2-XYf5uO_g z*jVkMtntz~BoZO<*0%`isx?=GjAkPI4ubrunY~=^F28F-_U%UZD%#vW2+AEh$vQ3j z`{|W~?YRw;XUNp7j+S<;Y~~K7<_%?izKzgtPU-M(Oq7%QCusKQ@D#h}-Uy|-lM1J| zyzGKeoM2rNZCA}iYFo1{jz+K-b;s$(BIK_F)nUpL=Ej(2{)#1Xpj`6|bsA4? z4oV3OazpDlpD47Gimu4Ee^^?LJ898Pb z{P!T$Xu=EB;H9&lj3t;(l&)H;Pi)IQl|dBlp7`7LVqfHFeE;s(6x+p&&5dt`jR4%yRQ zreP$fZ4z=*PID~kkH9O~hQ%nE^6tSH^{R%+aLRHwZ?ODqgEP7LhTXmV=0K0?_Lk@k z35C(;)fcw8l_WCuKJe)_%(py$RPb>VXm(!`D4}^kvkitmBWbM>Px1vUE!Kd^&r`k! zc?V?e9or%Y@JiaD_31AN@gMDe&6lM1Ky~|9j2wYW#~&{$C{gqb>pFr08A)w%YYt)j zzQ=u1;2G8{CcSRWgST=iXQx2Eloagv{Au#_co+k`^<*#BLvaKZBli)I!kyW=G0eRf z7@6Y)8&au$?-pPP70|*l`t$3eT79ncHC;AVratSK+G_ygt`Qu*q^NYDQ7yLJy#~m^rYgxaHu&v| zR*%=c7GZxUj-NHa+fr$7d|_DULz8Yedut(VtGLXJmOf z2hI=r>(=M$+1?(#HttdQi{V=_8)cop zxoT;)_Xh`~I7uP&jhYc0p?5{{2w0)bkRH(GXu6a|0Q=(@uPqCz|KbkiO_BR?`-M>s3nXgcfzl0tz}8`vLbpHxE-uPLFQrFbhEBd+`9m<4;z#B=1`u-dcga<|6`E z;^N?ph2w&Qq~-kZd<`nyIveF2LTqQ5yZd|k%`|tsYeW4pjM&QtwlgVVY2czm^xdV*q?O!b` z{vCSq`7iY3_utUdhyQ2M6DP)QCR=-qQ?WD~ov*bV=YsUA+;mGgOR0G!ZFZvx;mV(_TZ<)_BLGM)GJvO9QAi-dqz1Jb# z6b|q4jk!{9<*=T0KGFT2!p*dtd92D9WuNbiQ>Igz6$AB+k{kijybc_{@k|U@4ms8- zb}yN!9w#3wz!opXclPTF#uJVcEb3v|gtQA`iuwU1gd z^0KQJRBz4!6==AX7ISU)?&<89`=^YFask8jC`ww`w=-9V!f3zV`U^dcDkZ=1)vZTi zL-m7~jjvfXha+5wM;X^ib>=~SwXbfFJs7rSL^Nu@Q8#w`dhDRlELs}U2;v|f;!G{I zbmWFHyGFBT#`J#=X!}jng z{_(t94HZY2NsHw%Z)G((QJl&*pbM~d7|$81%fcsH_vbEUY(>RhEq8%we+A%JXsbUY zmwD*QdI^Id6hv!KDY3WQ7s)*sP0ez#dyWPoyUBy}^|Nvs(g#=EG6~FLdr<(ZRvi7uTteMOe6yA%ZAf*L9WmqV}msxU5$*%1Z4*pc|wU_-~N2P961 zSKmP97O=mbbkXhf&Y97tzfvGL)QkxMPU~3Ic`tNJ;?~3n*O=M6xyYWt^A<&5!AS=~ z;g6p2nO^OVpPysX4N5C@+JS|s_i-~m_x_J@llR8ZbXb2KYq8Y>2=^$OpcD=h>WiA* z=d_!ILPj{NWj0dMF}CZ@g#>GL*}dP*M&lQOFT?k@Lvh1={srJC&)^E=-sk4u`O?D4 z|2XCX0xyHmf2&Z>c3qOz1112A@7I3@jBA^|du7`^0QbNTyZ(}YWRis_0tdJ+Ni?D( zH}6+pmZsGw5nUAKG09*|xDSNc=X|Q34F!^FE1xrx{cw75*D4a5RA9Pst)Ev~-u>)JhTLPF~4T8Mpg*8k`kG{$UL-RsHU`O27{Vs~5ycUO}ztq5Ex37wYea zVH~a29-e8{rO`9Lqq8=TIb+!?8|s9Ag26f2x7DvOJ6MBn)qOdZ#w9Hs2<5?$>$q= zr*$EZEep)=ViT8~tX5Cm=P2LjZD{t%ERBC&!gEbTtg_XNcb>N>27iCrS!3Cf#6^ou zUkpu3SjBDNO|$9?l^a@$o+j8RVu!Vzug+bb8<< zWB;cXKwF6cp4X1E?$YNn>71np>v*z7H3_tEz(n>9x6pU}oqK9Mx+pc%u(KG+?lcbz zGz%O+f21Tj@!wdnL=!|4e~Uwq3;pF<{#VIlGO3yUlgXwmuN-e>*I4NBhs#6$tuBf8 zM(z3)a;a`>fTy=(M9#BeNPFa|jCPv7J%yOdPO1kiZV2e3%Tl*NTrZiad!FXP!NbS# z#{H!dFPo5Yc&Tgl2_6!5?AltW-M1u`Q^Pidy%6%+iziUs_fDrX&9H7ziS__vei&fc4Apnlkh1 zX**`p9e{K*PmH=sU*^{EeD_(5$vI`URf~3B2rf0w*+_~^`QkEKeH-F`tc;qVf^>^3 zDU|wiBHU!Hr?F&1lNqX_wv{61SBr>Et`0mXQO$Oy`jAf+Q=7C)*L<_8hX6bFP?|`2 z!|vHtn=JHaUgEPWh{g&)VZAAn;u|!39 z?RARp=GpAG@%MCZyK|y?5xPh9S?fM7S1;Nric@##DT0C`0NDT^IbdD7EOlW&unDQf zv$MSRiSVN)cG{P9gbAKZd?90gYOVqvi%k2n2bff#+ zo|o$l8{$`pf26lsw}-Hs{H-&>D~2{XLrvOG)HktkC@d_*6{ zeCfLN%m}ca*#OqFuCG}3y7lad(d?tvv;o#ng96w74IpyEch4F5@@TG1KV)#Qxrbso zet2w4Iibs8IXE3;I-$O2OgjJ}n`@3TOv4*llMs>NT`pd4R(+-?jMZqc7a4hLzhK-S z8FhnRvQftA!|il(9`7=}p++Vq2OdAV$U`jWGFM8Qja|I^H&O@+^W$K8pG z(bAxkz`_(T$SgRAHJ?)-$0#b+MR{`&hA4Gw3cZIqtK+iaX5_`-i&ApTH?IPQu$}LQ z#4gBA~lv=5v#`w}0)KdE?A{$@2)eQ}@K9sME*D9Pvb)PAy+)azWI0S$hu` z5Ge0W0yF%&nj0qXg_zg7t}dxp6T{&UifXglH9>B<=Jd1NsMHB2b13cxE4T5px$HBt zV;rX5bt*OSRT}j9a_^E~(4t!^{W;|FSG7L>+Ipu)J&ji&YQL(I24fP8<7HY9vaS{l6rtki49wP@T(0#)3BGNde;n`%8b`m;RS$`05efN zE#>!0hh$`x;uSUmUAFFS+_oo%uIg8-E1#2G>ef6D_Qxm;Mv6QpQu(22DF#QYvcmlE zYUx4^xesKrTqlV;feN#R%EP(y&*>3huKp9ctY598m6|PQX#+^*-BbC*FPk&`q9u7j z_it=&%6L)HfNf=`O>ovo%ArMF9tFKkiS~Zp-JzIE0i%d(EfPDpGQNwRVxiYHo=>tYrv_8$X1* zlW~TO%kJ{Wzar+K@v~tq_1@aqL=q%eEqot$XcOqZg*^_yqVqsSlGN1 z^kYUEf3^n9Tifg2m)j*TUZorq)&M2Cb{`jEp);ZHCi@}UOPy-FPaYrFf?Iz~pggtf zMlmg|l}i73SNbF-Ja{VfhUr4=}ork>(awOHF~@j~Dq>__AFTx5lV) zggcwk2A0l|eSx>u@~!an=%sVq4r-nYb8>2qw#7{j4=7?BnBy~r)BmISXV~99F$c+p zDg9u@voPH!2CR3_>L?GlNN5BGWhQn0I;zQ9zRz#`b$0A4e&~^vIu(!$C?m=K!9Jn4 zA~w!WTXu?^+7RJ-I{YQGKFzx|i}7=ud##h#1kVcriNZ*LX8ZcY)gg^;j8Gz-+Uh}|MB9pNAnEC9xHOzDDJCb{N z0@zIhAh|beD#+{ip#1MhZoB;_x+dpVjG28W>8P^atQ@@H}w&xo}a?QG8`YFBJtf7aCKn$DX`Ym!37O0+tjqj z{OIf!whb30F!oBucH``ioZm>;4oc9_kOhS_2o{Bh3GdrtzXdm~Zw)0{{D5)Aj)gSxCVu1gA;D73aIbGS3F_~3hZ(Q{EeV@_WUq8hn zNqK_y-a%oK?7i&ZQ@g!Wg3a-z7pI&eOxBYeh{%)qwjVCDMxDEFuVC#XQIGi8V3|_&GEnJcS zRx#PY^iPxb-=smpabQYv`KYEuWZX|_fK*7Jn*#ER5PLE<#dk^3mp=V^ZCl+ALJY%9+N$xV$@|KX#FM zFeFD}QEn;;{agfBw{s#kc^BjiiS_rDQMm1Z*KtrDr=|xou;-0!-nRN>h0y z`wMweHJpx=a3z+GWM=fBpmv8<@aAt93Mgxv@*Dc|I`8+LY7fDDcNDD41kBLvfCka9 z7xhCga3fyx_KTsES||In3A#v4W(5{!Iiw98yH)9$WD$U%;0BL(PvdlL%fva}6@b*N zGA6F2CTzJ?(RPUNI+$X$K>scp(sq1m*L?O}G<>L%d~pXv{a&Gt-<&+gHHqd!ll;97 zp{=v<+sbF=K6-boX0^pBu3A$cR@kcA%`9ns^5Mf_l`%vml1VsYS^dXG70**+rm`O( z<>MV&<62C$8qtW}oVX>F|EQPh<0MaPUw7G$+6=9*v3PSM5C0=^F|?y4-a{;m6PaL> z{lJ#ghud;7%Ni8v0oTrOEzg~Q85ibMgoUS56G9Mjw8I+F;b|;nqRSCY+7NA7)nTM@ zXKI0d@A8MeK?hGjFOO?Ve*0c+kV<)&of6}xKRv{GlEc?o3*249aANOmJg_C^ZzIOP z^%u-`HHcE%oUF_m$*kf$oa|~;_+?h{_yqi^*d~!=U{R_T``J{cgm_7@BQB&LfVrSB}){Ehz?V-9wL=gWEl)KwhYFSWiZxrDyI-x z%3hSj7~7DYQ<@h?3)Qv$-#MLVJN23#3AghtDj_ zT!);hT+0;%kIs^GGgcbg`XfuFxb>NPP1#e06~Xs--plMOT$Hk*+?R0Lg^lAkij#D1pG4erMdN=5}xw4 z6-8UBUy;{tG9fNv-_0!|23gbjh3Aq9p3*_P+#+W_s|%P@XsqJpDk*^n_Riuj1*832 z7njd1<*iQNQxtg6cz!Cpz3t?ed<08v1LWY2h`J3i{EK{uXT)~*RiEz!dN>utpc@~$6@4thF!a;Eh<=j$EI^K%4 zI%|-O8oKHAKYE!Ex(sb+m)p4EI(?(XC z*)Rv1atm!KJJnonwAozeo>$M&&Lm$HW@0eVrEGEP?2TyZd{Ew3u7$cAVjBQr25w4o zdKArT&b&8sfR$*$D>77*Gkr*?V1gF5RiT@1>y7G(x%qYt+0%Qy#)&86@C^h04 zrN!IiPVMza*yaqGQL0NY8c@W?h69}m$h_rcrpA3s<%7_~h_;_u%%geUnl<~z9-8Tq zs0sVwWXkfQSI~f4va}eKXp;mU#T@bFbYIPi^7Yahtn$pfYv6!Ix`V`nD20g*ZU2&1 zWIm#ru>r!E%83Z6xnkCD{7hLJCV?^^s*yN)VKO;WOimXdD`;*JZ+ z)T?f%HIXEvX`*}Uxz$ysMHm`g)8{okhWruLUroPBJ}D-7S~Nx_z#c|cM2SJ_6xB|H z9leM4UqwdC|Fy`d^{(nakejDE?AKIOJiDXiY))?V_J#9&Z7g-!Q(aZ~e~AoQ={J$_ zfZb1XvVUXy}KE#yH_Tk4_N~ zT4;hG7!_VRQ63hdB^DZ##L0;h*50ZU2qY3d!;sLGU4NSoR8F>w!Ocj!c zCk}}{y7#f>UqZuc>TiSwezXc12Ayf8%fV$4*NHkon(rM@Db*^{cuYHOKd7frU^+eU zHEyq(qdzBAoc3QT|&e&rW~W`(NDNC7sa-9Xtsz)ULYY{w$S08|cKzKIR#F&_P}-EBV5Z0ONlcEjus+-j(; zw17|*s+Kt}eay@%fd;IAsknO z_@`5}ARYB$;pZ8sFj8S&#`8ZK|E;CpjQ`ULgUH#@r!S{0O5W~2qadU-;0shn(a+cW z!dx%isvHqIOZheFj%5RDPm?*Teo!u>VWWb;JZH{VX-8}>ueDojjCmhQGt02wU5Qj(T4u-BRPz7c{f2_3ug;cMn z$H0##yQX)A0@@y^_r$fzopiFTDwFl9DhDN(TAePW?aM4RzS6Kb+L_$+Q-;6Ov3E}5}QjlY)IFng9hB2i+AI4Tm0`*lZrBiBmY!4HUW1~|Kci{s>p z-vDFDN2}7Puk#_= zK#CimznmsAxzKdqXw^_hVsP0sbS()S;N7j8ahQuXu+uMeL4A|9A&(o=Phc$w%$PV4 zQMa6Vs+l+@U0v6kYuRCcV@YULqy8obJuldJ=N!+3;KBi?X!|#{l1FO~nTr)5O&_z! z5wO}l?+9Y69<&EMw|Y2_wW=vdF!aE=9k+JEABMAnHurhe$#c&fsJo!L>2BO?Q)}#= zuIUf(Pn>!bTZQekc5(0xr1#G;25Xk0Tp&{T!2h~cIg!^%)4}|?t;!-$jfq+1EALiy#xWJ<-_B!Iv zw*$KZRv)sxhpG?LbFN*!625LcG>U7JEjC10YCOHH(Q`tCKqXX1Xw9E8$aj=GGhA_L5J8tlVRZQwBd)>d0|j@5OSk$sLoyd0a@9TJ>2vQ?Ak6g^Z-xKt zzpVB6qv9P%hx3eIV4;ot>h*Zn51mxAPreM8Oy+89{az!aq_-|Bjdi3qySM7O%|en$ zZay#Kl0Q2>{Snjt0P}h-M^sf&&(svD$Z}uR0v`%1rTfxo2jS zWiwQBtgfi1)<7a-w7cl}OsoqnDdg{^ChZLSbn1j_`Wf|hT1n3h7fYm^ ziUzf3azAArmUyIVwMEHPm z^-f#rAS^QF46Xdd8?=B^abUG_X*D8pO2nclBk@M#&~ z-wMU!sM{(uQWff1bVmm49JlK)LOE#&RPKD>;4!*Xb;nVud1ub$d4|CKA z*lp_02g!=|S&L4Pxo1o~h|s#~_GV<0H4D9UQg=`#K6y--emtU1D9)N%sl5NuY*@pk zy3S(=QR(Ccx&7f16tYlD0Zm_+SJFc7(RHWgWP=Zubl_gpS|!C~*L6XzL8m|XEbg+qxCRX-1R40+v*$UB zMjZ(d5F3;KK>6Du{|E0IoapK{O(_W+wK0iXX=)nG2$r$WRnVNfZ?pKuCboXN3zHYo zy#phXJ8;LNIlZ12GTEFTEa^V4`PdIBae1}RZbr{iFf=nTGiOE06c?;2U?uD>x62?q z4IYp{UkqNMO&VBO7n5LCL9%mmmH|_R3M0=oYn{nYBE3AC_my=aP7g>_`5X`0Nb;Uc zn|TA4xQ#%psH+N`+NHi%`5g%($3?~%#b5X|rTTO#=KPnFJG8PPi|mqMO7L=nUFHm_ zOy*xgsOs=5_(=`T4vnCq!To|t(K;PUxdXuYxY;OMR?Poq+5=35oumuqKT+e z;Qs~hA8o4jh#1=NkO>~o8&x-%WQHuQkWpsOd_`siS@o*7(dhW3F$~44W5}8S+awMd z6oSX{$0aY*`L3RZ#=_mNrEiAOKVXc-Pslp*9J%*TeE_Q026vB{UF|LHB0R_|H{>Gh zr6+2949$^_p(&oWj^{h?!7`V-gxpGr_ z?>(jxsqJ%$N>j<`CrdNcQ)0c=;j~co{LZC9M)yc;M=cv?3<;SUkI*V_d?%c`YLc@j z<(a<&)PB#c`%BL&?%3A7#O>+3#>reCanHf2v!L9qgT;(L<*k7hnh%Um*BrQ`Vj{bt z+-|b=y;w6kKn|PT>q|WA-nP&HTNwJjzd}2hO+V3MykgOn+DopLdPldz7WNCFsZIZh zzmm%hT^b$RxP>D};HmssZ2N*AczZ!|xx9NVEseOWw8dm{1$&KEGMSszYupHtExP0e ztd$g-RXCn>Z?ZB7H%F>C2!f!S^DdN+BssTMCM=z_I@tkA$r5bgX$lJ|XIM$^lYLRv zAL%WGb5Z)hHF-?(Zt2|!uH%d@@i-SaTJ&pGC)-{NgW7}WaW1L~QC_t=cl+SY;(ael z+%k^CF)&U7d4FJj>b>J#=!f;;F3EDeTjC@dJgypCx5pE%5;~6g60KSowKYDd;Bo}E{WWmg@lOvVU28`8dOmk$pJg4T#$qha?6Z`q?@@Y`KV?xh-9m<; zn1s3 zs%~4rNiC5HMw1_Xjk$NLQYLSHDQI2hEl0zv?UORPKHs+Qm%Ec}DtolR?RJa`F)Y@fwtLDV)0c(?$HJG69DSM)$!7vP zJVw%fro1mcZ6@KWkLcmEJ(*pYyx9t0`4ZECg)DMgkK<{1bl&Y5fpeNvX1h16-r=Ku zUc6dcvsQP7Y00pEs`8-$YU&x1$Ax4zOOWHE+|GIdF#B1Sg8FAwsa^*V|LrczmgY97 zKGb?wIFcD8<+iL`CzK`Z*pGVQ=<|B_yy1J*ggqbT|A^RsWPC&HDZGKl`>jl{408f4 z?1^)`^fjrTG(~se;~UcKA3J}tGN-vWo7euhe}kq_3UA!UTcT$E2ki$EDZj>Vp0tNp z+T=EM%SYdAq@SYXY1~$J^c?6{ZpzgmR>EM^?F? ziVyCIs9T~Crxhjbqi$#L>leK}{Vr)Eq-t}7R$cS1&^Cg*#GilAbVx9i)M~bIiY|Fv z5^uB86(qkJ#N0hHY-mBYK=qXc9?l4ivsDE>DqtgV%p=x{XztUW4KBAl>Ag<@2jD&7E-HCo3gZuNDplW2FIPUqRtH%*V--JTD#0{ zN6<;jrmksS#$d0*^#ybsFYPbCKhB2X^Mx>(@jiNSEVRcEA51{3O4)?@hLJE&aKCbE9e}acK6oFylDX?4t^^V&98* z$yNU*c`^$BDtTl*^WG&5aDYb|dZtV|QEcK15h#Cqb^q;>6i=i1iYu;)WUR8-zcZmB zt|FkccZAQ3J7m{Zxea_XQZG;yMe-JxUJ~A=B-daN$x${a5^W)OWLA<(FRP_nKC>@L zydhV*Ljh$&UBqS_1;t`M;=88;QKi?%&s+@%rK6T>N& zhOMUm=Xf1lYp3^|HnnR-bvfWf zKi<9^AVKl`(if4^3^FNecq}RDtL<}HWG++t$cb~%8fq}jP_gUGvRdEH>g0^=dnM{$ zKjOD){*dk2UTO*-9FE`-ic!K2jk3c*^BRzz@cp^$XnuI!&;m(I!LhMp^U>O%@7KkIH1I?-1o=U)=$UQy2b6F7?zu;;7$>a@SI6eCLDh?LjK-Vo_J(Hjqj) z|Ey5PNu~X$u%1eLy|_J?Zy%)1ja(~mij{t}3c!KEZbiPC*oe9-HQFY@v>dW#Du2JA z`$g}MT+YMh*q@LwCEMHf9_~^`V&9IG?Nq2eVis+-pM2GgMa%UO={aQs4fN>slcQJ$ z5LIvy-XZ``jo^Yf>VeI}=u7LNvt3w8Kb;}JBZBCpstPv#ZImwbJkP@WzZJ@CjS zGJ4jv2@Th1CL(unSu|V-qoxE0WnoCcDDWnIXZMUz??l<}M=n&_NP&Ygom*=gkb}je zKGY2VttR*V0|2c)u=B18=}?5$8Sxg1)==XzHbU!$NLifWQv7MlrQV{zK4gGq{!~8U z0WbROl(~?Im{)u1h$l=b`s*UX_ z#cJHPYjxdxsx-HjM<%DHgMh9jAEc(~4(69TeW={$nL@5I13_DJ9K~BTW$5=z+S0d7 zTJ+n~Q~8Ik=(SXqF*vETN})f=Qnh+|DAEImo;cA$03)lRU=1lEa_?y z&6rFY#z_aS^dNVxn~e5l?N>KNi9{{!7_R!6B5{fmV9bKr{Hbm3#DPEvy|on z+mRZzqie2Fz(2Z1rVxi1Xr717p1zMzeNFSbB_CyJ6T0G43gORWAdKG0*0-d&?zZBA84Fi%L=_C)#wFMT21Mgaz0>KBa1Z> zN=Ey@-U1QWmw%B@pKKKdgt8aDFQDc&-Ebv-_I9jMGewIW#;TKgY^8}yO}ZI#-xO3X z!2-xks9Up=x7x_7o3kD+M^xy6QE8m?(lC&5_-txB(h3xl2|I!kE>|056c=QP&H+fF zdjLR+a>gcSmZ4g@F3yz8@K=S@@LBP(+pY^kGl=B(90cady#tvs&o{{&|WXF8t*l6X^;! zs`)7LldgC_K$Q!}@F0F^WVA~7b%al>(!&pmoAvg1ExMuZN#1|v6CKXz_$r_F%ASLH z<(=DkE#AkF16`7wiD~ma7E5vj`DhBLH6N$EeUzh$wJn~M93?&)TCVWGIyKT&X>xy& zPv-|3{I99QSD)!y5$rf%C}fE-uPdGd&D!sgsW?D<6IshA6n<-{Woa9|#qCj8%_bP3 zC@cw{OrP!WunQn{updHu`xo;zX#}u4Myf(^Z=LE=!A}g&hGq2^Hq^OZhuyh1 zYdi%U+jTTF&SP#pg*Ie1UYLNfN!wy}tRRug1%o|?s8oA?gglfdgV~B~8?O19Lc^?> z({(|C45%d|7Z&Etimq?}sBM7C44!V#O81&FIe)btwE;57sW|AvYOpn$P>Swi%w&0v zMuRLR>QzQ!tDvpyhVYybT16o|SF_?i^3SV8=be2+%?e)_Ix z*y^mZfJt`7nIl^|gGP`uj<{-!RZTt)U$a@$L~7%rvFGLJXT3BU1sE8vFYgR+4#yV9 zNalYr0Ex?9ZI-6TZm+@)T2bR;YM(s7H8cF|zdBe;hCC*aDGd)JqtPQ^#!1CofKS1I z>`4tabX!CS&64-4e{@|iG?u3&SZ9#8f8j8XvcRj6p|k4UaCmYm|KO*FzCkU)YWh~#e#nk0n*iYC?64#A$N78xLGGZc%>&Uh;il`3iBx(K);TGbQhJ)z^y!BwsnoK6s|x5Z}jXf^-zbo${~$T8M#pL^N( z7*%H*$57Nn^BpG|ex|ta^3X})*H3UHA-DQ8+(>sb2%>IdA8Z;%3t$q4Q{vGJ)W=O$ zHkCyrz2jt%CRJ+-`(r2a;9}5YUfbKdFRFpU-g8Dr1ukn7B|^l)PFU#Yl&PtUQLk`4 zur^v1L%YTD^F(=Hs7q=I8yN)mbtYj_f14h?yK(m2$Q{)@^ufif{N%D{{!mGoNY&3O4v@+HNPG+@iZ|o6|M=;$7iWE_?Yzs=#gbQ_MivH&n&= zbo!A38@|<{PS=N*c$V=oEtIE8JwgDA`RdKUC}-`~6ba;@V1$-*_dSwvYdD_3XWU;{ zrGh-N>Cu8U1L-<2^P9*8zGpEI{PK6oYy6RtUjY^3y?2XwE*zZa`OIp2#-*LTTNru% zRTW2YEgUPw-1LD$q|w`JON<2mcYsVmNK*>tWqAw9tD_JoM~d*2#V{|Z81QhKb~M$# z%cZ1zEDV+$|r7 z?0g~^YPZ!-|A=1%UttWu_K>IaHsALAa(E&q^w}`4Av_sdlrUD<5aMo&>oXQ~ z7BmX2*(RbxO`AVlc%a&jQJ68ph%Cv(roA~pz#}DJl1D90BV5SN*ut+J$x-89A|MRJ zT0!z}M>rEz{I>4ma(S+Cy>^7wy>_x8o|OoxG!)Z$96ax|jq?c)q5S!i{Y?O@o!ovO zqv4bop~aNQo;P#i+sMA4WQjQ)=eYc%+)BrGAKPXH+t)#3RC9LC1Iv|*Cm^;qK5XI8 z%vFO%;4!c$rvjiopr2++*d|+d<~B;4WbkyQbogzV46#wMYd~%?vP|Q-T$u~8sAd0$ zbyc9JP}^nxO%;@IQ~|Cmu+UmPfp)yvF`4{^L#w17TBlXk!el?}*gO;LZ^a$Evas)6 zof6xMyK;Py#Xg_d*%U+x+N>dE(*P^0aaF~I66a`1x>^adv4a&g91Df*{lw6KP=dQC zZ@?pEzrC%R!NsX-2Qg^dn_ERyHfKnR8Na8#>mk69G2-dE86rDJy)tI)R!F+yg;ADG z&)H3Z`D|AUjcI(f7}!A~`-&j{9axFb`Y(VLbupcnp*k-!50bZw zlJ6ci95MgAX+}t{ZJ`mfn<~kxRlUMsd62DKPH03+QEs&cbg4&#&?{1O)YAn3v(onS zg3*~m^Oi)9X}PwWnHQ1$)yRzPZ3G|kV4&?k11C^77T>L#%cJq^#!VuP{yO3h~awC^OOCYarhY`efSEYvv5(I%Z2c~UT7Aj}s|0gYM0 z$hHran@pK}&(;fQglE!Nykd%*c z%oZ;z8%uwR@z;nM5Wnl1b&t?FZ1TnO`UB8U91#QjZ0PX0WK{XT$Qm0`+glLcnBkR2 z4tuDCRgaxArO}NW^reORSuu725?+TE=s+sq)56FrrD=NuyoMuti!O>7opyr-9<+=w zv=(dkl1@ZfWgcE-A<~B`()yXZZx%z_;K>hrG&meEVgB#5f_CPgwZi#LcVW{P_&wQr zUreKfb1gTXFTvqLN{r0M{}S??P<#X(19kA zblWfGoOWX;t**|^R`XV+asCOIyDi=$@m<>ac$Jb4MvhH;`FjaMPdNMxGTo7K9agpm zt?WZQpNJbWr5;_nTkb)6=)EQvsF!NUAo)Q)dQUlR#QYfwQT;NF#5DPTWwju^H$byR z5GRz2!XI31+i`i6okqG=*;lj*bcP+XuuQemTYE4X!sjk<*X(X2-1CP-7(n% z`pn~e(~`lR_P{(k#RpcO9GAseu@){twWEwtl1g8I^&(IY$wJv~ffG9|=XxU@e5;N_%z1H@541 z(X5dQo7jCT+wOV~E^vxHi7$(8Ce!gGv)}GC4MT#@Z=Wc<6%e$t3>*PN`WFz4;iT3; zLX0jPGB+R0%z}4>mhDMFRx8axch7l$6vb^_&wx4CMucq6_#{0&-dJ^5FcfAMMBL5@ zuy4p-eSS#5Jt!A2Je+HDRTqiNu^~(pe^uR5+D{o$++~4PU&$QrN4mBvS5ihC=O4lc zr@D@hD-~ky2d58~aGtg9aGk^4^oW3MB?P6<0|IdaJM(sQE9YKhQ+2Ten}>&@S6`ve zajUN3>2Ukn2(4{d8&&ynjoKJZ-s#h}`$B!U4IWA5(QWb@acKO-+1DB8#?ci8`|dEE zc5;qvio+29Yk=ST={1o6iT=mt>3PtDx5C<4u#Ii+k41F@`h(yxrkfE|S+M8Pq_Th$ zet&l|hgcb01+(*fmi+C3l~Q1InA=G2@=ucJ)v7d|wV70$>z6?2*PB5BW-4VTQWTi9 zfLY1VELK}UqgQ7U3H&Whx!K9g%pFWTsIq*K&37FB<8|J1BZ%F`BKYIu)#sA!t<|vz zgYs0w;}Lzey;Hj|FEOhuKO`WjNe8L>UHf0EW3^Ogq$ey}a_}{t=m2bf`@ffA?xeAU zB_D9#KJ;i&k>|3^E8*sd!CaCtca;5)R~8IzK?E@qP{{`TGsxwUMkdP0h@g+q^HvI=oxKbiO?>Cpl_U`|!QOT1Cpg!IIQxMq;xO_Akk z|BkYdmhAU_5$b4N0$_=r|Bv8JrL>o8dFT8))$`RO<4p7D&8H^)S*tHRAL@#`=UH;U zvD=%%M{wT~gXkJGicbAA%JLd!CUcrIUB!Z@HWd%EK}M8V)YQDSDkBAc2V(hhF?$Kh zty&;c|C88>JD}Wdkv*98RYq9-E+c+ihgarHnJ=GLtkWd|)Lb4$GYDu_xOPN@)S5p0 zQ!OS{Es}$hgIY|XU7?rU_h7S=HtI)jgI6KYt|U(}lL7l$5`!%Y3hTLlT?0ybcRGVo z8f##IN@Q+YoR8}b_>85KoOQppVd6)1)@c~=(WT%YUI^}FgvsWL;@lc#X?F+T zs+vwa7TdfwcIv9J7!*19`nYb?NMvft>wm&k{E^BMYjbD3K4}moe6PN zWuSOcY)h-4eRsP8R0|?_1d9ia`Ui!%uDV*XoWkj>>iT#)kz78b;+p5BJ66s8CJAfZ zn4-dkMz^*);)F3#cSUm#B9at7Er8}2bNUCxc=o-o&6wYl8h{K04Z$79F{QRLP-y^&4S#Tw^3(`L7}=H^&aSr5VN zpl|3(yBFLd)SuIj+1VXEBp+MwCdusMD3&v^aMYrF&(P>iEc2`AxUoH*-&T_o*mBn& zKC&B}9R_$KAS%Y`PQiDGnh(MGB4h@@WxmN83`H=OC5Gcltla{B^Y=}MKdX(eL+jS6 zG4DO>uz3QiF%`;O==K-WX1BapY*yh^V}9AX^aO{XFa22aI(-vgNO3P6#S^t6eGp~H zGm$;hu#uua-tz1R2j+iQvvkoh@K;T0x+tnLK zD_d@q@Hi~+XbcY)!gVckR4LUBo6?6FC<5~>;u;qo90lT=U^r}mD z3KLfq7Lboy$tMP8(tU0eK2ktnzUd5nb~vr@lkzFC?jhA`F=Vv0ybQZ{Rh1Xg4G7%0 z^-6mP#fF5=+_4puGOdhJrwWf zT66YR%K7vJ4AyO1!`>Mi>U+dK5ZUUh$nf3)qn>40*P5Xb3g2Lr13I!_!1xpagHLNc zmP}7#Ib!1%HZ>X^0GAN|me_KT7@XVyz;h6@el2*kbB=G~6Hjhnc*pwqlt|yT@hKo5 z#o&%7OL6N!#3y3wDLv)g=TVo)?}l=BsWO$V235~PAU##RjiPci8&^z`q{p#uu`{;piujvo;6OyDW0G`2{eG6+vS4834wt;5c z>cav~ynI)wQpRot4TioTKqkB4{zq!tHc*Rd`LFQUdVM99`_7oqHBLzD#MS6CZEaLf zS3SUkP_eJ8oz;19Y*+Q;j0Vj({^7s644xt_@ROt(K&B{5eI-*?waJD5gLWV@-X%Zz zT|J!VVX^&x!bTx^Ez(FGdklLbTP zR;q{CPSrjnjpoAUA(g;rEtUl_I^Q_T5}P@B@`yNGT&*oeun!4v_fL&$AWC0{L+#3& z14Pffj=&+>Mg?h$2@oF(d>7c(Df`ggfrPYJW82__@Jm!+q@vk5Tq*kdwTq zJ-~xSSZEvKT3LSMr;5~(<13BHuBbo~PkMFGxF@`he3DOlOJ|A{JVP?RVtEkJo-Is` zDEVmR=xLpIu_?=v!20MvbZX1dVrB{`!upodqODviuxao?U%Zf?jfcNc^ru{!IWW@o zgkp_T%uPEd@!(c()n`?e1m*s(i9g3dDPA>#(3n?#>iPB3N!wbmF8r^{02ayuv;QAm phVSo1{wE`C|BL@g@s(fIv~)WRAE9mmK_m#o;Or&c{2y(@{tv`P^Gg5# literal 0 HcmV?d00001 From ad21398fb91846496d2e47f75ae726adb3ae9531 Mon Sep 17 00:00:00 2001 From: wuyan33 <36420452+wuyan33@users.noreply.github.com> Date: Tue, 18 Sep 2018 02:24:16 -0400 Subject: [PATCH 13/19] Update README.md --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 075325b..f7a411e 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,11 @@ This project let us implement a few different versions of the Scan (Prefix Sum) ### Result and Performance Analysis - +* A sample of outcomes: + * Scan Test:
+
+ * Stream Compaction Test:
+ Include analysis, etc. (Remember, this is public, so don't put anything here that you don't want to share with the world.) From 33dc1b0414750b8014bf2ae8c628b2dab833517a Mon Sep 17 00:00:00 2001 From: Yan Wu Date: Tue, 18 Sep 2018 16:27:53 -0400 Subject: [PATCH 14/19] Scan result sheet picture --- img/scanSheet.PNG | Bin 0 -> 25779 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/scanSheet.PNG diff --git a/img/scanSheet.PNG b/img/scanSheet.PNG new file mode 100644 index 0000000000000000000000000000000000000000..70519cb34a28c31f93d66459e7d3c97824e6f9ee GIT binary patch literal 25779 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 Date: Tue, 18 Sep 2018 16:28:12 -0400 Subject: [PATCH 15/19] compaction result sheet picture --- img/compactSheet.PNG | Bin 0 -> 20427 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/compactSheet.PNG diff --git a/img/compactSheet.PNG b/img/compactSheet.PNG new file mode 100644 index 0000000000000000000000000000000000000000..d038a755cd10d0c67860406b63a906094b7b49e2 GIT binary patch literal 20427 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 A`2YX_ literal 0 HcmV?d00001 From 1da97c7d01b2ae25540ee8f2261ee0d5eec047df Mon Sep 17 00:00:00 2001 From: Yan Wu Date: Tue, 18 Sep 2018 16:55:19 -0400 Subject: [PATCH 16/19] Add scan tests charts. --- img/scanChart.PNG | Bin 0 -> 45528 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/scanChart.PNG diff --git a/img/scanChart.PNG b/img/scanChart.PNG new file mode 100644 index 0000000000000000000000000000000000000000..45300ddea7f104859f785146b7435d692df27413 GIT binary patch literal 45528 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 Date: Tue, 18 Sep 2018 16:55:37 -0400 Subject: [PATCH 17/19] add compaction tests charts --- img/compactChart.PNG | Bin 0 -> 37045 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/compactChart.PNG diff --git a/img/compactChart.PNG b/img/compactChart.PNG new file mode 100644 index 0000000000000000000000000000000000000000..6830a99a0fb3ecb1192b188ac89597a10b1e49c2 GIT binary patch literal 37045 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 B5M}@X literal 0 HcmV?d00001 From 66ddecf187de38a38dd1645ebe466ae6e6dfaa5f Mon Sep 17 00:00:00 2001 From: wuyan33 <36420452+wuyan33@users.noreply.github.com> Date: Tue, 18 Sep 2018 17:19:08 -0400 Subject: [PATCH 18/19] Update README.md --- README.md | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f7a411e..9537883 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,26 @@ This project let us implement a few different versions of the Scan (Prefix Sum)
* Stream Compaction Test:
- -Include analysis, etc. (Remember, this is public, so don't put -anything here that you don't want to share with the world.) + +* Result Sheets: + * Scan Test Result:
+
+ * Compaction Test Result:
+ + +* Analysis: + * Scan Test Charts:
+
+ * Compaction Test Charts:
+
+ Just to mention, the two red lines regarding "cpu compact with scan" in both above charts are the same line. + * Analysis:
+ First we can see that GPU isn't performing significantly better when the test array is short. But when array becomes very large, it also becomes a burden for the CPU and the executing time increases almost exponentially. Under this circumstance we should perceive a much greater performance outcome by GPU. + Taking a closer look, my work efficient algorithm is slower than the naive method when the test array is relatively shorter. As array size increases, work efficient method has a trend of better performance. Thrust method is steady. It may seems slow at first, but when array size increases, its time remains almost the same. Comparing all these methods, thrust scan is clearly the best when array is incredibly large. + +* Q & A: + * Roughly optimize the block sizes of each of your implementations for minimal run time on your GPU.
+ My block size was 128. + * Why does work efficien method slower than naive?
+ When implementing algorithm from the course slides, we did reduced the calculation count since we only need to compute half of the elements involved each round. Although we did this, half of each warp didn't even work. Implementing a parallel reduction and reduce the working warp number could save a lot time on this issue. From b4f8da9550ba387354d7e1978d27a70d807f7c0b Mon Sep 17 00:00:00 2001 From: wuyan33 <36420452+wuyan33@users.noreply.github.com> Date: Tue, 18 Sep 2018 17:20:12 -0400 Subject: [PATCH 19/19] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9537883..899a135 100644 --- a/README.md +++ b/README.md @@ -17,9 +17,9 @@ This project let us implement a few different versions of the Scan (Prefix Sum) * [Algorithm Slides:](https://docs.google.com/presentation/d/1ETVONA7QDM-WqsEj4qVOGD6Kura5I6E9yqH-7krnwZ0/edit#slide=id.p126) * Algorithm Demonstration: * Naive Inclusive Scan:
- +
* Work Efficient Scan (up-sweep):
- +
* Work Efficient Scan (down-sweep):
@@ -44,7 +44,7 @@ This project let us implement a few different versions of the Scan (Prefix Sum)
Just to mention, the two red lines regarding "cpu compact with scan" in both above charts are the same line. * Analysis:
- First we can see that GPU isn't performing significantly better when the test array is short. But when array becomes very large, it also becomes a burden for the CPU and the executing time increases almost exponentially. Under this circumstance we should perceive a much greater performance outcome by GPU. + First we can see that GPU isn't performing significantly better when the test array is short. But when array becomes very large, it also becomes a burden for the CPU and the executing time increases almost exponentially. Under this circumstance we should perceive a much greater performance outcome by GPU.
Taking a closer look, my work efficient algorithm is slower than the naive method when the test array is relatively shorter. As array size increases, work efficient method has a trend of better performance. Thrust method is steady. It may seems slow at first, but when array size increases, its time remains almost the same. Comparing all these methods, thrust scan is clearly the best when array is incredibly large. * Q & A: